Skip to main content
Glama

VideoNote-Mcp packages the entire pipeline of "video link → multi-format notes" into an MCP Server + Claude Code Skill: give the agent a link, and it automatically completes download → speech transcription → visual understanding → danmaku/comments → AI summary, returning a portable note with screenshots that can be moved as a whole.

Repository: HuangYincan/VideoNote-MCP.

This project can be used end-to-end (one link → one note) or decoupled: each stage of the pipeline (download / transcription / frame extraction / comments / summary / export / enhancement / cleanup) is an independent MCP tool, so you can use just one step or simply understand the video content. No backend service needs to be started.


⚡ Quick Start

# 1) 一条命令装好 Skill + MCP(插件 marketplace,uvx 自动更新)
claude plugin marketplace add HuangYincan/VideoNote-MCP
claude plugin install videonote@videonote

# 2) 安装时 Claude Code 会逐项提示默认值(风格/转写引擎/视频理解/评论等);
#    装完在会话里跑配置向导收尾:
/videonote-setup

# 3) (可选)LLM-Key/B 站扫码/CLI向导
# ! videonote setup

# 4) 重启会话,对 agent 说「帮我给这个视频做笔记」+ 链接

[!TIP] See docs/04-使用手册.md for four installation methods, configuration details, updates, and security.

Related MCP server: tldw-mcp

📚 Documentation

Complete instructions for installation / configuration / usage / environment variables / updates / security are archived in docs/ (the README only keeps an overview):


🎬 Real Cases

Two end-to-end real cases: one uses AGENT direct generation and outputs a LaTeX mathnote PDF, the other uses fully automatic LLM generation to produce portable Markdown.

Case 1 · agent_direct + LaTeX mathnote (DeepSeek-V4 video)

Source: [Shanke] In-depth interpretation of DeepSeek V1~V4! Understandable for everyone.

One video + four types of external materials (paper / technical report / official WeChat announcement / open-source collection) → AGENT direct generation of a refined note, and output a LaTeX mathnote PDF (Chinese Kai font template):

Page1

Page2

Page3

Highlights: agent_direct full pipeline (no LLM key, Agent reads transcription + frame images + comments to write the note itself) · multi-source cross-integration (video × paper × technical report × open-source list) · refinement preserves the original (note.md / note_original.md dual copies) · LaTeX mathnote PDF (auto-fixes missing fonts / line-break overflow / duplicate references). Full process record: examples/agent-direct-deepseek-v4-mathnote/README.md.

Case 2 · Fully automatic LLM generation + portable Markdown (parallel multi-video)

Minimal prompt (3 Bilibili links + output directory, no parameters specified) → fully automatic runs environment check → link recognition → provider/model discovery → parameter confirmation → parallel multi-video → post-generation refinement based on subtitles, producing 3 refined portable notes (note.md + Assets/ screenshots + "Audience Perspectives" section, while keeping note_original.md for comparison).

  • IELTS: breaking misconceptions + breakdown of listening/reading/writing/speaking + 179 high-frequency test words + 15 logical framework sentences

  • Forensic: a 43-year forensic expert "frame-by-frame" comparison of film vs. reality, refined and expanded to 12 sections

  • Transformer: detailed explanation of the self-attention mechanism, 18 screenshots distributed along the lecture timeline

Full process record: examples/note-generation-example/README.md.


🗺️ Pipeline Map

flowchart LR
    A["视频链接"] --> B["下载音视频<br/>+ 平台字幕"]
    B --> C["语音转写<br/>或直接用平台字幕"]
    B -. 可选 .-> D["逐帧画面理解<br/>关键帧 → 网格图"]
    B -. 可选 .-> E["弹幕 + 评论区"]
    C --> F["素材包<br/>转写 · 帧 · 评论"]
    D -.-> F
    E -.-> F
    F --> G["AI 总结 → Markdown 底稿<br/>正文 + 截图 + 「观众观点」"]
    G --> O1["便携笔记<br/>note.md + Assets/"]
    G --> O2["字幕导出<br/>SRT · VTT · JSON"]
    G -. Agent 生成 .-> O3["创意格式<br/>思维导图 · 闪卡 · LaTeX · typst"]
    G -. 可选 .-> O4["基于完整字幕精修<br/>保留原版对比"]

