youtube markdownyoutube 字幕claude youtubeyoutube ai 工作流视频转文字 aiweb2mdai 研究

YouTube 字幕转 Markdown 喂给 Claude/ChatGPT:2026 实战工作流

Zephyr Whimsy2026-06-047 min read

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 输入的三个问题:

  1. Token 浪费:每 3 秒一个时间戳,2-4 tokens。一小时视频累积约 3,000 tokens 纯时间戳噪声。
  2. 没语义结构:没段落、没章节、没发言人标签。Claude 要从散文推断话题转换。
  3. 缺标点:自动字幕是无标点连续文本。句子边界靠推断而非给定。

结果: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 万视频训练语料库不行。

与其他工作流搭配

这工作流配合下面这些很好:

相关阅读

安装

Web2MD Chrome 扩展商店 →

免费 3 次/天。Pro $9/月解锁无限 + 队列 + 批量导出 + 带时间戳锚点的专用 YouTube 提取器。

Related Articles