用途
youtube-transcript 是一个用于下载 YouTube 视频转录文本(字幕/说明文字)的技能,底层依赖 yt-dlp 工具。当用户提供 YouTube 链接,或提出“下载 YouTube 转录文本”“获取字幕”“获取说明文字”“转录 YouTube 视频”等需求,或需要视频的文字内容时,可启用该技能。
主要能力
- 检查并(在可能时)自动安装 yt-dlp。
- 列出视频可用的字幕类型与语言。
- 优先下载人工字幕(质量最高)。
- 人工字幕不可用时回退到自动生成字幕。
- 两者都不可用时,作为最后手段使用 Whisper 进行语音转录(需用户确认)。
- 将 VTT 字幕转换为去重的纯文本,便于阅读或分析。
- 支持提取视频标题用于生成有意义的文件名。
使用方式
技能按以下优先级顺序工作:
- 检查 yt-dlp 是否已安装,未安装则尝试安装。
- 列出可用字幕:
yt-dlp --list-subs "YOUTUBE_URL"。 - 优先尝试人工字幕:
yt-dlp --write-sub --skip-download --output "OUTPUT_NAME" "YOUTUBE_URL"。 - 回退到自动生成字幕:
yt-dlp --write-auto-sub --skip-download --output "OUTPUT_NAME" "YOUTUBE_URL"。 - 最后手段使用 Whisper 转录(需用户确认)。
- 确认下载并告知用户文件保存位置。
- 可选地将 VTT 格式清理为纯文本。
安装检查命令:which yt-dlp || command -v yt-dlp。
若未安装,按系统尝试自动安装:
- macOS(Homebrew):
brew install yt-dlp - Linux(apt/Debian/Ubuntu):
sudo apt update && sudo apt install -y yt-dlp - 通用(pip):
pip3 install yt-dlp或python3 -m pip install yt-dlp
若安装失败,需告知用户手动安装,并提供 https://github.com/yt-dlp/yt-dlp#installation 的安装说明。
Whisper 转录流程(仅当人工与自动字幕均不可用时):
- 先显示音频文件大小并请求用户确认。
- 检查 Whisper 是否安装:
command -v whisper。 - 未安装时询问用户是否安装:
pip3 install openai-whisper(模型约需 1-3GB)。 - 仅下载音频:
yt-dlp -x --audio-format mp3 --output "audio_%(id)s.%(ext)s" "YOUTUBE_URL"。 - 使用 Whisper 转录:
whisper audio_VIDEO_ID.mp3 --model base --output_format vtt(可加--language en指定语言)。 - 转录完成后询问是否删除音频文件。
模型选项:tiny(最快、最不准,约 1GB)、base(平衡,约 1GB,推荐使用)、small(约 2GB)、medium(约 5GB)、large(最准,约 10GB)。
输出格式
- VTT 格式(.vtt):包含时间戳与格式,适合视频播放器。
- 纯文本(.txt):仅文本内容,适合阅读或分析。
文件名格式为 {output_name}.{language_code}.vtt(例如 transcript.en.vtt)。
适用场景
- 需要 YouTube 视频的文字内容用于阅读、分析或后续处理。
- 需要下载视频字幕文件。
- 视频没有字幕时,希望通过语音转录获得文本。
限制
- 依赖 yt-dlp,未安装时需先安装。
- 部分视频可能为私密、有年龄限制或地区封锁,导致无法下载。
- Whisper 转录需要用户确认,且可能依赖系统组件(ffmpeg、rust),模型需 1-10GB 磁盘空间。
- 自动生成字幕可能包含重复行,转换为纯文本时需去重。
- 默认下载所有可用语言字幕,可用
--sub-langs en指定单一语言。
最佳实践
- 下载前先用
--list-subs确认可用字幕。 - 每步验证成功后再继续。
- 大文件下载(音频、Whisper 模型)前先询问用户。
- 处理完成后清理临时文件。
- 各阶段提供清晰反馈,优雅处理错误。