用 AI Agent 全自动提取 B 站视频字幕并整理为 Joplin 笔记
笔记 AI 0

用 AI Agent 全自动提取 B 站视频字幕并整理为 Joplin 笔记

一条命令下去,AI 自动打开浏览器、抓取 AI 字幕、翻译理解、写出学习笔记、存进 Joplin。全程无需手动操作。

一、先看效果

以「大象放映室」的《天价药是怎么降价的?》为例:

  • 📺 视频时长 47 分钟,英文 AI 字幕 801 条

  • 🤖 AI 自动翻译理解,生成结构化中文笔记

  • 📒 笔记自动保存到 Joplin「学习笔记」文件夹

  • 📝 笔记包含:知识地图、核心概念卡、关键判断矩阵、国际对比、实践框架

二、整体架构

整个流程涉及四个组件协同工作:

用户指令 → AI Agent(Claude Code / Pi)
                │
    ┌───────────┼───────────┐
    ▼           ▼           ▼
bili-note   browser-relay  Joplin API
 (skill)    (扩展+中继)   (localhost:41184)
    │           │           │
    ▼           ▼           ▼
提取元数据   已登录Chrome   创建/更新笔记
探测字幕     执行JS获取     Markdown格式
下载字幕     字幕URL       存入指定文件夹

三、核心工具与接入方式

3.1 bili-note Skill — B 站内容提取引擎

是什么:一套 Python 脚本,负责从 B 站获取视频元数据、字幕探测、字幕下载、图文提取、评论区抓取、材料归档和笔记预算评估。

核心脚本

脚本

功能

check_environment.py

检查所有依赖和可用路线

extract_bilibili.py

提取元数据、探测字幕、下载普通字幕

fetch_browser_ai_subtitles.py

通过浏览器获取登录态 AI 字幕

archive_bili_materials.py

归档完整材料并生成证据索引

3.2 Browser Relay — 浏览器控制桥梁

是什么:一个 Chrome 扩展 + 本地 Node.js 中继服务器,让 AI Agent 能够控制你真实登录的 Chrome 浏览器——导航页面、点击按钮、执行 JavaScript,全都通过 HTTP API 完成。

架构

AI Agent ──HTTP──▶ localhost:18795 (中继服务器)
                         │
                    WebSocket
                         │
              Chrome 扩展 (已安装)
                         │
                  你的 Chrome 浏览器
                  (带 B 站登录 Cookie)

安装步骤

  1. 全局安装 CLI:npm install -g browser-relay

  2. 在 Chrome 扩展商店安装「Browser Relay」扩展

  3. 确认中继服务器已随扩展自动启动

  4. 验证:curl http://127.0.0.1:18795/api/tabs 应返回标签页列表

为什么用它而不是 Playwright/Puppeteer:你已经在 Chrome 里登录了 B 站——Browser Relay 直接复用你的登录态,不需要额外配置 Cookie。B 站的 AI 字幕接口需要登录后才能调用,这正是 browser-relay 的价值所在。

3.3 Joplin API — 笔记自动入库

是什么:Joplin 桌面版内置的 Web Clipper API,默认监听 localhost:41184,通过 HTTP + Token 认证。

配置步骤

  1. 打开 Joplin → 工具 → 选项 → Web Clipper

  2. 启用 Web Clipper 服务

  3. 复制授权 Token(长串 hex 字符串)

  4. 验证:curl "http://localhost:41184/folders?token=YOUR_TOKEN"

关键 API 端点

端点

用途

GET /folders

获取所有笔记本文件夹

POST /notes

创建笔记(body 为 Markdown)

PUT /notes/{id}

更新已有笔记

GET /notes/{id}

读取笔记内容

四、完整实操流程

Step 1:检查环境就绪

python ~/.pi/agent/skills/bili-note/scripts/check_environment.py

输出关注三点:Bilibili API: reachablebrowser-relay: reachable, tabs=N、Joplin ping 通 JoplinClipperServer

Step 2:提取视频元数据并探测字幕

python ~/.pi/agent/skills/bili-note/scripts/extract_bilibili.py \
  "BV1SJM36qEy9" --out ./tmp_extract

生成 subtitle_probe.json。如果 need_login_subtitle: truesubtitles: [],说明需要走浏览器路线。

Step 3:通过浏览器获取 AI 字幕

python ~/.pi/agent/skills/bili-note/scripts/fetch_browser_ai_subtitles.py \
  --backend browser-relay \
  --bvid BV1SJM36qEy9 \
  --out ./tmp_extract

这一步发生了什么:

  1. 脚本通过 /api/tabs 自动发现已打开视频的 Chrome 标签页

  2. 在页面中执行 JS 调用 B 站 /x/player/wbi/v2 接口(浏览器自带登录 Cookie)

  3. 获取 AI 字幕下载 URL

  4. 下载字幕 JSON → 转存为纯文本 TXT + SRT 格式

Step 4:AI 理解字幕并写笔记

Agent 读取完整字幕文本,按照 bili-note 规定的「学习型笔记」标准撰写:

  • 知识地图(全景式结构图)

  • 核心概念卡(是什么 / 为什么重要 / 怎么用 / 常见误区)

  • 关键判断矩阵(区分事实描述、经验判断、推荐做法)

  • 国际对比 / 实践框架 / 坑点反例

Step 5:保存到 Joplin

# 获取学习笔记文件夹 ID
curl "http://localhost:41184/folders?token=YOUR_TOKEN"

# 创建笔记(假设文件夹 ID 为 58e0f52e...)
curl -X POST "http://localhost:41184/notes?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"笔记标题","body":"Markdown 正文...","parent_id":"..."}'

五、为什么不直接用 B 站 API

B 站有两个字幕接口:

接口

路径

字幕 URL

公开接口

/x/player/v2

ai-zh 存在但 subtitle_url 为空

播放器接口

/x/player/wbi/v2

返回真实的字幕下载 URL

公开接口只能告诉你「有 AI 字幕」,但不给你下载地址。播放器接口需要登录态 + WBI 签名,这就是必须走浏览器的原因——让已登录的 B 站页面替我们请求接口,不读取、不复制浏览器 Cookie。

六、这套流程还能做什么

  • 📹 多分 P 视频:脚本自动处理所有分 P,逐 P 下载字幕

  • 💬 评论区提取:加 --comments 参数可抓取评论并过滤无关讨论

  • 📄 B 站图文:支持 opus 动态和专栏文章提取

  • 🗂️ 材料归档:完整字幕、评论、元数据自动归档为 JSONL 索引

  • 🎯 笔记预算:根据视频时长和信息密度自动推荐笔记字数区间

七、相关链接

---

用 AI Agent 全自动提取 B 站视频字幕并整理为 Joplin 笔记
https://chiban.fyi/archives/yong-ai-agent-quan-zi-dong-ti-qu-b-zhan-shi-pin-zi-mu-bing-zheng-li-wei-joplin-bi-ji
作者
Chiban
发布于
更新于
许可