| name | youtube-podcast-transcribe |
| description | 将 YouTube 播客视频(中文/英文)自动转写为中文逐字稿,保留原访谈的问答形式。支持输入 YouTube 链接,自动提取英文 transcript,翻译整理为结构化 Q&A 中文文档。触发词:"播客转写"、"YouTube 逐字稿"、"转写这个播客"、"YouTube transcript"。适用于服务器在国内无法直连 YouTube 的环境。 |
YouTube 播客转中文逐字稿
将 YouTube 播客视频转写为结构化中文 Q&A 逐字稿。
环境约束
服务器在国内,YouTube 完全不可达(yt-dlp、youtube-transcript-api、InnerTube API 全部超时)。所有方案必须通过第三方服务间接获取 transcript。
Transcript 提取(按优先级)
方法 1:播客官网直取(最快,优先)
很多知名播客在官网发布完整 transcript(含说话人标注),比 YouTube 字幕质量更高。
| 播客 | Transcript URL 规律 | 示例 |
|---|
| Dwarkesh Podcast | dwarkesh.com/p/{guest-name} | dwarkesh.com/p/john-schulman |
| Lex Fridman | lexfridman.com/podcast/{guest} | 部分有 |
| 20VC | thetwentyminutevc.com/podcast | 部分有 |
web_fetch(url="https://www.dwarkesh.com/p/{slug}", maxChars=100000)
如返回 404 或无 transcript,搜索:web_search("{播客名} {嘉宾名} transcript site:{播客域名}")
方法 2:Kome.ai(通用方案)
https://kome.ai/tools/youtube-transcript-generator — 无 Cloudflare 拦截,可从国内访问。
⚠️ 关键限制:
- 每个 session 仅 1 次免费 transcript,之后变 $2.50/次
- 清除 cookies + localStorage + sessionStorage 可重置免费额度
- YouTube video ID 大小写敏感,文档中的小写 ID 可能无效,需搜索确认正确 ID
操作流程:
1. 清除状态(每次提取前必做)
browser evaluate: document.cookie.split(';').forEach(c => {
document.cookie = c.trim().split('=')[0] + '=;expires=Thu,01 Jan 1970 00:00:00 UTC;path=/';
}); localStorage.clear(); sessionStorage.clear(); 'cleared'
2. 导航
browser navigate: https://kome.ai/tools/youtube-transcript-generator
3. 输入 URL(用 JS 直接设值 + 触发 React 事件)
browser evaluate:
const input = document.querySelector('input[type="url"], input[placeholder*="youtube"], input[placeholder*="URL"]');
const nativeSet = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
nativeSet.call(input, 'https://www.youtube.com/watch?v={VIDEO_ID}');
input.dispatchEvent(new Event('input', {bubbles: true}));
'URL set'
4. 点击 Generate
browser evaluate:
const btns = Array.from(document.querySelectorAll('button'));
const gen = btns.find(b => b.textContent.includes('Generate'));
if (gen) { gen.click(); 'Clicked Generate'; } else 'Not found';
5. 等待 8-12 秒(视频越长等越久)
6. 点击 "Get Transcript — Free"
browser evaluate:
const btns = Array.from(document.querySelectorAll('button'));
const free = btns.find(b => b.textContent.includes('Free') && b.textContent.includes('Transcript'));
if (free) { free.click(); 'Clicked Free'; } else 'No Free button found';
⚠️ 如果按钮显示 "$2.50" 而非 "Free",说明免费额度已用完,需清 cookie 重试
7. 等待 3-5 秒
8. 提取文本
browser evaluate:
const el = document.querySelector('[class*="transcript"]') ||
document.querySelector('pre') ||
document.querySelector('[class*="result"]');
if (el) {
window._fullText = el.textContent;
'Total: ' + window._fullText.length;
} else 'Not found';
9. 分段读取(每段 15000 字符)
browser evaluate: window._fullText.substring(0, 15000)
browser evaluate: window._fullText.substring(15000, 30000)
...直到读完
字幕不可用的情况: 如果返回 "Transcripts aren't available for this video",说明发布者限制了字幕访问,无法提取,跳过该视频。
方法 3:DownSub(备用,可能被 Cloudflare 拦截)
参见 subtitle-downloader skill。当前环境下 headless 浏览器会被 Cloudflare 拦截,仅在用户安装了 Browser Relay 扩展后可用。
Video ID 校验
YouTube video ID 大小写敏感! 文档或 Redoc 中的 URL 可能被自动转为小写导致字幕不可用。
校验步骤:
- 直接用文档中的 ID 尝试 Kome.ai
- 如返回"字幕不可用",用 web_search 搜索正确 ID:
web_search("{视频标题} {嘉宾名} site:youtube.com")
- 对比搜索结果中的正确 ID(注意大小写)
中文逐字稿整理
拿到英文 transcript 后,整理为结构化中文 Q&A 逐字稿。
格式规则
- 语言:输出中文,逻辑清晰可读
- 专业术语保留英文:AI、GPU、LLM、Agent、RL、RLHF、Scaling Law、Transformer、MoE 等
- 说话人标记:每段发言前加 first name +空格(如
Edwin Dwarkesh)
- 采访人处理:采访人发言用
<font color="blue">(内容)</font> 标蓝加括号
- 内容完整:不压缩、不省略实质性信息
- 删除口水话:嗯、啊、you know、like、I mean、um、uh 等
- 段落间空一行
- 加粗关键结论:
- 核心判断/定性(如"这不是垂直整合的问题,而是什么集成在什么场景下最重要")
- 预测/推断(如"真正的赢家可能是混合型架构")
- 反差/反直觉结论
- 关键数据支撑的结论
- 密度控制:每段最多 1-2 句加粗
文档头部模板
# {嘉宾名}:{主题} | 逐字稿
> **节目**:{频道名}
> **嘉宾**:{嘉宾全名},{职位}
> **时长**:{时长}
> **发布时间**:{年月}
> **来源**:https://www.youtube.com/watch?v={VIDEO_ID}
> **整理**:AI 辅助转写 + 结构化整理
---
内容结构
按话题语义分组(不按时间强行切割),每个话题用二级标题:
## 一、{话题名,5-10字}
**Q:{问题提炼}**
**{嘉宾名}**:回答内容……**关键结论加粗**……
---
上传 Redoc
整理完成后上传到 Redoc:
/app/skills/hi-redoc-curd/scripts/hi-redoc-curd.sh -p {逐字稿文件路径}
返回 Redoc 链接给用户。
批量处理流程
处理多个视频时:
- 先校验所有 video ID 的正确大小写(批量 web_search)
- 优先用播客官网直取 transcript(速度最快)
- 剩余的用 Kome.ai 逐个提取(每次提取前清 cookie)
- 整理一个上传一个,即时给用户 Redoc 链接
- 跳过字幕不可用的视频,最终汇总报告
进度汇报格式
✅ 第 X/N 完成:{标题}
📄 Redoc:{链接}
全部完成后输出汇总表:
| # | 标题 | 状态 | Redoc |
|---|------|------|-------|
| 1 | ... | ✅ | [链接](...) |
| 2 | ... | ❌ 字幕不可用 | — |
文件保存路径
podcast-transcripts/
├── 访谈原文/ # 英文原始 transcript
│ └── {序号}_{slug}.txt
└── 逐字稿/ # 中文结构化逐字稿
└── {序号}_{slug}.md