bilibili-note:用字幕把 B 站视频写成 Obsidian 结构化笔记

前言

在 DeepSeek Harness(DSH)里做知识沉淀,常见做法是:把视频里的信息落成可检索的 Markdown,放进 Obsidian。若自己写脚本拉 B 站资源,容易踩到「误下视频、分 P 时间轴错乱、无字幕仍生成空笔记」等问题;若把摘要、要点、标签全交给模型自由发挥,又缺少可校验的中间格式。

bilibili-note 把流程拆成两半:拉字幕、解析、排版、校验由 CLI / 技能脚本固定;摘要、要点、标签通过 content.json 约定交给模型或人工填写。下面按 DSH 插件视角介绍其能力与用法。

这是什么

bilibili-note 由维护者 3588834014-del 发布,在 SkillHub 插件目录 中归类为联网工具(目录页标注版本 v1.2.0)。项目同时提供独立 CLI 与可选的 DSH Agent Skill,二者共用实现(scripts/bili_note.py),安装路径相互独立。

一句话定位:输入 B 站视频链接,只通过 yt-dlp 拉取字幕文件(不下载视频),生成带 YAML front matter、可点击 ?t= 跳转要点、底部折叠全文的 Obsidian 笔记。

核心功能

只拉字幕,并校验未落盘媒体

fetch 强制 --skip-download,并在工作目录检查是否出现 .mp4、.flv、.m4a、.part 等媒体文件,避免误下视频。数据通道仅依赖 yt-dlp,不依赖私有 API。

分 P 合集合并时间轴

对 B 站分 P 合集,会逐 P 拉字幕并把时间戳重基准到一条连续时间线上。某一 P 无字幕时会跳过该 P 字幕内容,但保留其时长占位,避免后续 P 的时间戳整体前移。若多 P 字幕字节级完全相同,工具会报错退出,而不是重复同一部分内容。

无字幕则跳过

没有可用字幕时不会编造内容,也不会写出空笔记。

机械环节与判断环节分离

整体数据流如下:

Bilibili URL ──▶ fetch ──▶ manifest.json ──▶ [你 / Agent] ──▶ content.json ──▶ write ──▶ note.md
                  │         subtitles +                      summary, bullets,       │
                  │         timestamped segments             tags                    │
                  └── yt-dlp, subtitles only ────────────────────────────────────────┘
  • 脚本侧:fetch、write、verify、selftest 等。
  • 模型 / 人工侧:按文档填写 content.json(摘要、正文要点、标签、带 time 的 bullets)。不提供 content.json 时可生成带占位符、status: draft 的草稿笔记。

DSH 技能触发

将技能安装到 ~/.agents/skills/bilibili-note 后,会出现在 dsh 技能目录中,可用类似「B站笔记」的短语触发(以你本地 DSH 配置为准)。

安装与启用

依赖:Python 3.8+(仅标准库);yt-dlp 作为外部命令(README 建议 pip install -U yt-dlp)。许可证为 MIT。

作为 DSH Agent Skill

在已具备插件源码的目录中执行(SkillHub 目录页标注可安装,安装后一般可获得该目录):

python scripts/install.py            # 安装到 ~/.agents/skills/bilibili-note
python scripts/install.py --dry-run  # 预览将复制的文件

说明:安装技能不会自动安装 CLI;反之亦然。

作为独立 CLI(可选)

若希望在终端单独使用同一套逻辑:

pipx install git+https://github.com/3588834014-del/bilibili-note.git

安装后可用 bili-note --version 检查。

典型用法

Cookies(AI 字幕通常需要)

B 站 AI 字幕接口需要登录态。可用浏览器扩展 Get cookies.txt LOCALLY 登录 bilibili.com 后导出 cookies.txt。上传者自带字幕的视频有时可不配置。

注意:该扩展导出的 Netscape 格式可能与 http.cookiejar / yt-dlp 对域名字段的要求不一致,症状常表现为「像是没有字幕」。工具内置 normalize_cookies() 做域名与去重处理,一般无需手改文件。

指定 cookie 路径:

export BILI_COOKIES=/path/to/cookies.txt      # Linux / macOS

PowerShell:

$env:BILI_COOKIES = "C:\path\cookies.txt"

笔记输出目录

不写死默认 Vault 路径,避免在别人机器上静默建空目录。可显式传参或设环境变量:

bili-note note "<URL>" --note-dir "<vault>/Sources/Videos"

export BILI_VAULT="/path/to/MyVault"
export BILI_TARGET_DIR="Sources/Videos"   # 可选,默认即为 Sources/Videos

常用命令

# 仅拉元数据与字幕到工作目录
bili-note fetch "<URL>" --out ./work

# 从已有 work 目录写入笔记(可附带 content.json)
bili-note write --work ./work --note-dir "<vault>/Sources/Videos" --content-file content.json

# 一步:fetch + write
bili-note note "<URL>" --note-dir "<vault>/Sources/Videos" [--content-file content.json]

# 检查生成笔记结构
bili-note verify --note "<note path>"

# 本地自检:cookie、yt-dlp、输出目录(不联网)
bili-note selftest

content.json 字段约定示例(time 单位为秒,工具负责渲染 MM:SS 与跳转链接):

{
  "summary": "One sentence, 60-120 chars, conclusion first.",
  "body": "200-400 chars covering the argument and the conclusion.",
  "tags": ["认知", "人文"],
  "cards": ["CC_example"],
  "bullets": [
    {"time": 0,  "title": "Short heading", "text": "One sentence."},
    {"time": 23, "title": "Short heading", "text": "One sentence."}
  ]
}

生成笔记含 type: video-note、source 原链接、tags 等 front matter,正文含视频信息 callout、摘要、带 ?t= 的要点列表,以及底部折叠的全文转录。

适用场景与注意

适合谁:已经把 Obsidian 当知识库、需要从 B 站视频做「可跳转、可检索」笔记的 DSH / 智能体开发者;希望机械步骤可脚本化、摘要与标签仍由模型按契约填写的场景。

使用前建议:

  1. 在 GitHub 仓库 阅读 README 与 LICENSE,确认行为与许可证符合你的环境要求。
  2. DSH 技能与联网步骤会在当前 dsh 进程权限下执行(读 cookie、调用 yt-dlp、写 Vault 目录)。安装插件或技能前请检查源码与依赖来源。
  3. Cookie 文件含登录态,勿提交到公开仓库;仅拉字幕可降低带宽与合规风险,但仍需遵守 B 站与内容版权相关规则。

DSH 社区奉行「一切皆插件」;SkillHub 为独立目录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

bilibili-note 把 B 站视频笔记拆成「字幕与版式自动化」和「摘要判断可契约化」两段,适合接到 DSH 工作流里做 Obsidian 沉淀。目录与元数据见 SkillHub:3588834014-del/bilibili-note,源码与详细说明见 GitHub:3588834014-del/bilibili-note。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