varnan-tech/opendirectory

podcast-transcript-fetcher

Use when fetching, searching, or analyzing transcripts from Lenny's Podcast, Dwarkesh Podcast, Cheeky Pint, 20VC, or A16z Podcast.

First seen Jul 2, 2026

Installation

$ npx skills add varnan-tech/opendirectory --skill podcast-transcript-fetcher

Summary

  • 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.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from varnan-tech/opendirectory · top by installs.

npx skills add varnan-tech/opendirectory

Browse all from varnan-tech/opendirectory

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 636
License LICENSE
Default branch main
Open issues 1
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.1.0

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 7,728 B
  • docs SUMMARY.md 431 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 19 installs

SKILL.md

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 TADDYAPIKEY ($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 GROQAPIKEY 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 TADDYAPIKEY: Falls through silently; set the key or use auto mode