播客文稿获取器
从支持的 5 个播客中获取文稿。第二层(RSS+Groq Whisper)是推荐方法——快速、免费,且在所有播客中最可靠。第一层免费来源为最佳努力(可用性有限)。第三层 Taddy API 是高级/商业选项。
快速参考
# 获取最新剧集文稿(自动检测最佳方法)
python scripts/get_transcript.py "Lenny's Podcast" --latest
# 按剧集标题或编号搜索
python scripts/get_transcript.py 20vc --episode "Marc Andreessen"
python scripts/get_transcript.py dwarkesh --episode 15
# 强制使用特定方法
python scripts/get_transcript.py "cheeky pint" --latest --method whisper
python scripts/get_transcript.py a16z --latest --method taddy
# 保存到文件
python scripts/get_transcript.py lennys --latest --output transcript.md
# 列出所有支持的播客
python scripts/get_transcript.py --list-podcasts
支持的播客
| 播客 | 第一层(最佳努力) | 第二层 RSS+Whisper [推荐] | 第三层 Taddy(高级) |
|---|---|---|---|
| Lenny's Podcast | GitHub 存档(269 篇文稿) | ✅ Substack RSS | ✅ 已覆盖 |
| Dwarkesh Podcast | 网站抓取 + Substack PDF | ✅ Substack RSS | ✅ 已覆盖 |
| Cheeky Pint | (无) | ✅ Transistor.fm RSS | ✅ 已覆盖 |
| 20VC | Substack PDF | ✅ Libsyn RSS | ✅ 已覆盖 |
| A16z Podcast | 网站抓取 | ✅ Simplecast RSS | ✅ 已覆盖 |
实现
1. 安装依赖
# 核心(始终需要)
pip install requests
# 云端转录(推荐——快速,免费层)
pip install groq
export GROQ_API_KEY="your-key" # 在 https://console.groq.com 获取
# 本地转录(免费,需约 5GB 内存)
pip install faster-whisper
# 音频压缩(针对 Groq 的 25 MB 限制——Windows:winget/scoop)
# winget install ffmpeg 或 scoop install ffmpeg
# Taddy API(商业,可选)
export TADDY_API_KEY="your-key" # 在 https://taddy.org 获取
2. 获取文稿
脚本会自动选择最佳方法。第二层是默认推荐:
第一层 → 第二层(推荐) → 第三层
(最佳努力) (Whisper) (Taddy API 高级)
第一层:免费直接来源(最佳努力,可用性有限)
- Lenny's:克隆
ChatPRD/lennys-podcast-transcripts并按标题搜索 - Dwarkesh:Substack PDF 抓取
- 20VC:Substack PDF 抓取
- A16z:网站抓取
- Cheeky Pint:无可用第一层来源
- 注意:第一层来源为最佳努力且有限。第二层(RSS+Whisper)是推荐方法。
第二层:RSS + Whisper 转录 [推荐]
- 从播客 RSS feed 下载 MP3
- 如果 >25 MB 则压缩(ffmpeg)
- 通过 Groq Whisper API 转录(免费层,每 1 小时音频约 10 秒)
- 快速、免费,且适用于注册表中的每个播客
- 所有用例的默认推荐
第三层:Taddy API(商业/高级)
- 需要
TADDY_API_KEY(每月 $75+) - 用于大规模或生产级别的文稿需求
- 覆盖所有 5 个播客,支持自动转录
3. 使用 AI 分析
获取文稿后,将其传递给代理进行分析:
我这里有来自 [播客] 的文稿。你能:
1. 总结关键论据
2. 提取 3 个可操作的见解
3. 识别任何有争议的主张
4. 与关于同一主题的 [其他播客] 进行比较
支持的工作流程
单集
| 场景 | 命令 |
|---|---|
| 最新剧集 | get_transcript.py "Lenny's Podcast" --latest |
| 按标题指定剧集 | get_transcript.py 20vc --episode "Sam Altman" |
| 按编号指定剧集 | get_transcript.py dwarkesh --episode 42 |
| 强制 Whisper 转录(第二层,推荐) | get_transcript.py a16z --latest --method whisper |
| 强制 Taddy API(高级) | get_transcript.py lennys --latest --method taddy |
| 保存为 Markdown | get_transcript.py cheeky-pint --latest --output episode.md |
| JSON 输出 | get_transcript.py dwarkesh --latest --json |
跨播客搜索与批量
| 场景 | 命令 |
|---|---|
| 按关键词搜索所有播客 | get_transcript.py --search "Marc Andreessen" |
| 按嘉宾名称搜索 | get_transcript.py --guest "Sam Altman" |
| 在单个播客内搜索 | get_transcript.py "Lenny's Podcast" --search "vibe coding" |
| 批量转录最近 N 集 | get_transcript.py "Dwarkesh Podcast" --last 5 |
| 搜索并转录最佳匹配 | get_transcript.py --search "AI safety" --transcribe |
| 自定义数量的流水线 | get_transcript.py --search "scaling laws" --transcribe --transcribe-count 5 |
| 过滤搜索流水线 | get_transcript.py "A16z Podcast" --search "crypto" --transcribe |
输出结构
批量转录保存到 output/ 目录,每个播客有子目录:
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
每个文件包含一个 YAML 前置元数据头:
---
podcast: Dwarkesh Podcast
episode: AGI is still 30 years away
date: 2024-01-15
url: https://...
source: whisper
---
播客注册表
位于 scripts/podcasts.json 的注册表将每个播客映射到其 RSS feed、文稿来源和 API 端点。要添加新播客:
{
"id": "new-podcast",
"name": "New Podcast",
"rss": "https://example.com/feed.xml",
"transcript_sources": {
"primary": {"type": "website_scrape", "url": "https://example.com"}
}
}
故障排除
| 问题 | 解决方案 |
|---|---|
| “未找到文稿” | 第二层(RSS+Whisper)是推荐方法。如果自动模式失败,尝试使用 --method whisper 强制使用。 |
| RSS 获取失败 | RSS feed 可能会更改;检查 scripts/podcasts.json 中的当前 URL |
| 音频下载慢 | 大型 MP3 在慢速连接上可能需要几分钟 |
| Groq 达到速率限制 | 等待或切换到本地 faster-whisper |
| Taddy 未返回文稿 | 部分剧集缺少文稿;尝试使用 --method whisper |
| 播客未在注册表中 | 将其添加到 scripts/podcasts.json |
| Windows 上的 Unicode 错误 | 已修复:脚本自动将 stdout 重新配置为 UTF-8;保存的文件使用 UTF-8 编码 |
| 音频超过 25 MB(适用于 Groq) | 安装 ffmpeg:winget install ffmpeg(Windows)或 brew install ffmpeg(macOS) |
RSS Feed 状态(截至 2026-06)
| 播客 | 旧 Feed(已失效) | 当前 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 |
常见错误
- 忘记 API 密钥:在环境变量或
.env文件中设置GROQ_API_KEY - 依赖第一层免费来源:第一层是最佳努力且有限的。始终回退到第二层(RSS+Whisper),这是推荐方法。
- 未先克隆 Lenny 的仓库:GitHub 存档必须在本地克隆才能使用第一层
- 在没有
TADDY_API_KEY的情况下使用--method taddy:会静默失败;请设置密钥或使用自动模式