chubbyguan/youtube-transcribe
> YouTube 视频 → 下载 → 转录 → 翻译 → 存为 Markdown。 支持中英文,英文内容自动翻译成中文,输出中英对照。
npx skills add https://github.com/chubbyguan/chubbyskills --skill youtube-transcribe
字幕优先:先抓官方/自动字幕(秒级、免 GPU),抓不到再下载音频用 SenseVoice-Small 转录;英文内容自动翻译成中文,输出中英对照 Markdown。加 --no-subtitle 可强制走音频转录。
YouTube 有大量优质英文内容,但很多人没时间看完或语言不通。这个 skill:
# Python 3.9+
python -m venv .venv
source .venv/bin/activate
# 依赖
pip install funasr modelscope torch torchaudio
# 系统依赖
# macOS: brew install ffmpeg yt-dlp
# Ubuntu: sudo apt install ffmpeg && pip install yt-dlp
# 翻译功能(可选,英文视频需要)
export DEEPSEEK_API_KEY="your-api-key"
python scripts/transcribe.py "https://www.youtube.com/watch?v=xxxxx"
python scripts/transcribe.py "https://www.youtube.com/watch?v=xxxxx" --output ./output
python scripts/transcribe.py "https://www.youtube.com/watch?v=xxxxx" --no-translate # 不翻译
python scripts/transcribe.py "https://www.youtube.com/watch?v=xxxxx" --no-subtitle # 强制音频转录
python scripts/batch_transcribe.py ../../examples/youtube-urls.txt -o ./output --no-translate
yt-dlp --extract-audio --audio-format mp3 --audio-quality 128K \
"https://www.youtube.com/watch?v=xxxxx"
from funasr import AutoModel
model = AutoModel(model="iic/SenseVoiceSmall", ...)
result = model.generate(input=audio_path, language="auto", use_itn=True)
---
title: 视频标题
type: note
tags: [YouTube]
language: en
translated: true
---
# 视频标题
> 转录引擎:SenseVoice-Small | 翻译:DeepSeek
## 中文翻译
翻译内容...
---
## English Original
原文内容...
scripts/batch_transcribe.py 支持 URL 列表批处理,默认单条失败后继续处理下一条;需要严格模式时加 --stop-on-error。
默认使用 DeepSeek API 翻译。需要设置环境变量:
export DEEPSEEK_API_KEY="your-api-key"
支持的 LLM:
| 视频时长 | 下载 | 转录 | 翻译 | 总耗时 |
|------|------|------|------|------|
| 5 min | ~10s | ~5s | ~10s | ~30s |
| 10 min | ~15s | ~10s | ~20s | ~50s |
| 30 min | ~30s | ~30s | ~60s | ~2min |
仅供个人学习与研究使用。请遵守目标平台的服务条款(ToS)与 robots 规则,控制请求频率,不要用于批量抓取、商用爬取或侵犯他人权益的场景。下载内容的版权归原作者所有。
Take chubbyguan/youtube-transcribe from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip, brew.
Without those the skill loads but fails at the first command.