Atmosphere Publishing for Astro: publish your Astro site to Standard.site

Atmosphere Publishing for Astro publishes your Astro site to Standard.site, the shared format for blogs and articles on the Atmosphere, the open network behind Bluesky. It’s free and open source, and it’s the companion to Atmosphere Comments for Astro: together, every post you publish gets a comment section, and readers can subscribe to your site from apps such as Leaflet and Standard Reader.
It’s what this site now uses: every post here has a Standard.site record, and new posts are announced on Bluesky by @saltedlolly.com.
What Standard.site gives your writing
Standard.site is a format agreed by Leaflet, pckt and Offprint, three of the Atmosphere’s publishing apps, for describing a publication and its articles. Each article gets a small record in your own Atmosphere account, saying its title, address, date and description, and where its comments are. Because it’s a shared format, other apps can use it:
- Reader apps such as Standard Reader list your publication, show your new posts and let people subscribe.
- Bluesky shows richer previews for links to your posts.
- Subscriptions and recommendations are saved in readers’ own accounts, so they follow them from app to app.
Your posts stay on your own site. The records simply describe them and point back to them.
What it does
Each time you publish (or your deploy does), it reads your Markdown posts and, in your account:
- creates or updates your site’s publication record;
- creates or updates a record for each post, only when the post has changed, with its title, address, description, searchable text, tags, dates and cover image. You choose how much text that is: by default everything above
<!--more-->, or the whole post when there’s no marker, so a post can share just its introduction and keep the rest for your site; - announces new posts on Bluesky with a link card. That post becomes the post’s comment thread.
On your site, a one-line component adds each page’s <link rel="site.standard.document"> tag, which connects the page to its record, and the integration serves the /.well-known/site.standard.publication file that apps use to confirm the site is yours.
Announcements written for each post
Every announcement can have its own wording, from an announce: line in the post’s frontmatter. The link card already shows the title and description, so the wording is free to say something new, and without it the announcement is just the card, with nothing repeated. @mentions, #hashtags and links in it work as they do in the Bluesky app.
Older posts can have a comment thread too. Add announce: to one and its announcement is dated to the post itself, so Bluesky files it in the past and it doesn’t land in followers’ timelines, but replies to it still appear under the article. New posts are announced with today’s date, as you’d expect.
Made to work with Atmosphere Comments
With both integrations installed, the comment box finds each post’s announcement through its <link> tag, so there’s nothing to set up per post. The Subscribe button needs your publication’s address, which takes one line:
standardSite: { publication: publicationFromState() },
Each works without the other: Atmosphere Comments is useful on pages that aren’t articles, and Atmosphere Publishing works with any comments system, or none.
Safe by design
- Preview first.
npx atmosphere-publishing previewshows exactly what would change, including each announcement’s wording and date, without changing anything. - It never deletes. A post you remove is reported, and its record is left for you to deal with.
- It won’t publish as the wrong account. It checks the signed-in account against the one in your settings before writing anything.
- It never posts twice. What’s been published is saved in a small file in your project after every record. If that file goes missing (a fresh clone, say), it’s rebuilt from your account before anything is published.
When this site switched over from its own script, the preview showed nothing to republish across all 103 posts, and every page’s tags were unchanged.
Add it to your own site
It’s on npm as astro-atmosphere-publishing and on GitHub. You’ll need an Astro site with Markdown posts and an app password for the account that publishes.
npm install astro-atmosphere-publishing
Create atmosphere-publishing.config.mjs in your project’s root:
import { defineConfig } from "astro-atmosphere-publishing/helpers";
export default defineConfig({
site: "https://example.com",
account: "did:plc:your-did-here",
publication: { name: "My blog", description: "What it's about", icon: "public/icon.png" },
collections: [{ files: "src/content/blog/**/*.md", path: (post) => `/blog/${post.id}/` }],
});
Add the integration to astro.config.mjs, and the component to your post layout’s <head>:
---
import AtmosphereHead from "astro-atmosphere-publishing/AtmosphereHead.astro";
---
<AtmosphereHead entry={post} />
Then preview, publish, and commit the state file it writes:
npx atmosphere-publishing preview
npx atmosphere-publishing publish
The README covers the rest, including a ready-made GitHub Actions step that publishes on every deploy.
Other ways to do it
If your site isn’t built with Astro, Sequoia by Steve Simkins is a good command-line tool that publishes Standard.site records from almost any static site, with its own comments, subscribe and recommend components. Atmosphere Comments for Astro works with Sequoia too, as it adds the same <link> tag and comment thread.
Support my work
Atmosphere Publishing for Astro is free and open source. I make software like this because I believe in open protocols and open source: they can help make the web, and so the world, a better place, and the web shouldn’t be owned and controlled by billionaires. Building and maintaining it takes real time, often my working hours. If you find it useful, please consider sponsoring me on GitHub or buying me a coffee on Ko-fi: it helps me keep it going.
Release notes
What’s changed in each version. The changelog on GitHub has the full detail for developers.
0.1.1 (7 November 2026)
- @mentions, #hashtags and links in announcements work as in the Bluesky app, and the preview lists them.
- A
sharesetting for how much of each post goes into its record: up to<!--more-->or the whole post (the default), just the introduction, everything, or nothing.
0.1.0 (7 November 2026)
- First release, built from this site’s own publishing script: Standard.site records, Bluesky announcements with their own wording, the
<link>tag component and the.well-knownfile, and thepreview,publishandsynccommands.
Atmosphere Publishing for Astro is an independent project, not made or endorsed by Bluesky, Astro or Standard.site.
Enjoyed this? Support my work
GitHub Sponsors
Sponsor monthly with your GitHub account.
Sponsor on GitHubKo-fi
Donate once by card or PayPal.
Donate on Ko-fiComments
Other websites can respond by sending a Webmention.
Powered by Atmosphere Comments for Astro
