$npx -y skills add Varnan-Tech/opendirectory --skill podcast-transcript-fetcherUse 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", "sum
| 1 | # Podcast Transcript Fetcher |
| 2 | |
| 3 | 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. |
| 4 | |
| 5 | ## Quick Reference |
| 6 | |
| 7 | ```bash |
| 8 | # Get latest episode transcript (auto-detects best method) |
| 9 | python scripts/get_transcript.py "Lenny's Podcast" --latest |
| 10 | |
| 11 | # Search by episode title or number |
| 12 | python scripts/get_transcript.py 20vc --episode "Marc Andreessen" |
| 13 | python scripts/get_transcript.py dwarkesh --episode 15 |
| 14 | |
| 15 | # Force specific method |
| 16 | python scripts/get_transcript.py "cheeky pint" --latest --method whisper |
| 17 | python scripts/get_transcript.py a16z --latest --method taddy |
| 18 | |
| 19 | # Save to file |
| 20 | python scripts/get_transcript.py lennys --latest --output transcript.md |
| 21 | |
| 22 | # List all supported podcasts |
| 23 | python scripts/get_transcript.py --list-podcasts |
| 24 | ``` |
| 25 | |
| 26 | ## Supported Podcasts |
| 27 | |
| 28 | | Podcast | Tier 1 (best-effort) | Tier 2 RSS+Whisper [RECOMMENDED] | Tier 3 Taddy (premium) | |
| 29 | |---------|---------------------|-----------------------------------|------------------------| |
| 30 | | Lenny's Podcast | GitHub archive (269 transcripts) | ✅ Substack RSS | ✅ Covered | |
| 31 | | Dwarkesh Podcast | Website scrape + Substack PDF | ✅ Substack RSS | ✅ Covered | |
| 32 | | Cheeky Pint | (none) | ✅ Transistor.fm RSS | ✅ Covered | |
| 33 | | 20VC | Substack PDF | ✅ Libsyn RSS | ✅ Covered | |
| 34 | | A16z Podcast | Website scrape | ✅ Simplecast RSS | ✅ Covered | |
| 35 | |
| 36 | ## Implementation |
| 37 | |
| 38 | ### 1. Install Dependencies |
| 39 | |
| 40 | ```bash |
| 41 | # Core (always required) |
| 42 | pip install requests |
| 43 | |
| 44 | # Cloud transcription (recommended — fast, free tier) |
| 45 | pip install groq |
| 46 | export GROQ_API_KEY="your-key" # Get at https://console.groq.com |
| 47 | |
| 48 | # Local transcription (free, needs ~5GB RAM) |
| 49 | pip install faster-whisper |
| 50 | |
| 51 | # Audio compression (for Groq's 25 MB limit — Windows: winget/scoop) |
| 52 | # winget install ffmpeg or scoop install ffmpeg |
| 53 | |
| 54 | # Taddy API (commercial, optional) |
| 55 | export TADDY_API_KEY="your-key" # Get at https://taddy.org |
| 56 | ``` |
| 57 | |
| 58 | ### 2. Get a Transcript |
| 59 | |
| 60 | The script auto-selects the best method. **Tier 2 is the default recommendation:** |
| 61 | |
| 62 | ``` |
| 63 | Tier 1 → Tier 2 (RECOMMENDED) → Tier 3 |
| 64 | (best-effort) (Whisper) (Taddy API premium) |
| 65 | ``` |
| 66 | |
| 67 | **Tier 1: Free direct sources (best-effort, limited availability)** |
| 68 | - Lenny's: Clones `ChatPRD/lennys-podcast-transcripts` and searches by title |
| 69 | - Dwarkesh: Substack PDF scrape |
| 70 | - 20VC: Substack PDF scrape |
| 71 | - A16z: Website scrape |
| 72 | - Cheeky Pint: No Tier 1 sources available |
| 73 | - Note: Tier 1 sources are best-effort and limited. Tier 2 (RSS+Whisper) is the recommended approach. |
| 74 | |
| 75 | **Tier 2: RSS + Whisper transcription [RECOMMENDED]** |
| 76 | - Downloads MP3 from podcast RSS feed |
| 77 | - Compresses if >25 MB (ffmpeg) |
| 78 | - Transcribes via Groq Whisper API (free tier, ~10s per hour of audio) |
| 79 | - Fast, free, and works for every podcast in the registry |
| 80 | - Default recommendation for all use cases |
| 81 | |
| 82 | **Tier 3: Taddy API (commercial/premium)** |
| 83 | - Requires `TADDY_API_KEY` ($75/mo+) |
| 84 | - Use for large-scale or production transcript needs |
| 85 | - Covers all 5 podcasts with auto-transcription |
| 86 | |
| 87 | ### 3. Analyze with AI |
| 88 | |
| 89 | Once you have a transcript, pipe it to the agent for analysis: |
| 90 | |
| 91 | ```markdown |
| 92 | I have this transcript from [podcast]. Can you: |
| 93 | 1. Summarize the key arguments |
| 94 | 2. Extract 3 actionable insights |
| 95 | 3. Identify any controversial claims |
| 96 | 4. Compare with [other podcast] on the same topic |
| 97 | ``` |
| 98 | |
| 99 | ## Supported Workflows |
| 100 | |
| 101 | ### Single Episode |
| 102 | |
| 103 | | Scenario | Command | |
| 104 | |----------|---------| |
| 105 | | Latest episode | `get_transcript.py "Lenny's Podcast" --latest` | |
| 106 | | Specific episode by title | `get_transcript.py 20vc --episode "Sam Altman"` | |
| 107 | | Episode by number | `get_transcript.py dwarkesh --episode 42` | |
| 108 | | Force Whisper transcription (Tier 2, recommended) | `get_transcript.py a16z --latest --method whisper` | |
| 109 | | Force Taddy API (premium) | `get_transcript.py lennys --latest --method taddy` | |
| 110 | | Save to Markdown | `get_transcript.py cheeky-pint --latest --output episode.md` | |
| 111 | | JSON output | `get_transcript.py dwarkesh --latest --json` | |
| 112 | |
| 113 | ### Cross-Podcast Search & Batch |
| 114 | |
| 115 | | Scenario | Command | |
| 116 | |----------|---------| |
| 117 | | Search all podcasts by keyword | `get_transcript.py --search "Marc Andreessen"` | |
| 118 | | Search by guest name | `get_transcript.py --guest "Sam Altman"` | |
| 119 | | Search within one podcast | `get_transcript.py "Lenny's Podcast" --search "vibe coding"` | |
| 120 | | Batch-transcribe last N episodes | `get_transcript.py "Dwarkesh Podcast" --last 5` | |
| 121 | | Search + transcribe top matches | `get_transcript.py --search "AI |