Stage

Responsibility

Typical Tools

0 🔄 End-to-End Full Pipeline

One link → one note, runs the entire pipeline fully automatically

generate_note / get_task_status

1 📥 Download & Platform Parsing

Identify platform and download audio/video, covering 1800+ sites and local files

inspect_video

2 🎙 Speech Transcription (ASR)

Convert audio track to text, local / cloud multi-engine options

done inside generate_note

3 🖼️ Video Frame Understanding (Frame Extraction)

Extract frames at intervals, multimodal LLM "sees" the visuals

video_understanding parameter

4 💬 Danmaku & Comments

Fetch Bilibili danmaku and comment section opinions

include_comments parameter

5 ✍️ AI Summary & Notes

Materials → structured Markdown, 9 styles available

generate_note / prepare_note_material

6 📤 Multi-format Export

SRT/VTT/JSON mechanical export + creative formats (Agent-generated)

export_transcript

7 🎛️ Audio Enhancement

Multi-file merge, preprocessing, speaker diarization

merge_audio / diarize_media

8 🗂️ Task Management & Cleanup

Global task index, usage view, on-demand cleanup

list_tasks / cleanup_note


0 🔄 End-to-End Full Pipeline

End-to-end mode only needs a link: generate_note asynchronously runs the entire pipeline and returns a task_id; use the lightweight get_task_status snapshot to poll until SUCCESS/FAILED/CANCELLED (max 3 in-progress tasks per process, do not submit in parallel in the same message). cancel_note provides cooperative cancellation. "AGENT direct generation" uses prepare_note_material — it only prepares the material package, does not call the configured LLM, and the agent reads the transcription, looks at the images, and writes the note itself.

Tool

Description

Type

generate_note

One link → asynchronously generate a note, returns task_id (supports video understanding / comment integration / screenshot portable notes)

MCP tool

get_task_status

Lightweight polling of task status (poll until SUCCESS/FAILED/CANCELLED)

MCP tool

cancel_note

Cooperative cancellation of in-progress / queued tasks

MCP tool

prepare_note_material

Only prepare the material package (transcription / frame extraction / comments) for AGENT direct generation

MCP tool

AGENT direct generation (agent_direct)

Agent reads the material package and writes the note itself, without the configured LLM

SKILL / Agent orchestration

1 📥 Download & Platform Parsing

inspect_video identifies the platform (bilibili / youtube / douyin / tiktok / kuaishou / local; for anything beyond the 6 built-in platforms it returns platform:"generic" and automatically uses yt-dlp generic extraction covering 1800+ sites) + checks link validity (gives the reason if invalid) + splits Bilibili multi-part videos / YouTube playlists into per-episode URLs that can be submitted independently (no download). Platform cookies go through ! videonote login bilibili / ! videonote setup, do not pass them via MCP. Platform subtitles (including Bilibili AI subtitles) are used internally by generate_note first; there is no standalone tool.

Tool

Description

Type

inspect_video

Parse multi-part / playlists, return per-episode URLs usable with generate_note

MCP tool

2 🎙 Speech Transcription (ASR)

Speech transcription (ASR) is done internally by generate_note: it prefers platform subtitles (including Bilibili AI subtitles), and transcribes if no subtitles are available. Engine options: fast-whisper (local) / groq / bcut / kuaishou (cloud) / mlx-whisper (macOS Apple Silicon GPU) / funasr (best for Chinese, VAD + automatic punctuation). Engine and model management go through the CLI: ! videonote transcriber set/download; check status with get_config().

3 🖼️ Video Frame Understanding (Frame Extraction)

generate_note directly supports video understanding parameters: video_understanding=True + video_interval (default 6s) + grid_size (default [3,3]), sending the grid image to a multimodal LLM to "see" the visuals.

Parameter

Description

Type

video_understanding / video_interval / grid_size

Extract frames at intervals + embed grid image and send to multimodal model

Parameter

4 💬 Danmaku & Comments

Adding include_comments=True + comments_limit (default 20) to generate_note will organize danmaku spam and high-frequency comment section opinions into the note, adding an "Audience Perspectives" section (requires Bilibili SESSDATA; fetch failure does not block the task).

Parameter

Description

Type

include_comments / comments_limit

