mcpField
B
bilibili-transcribe

bilibili-transcribe

github.com/chubbyguanCreative & media1.3k36 installsUpdated 2w ago
Repository

About bilibili-transcribe

bilibili-transcribe is a skill for turning Bilibili videos into Markdown transcripts. It prefers available subtitles and falls back to audio transcription with SenseVoice-Small, with scripts for single videos and batches.

Key features

  1. 01Subtitle-first transcription
  2. 02SenseVoice-Small audio transcription
  3. 03Markdown output with frontmatter
  4. 04Single-video and batch scripts
  5. 05Continue after per-video failures

Use cases

  1. 01Creating notes from a Bilibili video
  2. 02Transcribing videos without subtitles
  3. 03Processing a list of video URLs
  4. 04Saving transcripts as Markdown

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/chubbyguan/chubbyskills --skill bilibili-transcribe

After installing, type/bilibili-transcribein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

requirements.txt
scripts/
batch_transcribe.py
transcribe.py

Details

From the project README

B 站视频转录 Skill

字幕优先:先尝试抓取官方/自动字幕(秒级、免 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 urls.txt -o ./output

流程

Step 1: yt-dlp 下载音频

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/"
Step 2: SenseVoice-Small 转录
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)
Step 3: 生成 Markdown

自动创建带 frontmatter 的 Markdown 文件。

批量模式

scripts/batch_transcribe.py 会逐条调用单篇转录脚本,默认单条失败后继续处理下一条;需要严格模式时加 --stop-on-error。

性能数据

视频时长转录耗时
5 min~10s
10 min~20s
30 min~60s

已知限制

  • B 站 4K/1080P60 需要大会员,普通用户可下载 720P 以下
  • SenseVoice-Small 模型首次下载约 893MB
  • 不支持说话人分离
  • 合集视频会下载第一个分 P

参考项目

⚖️ 合规声明

仅供个人学习与研究使用。请遵守目标平台的服务条款(ToS)与 robots 规则,控制请求频率,不要用于批量抓取、商用爬取或侵犯他人权益的场景。下载内容的版权归原作者所有。

Comments

Markdown supported