把 B站视频变成可检索、可反复回看的文字知识库 —— 取字幕/转写 → 按内容分段精编 → 选身份做全片总结升华 → 存进 Obsidian,跨视频全文检索。
A Claude Code skill that turns Bilibili videos into a searchable, re-readable text knowledge base.
它是 podcast-bridge 的「视频版」,复用其转写/章节/Markdown 引擎;音频播客与视频共用同一套「转录后产物」工作流。
- 取文本(两条路自动降级)
- 字幕快路径:命中 B站 AI/CC 字幕直接拉,秒级、免转写、免本地模型(需浏览器登录态取 cookie)。
- 转写兜底:无字幕时
yt-dlp抽音频 →ffmpeg转码 → BcutASR 分片并发转写(免 key)。
- 段落级时间戳:字幕/ASR 的 2–3 秒碎片自动合并成段落,降时间戳密度。
- 跨视频全文检索:SQLite FTS5 + jieba 中文分词;命中 0 时退化为子串搜索。
- (Agent 产物)按内容分段的逐字精编 + 身份化全片总结升华:见 工作流。
每个单集落 1–2 个产物,结构 <library_dir>/<频道>/<单集>/{全文稿.md, 笔记.md}。
| 依赖 | 说明 |
|---|---|
Python 3.10+(推荐 python3.11) |
系统 3.9 无法 import 引擎 |
| ffmpeg / ffprobe | 音频转写兜底(brew install ffmpeg) |
| yt-dlp | 取登录 cookie 拿 AI 字幕 + 无字幕时抽音频(brew install yt-dlp 或 pip install yt-dlp) |
| podcast-bridge | ⭐ 复用其 transcribe.py 转写引擎。默认在 ~/.claude/skills/podcast-bridge,或用环境变量 PODCAST_BRIDGE_DIR 指定 |
| jieba(可选) | 改善中文检索分词(pip install jieba) |
| Obsidian(可选) | 产物是带 YAML frontmatter / wikilink / dataview 的 Markdown,在 Obsidian 里体验最佳;纯 Markdown 在任何地方都能看 |
# 1) 装系统依赖
brew install ffmpeg yt-dlp # macOS
python3.11 -m pip install jieba # 可选,中文检索更准
# 2) 配置(复制示例后改成你的库目录)
cp config.example.json config.json
# 编辑 config.json 的 library_dir,指向你想存的目录(可指到 Obsidian vault 某子文件夹)
# 3) 确认转写引擎 podcast-bridge 已安装
# 默认 ~/.claude/skills/podcast-bridge;若在别处:export PODCAST_BRIDGE_DIR=/path/to/podcast-bridgepython3.11 analyze.py "https://www.bilibili.com/video/BV1xxxxx/" # 分析单个视频(字幕优先,无字幕转写)
python3.11 analyze.py BV1xxxxx --transcribe # 强制音频转写(忽略字幕)
python3.11 analyze.py BV1xxxxx --no-chapters # 不生成章节
python3.11 analyze.py search "<关键词>" # 跨视频全文检索
python3.11 analyze.py list --limit 30 # 列出已收录视频B站 AI 字幕需要登录态。
analyze.py会按序尝试BILIBILI_SESSDATA环境变量 →~/.bilibili_cookies.txt→yt-dlp --cookies-from-browser。确保浏览器已登录 bilibili.com,或手动设export BILIBILI_SESSDATA=...。
<library_dir>/
├── library.sqlite3 # 全文检索库
└── <频道/UP主>/ # 频道父文件夹(有则复用,无则新建)
└── <单集标题>/
├── 全文稿.md # 段落级 / 按内容分段逐字稿(兼检索源)
└── 笔记.md # 身份化全片总结升华(Agent 产物)
workflows/ 下两个 Claude Code Workflow 模板,用于长访谈(全文稿 > ~3 万字、单次输出装不下)或要求高保真时:
segment_transcript.js—— 按内容分段:切块 → 每块并行重排(说话人标注 + 话题小节 + 段落时间戳 + 口语清洗)→ 拼回。note_elevation.js—— 身份化升华:深读选身份 → 撰写 →(可选)双视角对抗校验 → 按需修订。
⚠️ 对抗双校验(事实接地 + 过度拔高)是可选附加,由note_elevation.js里的const VERIFY控制,默认关闭。它显著提升保真/可核查度,但每集要多跑 2 个校验 + 可能 1 个修订 agent、重读全文稿数遍,很费 token。高风险/事实密集内容(人物访谈、数据引文多)再开。
短稿无需工作流,Agent 直接读着做即可(见 references/summarization.md)。
转写/章节/Markdown 引擎复用 podcast-bridge。BcutASR 由哔哩哔哩「必剪」提供(免费免配置)。