vid2context

io.github.nirholas由 GitHub 账号 nirholas 发布v0.1.1更新于 Nov 14, 2026

Turn any video into context for AI agents: transcripts, metadata, chapters, timestamps.

概览

AI 生成的概览

把视频、播放列表、播客和本地媒体文件转成带时间戳的文字稿、元数据和章节,供助手阅读与引用。

可以做什么
  • 获取单个视频的文字稿、元数据、章节、片段、评论、关键时刻和字幕轨
  • 把播放列表、频道、订阅源或网页展开成视频列表,并跨多个视频生成上下文包、摘要和重复检测
  • 基于文字稿回答问题、生成带引用的简报,或按自定义结构抽取信息
  • 把视频存入收藏集,并搜索已保存的文字稿
  • 转写直播流,并导出到 Obsidian 或 Notion
  • 列出可用的模型与提供方
适用场景
当研究资料以视频或音频形式存在时适用,例如课程系列、会议演讲、播客、产品评测;可让助手在不观看的情况下做总结、比较或回答问题,并给出集数与时间点引用。
运行要求
以 npm 包 vid2context-mcp 通过 stdio 在本机运行,需要 Node.js 22 或更高版本。无需任何密钥:字幕和无密钥语音转写服务即可直接使用。可选密钥 GEMINI_API_KEY、GROQ_API_KEY、OPENAI_API_KEY,以及用于本地服务的 LOCAL_STT_BASE_URL 和 OLLAMA_BASE_URL。访问在线来源需要网络。
安装前请注意
未设置密钥时,音频和视频会发送给无密钥的第三方转写服务;可设置 VID2CONTEXT_POLICY=local-only 或 VID2CONTEXT_KEYLESS=0 避免。设置 OPENAI_API_KEY 会启用付费通道并可能产生费用,除非设置 VID2CONTEXT_ALLOW_PAID=0。相关工具会写入本地库,并可导出到 Obsidian 或 Notion。从 YouTube 等站点抓取媒体可能与对方条款冲突。

安装

在 SourceWeft 中

  1. 打开 控制台中的 vid2context,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

vid2context

[npm] [License: Apache-2.0] [Node 22+] [Ask DeepWiki]

Turn any video into context for AI agents. An MCP server, CLI, HTTP API and library that gives Claude, ChatGPT, Cursor, VS Code Copilot and any other agent the transcript, metadata and chapters of a video, playlist, podcast or media file, with timestamps it can cite.

Paste a video link or drop in a media file. vid2context returns the transcript, metadata and chapters in a form your agent can read and cite: plain text with [m:ss] timestamps, JSON, Markdown, SRT, VTT, or one Markdown context pack for many videos that you can upload to ChatGPT Projects, Claude Projects or a custom GPT.

It is free first. Local models run first, then hosted free tiers with your own key, then keyless hosts that need no account. Paid APIs are used last, and only when you set their key. With zero configuration it already works.

$ vid2context https://www.youtube.com/watch?v=jNQXAC9IVRw --timestamps[0:01] All right, so here we are, in front of the elephants[0:05] the cool thing about these guys is that they have really...[0:07] really really long trunks[0:12] and that's cool

Why

Research happens on video. A playlist explaining which used car to buy, a conference talk, a course, a podcast. Agents cannot watch any of it. vid2context turns those videos into text with timestamps, so an agent can absorb a whole series and answer "which model year should I buy?" while citing the episode and the moment that said so.

Design rule: raw transcripts are always kept. Summaries, briefs and extractions are an added layer, never a replacement.

How it works

For every input, vid2context resolves the source, fetches metadata and chapters, then walks a fallback chain until it has a transcript:

  1. Creator-uploaded captions
  2. Platform auto-captions
  3. Download the audio and run speech-to-text
  4. Video model mode, where a multimodal model watches the video so on-screen text, slides and code are captured too (planned)

Each speech-to-text and LLM step runs through a rung chain. A rung is one provider, one model and one credential. Rungs are tried in tier order and the chain falls through on errors, rate limits and outages, with cooldowns so a failing rung is skipped for a while. Every attempt is recorded, so you can always see what was tried and why it succeeded or failed:

