跳到主要内容
知仓学习社ZHICANG

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 …

读凭据执行命令联网写文件读文件严重 7 · 高危 6Varnan-Tech/opendirectory

它会碰到什么

扫了多少7 个文本文件,78 KB
它会碰到什么读凭据执行命令联网写文件读文件
命中总数56 处
命中统计严重 7 · 高 6 · 中 22 · 低 20
逐条看命中(13 条严重或高危)
  • 严重 README.md:81cred-paths
    cp .env.example .env
  • 严重 README.md:81cred-paths
    cp .env.example .env
  • 严重 README.md:82cred-paths
    # Then edit .env with your GROQ_API_KEY
  • 严重 README.md:188cred-paths
    ├── .env.example            ← Template for API keys
  • 严重 scripts/get_transcript.py:36cred-paths
    # Auto-load .env from project root or parent directories
  • 严重 scripts/get_transcript.py:42cred-paths
    load_dotenv(_project_root / ".env")
  • 严重 SKILL.md:190cred-paths
    - **Forgetting API keys**: Set `GROQ_API_KEY` in your env or `.env` file
  • scripts/get_transcript.py:1093cred-envread
    groq_key = os.environ.get("GROQ_API_KEY")
  • scripts/get_transcript.py:1130exec-spawn
    subprocess.run(
  • scripts/get_transcript.py:1168cred-envread
    base = os.environ.get("GROQ_API_KEY", "").strip()
  • scripts/get_transcript.py:1176cred-envread
    val = os.environ.get(f"GROQ_API_KEY_{idx}", "").strip()
  • scripts/get_transcript.py:1201cred-envread
    groq_key = api_key or os.environ.get("GROQ_API_KEY")
  • scripts/get_transcript.py:1255cred-envread
    api_key = os.environ.get("TADDY_API_KEY")

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

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

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。