B 站视频资料包
把一个 B 站链接变成一份 Markdown 资料包:元信息 + 简介 + 字幕全文 + 热门评论。 既能立刻出总结,也能存下来当后续对话的数据源。
文件结构
| 文件 | 作用 |
|---|---|
| scripts/fetch_bili.py | 抓单个视频的元信息 / 字幕 / 评论 |
| scripts/search_bili.py | 关键词搜索,手上没有 BV 号时用 |
两个脚本只依赖 Python 标准库,不需要 pip 安装任何东西。
环境要求
- Python 3.9 或更高
- 能访问
api.bilibili.com
登录凭证(可选)
不登录也能抓,但部分视频的 AI 字幕需要登录态才能拿到。
配法:
- 浏览器打开
https://www.bilibili.com并登录 - 按 F12 → Application(应用)→ Cookies →
https://www.bilibili.com - 找到
SESSDATA,双击 Value 全选复制 - 在本 Skill 根目录新建
cookie.txt,把值粘进去
脚本会自动读取 <Skill 目录>/cookie.txt,其次 ~/.bili_cookie。
文件里写 SESSDATA 的值,或写一整条 Cookie,两种都行。
运行时会打印 · 登录凭证:已加载 或 未加载。
cookie.txt是账号凭证,不要提交到任何公开仓库。
用法
抓取单个视频
python scripts/fetch_bili.py "https://www.bilibili.com/video/BV1xx411c7mD"
python scripts/fetch_bili.py BV1xx411c7mD --comments 60 --out ./out
| 参数 | 说明 | 默认 |
|---|---|---|
| url | 视频链接或 BV 号 | 必填 |
| --comments N | 抓多少条评论;0 表示跳过评论 | 300 |
| --out DIR | 输出目录 | 系统桌面的 B站总结 |
成功输出四行,最后一行是 ✓ 已保存:<路径>。
输出文件名为 <BV号>_<标题>.md。
按关键词搜索
python scripts/search_bili.py "关键词1" "关键词2" --pages 2 --after 2026-01-01 --min-play 1000
| 参数 | 说明 | 默认 |
|---|---|---|
| keywords | 一个或多个关键词,结果自动合并去重 | 必填 |
| --pages N | 每个关键词翻几页(每页 20 条) | 1 |
| --after | 只要该日期之后发布的,格式 YYYY-MM-DD | 不限 |
| --min-play N | 只保留播放量 ≥ N 的 | 0 |
| --limit N | 最多输出多少条 | 40 |
输出文件结构
四段:元信息 → 简介 → 字幕全文 → 热门评论。 字幕一般在前 900 行内,评论在文件后段。
已知限制
| 情况 | 说明 |
|---|---|
| 字幕为空 | 该视频确实没有字幕,或 cookie 过期(脚本会打印 未加载)。不要反复重试 |
| 多 P 视频 | 默认只抓第 1 个分 P |
| 接口返回 -352 | B 站风控,稍后再试或降低请求频率 |
| cookie 过期 | 约一个月一次,按上面的步骤重新取 SESSDATA |
实现要点(改代码前先看)
| 坑 | 正解 |
|---|---|
| 旧评论接口 x/v2/reply 只返回 3 条,翻页全空 | 改用 wbi 签名的 x/v2/reply/wbi/main + cursor 翻页 |
| x/player/v2 返回的字幕列表里 subtitle_url 是空的 | 改用 wbi 签名的 x/player/wbi/v2,且必须带 bvid 参数 |
| 评论翻页过快触发风控 -352 | 每页间隔 0.4 秒 |
wbi 签名所需的固定重排表(MIXIN_TAB)已写在 fetch_bili.py 里,search_bili.py 直接复用。
Scan to join WeChat group