bilibili-subtitles
# B 站字幕提取(yt-dlp)
## 依赖
- 已安装 **yt-dlp**(推荐):`brew install yt-dlp`
- 保持较新版本:`brew upgrade yt-dlp`(B 站接口常变)
## 何时用本 Skill
| 场景 | 是否适合 v1 |
|------|----------------|
| 视频有 UP 上传字幕或 B 站自动字幕 | ✅ |
| 无任何字幕轨 | ❌(需换有字幕视频,或另做音频转写) |
## 标准流程
### 1. 查看有哪些字幕
```bash
yt-dlp --list-subs "https://www.bilibili.com/video/BVxxxxxxxxxx/"
```
记下语言代码(如 `zh-Hans`、`zh-CN`)。
### 2. 只下载字幕(不下载视频)
```bash
yt-dlp --write-subs --write-auto-subs --skip-download \
--sub-langs "zh-Hans,zh-CN,zh,zh-Hant,en" \
-o "bilibili_%(id)s.%(ext)s" \
"https://www.bilibili.com/video/BVxxxxxxxxxx/"
```
- `--write-auto-subs`:含 B 站自动生成的字幕(若有)。
- 输出多为 `.vtt` 或 `.srt`,与视频同目录或当前目录。
### 3. 把 VTT 收成纯文本(便于喂给模型)
```bash
# 简单去时间轴与标记(按需调整路径)
sed -e '/^WEBVTT/d' -e '/^NOTE/d' -e '/^[0-9][0-9]:/d' -e '/^$/d' -e 's/<[^>]*>//g' \
"某文件.zh-Hans.vtt" | sed '/^$/d' > bilibili_subtitles_plain.txt
```
## 若出现 HTTP 412 / 无法下载网页
B 站可能对匿名请求限流。按顺序尝试:
1. **用浏览器 Cookie(推荐)**
```bash
yt-dlp --cookies-from-browser chrome --list-subs "URL"
```
可将 `chrome` 换成 `safari`、`firefox`(本机需已登录 bilibili.com)。
2. **导出 Netscape 格式 cookies.txt**,再:
`yt-dlp --cookies /path/to/cookies.txt ...`
3. **升级 yt-dlp** 后重试。
详见 [reference.md](reference.md)。
## 对 Agent 的提示
- 先 `--list-subs`,无可用语言则明确告知用户「该 BV 无字幕轨」,不要假装已提取。
- 提取成功后,优先读 `.srt`/`.vtt` 再总结;长文本可先落盘再分段阅读。
- 勿在回复中粘贴完整 Cookie 或账号秘密。
## ClawHub / OpenClaw 发布说明
本 Skill 为 **纯文档 + 系统命令**,无额外二进制。发布时在描述中写明:依赖 `yt-dlp`、可能需 Cookie、v1 不做无字幕转写。
标签
skill
ai