VideoNote-MCP
This MCP server converts video URLs or local files into AI-generated Markdown notes through a pipeline of download, transcription, and LLM summarization. Key capabilities:
Note generation: Submit a video URL (Bilibili, YouTube, Douyin, Kuaishou, TikTok) or local file via
generate_noteto asynchronously create structured notes with customizable quality, style, format, and custom instructions. Supports portable notes with embedded screenshots and optional video understanding using multimodal models.Task management: Check progress with
get_task_statusor block until completion withwait_for_note.LLM provider management: List, add, update, and test LLM providers (e.g., OpenAI, DeepSeek, Qwen, Groq, custom). Manage available models with
list_modelsandadd_model.Transcription engine: Switch between local Whisper (
fast-whisper,mlx-whisper) and cloud engines (Groq, bcut, kuaishou). Download local models viadownload_transcriber_model.Video understanding: Extract frames at intervals for multimodal LLM analysis, enriching notes with visual context.
Portable notes: Generate notes with embedded screenshots using relative paths, making the directory self-contained.
Health & environment: Run
health_checkto verify FFmpeg, database, and transcriber readiness; validate URLs withvalidate_url.Platform cookies: Set cookies via
set_downloader_cookieto access login-required content (e.g., Bilibili SESSDATA).
Allows generating AI Markdown notes from Bilibili videos, including video downloading, optional AI subtitle extraction with login, and video understanding.
Provides cloud-based speech-to-text transcription via Kuaishou, enabling audio transcription for video note generation.
Allows using Ollama as a local LLM provider for summarizing video content into notes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VideoNote-MCPGenerate a Markdown note from this video: https://bilibili.com/video/BV1GJ411x7h7"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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):
📖 User Manual — Installation (4 methods) · Configuration (setup wizard + CLI) · Environment variables · Updates · Security
🎬 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 |
One link → one note, runs the entire pipeline fully automatically |
| |
Identify platform and download audio/video, covering 1800+ sites and local files |
| |
Convert audio track to text, local / cloud multi-engine options | done inside | |
Extract frames at intervals, multimodal LLM "sees" the visuals |
| |
Fetch Bilibili danmaku and comment section opinions |
| |
Materials → structured Markdown, 9 styles available |
| |
SRT/VTT/JSON mechanical export + creative formats (Agent-generated) |
| |
Multi-file merge, preprocessing, speaker diarization |
| |
Global task index, usage view, on-demand cleanup |
|
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 |
| One link → asynchronously generate a note, returns task_id (supports video understanding / comment integration / screenshot portable notes) | MCP tool |
| Lightweight polling of task status (poll until SUCCESS/FAILED/CANCELLED) | MCP tool |
| Cooperative cancellation of in-progress / queued tasks | MCP tool |
| Only prepare the material package (transcription / frame extraction / comments) for AGENT direct generation | MCP tool |
AGENT direct generation ( | 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 |
| Parse multi-part / playlists, return per-episode URLs usable with | 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 |
| 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 |
| 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 + | Style selection / screenshot portable notes | Parameter |
| Read-only configuration summary (defaults / providers / transcriber / cookie status), with optional connectivity probe | MCP tool |
| 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 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 multiple files into 16kHz mono wav (FFmpeg concat) | MCP tool |
Audio preprocessing | 16kHz normalization + auto-chunking for long audio (enabled in setup ②) | Configuration |
| 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 -. 索引 .-> T1Tool | Description | Type |
| List all tasks (global index, with semantic titles) | MCP tool |
| Clean per-task / global cleanup (factory reset) | MCP tool |
| 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_audioto merge segmented recordings →diarize_mediafor speaker diarization →meeting_minutesstyle.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_notewith one link (download/transcription/summary/comments all done internally); useprepare_note_materialto only prepare materials.Real cases: full case process records in
examples.
🤝 How to Contribute
Feature branch → PR →
dev(CI smoke must be green); afterdevis 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.
Maintenance
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that generates structured notes from Bilibili videos by automatically downloading audio, transcribing with Whisper, and processing through LLM.17
- AlicenseNot gradedqualityCmaintenanceMCP server that extracts YouTube video transcripts (including metadata) as Markdown, enabling AI to summarize and discuss video content without watching it.MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server that transforms YouTube educational videos into learning resources by extracting transcripts and generating summaries, notes, quizzes, and flashcards using AI.1
- FlicenseNot gradedqualityBmaintenanceMCP server that converts PDF, video, web, and audio inputs into structured Markdown notes with support for checkpointing, batch processing, and Obsidian integration.
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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