Implementation Summary: Automated RSS Podcast Fetching
β What Was Implemented
This implementation provides a complete automated system for fetching podcast episodes from an RSS feed and creating properly formatted Quarto blog posts.
Files Updated
.github/workflows/fetch-podcasts.yml- GitHub Actions workflow for automation
- Runs daily at midnight UTC
- Can be manually triggered via workflow_dispatch
- Installs R and required packages (httr, xml2, stringr, glue, fs)
- Executes the fetch script without requiring credentials
- Commits and pushes new episodes automatically
- Security: Includes explicit permissions (contents: write)
- Simplified: No API credentials needed
scripts/fetch-podcasts.R- Complete R script for fetching and processing episodes from RSS feed
- Features:
- RSS feed parsing using xml2 package
- Fetches all episodes from RSS feed at https://anchor.fm/s/10dab65b8/podcast/rss
- Duplicate detection (checks existing folders)
- URL-friendly slug generation with validation
- Automatic category extraction from descriptions
- Key topics extraction from episode descriptions
- Episode cover image downloading from RSS iTunes image or media thumbnail
- Comprehensive error handling and logging
- Quality improvements:
- No authentication required
- Direct RSS parsing without API rate limits
- Extracts episode IDs from Spotify URLs when available in RSS
- Falls back to show-level embeds if episode ID not available
scripts/README.md- Updated documentation including:
- RSS feed configuration instructions
- Removed all Spotify API setup steps
- Removed GitHub Secrets configuration
- How the RSS-based system works
- File structure explanation
- Example post format
- Troubleshooting guide for RSS feeds
- Local testing instructions
- Customization options
- Updated documentation including:
IMPLEMENTATION_SUMMARY.md(this file)- Updated to reflect RSS-based implementation
- Removed Spotify API references
- Updated features and benefits
π― Features
Automation
- Daily scheduled runs at midnight UTC
- Manual triggering via GitHub Actions UI
- Automatic commits and pushes of new episodes
- Smart duplicate detection prevents re-adding episodes
- No authentication required - uses public RSS feed
Episode Processing
- Parses standard RSS 2.0 feed with full metadata extraction
- Matches existing format exactly (see
content/podcasts/posts/hmsidr/) - Generates proper YAML frontmatter with all required fields
- Creates Spotify embeds (episode-specific when available, otherwise show-level)
- Downloads cover images from RSS feed (iTunes or media thumbnail)
- Extracts categories from episode descriptions
- Generates key topics automatically
Quality & Security
- β Simplified workflow with no credentials needed
- β More reliable (no API rate limits or authentication issues)
- β Standard RSS parsing using xml2 package
- β Comprehensive error handling
- β Detailed logging for debugging
π Next Steps for Repository Owner
1. Verify RSS Feed URL
The script is configured to use:
https://anchor.fm/s/10dab65b8/podcast/rss
If this URL needs to be changed: 1. Edit scripts/fetch-podcasts.R 2. Update the RSS_FEED_URL variable 3. Commit the change
2. Test the Workflow
Option A: Wait for automatic run (next midnight UTC) Option B: Manually trigger: 1. Go to Actions tab 2. Select βFetch RSS Podcastsβ 3. Click βRun workflowβ
3. Verify Results
After running: 1. Check Actions logs for any errors 2. Look for new folders in content/podcasts/posts/ 3. Build the site to see new episodes listed 4. Verify episode pages render correctly
π Expected Output
When the workflow runs successfully, youβll see:
content/podcasts/posts/
βββ hmsidr/ (existing)
β βββ index.qmd
β βββ featured.png
βββ new-episode-title/ (new)
β βββ index.qmd
β βββ featured.png
βββ another-episode/ (new)
βββ index.qmd
βββ featured.png
Each index.qmd will contain: - YAML frontmatter matching the hmsidr format - Episode-specific Spotify embed - Episode overview section - Key topics discussed section
π§ Customization
All customizable settings are documented in scripts/README.md, including: - RSS feed URL (to use a different podcast feed) - Show ID (for Spotify embeds) - Categories extraction logic - Embed iframe styling - File naming conventions
β¨ Benefits
- Simplified Setup: No API credentials or authentication needed
- More Reliable: No API rate limits or authentication expiration issues
- Time Savings: No manual episode post creation needed
- Consistency: All posts follow the same format
- Up-to-date: Automatically checks for new episodes daily
- Maintainable: Clear documentation and error handling
- Portable: Works with any podcast RSS feed, not just Spotify
π Troubleshooting
If issues arise: 1. Check GitHub Actions logs (Actions tab) 2. Verify RSS feed URL is correct and publicly accessible 3. Test RSS feed in an online validator 4. Review scripts/README.md troubleshooting section 5. Test locally by running: Rscript scripts/fetch-podcasts.R
π Notes
- The Quarto listing on
content/podcasts/index.qmdwill automatically show new episodes - Episodes are identified by slug, not by ID, to prevent duplicates
- Images are optional - posts will be created even if image download fails
- The workflow uses R 4.3.x for automatic patch updates while maintaining compatibility
- RSS feeds are more stable and donβt require maintaining API credentials