YouTube 字幕转 Markdown 喂给 Claude/ChatGPT:2026 实战工作流
YouTube 字幕转 Markdown 喂给 Claude/ChatGPT:2026 实战工作流
YouTube 是开放网络上最大的音频知识语料库。长尾访谈(Lex Fridman / Tim Ferriss / 钛媒体 / 老高与小茉)、大会演讲、技术教程深度剖析、讲座系列 — 全都可搜索免费,AI 研究流程里却几乎完全没用上。瓶颈不是模型,是怎么把 YouTube 字幕干净抽取并喂给你选择的 AI。
本文是把 90 分钟讲座变成 Claude / GPT-5.5 能真正推理的 Markdown 工作流。
为什么 YouTube 字幕直接用很麻烦
你点 YouTube 的「显示字幕」复制结果,得到的是:
0:00 大家好欢迎回到节目今天我们聊的是
0:03 transformer 架构和 attention 怎么随着
0:06 输入序列长度 scaling 所以基本上你要
0:09 理解的核心点是
LLM 输入的三个问题:
- Token 浪费:每 3 秒一个时间戳,2-4 tokens。一小时视频累积约 3,000 tokens 纯时间戳噪声。
- 没语义结构:没段落、没章节、没发言人标签。Claude 要从散文推断话题转换。
- 缺标点:自动字幕是无标点连续文本。句子边界靠推断而非给定。
结果:token 不高效、推理更难、不能引用(「主播在哪个时间戳说 X」?)。
干净 YouTube Markdown 长什么样
经过 YouTube 专用提取器后:
# 通俗解释 Transformer
**频道**: 3Blue1Brown · **时长**: 45:12 · **发布**: 2026-04-15
**来源**: https://www.youtube.com/watch?v=abc123
## 00:00 — 介绍和动机
大家好,欢迎回到节目。今天我们聊的是 transformer 架构和 attention 怎么
随着输入序列长度 scaling。基本上你要理解的核心点是...
## 08:42 — Self-attention 机制
[继续,包含正常的段落和章节分隔]
## 23:15 — Multi-head attention
...
## 38:50 — 实际实现
...
## 顶部评论
- **@user1234** (👍 847): "12:30 那个图终于让我搞懂 query/key/value 向量到底是啥意思了 — 谢了!"
- **@user5678** (👍 412): "小修正:19:30 那个乘法应该是 QK^T 不是 Q*K..."
比原始字幕小约 40%。时间戳作为章节锚点,可引用特定时刻。顶部评论包含进来作为修正和补充上下文。Claude 读了能产出带时间戳精确引用的回答。
工作流
三条路,看你的设置:
路径 1:Web2MD YouTube 提取器(最简单)
Chrome 打开 YouTube 视频。点 Web2MD。提取器抓取:
- 标题、频道、时长、发布日期、描述
- 完整字幕,自动检测章节分隔
- 时间戳作为
## HH:MM — 章节标题锚点 - 按点赞数排序的顶部评论
- 格式化为干净 Markdown,可直接贴 Claude 或 ChatGPT
端到端:每视频约 8 秒。免费版处理 3 视频/天,Pro 无限。
路径 2:YouTube Transcript API + 自定义脚本
要批量处理的开发者:
from youtube_transcript_api import YouTubeTranscriptApi
import re
def youtube_to_markdown(video_id):
transcript = YouTubeTranscriptApi.get_transcript(video_id)
# 按约 5 分钟分组
sections = []
current_section = {"start": 0, "text": []}
for entry in transcript:
if entry["start"] - current_section["start"] > 300: # 5 分钟
sections.append(current_section)
current_section = {"start": entry["start"], "text": []}
current_section["text"].append(entry["text"])
sections.append(current_section)
md = []
for s in sections:
mins = int(s["start"] // 60)
secs = int(s["start"] % 60)
md.append(f"## {mins:02d}:{secs:02d}")
md.append(" ".join(s["text"]).replace("\n", " "))
md.append("")
return "\n".join(md)
适合批量任务(100+ 视频做语料库)。拿不到评论和 metadata — 需要的话加 YouTube Data API。
路径 3:没字幕的视频用 Whisper
无字幕的上传视频:
yt-dlp -x --audio-format mp3 <video_url>
whisper.cpp -m models/ggml-large-v3.bin -f audio.mp3 -of transcript -otxt
Whisper 输出再走一遍 Markdown 清洗。OpenAI 托管 API 约 $0.36/小时,M 系列 Mac 本地 Whisper.cpp 免费。
真实例子:跨 podcast 研究合成
上个月我想对比三个不同 AI podcast(Latent Space / Cognitive Revolution / No Priors)在 6 个月内怎么覆盖一个特定架构选择。
- 通过搜索找到 15 个相关 episode
- Web2MD 批量导出字幕:约 12 分钟
- 结果:180 页 Markdown 语料库,约 140k tokens
- 贴到 Claude Opus 4.7,prompt:「这是 15 个 podcast 字幕。识别每个主持人对 [X] 话题的方法。按时间顺序展示带时间戳引用的对比。」
- 输出:带验证 podcast 时刻引用的时间顺序对比
总耗时:包含我已经听过的部分约 80 分钟。手动版本要整个周末。
不适用的场景
诚实说限制:
- 不替代看视频。demo / 代码演示 / 视觉重要的内容,字幕传达不了。这套适合谈话向内容(访谈、讲座、podcast)。
- 直播不行。快照工作流。直播结束后用字幕。
- 音乐或非语音音频不行。Whisper 很好,但为语音设计。
- 不能做商业训练数据。YouTube 条款限制批量抽取用于模型训练。个人研究 + 单独 AI prompt 是 OK 的,建 1000 万视频训练语料库不行。
与其他工作流搭配
这工作流配合下面这些很好:
- Reddit 到 Claude 管道:Reddit 上关于 podcast 的讨论 + 字幕 = 完整 discourse
- Claude 1M 上下文窗口填法:12 个 podcast 字幕约 200k tokens — 装得下
- DeepSeek R2 中文内容管道:B 站中文 podcast 用相同流程,B 站专用提取器
- 降低 LLM token 成本:干净字幕比原始版省 40%
相关阅读
安装
免费 3 次/天。Pro $9/月解锁无限 + 队列 + 批量导出 + 带时间戳锚点的专用 YouTube 提取器。