Adds an "Audience Perspectives" section to the note (default 20 items)

Parameter

5 ✍️ AI Summary & Notes

Supports 9 styles: minimal / detailed / academic / tutorial / xiaohongshu / life_journal / task_oriented / business / meeting_minutes; format=["screenshot"] produces portable notes (note.md + Assets/, with relative references that can be moved as a whole). Provider/model/transcriber configuration always goes through the CLI (! videonote providers set / ! videonote transcriber set); read-only view via get_config(). agent_direct is generated directly by the AGENT.

Parameter

Description

Type

9 note styles + format

Style selection / screenshot portable notes

Parameter

get_config

Read-only configuration summary (defaults / providers / transcriber / cookie status), with optional connectivity probe

MCP tool

agent_direct

AGENT reads the material package and writes the note itself

SKILL / Agent orchestration

6 📤 Multi-format Export

Mechanical formats use export_transcript (srt / vtt / json) — deterministic rendering (timeline conversion), no LLM cost, returns a file:// path. Creative formats (mind map / flashcards / LaTeX / typst / user-defined templates) are generated by Agent based on the MD draft + SKILL templates (LaTeX includes Math Note / English Article templates: math/science note style, English manuscript/speech outline style; typst includes the zju-lab template: science/engineering notes/experiment report/paper style, with the ZJU emblem).

Tool

Description

Type

export_transcript

Export transcription as srt/vtt/json (deterministic mechanical format)

MCP tool

Creative formats

Mind map / flashcards / LaTeX / typst → Agent generates from the draft

SKILL / Agent orchestration

7 🎛️ Audio Enhancement

merge_audio merges multiple recordings / meeting segments / multiple local videos into a 16kHz mono wav before transcription. Audio preprocessing (16kHz normalization + auto-chunking for >1800s, optional noise reduction) is off by default with zero hard dependencies. diarize_media performs speaker diarization (pyannote optional heavy dependency, requires HF_TOKEN + model authorization).

Tool

Description

Type

merge_audio

Merge multiple files into 16kHz mono wav (FFmpeg concat)

MCP tool

Audio preprocessing

16kHz normalization + auto-chunking for long audio (enabled in setup ②)

Configuration

diarize_media

Speaker diarization (meeting minutes / multi-speaker voiceover)

MCP tool

8 🗂️ Task Management & Cleanup

Each task has a folder note_results/{task_id}/: raw/ (downloaded media) + gen/ (transcription/notes/frames/exports) + control files; the global task index is in the SQLite video_tasks table (with semantic titles). list_tasks enumerates all tasks (identified by semantic title), cleanup_note(dry_run=True) checks before cleaning, cleanup_note / cleanup_all clean per-task / globally (by default keeping configuration and models), and health_check checks FFmpeg / database / whisper readiness.

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

Tool

Description

Type

list_tasks

List all tasks (global index, with semantic titles)

MCP tool

cleanup_note / cleanup_all

Clean per-task / global cleanup (factory reset)

MCP tool

health_check

FFmpeg / database / whisper readiness status

MCP tool


🏆 Best Practices

  • Study & exam prep: end-to-end + video understanding + subtitle-based follow-up refinement to thoroughly explain the course.

  • Meeting minutes: merge_audio to merge segmented recordings → diarize_media for speaker diarization → meeting_minutes style.

  • Lecture deep reading: after end-to-end generation, the agent refines based on the full subtitles and fills in details by section.

  • Video appreciation: enable danmaku + comment integration, the note includes an "Audience Perspectives" section.

  • End-to-end: use generate_note with one link (download/transcription/summary/comments all done internally); use prepare_note_material to only prepare materials.

  • Real cases: full case process records in examples.

🤝 How to Contribute

  • Feature branch → PR → dev (CI smoke must be green); after dev is stable, PR → main (protected branch, requires review).

  • See CONTRIBUTING.md for workflow, branch naming, and pre-commit self-checks.

🙏 Acknowledgments

Thanks to the community and all contributors, to Glama for listing the MCP server, and to all open-source dependencies and upstream pipeline projects for their inspiration.

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
7hResponse time
1dRelease cycle
17Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.

  • An MCP server that integrates with Discord to provide AI-powered features.

  • MCP server for Google Veo AI video generation

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HuangYincan/VideoNote-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server