podcast-transcript-txt-skill 深度研究:任何播客一键变 TXT,本地转录不上传
> GitHub: KingJing1/podcast-transcript-txt-skill
> 作者: @一龙小包子
> License: MIT
> 研究时间: 2026-03-26
🎯 一句话版本
给一个播客链接(YouTube/小宇宙/Apple Podcasts/X 链接/甚至只给标题),自动输出干净的 .txt 文字稿。优先用官方字幕,没有就本地 ASR 转录(faster-whisper),全程不上传音频到第三方。可以作为 Claude Code / OpenClaw 的 Skill 直接调用。
🧠 核心理念
> "Audio locks you in. Text sets you free."
> 音频把你锁住,文字让你自由。
播客是线性的——不能标注、不能快速对比、不能跳到三周前模糊记得的某句话。转成文字后:
- 可以标注、搜索、引用
- 可以两篇访谈并排对比矛盾之处
- 可以跳到任何位置
🔗 解析链路(智能 Fallback)
输入(URL/标题)
↓
① 官方 Transcript? → ✅ 直接用(最高质量)
↓ 没有
② YouTube 字幕? → ✅ yt-dlp 提取
↓ 没有/质量差
③ 页面结构化文本? → ✅ show notes / 页面正文
↓ 没有
④ 音频可获取? → 下载 → faster-whisper 本地 ASR → ✅ draft
↓ 全部失败
⑤ 报错 + 详细失败日志
每一步都记录在 .meta.json 里,可以审计每一次尝试和失败原因。
📥 支持的输入源
| 输入类型 | 示例 | 首选路径 |
|---|---|---|
| YouTube URL | `youtube.com/watch?v=...` | 描述中的官方 transcript → 字幕 → 音频 ASR |
| 小宇宙 | 页面链接 | 官方 transcript → 页面文本 → 音频 ASR |
| Apple Podcasts | 自动发现 | 标题搜索 → 音频 ASR |
| X/Twitter | `x.com/user/status/...` | 解析外链 → 转入正常流程 |
| 官方 transcript | .ttml / .json URL | 直接解析 |
| 音频 URL | .mp3 / .m4a | 直接本地 ASR |
| **纯标题** | "Dario Amodei 访谈" | Scripod → YouTube 搜索 → Apple → ASR |
纯标题搜索是最聪明的功能——你只记得"那个 Dario Amodei 的播客",它帮你找到并转录。
🎤 ASR 引擎
faster-whisper(本地运行):
| 模型 | 速度(CPU) | 质量 |
|---|---|---|
| **small**(默认) | 30min 音频 → 8-20min | 一般,适合草稿 |
| medium | 30min 音频 → 15-35min | 较好,人名/术语更准 |
⚠️ ASR 输出标记为 draft——建议用 LLM 校对一轮:
> "Proofread this draft transcript with minimal edits: fix obvious homophone errors and punctuation, keep meaning unchanged."
📤 输出
每个输入产生两个文件:
/tmp/transcripts/
├── episode-title.txt # 干净的转录文本
└── episode-title.meta.json # 执行元数据
meta.json 关键字段:
resolver:哪条路径产出了结果source:最终来源 URLstatus:ok / warnquality:行级质量指标attempts[]:每一步的尝试和失败
🔧 使用
# 安装
git clone https://github.com/KingJing1/podcast-transcript-txt-skill.git
cd podcast-transcript-txt-skill
pip install -r requirements.txt
# 环境检查
python3 scripts/podcast_transcript_txt.py --doctor
# 单个转录
python3 scripts/podcast_transcript_txt.py \
--input "https://www.youtube.com/watch?v=n1E9IZfvGMA" \
--out-dir "/tmp/transcripts"
# 批量转录
python3 scripts/podcast_transcript_txt.py \
--input "https://youtube.com/..." \
--input "Dario Amodei 访谈" \
--out-dir "/tmp/transcripts"
💡 与我们的关联
1. 和 summarize CLI 的对比 ⭐⭐⭐
我们目前用 summarize CLI 处理音视频:
| summarize | podcast-transcript-txt | |
|---|---|---|
| 定位 | 转录 + **摘要** | **纯转录**(干净 TXT) |
| 输出 | 摘要文本 | 完整转录 + meta.json |
| 转录引擎 | Groq → whisper.cpp → 云端 | **faster-whisper 本地** |
| 小宇宙支持 | ❌ | ✅ |
| 纯标题搜索 | ❌ | ✅(Scripod + Apple) |
| 隐私 | 可能上传到 Groq 云端 | **全程本地** |
| 元数据 | 无 | ✅ meta.json(审计链) |
互补关系:
- 需要快速摘要 →
summarize - 需要完整文字稿(存档/引用/对比)→
podcast-transcript-txt - 需要隐私保护 →
podcast-transcript-txt(不上传音频)
2. 深度研究的音频源处理
当 Young 发一个播客链接做深度研究时:
- 目前:用
summarize拿摘要 - 可以加:用这个工具拿完整文字稿存到
raw/,摘要做报告
3. OpenClaw Skill 直接兼容
README 明确提到支持 OpenClaw(小龙虾)。可以作为 Skill 安装:
cp -R podcast-transcript-txt-skill ~/.openclaw/skills/podcast-transcript-txt
4. meta.json 的审计链设计
每次运行记录完整 attempt trace——这个 pattern 值得 OpenClaw 工具借鉴:
- 不只是返回结果,还记录怎么得到的结果
- 失败时能精确定位哪一步出了问题
⚠️ 注意事项
1. ASR 质量有限:中文人名/术语同音字问题,需要 LLM 校对
2. CPU 速度慢:60 分钟音频在 CPU 上可能要 40-70 分钟(GPU 会快很多)
3. yt-dlp 依赖:YouTube 经常更新反爬,yt-dlp 需要保持最新
4. 不绕过付费墙/DRM:付费内容不可用
5. 无说话人分离:输出是时间戳文本,不区分说话人
📊 评分
| 维度 | 评分(/10) |
|---|---|
| 实用性 | 8.5 — 多源输入 + 智能 fallback + 本地处理 |
| 设计质量 | 8.5 — meta.json 审计链 + --doctor 环境检查 + 确定性优先级 |
| 隐私保护 | 9.0 — 不上传音频到第三方 |
| 与 Agent 集成 | 8.0 — CLI-first,任何能跑 shell 的 Agent 都能用 |
| 与我们的关联 | 7.5 — 补充 summarize 的完整转录能力 |
| **综合** | **8.0** |
报告由深度研究助手自动生成 | 2026-03-26
来源: GitHub