annot.at is a service for syncing static websites, such as blogs, to atproto and standard.site annot.at
elixir atproto standardsite
3

Configure Feed

Select the types of activity you want to include in your feed.

Add basic authentication instructions

Gotta work on that readme

Johanna Larsson (Jun 17, 2026, 9:14 PM +0100) 8ba5ad7e 7195153c

+19 -3
+16
README.md
··· 10 10 - [ ] RSS poller 11 11 - [ ] standard.site document reader 12 12 - [ ] Post to Bluesky 13 + 14 + ## Authenticating 15 + 16 + You can run the app locally and try out the full OAuth flow by exposing it to the internet using Tailscale or similar solutions. For example: 17 + 18 + ``` 19 + > tailscale funnel 4002 20 + Available on the internet: 21 + 22 + https://machine.random-thing.ts.net/ 23 + |-- proxy http://127.0.0.1:4002 24 + 25 + Press Ctrl+C to exit. 26 + ``` 27 + 28 + Make sure that same host is set in `dev.exs` and the app has been restarted. Click login and use any active atproto handle, and you should be able to OAuth against it.
+1 -1
config/dev.exs
··· 17 17 # watchers to your application. For example, we can use it 18 18 # to bundle .js and .css sources. 19 19 config :annot_at, AnnotAtWeb.Endpoint, 20 - # url: [host: "tlaloc.haddock-carp.ts.net", scheme: "https", port: 443], 20 + # url: [host: "machine.random-thing.ts.net", scheme: "https", port: 443], 21 21 # Binding to loopback ipv4 address prevents access from other machines. 22 22 # Change to `ip: {0, 0, 0, 0}` to allow access from other machines. 23 23 http: [ip: {127, 0, 0, 1}],
+2 -2
lib/annot_at_web/controllers/page_html/home.html.heex
··· 123 123 F 124 124 </div> 125 125 <div class="min-w-0"> 126 - <div class="font-bold leading-tight">Field Notes</div> 126 + <div class="font-bold leading-tight">field notes</div> 127 127 <div class="truncate text-sm text-ink/60">by @fieldnotes.example.com</div> 128 128 </div> 129 129 </div> ··· 239 239 {"What is standard.site?", 240 240 "A set of open AT Protocol lexicons for publications and documents. Publishing to them turns your posts into portable records that any ATmosphere reader, like Leaflet or pckt.blog, can pick up."}, 241 241 {"Will my posts show up on Bluesky?", 242 - "Not automatically. annot.at writes standard.site records to your repo. Bluesky cross-posting is a separate, opt-in step you can enable later."}, 242 + "Not automatically. annot.at writes standard.site records to your repo. Bluesky cross-posting is a separate, opt-in step."}, 243 243 {"Which RSS feeds work?", 244 244 "Any standard RSS or Atom feed. Point us at your feed URL plus your blog's canonical URL and we handle the rest."}, 245 245 {"Do I keep ownership of my posts?",