mcpbeat

Podcast Transcript Fetcher

varnan-tech/podcast-transcript-fetcher

Use when fetching, searching, or analyzing transcripts from Lenny's Podcast, Dwarkesh Podcast, Cheeky Pint, 20VC, or A16z Podcast. Tier 2 (RSS+Groq Whisper) is the recommended approach -- fast, free, and most reliable. Also use when asked to "get transcript", "find episode", "summarize podcast", or "search podcast content". Do not use for general web scraping or non-podcast audio transcription.

20k tokens
context cost
the whole folder, loaded on every use
7
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
569
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/Varnan-Tech/opendirectory --skill podcast-transcript-fetcher

The instruction itself

15 sections, as written by the author

Podcast Transcript Fetcher

Fetch transcripts from 5 supported podcasts. Tier 2 (RSS+Groq Whisper) is the recommended approach -- fast, free, and the most reliable across all podcasts. Tier 1 free sources are best-effort (limited availability). Tier 3 Taddy API is the premium/commercial option.

Quick Reference

# Get latest episode transcript (auto-detects best method)
python scripts/get_transcript.py "Lenny's Podcast" --latest

# Search by episode title or number
python scripts/get_transcript.py 20vc --episode "Marc Andreessen"
python scripts/get_transcript.py dwarkesh --episode 15

# Force specific method
python scripts/get_transcript.py "cheeky pint" --latest --method whisper
python scripts/get_transcript.py a16z --latest --method taddy

# Save to file
python scripts/get_transcript.py lennys --latest --output transcript.md

# List all supported podcasts
python scripts/get_transcript.py --list-podcasts

Supported Podcasts

| Podcast | Tier 1 (best-effort) | Tier 2 RSS+Whisper [RECOMMENDED] | Tier 3 Taddy (premium) |

|---------|---------------------|-----------------------------------|------------------------|

| Lenny's Podcast | GitHub archive (269 transcripts) | ✅ Substack RSS | ✅ Covered |

| Dwarkesh Podcast | Website scrape + Substack PDF | ✅ Substack RSS | ✅ Covered |

| Cheeky Pint | (none) | ✅ Transistor.fm RSS | ✅ Covered |

| 20VC | Substack PDF | ✅ Libsyn RSS | ✅ Covered |

| A16z Podcast | Website scrape | ✅ Simplecast RSS | ✅ Covered |

Implementation

1. Install Dependencies

# Core (always required)
pip install requests

# Cloud transcription (recommended — fast, free tier)
pip install groq
export GROQ_API_KEY="your-key"  # Get at https://console.groq.com

# Local transcription (free, needs ~5GB RAM)
pip install faster-whisper

# Audio compression (for Groq's 25 MB limit — Windows: winget/scoop)
#   winget install ffmpeg  or  scoop install ffmpeg

# Taddy API (commercial, optional)
export TADDY_API_KEY="your-key"  # Get at https://taddy.org

2. Get a Transcript

The script auto-selects the best method. Tier 2 is the default recommendation:

Tier 1 → Tier 2 (RECOMMENDED) → Tier 3
(best-effort)  (Whisper)  (Taddy API premium)

Tier 1: Free direct sources (best-effort, limited availability)

  • Lenny's: Clones ChatPRD/lennys-podcast-transcripts and searches by title
  • Dwarkesh: Substack PDF scrape
  • 20VC: Substack PDF scrape
  • A16z: Website scrape
  • Cheeky Pint: No Tier 1 sources available
  • Note: Tier 1 sources are best-effort and limited. Tier 2 (RSS+Whisper) is the recommended approach.

Tier 2: RSS + Whisper transcription [RECOMMENDED]

  • Downloads MP3 from podcast RSS feed
  • Compresses if >25 MB (ffmpeg)
  • Transcribes via Groq Whisper API (free tier, ~10s per hour of audio)
  • Fast, free, and works for every podcast in the registry
  • Default recommendation for all use cases

Tier 3: Taddy API (commercial/premium)

  • Requires TADDY_API_KEY ($75/mo+)
  • Use for large-scale or production transcript needs
  • Covers all 5 podcasts with auto-transcription

3. Analyze with AI

Once you have a transcript, pipe it to the agent for analysis:

