---
name: Bilibili Transcribe
slug: bilibili-transcribe
category: Automation
description: Bilibili Transcribe downloads B 站 videos, prefers official or auto subtitles, and falls back to audio transcription when needed. Use it to convert a BV number or URL into a Markdown transcript file.
github: "https://github.com/chubbyguan/chubbyskills/tree/main/bilibili-transcribe"
language: Python
stars: 637
forks: 90
install: "npx degit https://github.com/chubbyguan/chubbyskills/tree/main/bilibili-transcribe ~/.claude/skills/bilibili-transcribe"
installs_to: ~/.claude/skills/bilibili-transcribe
source_path: bilibili-transcribe/SKILL.md
collection_size: 14
category_size: 1523
collection_url: "https://dirskills.com/collections/chubbyguan/chubbyskills"
added: 2026-08-24T05:17:45.850Z
last_synced: 2026-08-24T05:17:45.850Z
canonical_url: "https://dirskills.com/skills/bilibili-transcribe"
---

# Bilibili Transcribe

Bilibili Transcribe downloads B 站 videos, prefers official or auto subtitles, and falls back to audio transcription when needed. Use it to convert a BV number or URL into a Markdown transcript file.

**Install:**

```bash
npx degit https://github.com/chubbyguan/chubbyskills/tree/main/bilibili-transcribe ~/.claude/skills/bilibili-transcribe
```

## README

# B 站视频转录 Skill

**字幕优先**：先尝试抓取官方/自动字幕（秒级、免 GPU、免 funasr）；抓不到再下载音频用 SenseVoice-Small 转录，存为 Markdown 文件。加 `--no-subtitle` 可强制走音频转录。

## 环境要求

```bash
# 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
```

## 使用方法

```bash
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
```

## 流程

### Step 1: yt-dlp 下载音频

B 站有反爬机制，需要加 User-Agent 和 Referer：

```bash
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 转录

```python
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

## 参考项目

- [yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp) - 视频下载工具
- [FunAudioLLM/SenseVoice](https://github.com/FunAudioLLM/SenseVoice) - 语音识别模型

## ⚖️ 合规声明

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