vidnote
Fetches Bilibili video metadata and subtitles, supports links, BV/av IDs, and multi-part videos, and can locally transcribe videos without captions to generate timestamped Markdown notes.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
$ vidnote fetch BV1xx411c7mD --whisper
✓ 已生成 2026-11-04_标题_BV1xx411c7mD.md (本地转写,412 条)打开就是这个样子:
---
title: 一个测试视频
platform: bilibili
bvid: BV1xx411c7mD
url: https://www.bilibili.com/video/BV1xx411c7mD
owner: 某UP
duration: 1:02:03
published: 2024-05-01
fetched: 2026-11-04
language: zh
subtitle: available
tags:
- bilibili
- vidnote
---
## 字幕
**00:00** 大家好,今天想聊一个很多人问过的问题。
**12:34** 这里是重点,我把它拆成三步。✨ 它能做什么
一条命令归档:链接、BV 号、av 号、b23.tv 短链都支持识别,自动抓标题、UP 主、分区、时长、发布时间、简介、标签,以及播放 / 点赞 / 投币 / 收藏 / 弹幕 / 评论数据。
分P 不迷路:多P 视频会记录当前在第几集,时间戳链接自动添加
&p=。先搜再抓:
vidnote search "关键词"直接列出候选视频,挑中 BV 号再归档。字幕优先,转写兜底:视频有字幕就直接用;没有就在本机跑 Vosk 或 Whisper,音频不出你的电脑。
自动关键帧:默认取 6 张,用 B 站现成的缩略图切出画面,按时间插在对应字幕后面;
--frames 0关闭,加--scene则按画面变化重新选帧。时间戳可点:
[12:34](…?t=754),在 Obsidian、Logseq、浏览器里都能跳转。YAML frontmatter:字段固定,能被 Dataview 之类的工具直接查询、筛选、聚合。
Related MCP server: vid-agent-mcp
🚀 快速开始
pip install vidnote# 先搜,看看有哪些视频
vidnote search "Python 异步编程"
# 链接、BV 号、av 号都行
vidnote fetch "https://www.bilibili.com/video/BV1xx411c7mD"
# 第 2 个分P
vidnote fetch "https://www.bilibili.com/video/BV1xx411c7mD/?p=2"
# 只打印,不写文件
vidnote fetch BV1xx411c7mD --stdout
# 存到笔记库,并标记来源
vidnote fetch BV1xx411c7mD --dir ~/Notes/videos --source my-blog没装包也可以直接跑:
uvx vidnote fetch BV1xx411c7mD图形界面
vidnote gui会起一个只监听 127.0.0.1 的本地服务,用浏览器打开界面:左边是抓取 / 搜索 / 登录 / 下载四个入口,右边实时预览渲染后的笔记,支持复制 Markdown、打开文件、深浅色切换。搜索页可以在「视频 / 作者」之间切换,作者结果会显示粉丝数和签名,点一下直接打开 B 站空间。
界面沿用 cc-switch 的设计语言(浅底灰阶 + 单一橙色强调色 + 13px 字号)。想用独立窗口而不是浏览器标签页,加 --app(Edge 未运行时更可靠)。
桌面应用(Tauri 2.0 原生 Rust 桌面端 + 系统托盘)
v0.3.4 起,桌面端全面升级为 Tauri 2.0 原生 Rust 核心与系统托盘驻留:
powershell -File scripts/build_tauri.ps1
# 产物:dist-app/vidnote.exe (纯 Rust 编译原生桌面端,约 8.8 MB)Tauri 2.0 桌面版 | |
架构 | Rust 原生桌面外壳 + 系统托盘核心 ( |
托盘能力 | 支持最小化到托盘、托盘右键菜单、单击平滑显隐、快速抓取剪贴板 |
界面设计 | 全新高颜值现代流体工作台(深浅色无缝切换、交互式时间戳、关键帧画廊) |
抓取 / 搜索 / 笔记 / 缩略帧 | ✅ |
本地转写 | ✅ Vosk(模型内置);whisper(依赖按需安装) |
核心体积 | 约 8.8 MB(轻巧极速,秒级冷启动) |
转写引擎可选:
引擎 | 首次下载 | 说明 |
Vosk | 已内置 | 默认,快、按停顿自动分句,清晰语音可用 |
whisper | 75 MB | 最快,质量一般 |
whisper | 145 MB | 平衡 |
whisper | 485 MB | 中文最好 |
vidnote.exe 采用 Tauri 2.0 原生桌面框架:
原生系统托盘:常驻 Windows 托盘区,支持最小化到托盘、一键从剪贴板抓取、定位输出目录。
窗口关闭拦截:点击右上角关闭按钮默认优雅隐藏至托盘,不中断后台抓取与长转写。
超轻体积与内存优化:告别以往百兆外壳,二进制仅 ~8.8 MB,内存占用大幅减少。
现代化视觉体验:支持沉浸式深暗色/轻盈浅色主题、四阶段进度动效、关键帧画廊与交互式时间戳芯片。
Windows 免安装 exe
不想装 Python 的话,可以自己构建单文件可执行程序(约 15 MB):
powershell -File scripts/build_exe.ps1
# 产物:dist-exe\vidnote-ui.exe(双击开界面,无命令行窗口)
# dist-exe\vidnote.exe(命令行版)这个 exe 是核心版:抓取、搜索、笔记生成、缩略帧(--frames)都在里面。不含两项重型能力:
能力 | 为什么不在 exe 里 |
本地转写( |
|
按画面变化选帧( | 需要 PyAV 和 yt-dlp,且要下载整段视频 |
需要它们时用 pip 安装对应依赖:pip install 'vidnote[whisper]' 或 pip install 'vidnote[scene]'。
exe 运行时需要系统临时目录可写(PyInstaller 会先解压到
%TEMP%)。如果报Could not create temporary directory,检查TEMP环境变量是否指向一个可写目录。
退出码
码 | 含义 |
| 成功 |
| 输入无法解析、接口报错、网络失败 |
| 缺少可选依赖(如转写所需的 whisper) |
| 目标文件已存在,且没有加 |
脚本里判断退出码即可,不需要解析输出。
🔊 没有字幕怎么办
B 站对字幕接口做了登录限制,未登录时大多数视频拿不到字幕。所以真正的主力是本地转写。桌面应用已经内置 Vosk;whisper 的依赖可以在界面里单独安装,装好后直接选。命令行按需安装:
pip install 'vidnote[vosk]' # 命令行版:首次使用下载 42 MB 模型
pip install 'vidnote[whisper]' # whisper
vidnote fetch BV1xx411c7mD --vosk流程:yt-dlp 取音频 → 在本机转写 → 生成带时间戳的笔记。音频不会上传到任何服务器。
桌面版的 Vosk 模型已经打包进去,第一次转写直接可用;whisper 的推理引擎需要先在界面里点一次「安装 whisper 依赖」(约 66 MB),之后和 pip 安装的版本一样按需下载模型。命令行进度条会依次显示「下载音频 → 下载模型 → 本地转写」,网页界面在按钮下方显示阶段和百分比。
whisper 的模型大小:
模型 | 大小 | 速度 | 建议 |
| 75 MB | 最快 | 只用来验证流程,中文质量差 |
| 145 MB | 快 | 英文内容 |
| 485 MB | 中等 | 中文内容,速度与准确率的平衡点 |
| 1.5 GB | 慢 | 对准确率要求高 |
vidnote fetch BV1xx411c7mD --whisper --model medium转写结果按 视频 + 分P + 模型 缓存在本地(Windows 在 %LOCALAPPDATA%\vidnote,其他系统在 ~/.cache/vidnote),同一个视频第二次跑秒出。加 --no-cache 可跳过。
🔍 搜索视频
vidnote search "Rust 所有权" --limit 5输出一张表:BV 号、标题、UP 主、时长、播放量。加 --json 可以直接喂给脚本:
vidnote search "Rust 所有权" --json | jq -r '.[].bvid'搜索走的是 B 站公开的 search/all/v2 接口,不需要登录。如果返回 -352,说明触发了风控,等一会儿或降低频率再试。
🖼 关键帧
vidnote fetch BV1xx411c7mD # 默认 6 张
vidnote fetch BV1xx411c7mD --frames 0 # 关闭关键帧关键帧导出到笔记旁边的 <笔记名>_frames/ 目录。有字幕时,每张图会插在它前面最近的那句字幕后面——读到哪里,画面就在哪里;没有字幕时才单独成「关键帧」一节。
默认走 B 站现成的缩略图雪碧图(10×10 的拼图,服务端已按时间点切好):只下载一张几百 KB 的图片再裁开,不下载视频、不解码、不需要系统 ffmpeg。拿不到缩略图时会跳过并提示,不影响笔记生成。
需要「按画面变化选帧」时加 --scene,这条路径会下载视频并逐帧比较,依赖更重:
pip install 'vidnote[scene]'
vidnote fetch BV1xx411c7mD --frames 6 --scene它按每秒 2 帧采样成 64×36 的灰度缩略图,比较相邻帧差异,抓 PPT 翻页、代码切换这类真正的信息点,全程本地计算,不调用任何 AI 服务。
网络拿不到视频流时(B 站的视频 CDN 在部分网络下不可达),可以先自己下载,再用本地文件:
vidnote fetch BV1xx411c7mD --frames 6 --video ~/Downloads/lecture.mp4🤖 给 agent 用
装上 MCP 依赖后,把 vidnote 注册成一个 MCP server:
pip install 'vidnote[mcp]'
vidnote serveClaude Code / Codex / Cursor 的配置:
{
"mcpServers": {
"vidnote": {
"command": "vidnote",
"args": ["serve"]
}
}
}agent 会多出一个工具 fetch_note:
参数 | 说明 |
| 链接、BV 号或 av 号 |
| 分P 序号,默认 1 |
| 是否包含简介,默认 |
| 没有字幕时是否本地转写,默认 |
DeepSeek Harness(DSH)插件
仓库里的 dsh-plugin/ 把 vidnote 包成 DSH 插件,模型直接调用工具,不用自己拼命令行:
工具 | 作用 |
| 给链接 / BV 号 / av 号,返回整篇带时间戳的 Markdown |
| 按关键词搜 B 站视频,返回 BV 号、标题、UP 主、时长、播放量(JSON) |
| 按关键词搜 UP 主,返回 UID、昵称、粉丝、投稿数、签名、空间链接(JSON) |
界面也是原生的:会话视图栏里「对话 / 轨迹」旁边多一个「B站笔记」,布局照着原窗口(左侧导航 + 表单 + 渲染好的 Markdown 预览);抓取进度、关键帧、输出目录、Cookie、whisper 依赖都通过代理复用 vidnote 自己的接口,功能和原窗口一致,状态切标签页不会丢。需要原窗口时点「打开原界面」,会起 vidnote 自己的独立应用窗口。
dsh plugin --profile desktop add ./dsh-plugin插件调用本机的 vidnote 命令行,按「配置里的 cliPath → VIDNOTE_CLI → 仓库构建产物 → 常见安装位置 → PATH」的顺序查找。安装后在「插件」页显示为 vidnote — B 站视频转 Markdown 笔记。完整参数和配置见 dsh-plugin/README.md。
🧭 设计原则
三条承诺,都能在代码里验证:只读公开接口,不模拟登录、不批量抓取;不编造内容,没有字幕就说没有,不会用模型编一段假的;不覆盖你的文件,笔记里可能有你手写的东西,除非你显式 --force。
❓ 常见问题
这个工具只读取公开的视频信息和匿名可访问的接口,不登录、不发布、不改动你的账号。但请控制请求频率,不要拿它做批量爬取。用 shell 循环处理很多视频时,加上 --delay 3,让两次请求之间等 3 秒。
不需要。转写在本地用 faster-whisper 跑,不联网、不调用任何云端模型。
换小模型(--model base 或 tiny)。长视频(1 小时以上)用 small 在普通笔记本上大约需要 10–20 分钟。
说明这个视频没有可用字幕,而你也没加 --whisper。工具会明确写出"没有可用字幕"。
暂不支持,见路线图,后续会更新
faster-whisper 依赖的 PyAV 在 14 之后改了接口,和部分版本不兼容。项目的 [whisper] 依赖已经锁定了可用版本,正常 pip install 不会踩到。
🗺 路线图
B 站单P/多P 抓取、字幕、时间戳
无字幕视频的本地转写
关键词搜索
画面变化检测的关键帧
CLI + MCP
按简介里的时间点自动生成章节
批量:一个收藏夹 / 一个 UP 主的所有视频
抖音、小红书
导出为 SRT / VTT
🛠 开发
git clone https://github.com/paper-k1te/vidnote.git
cd vidnote
pip install -e '.[dev]'
pytest # 86 个测试
ruff check . # 代码检查CI 覆盖 Ubuntu 与 Windows,Python 3.10 / 3.12 / 3.13。
📄 许可证
MIT。可自由使用、修改、商用,保留版权声明即可。
English
vidnote turns a Bilibili video into a timestamped Markdown note: title, uploader, multi-part awareness, description, and a transcript — all in one portable file with clickable timestamps.
vidnote fetch "https://www.bilibili.com/video/BV1xx411c7mD" --whisperUses Bilibili's public web API; no login, no scraping workarounds.
Search first (
vidnote search "keyword"), then archive the BV ids you care about.If a video has no captions (most don't without a session), transcribe locally with
faster-whisper— audio never leaves your machine.--frames Ncrops N thumbnails from Bilibili's storyboard sprites (no video download, no ffmpeg). Add--sceneto pick frames by actual scene changes instead.Output is plain Markdown with YAML frontmatter, ready for Obsidian or any tool.
Ships a CLI, an MCP server (
vidnote serve), and a 15 MB standalone Windows exe.
MIT licensed.
This server cannot be deployed
Maintenance
Related MCP Connectors
Bilibili videos for AI agents: search, creators, trending, stats, tags and danmaku comments.
Summarize public video URLs into Markdown notes and read their transcripts.
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
Transcripts, summaries, chapters and timestamped answers for video links, for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Bilibili (B站) platform through API and web scraping. Supports video search, article search, video info retrieval, comment fetching, danmaku extraction, and article content access.4-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to transcribe Bilibili videos, search by intent, and analyze local video files, returning structured summaries with key points and verdicts.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables probing, ingesting, transcribing, and searching Bilibili videos with timestamped evidence and frame extraction, without reading browser cookies.2 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables agents to turn Bilibili course videos into structured VitePress study notes by extracting subtitles, generating organized notes with key points and active recall, and saving them locally. It also supports video search and metadata retrieval through MCP tools.MIT