Attempts:  resolve  ok      youtube  youtube:jNQXAC9IVRw  metadata ok      youtube  captions ok      youtube-captions  creator-captions
TierMeaningExample
localYour machine, free and privateOllama, LM Studio, speaches
freeHosted free tier, your own keyGroq, Cerebras, Gemini AI Studio
keylessHosted, no account neededOVH AI Endpoints, Pollinations
paidLast backstop, only with a keyOpenAI

Status

First release (0.1.0), on npm as vid2context-mcp and vid2context. Everything below is built and covered by tests that replay real recorded responses.

AreaWhat you get
SourcesYouTube (videos, Shorts, playlists, channels, comments, no key), any of the 1,000+ sites yt-dlp supports, Bilibili, Vimeo, Loom and Wistia transcripts, direct media URLs, Google Drive, Dropbox and OneDrive share links, local files, and every video embedded in a web page
Speech-to-textLocal whisper.cpp and Transformers.js (offline), any OpenAI-compatible server, Groq, Mistral, DeepInfra, Together, Cloudflare Workers AI, OVH (keyless), OpenAI
LLMsOllama, LM Studio, llama.cpp, vLLM and other local servers, in-browser WebLLM, free tiers (Groq, Cerebras, Gemini, Mistral, GitHub Models, NVIDIA, SambaNova, OpenRouter :free), keyless hosts, native Anthropic, Gemini and Vertex
Outputtext, JSON, Markdown with timestamp links, SRT, VTT, the context pack, and a .zip bundle with all of them
IntelligenceCited briefs across videos, Q&A with timestamp citations, schema extraction templates, translation, auto-chapters, key moments, on-screen text and slides from video frames, duplicate and reupload detection, SponsorBlock segments
LibraryCollections fed from playlists, channels and feeds, keyword and vector search, on SQLite, Postgres with pgvector, or Cloudflare D1 and R2
SurfacesCLI, stdio MCP server (28 tools), remote MCP over Streamable HTTP with OAuth for ChatGPT and Claude.ai, HTTP API with OpenAPI, web app, chat app, browser extension, Telegram, Discord and Slack bots, LangChain.js loader, n8n nodes, Obsidian and Notion export
DeployDocker, Cloud Run, Railway, Alibaba Cloud, Cloudflare Workers, Vercel, GitHub Pages (client only)

Planned: video mode, where a multimodal model watches the whole video. The --mode video flag exists, but no provider implements it yet.

Quick start (zero keys)

Requires Node.js 22 or newer.

sh
npx vid2context "https://www.youtube.com/watch?v=jNQXAC9IVRw" --timestamps

From source:

sh
git clone https://github.com/nirholas/vid2context.gitcd vid2contextnpm installnpm run cli -- "https://www.youtube.com/watch?v=jNQXAC9IVRw" --timestamps

A local audio or video file works too. With no keys set, it is transcribed by the keyless OVH Whisper rung:

sh
npm run cli -- ./interview.mp3 --format json > interview.json

More in docs/examples: runnable examples for the library, CLI, HTTP API, MCP, LangChain and Python, each a file in examples/ whose output on the page is checked by the tests.

CLI

vid2context <input> [flags]            same as `vid2context get <input>`vid2context <command> [args] [flags]
  get         Transcript and metadata for one video (the default command)  list        Expand a playlist, channel, feed or page into video refs  pack        One context pack (Markdown for an AI model) from one or many videos  bundle      A .zip with every format, the context pack and a README for agents  search      Keyword search over transcripts saved in the library  library     Saved video contexts  collection  Named groups of videos in the library  models      Every rung by tier, whether it is enabled, and the env vars it needs  doctor      Check Node, ffmpeg, yt-dlp, GPU, local servers, data directory, keys and network  config      Resolved settings and where each came from, secrets masked  serve       Start the HTTP API  mcp         Start the stdio MCP server  formats, completion, help

Common flags: -f, --format text|json|markdown|srt|vtt|pack, -t, --timestamps, --mode auto|captions|stt|video, --lang <code>, --policy free|local-only|quality, --only and --skip (rung ids or services), --json, -o, --out <file>, --verbose. Run vid2context help <command> for the rest. Full reference: docs/cli.md.

Program output goes to stdout and everything else to stderr, so vid2context URL > transcript.txt stays clean. On failure the CLI prints the error code, a hint on how to fix it, and every attempt that was made, and exits with a code per failure kind (3 unsupported input, 4 not found, 6 no transcript, 9 rate limited, 10 auth, and so on).

