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

  1. .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
  2. 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
  3. 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
  4. 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

  1. Simplified Setup: No API credentials or authentication needed
  2. More Reliable: No API rate limits or authentication expiration issues
  3. Time Savings: No manual episode post creation needed
  4. Consistency: All posts follow the same format
  5. Up-to-date: Automatically checks for new episodes daily
  6. Maintainable: Clear documentation and error handling
  7. 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.qmd will 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
Back to top