Add ATProto episode publishing with GitHub Actions#46
Conversation
- Install @bryanguffey/astro-standard-site package - Add optional standardSite config to StarpodConfig type - Configure standardSite in starpod.config.ts with placeholder values - Create .well-known/site.standard.publication verification endpoint
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
| * The publication record key from when you created your publication on ATProto. | ||
| */ |
There was a problem hiding this comment.
may need better instructions?
There was a problem hiding this comment.
Replaced with env vars and added setup instructions in CLAUDE.md under Environment Variables — includes where to find your DID and how to get the publication rkey. Fixed in 51f2d0b.
| standardSite: { | ||
| did: 'did:plc:your-did-here', | ||
| publicationRkey: 'your-publication-rkey-here' | ||
| } |
There was a problem hiding this comment.
cant this pull from config, or config pull from this? should only need written once
There was a problem hiding this comment.
Moved to environment variables (STANDARD_SITE_DID and STANDARD_SITE_PUBLICATION_RKEY) — matching the existing DISCORD_WEBHOOK pattern. Values are set once in .env, endpoint reads directly from import.meta.env. No more placeholder config in starpod.config.ts. Fixed in 51f2d0b.
….config.ts Moves DID and publication rkey to STANDARD_SITE_DID and STANDARD_SITE_PUBLICATION_RKEY env vars, matching the existing pattern (DISCORD_WEBHOOK). Removes StandardSiteConfig type and placeholder values from starpod.config.ts — values are only written once in .env.
argyleink
left a comment
There was a problem hiding this comment.
@copilot The move to env was good but now there's a lack of documentation to guide someone to use the feature. Where other env vars are described and explained, explain the standard ones and include a link to the standard.site for additional information. In the readme also explain what being a standard publication means and why you'd want to enable it through the config.
Also, does the site work fine without the env vars? The plugin doesn't need put into the Astro config still?
Explains what standard.site federation is, why you'd want it, how to configure the env vars, and links to further resources. Clarifies the feature is optional and the site works fine without it.
Added a full "standard.site (ATProto Federation)" section to the README (9291cb1) explaining what it is, why you'd want it, a table with env var descriptions and where to find the values, and a link to the plugin docs. To your questions: Yes, the site works fine without the env vars — the |
Adds full ATProto integration so podcasts using this template can publish their show and episodes to the federated web via standard.site. Each episode is an individual document record.
Changes
Publishing scripts (
scripts/)publish-episodes.ts— Publishes episodes as standard.site documents. Supports incremental (new only, default) and--backfill(all episodes) modes. Uses cursor-based pagination to fetch all existing documents before diffing, avoiding the 100-record ATProto API limit.create-publication.ts— One-time setup script to create the publication record and output theSTANDARD_SITE_PUBLICATION_RKEY.GitHub Actions
publish-episodes.yml— Runs after the daily "Rebuild Astro Site" workflow completes, publishing any new episodes. Also supportsworkflow_dispatch.backfill-episodes.yml— Manual-only workflow (workflow_dispatchwith confirmation input) that publishes all existing episodes.Schema resilience
itunes_episodeTypeisoptional(string())in the Valibot schema — a missing or unexpected field won't crash unattended CI runs.npm scripts
Required GitHub Actions secrets
ATPROTO_HANDLEATPROTO_APP_PASSWORDSTANDARD_SITE_URLSTANDARD_SITE_PUBLICATION_RKEYSTANDARD_SITE_DIDDocumentation