Use it from your agent

The MCP server is the npm package vid2context-mcp, listed in the MCP Registry as io.github.nirholas/vid2context. It needs no keys.

[Install in VS Code] [Install in VS Code Insiders] [Install in Cursor]

Claude Code

sh
claude mcp add --scope user --transport stdio vid2context -- npx -y vid2context-mcp

Codex, Gemini CLI

sh
codex mcp add vid2context -- npx -y vid2context-mcpgemini extensions install https://github.com/nirholas/vid2context

Claude Desktop, Cursor, Windsurf, Cline and other clients

json
{  "mcpServers": {    "vid2context": { "command": "npx", "args": ["-y", "vid2context-mcp"] }  }}

To pass a key, add "env": { "GROQ_API_KEY": "..." } to the entry. Agents setting this up for you can follow llms-install.md.

From source

From the repo root:

sh
claude mcp add vid2context -- "$PWD/node_modules/.bin/tsx" "$PWD/packages/mcp/src/bin.ts"

Tools

Ask your agent something like "get the transcript of https://youtu.be/jNQXAC9IVRw and summarize it with timestamps". The server exposes 28 tools:

GroupTools
One videoget_transcript, get_metadata, get_outline (chapters with token counts, start here for long videos), get_section, get_comments, get_key_moments, get_skip_segments, list_caption_languages, choose_caption_track, list_formats
Many videoslist_items (expand a playlist, channel, feed or page), research_videos, export_context_pack, find_duplicates, digest_videos
Librarycreate_collection, add_to_collection, get_collection, list_collections, search_transcript
Answersask (Q&A with timestamp citations), build_brief (cited brief across videos), extract (buyer guide, tutorial steps, comparison or your own JSON Schema)
Live and exportwatch_live (transcribe a live stream as it runs), open_transcript_viewer (interactive viewer in MCP Apps clients), export_obsidian, export_notion
Setuplist_models

It also ships the prompts brief, buyer_guide and digest, and resources for saved videos, transcripts and collections (collections are subscribable). Failures come back as tool errors carrying the error code, hint and attempts, so the agent can explain the problem or retry with another mode. Details: docs/guides/mcp.md.

ChatGPT and Claude.ai

These connect only to remote MCP servers over HTTPS. Two options:

  • Context pack: vid2context pack <url>... writes one Markdown file for one or many videos, sized for upload to a ChatGPT Project, Claude Project or custom GPT. Zero setup.
  • Remote MCP: run the Streamable HTTP server with a bearer token or the built-in single-owner OAuth 2.1 server, behind a Cloudflare Tunnel so requests to YouTube still come from your own connection. See docs/guides/remote-mcp.md and docs/guides/cloudflare-tunnel.md.

Add free keys (optional)

Everything is optional. Each key you add unlocks more rungs, and the chain uses them before falling back to keyless hosts. Set them in your shell or a .env file.

Speech-to-text

Env varRungTier
LOCAL_STT_BASE_URL + LOCAL_STT_MODELAny local OpenAI-compatible server (speaches, faster-whisper-server, LocalAI)local
GROQ_API_KEYGroq whisper-large-v3-turbo, 25 MB per filefree
(none)OVH AI Endpoints whisper-large-v3-turbokeyless
OPENAI_API_KEYOpenAI whisper-1paid

LLM

Env varRungTier
OLLAMA_MODEL (and OLLAMA_BASE_URL)Ollama, default http://localhost:11434/v1local
LMSTUDIO_MODEL (and LMSTUDIO_BASE_URL)LM Studio, default http://localhost:1234/v1local
LOCAL_LLM_BASE_URL + LOCAL_LLM_MODELAny local OpenAI-compatible serverlocal
GROQ_API_KEYGroq: qwen/qwen3.8-27b, openai/gpt-oss-120b, openai/gpt-oss-20b (one rung per model)free
CEREBRAS_API_KEYCerebras: gpt-oss-120b, llama-3.3-70bfree
MISTRAL_API_KEYMistral mistral-small-latestfree
GITHUB_TOKENGitHub Models meta/Llama-3.3-70B-Instructfree
GEMINI_API_KEYGemini AI Studio gemini-2.5-flash-litefree
(none)OVH AI Endpoints: Llama 3.3 70B, gpt-oss-120bkeyless
(none)Pollinations openai-fastkeyless
OPENAI_API_KEYOpenAI gpt-5.4-nanopaid

