Turn any supported video into a transcript, summary, chapters, a multi-video comparison, or a saved note — from Claude, Codex, the terminal, or your own code. One API key, three ways to call it.
npx @vidnotes/cli summarize "https://youtube.com/watch?v=..."Keys are scoped to your VidNotes account. Create one in Settings → CLI, MCP, and API access, or straight from the terminal — vidnotes login opens your browser, signs you in, and stores the key locally.
# Browser login — writes the key to ~/.vidnotes/config.json
npx @vidnotes/cli login
# Or set it explicitly for CLI, MCP, and API calls
export VIDNOTES_API_KEY="vnp_..."The secret (vnp_…) is shown once. Each key has its own daily request limit; revoke or permanently remove keys any time from Settings.
Install globally, or run any command through npx with no install.
npm install -g @vidnotes/cli
vidnotes summarize "https://youtube.com/watch?v=..."
vidnotes transcript "https://youtube.com/watch?v=..." --json
vidnotes chapters "https://youtube.com/watch?v=..."
vidnotes compare "https://youtube.com/watch?v=one" "https://youtube.com/watch?v=two" --json
vidnotes usage
vidnotes doctorSources are interchangeable across summarize, transcript, and chapters: a URL, a saved project (--project-id), a transcript file (--file), or raw text (--text). Add --json anywhere for machine-readable output built for scripts and agents.
Point any MCP client — Claude Desktop, Claude Code, Codex — at the server. Generate the config block with vidnotes mcp config, or paste this:
{
"mcpServers": {
"vidnotes": {
"command": "npx",
"args": ["-y", "@vidnotes/mcp-server"],
"env": {
"VIDNOTES_API_KEY": "vnp_...",
"VIDNOTES_API_URL": "https://api.vidnotes.app"
}
}
}
}Thirteen tools, all returning structured JSON:
vidnotes_summarize_video vidnotes_get_transcript vidnotes_get_chapters
vidnotes_compare_videos vidnotes_create_note vidnotes_search_notes
vidnotes_get_note vidnotes_get_job vidnotes_get_usage
vidnotes_doctor vidnotes_create_api_key vidnotes_list_api_keys
vidnotes_revoke_api_keyFor long videos, pass asyncJob: true and poll with vidnotes_get_job instead of holding a long request open.
One /v1 contract behind the CLI and MCP server. Authenticate with a bearer token; base URL https://api.vidnotes.app.
curl https://api.vidnotes.app/v1/videos/analyze \
-H "Authorization: Bearer vnp_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://youtube.com/watch?v=...",
"features": ["transcript", "summary", "chapters"]
}'Core endpoints:
POST /v1/videos/analyze transcript · summary · chapters
POST /v1/videos/compare shared topics, overlaps, unique angles
GET /v1/jobs/:jobId poll a queued async analysis
POST /v1/notes analyze and save
GET /v1/notes?query=&limit= search saved notes
GET /v1/platform/usage remaining daily quota (does not count)
POST /v1/platform/api-keys create · list · revoke keysSupported sources: public YouTube URLs, existing VidNotes project ids, raw transcript text, and transcript files through the CLI.
Out of scope for this release: local video upload through the analyze endpoint, rendered clips, social publishing, and thumbnail generation. The platform is video understanding — not video production.
Each key is rate-limited per day. Check remaining quota any time with vidnotes usage or GET /v1/platform/usage; usage reads never count against the limit.
Create a key and run your first command in under a minute. Questions or higher limits — get in touch.