chubbyguan/bilibili-transcribe
> 哔哩哔哩视频 → 下载 → 转录 → 存为 Markdown 的完整工作流。 支持 BV 号和完整链接,无需登录。
npx skills add https://github.com/chubbyguan/chubbyskills --skill bilibili-transcribe
字幕优先:先尝试抓取官方/自动字幕(秒级、免 GPU、免 funasr);抓不到再下载音频用 SenseVoice-Small 转录,存为 Markdown 文件。加 --no-subtitle 可强制走音频转录。
# 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
python scripts/transcribe.py "https://www.bilibili.com/video/BV1rrQGBeEen/"
python scripts/transcribe.py "BV1rrQGBeEen"
python scripts/transcribe.py "BV1rrQGBeEen" --no-subtitle # 强制音频转录
# 批量处理:每行一个 B站 URL 或 BV 号
python scripts/batch_transcribe.py ../../examples/bilibili-urls.txt -o ./output
B 站有反爬机制,需要加 User-Agent 和 Referer:
yt-dlp --extract-audio --audio-format mp3 --audio-quality 128K \
--user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ..." \
--referer "https://www.bilibili.com" \
"https://www.bilibili.com/video/BV1rrQGBeEen/"
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
model = AutoModel(
model="iic/SenseVoiceSmall",
trust_remote_code=True,
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
device="cpu",
)
result = model.generate(input=audio_path, language="zh", use_itn=True, batch_size_s=60)
自动创建带 frontmatter 的 Markdown 文件。
scripts/batch_transcribe.py 会逐条调用单篇转录脚本,默认单条失败后继续处理下一条;需要严格模式时加 --stop-on-error。
| 视频时长 | 转录耗时 |
|------|------|
| 5 min | ~10s |
| 10 min | ~20s |
| 30 min | ~60s |
仅供个人学习与研究使用。请遵守目标平台的服务条款(ToS)与 robots 规则,控制请求频率,不要用于批量抓取、商用爬取或侵犯他人权益的场景。下载内容的版权归原作者所有。
Take chubbyguan/bilibili-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.