Every model id can be overridden with <PROVIDER>_MODEL (a comma-separated list, in order) for LLMs, or <PROVIDER>_STT_MODEL for speech-to-text. To pool several free keys for one provider, put the extras in <PROVIDER>_FALLBACK_KEYS, for example GROQ_FALLBACK_KEYS=key2,key3. Each key becomes its own rung.

Chain controls

Env varEffect
VID2CONTEXT_POLICYfree (default: local, free, keyless, paid), local-only (nothing leaves your machine) or quality (best model first, tier as tie-breaker)
VID2CONTEXT_ALLOW_PAID=0Never use paid rungs, even when a key is set
VID2CONTEXT_KEYLESS=0Turn off keyless rungs, which send data to third parties without an account
VID2CONTEXT_SKIP=svc1,svc2Skip named services, e.g. pollinations,ovh
VID2CONTEXT_LOG_LEVELLog verbosity on stderr, e.g. info

Architecture

TypeScript, ESM and npm workspaces, so the same code runs on Node, Cloudflare Workers, Vercel and in the browser.

packages/  core/        Contracts, rung chain, pipeline, formatters, chunking, caption cleanup, long audio.               Runtime-neutral, no Node-only imports.  registry/    Per-runtime provider registries (node, workers, browser), generated on install.  cli/         The vid2context command.  mcp/         The stdio MCP server; mcp-http/ serves it remotely, mcp-apps/ and mcp-agentic/ add               the viewer, sampling and elicitation.  server/      HTTP API on Hono with OpenAPI, for Node, Workers, Vercel and containers.  web/ chat/ extension/   Web app, chat app and browser extension.  ask/ insights/ translate/ chapters/ search/ library/ ...   Intelligence and library features.  discovery/   npm bundles, MCP Registry and directory manifests (server.json, glama.json, ...).providers/     One package per source, speech-to-text, LLM, embedding or storage backend               (youtube, ytdlp, bilibili, media-file, stt-whisper-cpp, llm-local, storage-sqlite, ...).scripts/  gen-registry.mjs         Scans providers/*/package.json and writes the generated registries.

Key decisions:

  • Providers are separate packages. Each declares the runtimes it supports in its package.json ("vid2context": {"runtimes": [...]}) and default-exports a provider. npm run gen builds one registry per runtime, so Node-only providers never end up in a Workers or browser bundle.
  • Plain fetch over vendor SDKs. Most speech-to-text and LLM APIs are OpenAI-compatible HTTP, which keeps providers edge-compatible and dependencies few.
  • Providers never read process.env or the global fetch. Everything comes through the ctx object passed to each call, so the same provider works in every runtime and in tests.
  • Formats live in one map. Every surface lists formats from formatters in packages/core/src/format, so a new formatter appears in the CLI, MCP and API at once.
  • stdout is for output only. Logs go to stderr, which keeps CLI pipes and the MCP stdio protocol clean.

Start reading at packages/core/src/types.ts, packages/core/src/provider.ts and packages/core/src/chain.ts.

Development

sh
npm install          # also generates the provider registriesnpm run typecheck    # tscnpm run lint         # Biomenpm test             # vitest, against real recorded fixturesnpm run test:live    # LIVE=1: hits the real servicesnpm run check        # typecheck + lint + testnpm run cli -- <url> # run the CLI from sourcenpm run mcp          # run the MCP server on stdionpm run examples:docs # rewrite docs/examples from the scripts in examples/

Tests use real responses recorded from the live services, never invented data. Live tests run only with LIVE=1.

Adding a provider

  1. Create providers/<name>/ with a package.json that names the package @vid2context/provider-<name>, depends on @vid2context/core, and declares "vid2context": {"runtimes": [...]}.
  2. Default-export a provider built with defineProvider from src/index.ts. Read config and make requests only through ctx.
  3. Add tests under providers/<name>/test/ with a recorded fixture, plus a live test gated by LIVE=1.
  4. Run npm install (or npm run gen) to pick it up in the registry. Never hand-edit the generated files.

Roadmap

Next up: video mode (a multimodal model watches the video, so on-screen action is captured as well as speech), Gemini and Deepgram or AssemblyAI speech-to-text, and podcast feeds with podcast:transcript. DRM services are out of scope. The full plan and what each work item covers is in docs/ROADMAP.md.

FAQ

How do I give Claude, ChatGPT or Cursor a YouTube video? Add the MCP server (above) and paste the link into your chat. The agent calls get_transcript and gets the transcript with [m:ss] timestamps. ChatGPT and Claude.ai need the remote MCP server or a context pack upload (see ChatGPT and Claude.ai).

Does it need an API key? No. Creator captions and auto-captions need no key, and speech-to-text falls back to keyless hosts. Keys only add faster or local options.

What if a video has no captions? vid2context downloads the audio and runs speech-to-text, preferring a local Whisper server, then free tiers such as Groq, then keyless hosts.

Can I keep AI processing on my machine? Point it at a local speech-to-text server and a local LLM and set VID2CONTEXT_POLICY=local-only. No hosted AI service is used; fetching a YouTube video still needs the network, a local file does not.

Is it a YouTube transcript API? Yes: a library, a CLI and an HTTP API with OpenAPI (vid2context serve, see docs/guides/http-api.md). It returns text, JSON and timestamps, keeps the raw transcript, and records every provider it tried.

Does it work on long videos and whole playlists? Yes. Agents read the outline first and fetch only the chapters they need (about 12k tokens per hour of speech), long audio is split and transcribed in parallel, and list_items or vid2context list expands a playlist, channel or feed into its videos.

License

Apache-2.0

来源:README.md,提交 02c729a

工具

28

get_transcript

Get video transcript

The full transcript of one video or local media file, with a header (title, channel, URL, duration, how the transcript was made, chapters). With timestamps (the default) every line starts with [m:ss] so you can cite moments. Uses creator captions, then platform auto-captions, then speech-to-text. Cost: speech is about 12k tokens per hour of video. For videos longer than about 20 minutes, call get_outline first and read only the sections you need with get_section, or set maxTokens to receive the transcript in pages (each page ends with a cursor for the next one). Formats: text (Plain transcript text. With timestamps, one "[m:ss] line" per caption.); json (The full VideoContext as JSON: metadata, chapters, timed segments, and how it was produced.); markdown (Markdown transcript: title and metadata, chapters as headings, paragraphs prefixed with timestamp links. Options: linkTimestamps, includeComments, includeVisual.); srt (SubRip (.srt) captions: at most 2 lines of 42 characters per cue, no overlaps, for players and editors.); vtt (WebVTT (.vtt) captions for the HTML <track> element, with speaker voice tags when known.); pack (Context pack: one Markdown file for one or many videos, written for an AI model to read, with citation instructions. Options: maxTokens, includeComments, includeVisual, linkTimestamps.)

输入参数url必填modecursorformatlanguagemaxTokenstimestamps

get_metadata

Get video metadata

Title, channel, description, duration, publish date, chapters, tags and language for a video URL or local file, without fetching the transcript. Cheap: a few hundred tokens, mostly the description.

输入参数url必填

list_formats

List output formats

The output formats get_transcript and get_section accept (text, json, markdown, srt, vtt, pack, ...), with what each is for. combinesVideos marks formats that can merge several videos into one document (export_context_pack). Cheap: under 500 tokens.

无需输入参数。

get_outline

Get video outline

Start here for any video longer than about 20 minutes. Returns the metadata and the video's chapters (or sections of about five minutes when it has none), each with its start time, a timestamp link and its estimated token count, plus the total. Then read only what you need with get_section (by chapter index or title, or by time). Fetches the transcript once (saved for later calls); the outline itself costs about 300 to 1,500 tokens.

输入参数url必填modelanguage

get_section

Get a transcript section

One chapter or time range of a video's transcript, with the same header as get_transcript. Pass chapter (an index or title from get_outline) or from/to (seconds, m:ss or h:mm:ss); from alone reads to the end, to alone reads from the start. Cost: the section's token count from get_outline (about 1k tokens per 5 minutes of speech).

输入参数tourl必填frommodeformatchapterlanguagetimestamps

get_comments

Get video comments

Top comments of a video, with creator replies and pinned comments flagged. Useful for corrections, follow-up questions and audience consensus that the video itself lacks. Cost: about 50 tokens per comment; limit defaults to 50. Only sources whose provider can read comments support this.

输入参数url必填limit

list_items

List the videos in a playlist, channel or feed

Expand a playlist, channel, podcast feed or page into its videos (a single video URL returns itself). Use it to see what a list contains before reading, or pass the list straight to add_to_collection. Cost: about 40 tokens per item; limit defaults to 50.

输入参数url必填limit

export_context_pack

Export a context pack

One Markdown document for many videos (the pack format): a header per video with title, channel, URL and chapters, then each transcript in timestamped paragraphs. Set maxTokens to fit a budget: the pack trims transcripts to fit and says what it left out. Cost: about 12k tokens per hour of video unless maxTokens caps it. Prefer get_outline, get_section and search_transcript when you only need parts.

输入参数urlslimitmaxTokenscollection

list_models

List models

The models (rungs) this server can use for speech-to-text, LLM, embedding, video and visual work, in free-first order: tier (local, free, keyless, paid), quality 1 to 5, capabilities (json, tools, vision, stream, ...), context window, whether it is enabled, and the names of the env vars that would enable it. Never shows key values. Cost: about 80 tokens per model; filter with kind.

输入参数kind

search_transcript

Search transcripts

Find where something is said across saved video transcripts, instead of reading whole transcripts (about 12k tokens per hour). Hybrid search: keyword matching for exact names and model numbers, plus meaning-based matching for paraphrases (when an embedding model is available). Returns the best time ranges with title, [m:ss], highlighted text and a timestamp link. Syntax: "exact phrase" must appear, -word excludes. Scope with collection (a collection id) or urls (videos are fetched and saved first if needed).

输入参数urlslimitquery必填rerankcollection

build_brief

Build a cited brief

Build a cited brief across videos on the server with a free LLM (map-reduce for large collections). Every claim cites a video, timestamp and quote that were checked against the transcript; points are marked consensus (two or more videos agree), disputed (both sides cited) or single-source, and claims that failed the check are listed separately, uncited. If you can read the transcripts yourself, the `brief` prompt is cheaper and usually better; use this for collections too large for your context.

输入参数urlsformatquestiontemplatecollection

extract

Extract structured data

Extract structured JSON from videos with a template (buyer-guide, tutorial-steps, comparison, summary, brief) or your own JSON Schema. The answer is validated against the schema (one repair attempt), and every citation ({videoId, startSec, quote}) is checked against the transcript: verified ones gain a title and timestamp url, failed ones are removed and listed in "unverified".

输入参数urlsschemaquestiontemplatecollection

list_collections

List collections

List research collections with how many videos and sources each has. A collection groups videos on one topic and can follow playlists, channels and podcast feeds.

无需输入参数。

create_collection

Create collection

Create a research collection. sources are playlists, channels or podcast feeds the collection follows: add_to_collection or a refresh ingests their videos, and watch lists pick up new uploads. Returns the collection with its id.

输入参数name必填sourcesdescription

add_to_collection

Add to collection

Ingest videos into a collection now: each URL is a video or a list (playlist, channel, feed), and lists are expanded. Transcripts come from captions first, speech-to-text only when needed. Videos already in the collection are skipped and per-video failures are reported without stopping. Returns the updated collection and a summary (added, skipped, failed with hints).

输入参数urls必填collection必填

get_collection

Get collection

A collection with a summary of each video (id, title, channel, duration, URL, transcript origin), the sources it follows, inputs waiting for the next refresh and its watch list. Read transcripts with get_transcript, get_outline or search_transcript.

输入参数collection必填

ask

Ask videos

Answer a question from the transcripts of one or more videos, or a saved collection, with server-side retrieval and the free-first LLM chain. Every factual sentence cites a numbered source; each source is a timestamp link to the moment that supports it. Says so plainly when the videos do not cover the question. Use it when you want a cited answer without reading whole transcripts.

输入参数urlsquestion必填collection

research_videos

Research videos

Search 1 to 10 videos (or a playlist, capped at 10) for a question and get only the relevant excerpts: ranked by BM25, each with the surrounding context, [m:ss] and a timestamp link, under a token cap. Use it instead of reading whole transcripts (about 12k tokens per hour of speech). Put exact phrases in double quotes to boost them. Lexical: if nothing matches, it lists words the videos do use so you can retry with a synonym.

输入参数urls必填query必填formatmaxTokenscontextSecmaxExcerpts

list_caption_languages

List caption languages

List the caption tracks a video has (language, name, creator or auto-generated) and, for YouTube, the languages YouTube can machine-translate them into. Call it before get_transcript to pick a language.

输入参数url必填

get_key_moments

Get key moments

The moments of a video worth jumping to, picked by the free-first LLM chain from the timestamped transcript. Every timestamp is checked against the real transcript (snapped within 5 seconds, dropped otherwise); the result says how many were dropped and which rung answered.

输入参数url必填count

get_skip_segments

Get sponsor and skip segments

Community-marked SponsorBlock segments of a YouTube video: sponsor reads, self-promotion, subscribe reminders, intros, outros, previews and filler, each with its [m:ss] range, a timestamp URL and how much of the transcript it covers (lines, word share and the first words). Use it to leave ad copy out of summaries and briefs: never cite text inside these segments as a claim about the topic. Default categories: sponsor, selfpromo, interaction, intro, outro, preview, filler. All: sponsor, selfpromo, interaction, intro, outro, preview, hook, filler, music_offtopic, poi_highlight, exclusive_access, chapter. poi_highlight comes back as `highlight` (a point, not a skip); a whole-video label comes back as `fullVideo`. Other platforms return no segments. Results carry the SponsorBlock attribution (CC BY-NC-SA 4.0).

输入参数url必填categories

export_obsidian

Export to an Obsidian vault

Write one Markdown note per video into a folder of an Obsidian vault on this machine: frontmatter properties, chapters as headings, paragraphs prefixed with [m:ss] timestamp links, plus an index note with [[wikilinks]] when a collection is exported. Notes vid2context wrote before are updated; other existing notes are never replaced unless overwrite is true.

输入参数urlsfolderoverwritevaultPath必填collection

export_notion

Export to Notion

Create one Notion page per video under a parent page (chapters as headings, paragraphs with timestamp links, a bookmark to the video). Re-exporting updates the same pages instead of duplicating them. Needs NOTION_TOKEN; the parent page comes from parentPageId or NOTION_PARENT_PAGE_ID.

输入参数urlscollectionparentPageId

find_duplicates

Find reuploads and clips

Compare the transcripts of several videos and group reuploads (the same video uploaded again) and clips (an excerpt of a longer video, with the [m:ss] where it starts in the original and the range it covers). Use it before writing a brief across many videos: count each group once (representativeOf maps every video to its original), or a clip agreeing with its own source looks like consensus. Related pairs share passages without being copies. Works on transcripts only; re-dubbed or translated reuploads are not detected.

输入参数urlscollection

watch_live

Watch a live stream

Transcribe a live stream (a live YouTube video or an HLS .m3u8 URL) while it runs. New lines arrive about every 30 seconds as progress notifications; the result is the full transcript with [stream time | UTC] stamps when the stream ends or maxMinutes pass. Default 10 minutes, at most 60. For recordings use get_transcript.

输入参数url必填maxMinutes

open_transcript_viewer

Open transcript viewer

Show a video transcript in an interactive viewer (chapters, search, clickable [m:ss] timestamps, one-click citations, send selected lines to the chat) in clients that support MCP Apps, such as ChatGPT and Claude. The text result starts with a header (title, channel, URL, chapters); clients without MCP Apps get the full timestamped transcript as text.

输入参数url必填language

digest_videos

Digest videos with your own model

Build one cited digest of several videos (a playlist, a collection, or a list of URLs) using MCP sampling: the server asks the client's model to take notes on each part of each transcript, then combine them. Every claim cites [Title @ m:ss](link), and every timestamp is checked against the real transcript. No server key is needed. If this client cannot sample, the result is a chunk plan with the exact instructions, so you can do the same work yourself.

输入参数urlsquestioncollectionmaxTokensPerVideo

choose_caption_track

Choose a caption track

List a video's caption tracks (languages, creator or auto-generated) and ask the user to pick one, then return that transcript with [m:ss] timestamps. Without a picker in this client, or when the user declines, returns the track list so you can call get_transcript with a language.

输入参数url必填

版本历史

1
  1. v0.1.1最新Nov 14, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分