I have this transcript from [podcast]. Can you:
1. Summarize the key arguments
2. Extract 3 actionable insights
3. Identify any controversial claims
4. Compare with [other podcast] on the same topic

Supported Workflows

Single Episode

| Scenario | Command |

|----------|---------|

| Latest episode | get_transcript.py "Lenny's Podcast" --latest |

| Specific episode by title | get_transcript.py 20vc --episode "Sam Altman" |

| Episode by number | get_transcript.py dwarkesh --episode 42 |

| Force Whisper transcription (Tier 2, recommended) | get_transcript.py a16z --latest --method whisper |

| Force Taddy API (premium) | get_transcript.py lennys --latest --method taddy |

| Save to Markdown | get_transcript.py cheeky-pint --latest --output episode.md |

| JSON output | get_transcript.py dwarkesh --latest --json |

Cross-Podcast Search & Batch

| Scenario | Command |

|----------|---------|

| Search all podcasts by keyword | get_transcript.py --search "Marc Andreessen" |

| Search by guest name | get_transcript.py --guest "Sam Altman" |

| Search within one podcast | get_transcript.py "Lenny's Podcast" --search "vibe coding" |

| Batch-transcribe last N episodes | get_transcript.py "Dwarkesh Podcast" --last 5 |

| Search + transcribe top matches | get_transcript.py --search "AI safety" --transcribe |

| Pipeline with custom count | get_transcript.py --search "scaling laws" --transcribe --transcribe-count 5 |

| Filtered search pipeline | get_transcript.py "A16z Podcast" --search "crypto" --transcribe |

Output Structure

Batch transcription saves to output/ with per-podcast subdirectories:

output/dwarkesh-podcast/Dwarkesh Podcast_2024-01-15_agi-is-still-30-years-away.md
output/20vc/20 Minutes VC (20VC)_2024-03-10_funding-round-analysis.md

Each file includes a YAML frontmatter header:

---
podcast: Dwarkesh Podcast
episode: AGI is still 30 years away
date: 2024-01-15
url: https://...
source: whisper
---

Podcast Registry

The registry at scripts/podcasts.json maps each podcast to its RSS feeds, transcript sources, and API endpoints. To add new podcasts:

{
  "id": "new-podcast",
  "name": "New Podcast",
  "rss": "https://example.com/feed.xml",
  "transcript_sources": {
    "primary": {"type": "website_scrape", "url": "https://example.com"}
  }
}

Troubleshooting

| Problem | Solution |

|---------|----------|

| "No transcript found" | Tier 2 (RSS+Whisper) is the recommended approach. If auto mode fails, try --method whisper to force it. |

| RSS fetch fails | RSS feeds may change; check scripts/podcasts.json for current URLs |

| Audio download slow | Large MP3s can take minutes on slow connections |

| Groq rate limited | Wait or switch to local faster-whisper |

| Taddy not returning transcripts | Some episodes lack transcripts; try --method whisper |

| Podcast not in registry | Add it to scripts/podcasts.json |

| Unicode error on Windows | Fixed: script auto-reconfigures stdout to UTF-8; saved files use UTF-8 encoding |

| Audio > 25 MB for Groq | Install ffmpeg: winget install ffmpeg (Windows) or brew install ffmpeg (macOS) |

RSS Feed Status (as of 2026-06)

| Podcast | Old Feed (broken) | Current Feed |

|---------|------------------|--------------|

| Cheeky Pint | feeds.transistor.fm/the-cheeky-pint (404) | feeds.transistor.fm/cheeky-pint-with-john-collison |

| 20VC | feeds.simplecast.com/3GxrMqOd (404) | feeds.libsyn.com/61840/rss |

| A16z | feeds.simplecast.com/0cJfpoz2 (404) | feeds.simplecast.com/JGE3yC0V |

Common Mistakes

  • Forgetting API keys: Set GROQ_API_KEY in your env or .env file
  • Relying on Tier 1 free sources: Tier 1 is best-effort and limited. Always fall back to Tier 2 (RSS+Whisper) which is the recommended method.
  • Not cloning the Lenny's repo first: The GitHub archive must be cloned locally for Tier 1 to work
  • Using --method taddy without TADDY_API_KEY: Falls through silently; set the key or use auto mode

How to use it

Copy the folder

Take varnan-tech/podcast-transcript-fetcher from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference pip, brew. Without those the skill loads but fails at the first command.