Skip to main content
Glama
README.md
<p align="center"><img src="assets/cover-light.png" alt="VideoNote-Mcp"/></p>
<h1 align="center">VideoNote-Mcp</h1>
<p align="center"><em>视频链接 → 多格式笔记</em><br/>一条链接 → 一篇笔记 · 端到端或解耦,任意组合</p>
<p align="center"><strong>中文</strong> | <a href="./README_EN.md">English</a></p>
<p align="center">
  <a href="#快速开始">快速开始</a> •
  <a href="#文档">文档</a> •
  <a href="#真实案例">真实案例</a> •
  <a href="#流水线地图">流水线地图</a> •
  <a href="#任务管理">任务管理</a> •
  <a href="#最佳实践">最佳实践</a> •
  <a href="#如何贡献">如何贡献</a>
</p>

---

VideoNote-Mcp 把「视频链接 → 多格式笔记」整条流水线打包成 **MCP Server**:给 agent 一个链接,自动完成 下载 → 语音转写 → 画面理解 → 弹幕/评论,**默认由当前对话里的 Agent 写笔记**(配置 LLM 仅当 Agent 无法看图时作为后备)。

仓库:[HuangYincan/VideoNote-MCP](https://github.com/HuangYincan/VideoNote-MCP)。

既可端到端使用(一条链接 → 一篇笔记),也可解耦:生成、素材、任务、媒体处理等工具按需取用。无需启动任何后端服务。

<p align="center">
  <a href="https://github.com/HuangYincan/VideoNote-MCP"><img src="https://img.shields.io/github/stars/HuangYincan/VideoNote-MCP?logo=github" alt="GitHub stars"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
  <a><img src="https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python&logoColor=white" alt="Python 3.11+"></a>
  <a><img src="https://img.shields.io/badge/MCP-Server-6C5CE7" alt="MCP"></a>
  <a href="https://glama.ai/mcp/servers/HuangYincan/VideoNote-MCP"><img src="https://glama.ai/mcp/servers/HuangYincan/VideoNote-MCP/badges/score.svg" alt="VideoNote-MCP MCP server"></a>
</p>

---

## 快速开始

**只配置 MCP 即可,不需要安装 Skills。**

```bash
# 1) 注册独立 MCP(PyPI 已发布版本)
claude mcp add --scope user videonote -- uvx videonote@latest

# 2) 在终端配置转写 / 平台登录;默认由当前 Agent 写笔记,无需 LLM Key
uvx videonote@latest setup

# 3) 重启或重连 MCP,然后发视频链接,请 Agent 输出文字稿或笔记
```

支持 JSON 的 MCP 客户端也可使用:

```json
{
  "mcpServers": {
    "videonote": {
      "type": "stdio",
      "command": "uvx",
      "args": ["videonote@latest"]
    }
  }
}
```

> 旧版 Skills 与 `/videonote-setup` 已移除,可通过 Git 历史查阅;LaTeX/Typst 模板已独立恢复到 `videonote_mcp/templates/`,不需要恢复 Skills。已经安装的旧插件或本地 Skill 不会自动删除;若改用独立 MCP,请手动停用旧插件/Skill,避免重复加载。源码修改需客户端直接指向源码,`uvx` 不会加载未发布的本地修复。

> [!TIP]
> 四种安装方式、配置细节、更新与安全见 [docs/04-使用手册.md](docs/04-使用手册.md)。

### 使用源码中的修复(未发布到 PyPI)

`uvx videonote@latest` 运行已发布的包,不会读取本地修改。需要本仓库的抖音修复时,使用 [源码 JSON 配置](examples/mcp.source.example.json),将 `/absolute/path/to/VideoNote-MCP` 替换为实际仓库绝对路径:

```json
{
  "mcpServers": {
    "videonote": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/VideoNote-MCP",
        "run",
        "--frozen",
        "videonote"
      ]
    }
  }
}
```

在终端使用同一份源码登录,然后重连 MCP:

```bash
uv --directory /absolute/path/to/VideoNote-MCP sync --frozen
uv --directory /absolute/path/to/VideoNote-MCP run --frozen videonote login douyin
```

若设置了 `VIDEONOTE_DATA_DIR` / `VIDEONOTE_CONFIG_DIR`,CLI 与 MCP 必须使用相同值。手机确认后如有二次验证,请在打开的官方浏览器窗口内完成;附加校验未能确认不等于 Cookie 无效,不必仅因此反复扫码。详见[抖音登录排障](docs/04-使用手册.md#抖音登录扫码)。

## Agent 指引与独立导出模板

MCP 初始化说明与 `health_check` / `get_config` 会提供官方仓库、安装/排障文档入口及版本匹配提醒;失败体检项返回 `next_steps`。这些是建议,不会自动安装依赖或修改配置。MCP 尚未启动时,先按本 README 配置,再结合客户端启动日志排查。

**无需 Skills,也保留排版模板**:Math Note(LaTeX 中英文)、English Article(LaTeX)、zju-lab(Typst)随安装包分发,含原始许可证与配套文件。仍为 **10 个工具**,不需要改 MCP JSON。

```text
process_media(action="template")                                          # 列模板
process_media(action="template", template_file="GUIDE.md")                 # 离线导出指南
process_media(action="template", template_id="latex-math-note",
              template_file="main.tex")                                  # 读源码
process_media(action="template", template_id="latex-math-note",
              out_dir="<health_check.data_dir>/exports/my-note")           # 复制到新的目录
```

已有目录不覆盖;默认仅写数据目录内。也可读取 `videonote://templates` / `videonote://help/export` Resources,不支持 Resources 的客户端走以上工具即可。

- SRT/VTT/JSON:`process_media(action="export")` 确定性导出。
- LaTeX/Typst:Agent 复用已有底稿填模板;**MCP 不自动编译 PDF**。有编译器、字体及依赖且实际编译成功后才交付 PDF,否则交付完整源码。历史样例 PDF 不是用户生成的结果。
- 详见[随包导出指南](videonote_mcp/templates/README.md)。凭证只在用户终端或官方页面输入。

> 以上描述当前源码能力。已发布包可能尚未包含这些修改:先核对 `health_check.server_version` 与发布记录;需要当前代码时使用上面的源码配置,不把 `main/dev` 文档当作旧版本的功能保证。

## 文档

安装 / 配置 / 使用 / 环境变量 / 更新 / 安全等完整说明已归档到 `docs/`(README 只保留概览):

- [文档索引](docs/00-文档索引.md)
- [架构设计](docs/02-架构设计.md) · [可编辑架构图](docs/videonote-mcp-architecture.excalidraw)
- [使用手册](docs/04-使用手册.md) —— 安装(4 种方式)· 配置(setup 向导 + CLI)· 环境变量 · 更新 · 安全
- [更新日志](docs/CHANGELOG.md)

---

## 真实案例

两个端到端真实案例:一个走 **AGENT 直接生成**并输出 LaTeX mathnote PDF,一个走 **全自动 LLM 生成**产出便携 Markdown。

### 案例一 · agent_direct + LaTeX mathnote(DeepSeek-V4 视频)

> 来源:[【闪客】深入解读 DeepSeek V1~V4!男女老少都听得懂~](https://www.bilibili.com/video/BV1rpovBCEGH/?vd_source=2a93b97e35c51587de18c73fcf753191)

一条视频 + 四类外部资料(论文 / 技术报告 / 公众号官宣 / 开源集合)→ **AGENT 直接生成**精修笔记,并输出 **LaTeX mathnote PDF**(中文楷体模板):

| Page1 | Page2 | Page3 |
| :---: | :---: | :---: |
| <img width="250" src="examples/agent-direct-deepseek-v4-mathnote/deepseek-v4-mathnote-page1.jpg"> | <img width="250" src="examples/agent-direct-deepseek-v4-mathnote/deepseek-v4-mathnote-page2.jpg"> | <img width="250" src="examples/agent-direct-deepseek-v4-mathnote/deepseek-v4-mathnote-page3.jpg"> |

- 无 LLM key:Agent 读转写 + 帧图 + 评论自写笔记
- 多源交叉整合:视频 × 论文 × 技术报告 × 开源清单
- 精修保留原稿:`note.md` / `note_original.md` 双份
- LaTeX mathnote PDF:自适应修复字体缺失 / 断行溢出 / 引用去重

完整过程记录见 [`examples/agent-direct-deepseek-v4-mathnote/README.md`](examples/agent-direct-deepseek-v4-mathnote/README.md)。

### 案例二 · 全自动 LLM 生成 + 便携 Markdown(多视频并行)

极简 Prompt(3 个 B 站链接 + 输出目录,一个参数都没说明)→ **全自动**跑完 环境检查 → 链接识别 → 供应商/模型发现 → 参数确认 → 多视频并行 → 生成后基于字幕精修,产出 3 份**精修便携笔记**(`note.md` + `Assets/` 截图 + 「观众观点」章节,并保留 `note_original.md` 供对比)。

- [雅思](https://www.bilibili.com/video/BV1c54y187SH/):破误区 + 听/读/写/口语四科拆解 + 179 高频考点词 + 15 句逻辑框架
- [法医](https://www.bilibili.com/video/BV1QEgZ6rEGj/):从业 43 年法医「拉片」对比影视与现实,精修扩为 12 节
- [Transformer](https://www.bilibili.com/video/BV1r8nMz4EAj/):自注意力机制详解,18 张截图按讲课时间线分布

完整过程记录见 [`examples/note-generation-example/README.md`](examples/note-generation-example/README.md)。

---

## 流水线地图

<img src="assets/pipeline.svg" alt="VideoNote-Mcp 流水线地图" width="100%"/>

实线为主流程:一条 `prepare_note_material` 出素材,由当前对话 Agent 写笔记;`generate_note` 是后备(Agent 无法看图时走配置 LLM)。虚线为可选能力(视频理解 / 弹幕评论)。各阶段细节见 [docs/02-架构设计.md](docs/02-架构设计.md)。

## 任务管理

每任务一个文件夹 `note_results/{task_id}/`:`raw/`(下载媒体)+ `gen/`(转写/笔记/帧/导出)+ 控制文件;**全局任务索引**在 SQLite `video_tasks` 表(含语义标题)。`list_tasks` 枚举全部任务(按语义标题识别)、`cleanup(task_id, dry_run=True)` 先查后清、`cleanup` 按任务 / 全局清理(默认保留配置与模型)、`health_check` 检查 FFmpeg / 数据库 / whisper 就绪。

```mermaid
flowchart TB
    DATA["data/ 数据根"] --> R["note_results/ 任务目录"]
    DATA --> DB[("video_note.db<br/>SQLite 全局任务索引")]
    R --> T1["任务 A<br/>note_results/{task_id}/"]
    R --> T2["任务 B<br/>…"]
    R --> T3["任务 C<br/>…"]
    T1 --> RAW["raw/ 原始材料<br/>音视频 · 封面"]
    T1 --> GEN["gen/ 生成材料"]
    T1 --> CTRL["status.json · result.json · manifest.json"]
    GEN --> T1A["transcript.json 转写全文"]
    GEN --> T1B["note.md 成稿笔记"]
    GEN --> T1C["Assets/ 笔记内截图"]
    GEN --> T1D["frames/ 关键帧原图"]
    GEN --> T1E["srt / vtt / json 字幕导出"]
    DB -. 索引 .-> T1
```

| 工具 | 说明 | 类型 |
|------|------|------|
| `list_tasks` | 列出全部任务(全局索引,带语义标题) | MCP 工具 |
| `cleanup` | 按任务清理(传 `task_id`)/ 全局清理(恢复出厂,不传) | MCP 工具 |
| `health_check` | FFmpeg / 数据库 / whisper 就绪状态 | MCP 工具 |

---

## 最佳实践

- **学习备考**:端到端 + 视频理解 + 基于字幕的后续优化,把课程讲透。
- **会议纪要**:`process_media(action="merge")` 合并分段录音 → `process_media(action="diarize")` 说话人分离 → `meeting_minutes` 风格。
- **讲座精读**:端到端生成后,agent 基于完整字幕精修、按章节补齐细节。
- **视频赏析**:开启弹幕 + 评论整合,笔记含「观众观点」章节。
- **默认路径**:一条链接用 `prepare_note_material`,由当前对话 Agent 写笔记;Agent 无法看图或用户要求配置 LLM 时才用 `generate_note`。只做媒体加工用 `process_media`。
- **真实案例**:完整案例过程记录见 [`examples`](examples)。

## 维护与代码导航

- **入口**:`videonote_mcp/server.py` 管 MCP 协议、权限与任务生命周期;`cli.py` 管终端初始化、登录和配置。密钥只在终端/官方页面填写。
- **共享逻辑**:`task_artifacts.py` 统一读取任务状态和转写;`app/utils/local_paths.py` 统一路径规整/授权;`app/utils/media_source.py` 统一平台识别。`inspect.py` 的元信息预检和 `export/` 的确定性导出不依赖 MCP 入口、数据库或转写引擎初始化。
- **处理流水线**:`app/services/note.py` 编排任务,`pipeline.py` 提供处理步骤;模板资源与渲染代码独立,第三方来源见 [VENDOR.md](VENDOR.md)。
- **导出一致性**:CLI/MCP 优先读 `gen/transcript.json`,缓存缺失/损坏才退到 `result.json`;不改写原转写。已知失败/运行中任务不能导出;无可读状态的旧任务仍允许恢复导出,但不表示任务已成功。CLI 显式 `--out-dir` 可选任意目录,MCP 仍默认限制在数据目录内。

开发者从[接手指南](docs/00-新手上路.md)和[架构设计](docs/02-架构设计.md)开始;不需要本机私有 Skill 或个人记忆。测试隔离运行数据,协议冒烟同时检查源码和 wheel,模板原件按哈希校验。具体命令见 [CONTRIBUTING.md](CONTRIBUTING.md)。

## 如何贡献

- 长期分支仅保留 `dev`、`main`。临时功能分支 → PR → `dev`(CI 必须绿)→ PR → `main`;交付后将 `dev` 快进到 `main`,删除已合入的临时分支,保持两者最新。
- 流程、分支命名与提交前自查见 [CONTRIBUTING.md](CONTRIBUTING.md)。

## 致谢

* [Glama](https://glama.ai) :对 MCP server 的收录
* [LINUX DO](https://linux.do/):新的理想型社区
* 所有开源依赖与上游流水线项目的启发

TDQS

A3.9/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but pairs like get_task_status/wait_for_note and generate_note/prepare_note_material overlap in function (both handle async video processing). Descriptions are detailed enough to mitigate confusion, but not entirely eliminate it.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., list_providers, generate_note, add_provider). Minor variations in verb choice (fetch vs list vs get) don't break the overall predictable naming scheme.

Tool Count3/5

At 22 tools, the server feels heavy, though the breadth is justified by covering both user-facing note generation workflows and backend configuration (providers, transcription, cleanup). It sits at the upper boundary of what's considered reasonable.

Completeness3/5

The core lifecycle for generating notes is well covered (submit, monitor, cancel, cleanup), but there are notable gaps: no tool to list all tasks, and no MCP tool to configure default settings like default style or model (relying on a setup wizard outside the server). This makes some workflows less self-contained.

Maintenance

ActivityActive
ResponsivenessResponsive