feat: automate blog podcast publishing

Closed
RI
1mo ago
+1264-6

Summary

  • Generate a two-voice episode for each eligible English blog post, then attach it to the configured podcast show with its canonical article link.
  • Expose every generated episode directly on matching blog pages with an accessible native audio player, Open Graph audio metadata, and linked structured data.
  • Publish the website-owned RSS feed, including valid RSS 2.0 enclosures, stable GUIDs, podcast artwork, and canonical article links.
  • Make the feed crawl-discoverable through a global RSS alternate link and the robots.txt sitemap entry.
  • Add a serialized workflow for new posts plus a quota-aware daily backfill of the two oldest missing episodes.

Why

The automation now produces an episode and the website becomes its discoverable home. Google-supported Article markup remains the primary markup; PodcastEpisode and AudioObject add accurate semantic context without claiming a podcast rich result.

Visual proof

Podcast player on a blog post

Visual diff

Generated for /blog/textinput-react-native/.

StatusSuiteRouteViewportDiff (px)
changedweb/blog/textinput-react-native/desktop7859260
changedweb/blog/textinput-react-native/mobile4468700

Activation

Set PODCAST_AUTOMATION_ENABLED=true and configure AUTOCONTENT_API_KEY, AUTOCONTENT_PODCAST_SHOW_ID, AUTOCONTENT_PODCAST_VOICE_1, and AUTOCONTENT_PODCAST_VOICE_2 as repository secrets.

Validation

  • bun test scripts/blogs/generate-podcast.test.ts scripts/blogs/podcast-discovery.test.ts
  • bun run ci:verify:web
  • Static fixture check: player, og:audio, JSON-LD graph, and RSS enclosure.