如何获取 YouTube 文稿
获取 YouTube 视频文稿的五种方法:在 YouTube 里查看、使用 yt-dlp、用 Python、通过 Transcript Dock API,或者直接问 Claude。
更新于
先说结论:如果视频有字幕,YouTube 可以在简介下方显示它的文稿(展开 ...more,再点 Show transcript)。想把文稿存成文件,或者处理很多视频,可以在自己的电脑上使用 yt-dlp 或 Python 库 youtube-transcript-api;如果你在云端运行,或者还需要 TikTok,就向 Transcript Dock 这类托管 API 发一次请求。没有字幕的视频,则需要对音频做 AI 转录。
该选哪种方法#
| 方式 | 适合 | 费用 | 限制 |
|---|---|---|---|
| YouTube 文稿面板 | 手动处理单个视频 | 免费 | 视频必须有字幕;手动复制会丢失时间信息 |
| yt-dlp | 在自己电脑上运行的脚本 | 免费 | 得到的是字幕文件;很多云服务器 IP 会被拦截 |
| youtube-transcript-api | Python 笔记本和脚本 | 免费 | 在云端需要住宅代理;只支持 YouTube |
| Transcript Dock API | 应用、数据管道、大量视频 | 每个视频 1 个点数 | 托管服务,也支持 TikTok,没有字幕时可用 AI 转录 |
| Claude 或 Cursor(MCP) | 针对视频提问 | 每个视频 1 个点数 | 完全不用写代码 |
1. 在 YouTube 里查看#
- 在电脑上打开视频。
- 点击标题下方的
...more,展开简介。 - 滚动到简介底部,点击
Show transcript。 - 文稿会在视频旁边打开。用它顶部的菜单隐藏时间戳,然后选中并复制。
只有视频有字幕时才会出现这个按钮,字幕可以是创作者上传的,也可以是 YouTube 自动生成的。看一个视频没问题;手动复制会丢失时间信息,也没法批量处理。
2. 使用 yt-dlp#
yt-dlp 是一个免费的命令行工具。下面的命令会把英文字幕保存为 SRT 文件,不会下载视频:
yt-dlp --skip-download --write-subs --write-auto-subs --sub-langs en --convert-subs srt \"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
创作者没有上传字幕时,--write-auto-subs 会把 YouTube 的自动字幕也包含进来。在家里的网络上运行效果不错;在服务器上,YouTube 往往会要求它先登录。
3. 使用 Python#
开源库 youtube-transcript-api 读取的是同样的字幕,不需要 API 密钥:
# pip install youtube-transcript-apifrom youtube_transcript_api import YouTubeTranscriptApitranscript = YouTubeTranscriptApi().fetch("dQw4w9WgXcQ", languages=["en"])for snippet in transcript:print(round(snippet.start, 1), snippet.text)
它的 README 提醒说,YouTube 会封锁大多数属于云服务商的 IP 地址,所以在 AWS、Google Cloud 或 VPS 上需要轮换的住宅代理。参见Transcript Dock 与 youtube-transcript-api 对比。
4. 使用 Transcript Dock API#
只要三个请求:提交链接、等待、导出。它在任何环境都能运行(不用管理代理),返回带时间的分段,可导出 TXT、SRT、VTT 或 JSON,用在 TikTok 上也完全一样。一份字幕文稿消耗 1 个点数,每个账户每月有 50 个免费点数。
# 1. submit the link (1 credit)curl -X POST https://www.transcriptdock.com/v1/jobs \-H "Authorization: Bearer td_live_YOUR_KEY" \-H "Idempotency-Key: yt-dQw4w9WgXcQ" \-H "Content-Type: application/json" \-d '{ "source": { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }, "mode": "captions_only" }'# 2. wait for it (returns as soon as the job finishes)curl "https://www.transcriptdock.com/v1/jobs/JOB_ID?wait=25" -H "Authorization: Bearer td_live_YOUR_KEY"# 3. export the transcript (free)curl "https://www.transcriptdock.com/v1/transcripts/RESULT_ID/export?format=txt" -H "Authorization: Bearer td_live_YOUR_KEY"
完整流程见快速入门。要处理整个频道、播放列表或搜索结果,先用视频发现列出视频,再作为批量任务提交。
5. 询问 Claude 或 Cursor#
把 Transcript Dock 添加为连接器,然后用平常的话提问,比如附上链接问“这个视频讲了什么?”。Claude 会获取文稿,并根据文稿来回答。设置只要一分钟:Claude、Claude Code、Cursor。
视频没有字幕时#
上面的每种方法读取的都是已经存在的字幕。没有字幕时,就必须对音频做转录。使用 Transcript Dock 时发送 mode: "auto":有字幕就用字幕,没有就用 AI 转录,付费套餐每开始一分钟消耗 2 个点数。结果包含逐词时间。
常见问题#
- 这样做允许吗? 为自己的研究、无障碍或分析而读取字幕是常见做法;重新发布别人的文字则是版权问题。请根据你的用途查看 YouTube 的条款。
- 其他语言? 传入
caption_languages,例如["es", "en"],即可优先选用某条字幕轨道。用语言发现可以列出视频的所有字幕轨道。 - Shorts? 支持。Shorts、watch 和 youtu.be 链接都可以。