agentsclimarketplace

Video

Skill guimatheus92/mcp-video-analyzer/skills/video

Analyze a video (Loom, YouTube, Vimeo, TikTok, Instagram, X/Twitter, Twitch, Dailymotion, Facebook, direct URL, or local file) — transcript, key frames, OCR text, metadata, annotated timeline — and answer questions about it with timestamps.From its SKILL.md

Install
npx -y skills add guimatheus92/mcp-video-analyzer --skill video

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

3.7 KB, as published. Nobody here has run it

Analyze the given video and answer the user's question (or summarize it if no question was asked). Always cite timestamps (M:SS) in your answer.

Route A — video-analyzer MCP tools available (preferred)

If the video-analyzer MCP server is connected in this session, call its tools directly — do not use the CLI:

  • General question or no question → analyze_video (detail "standard")
  • "What happens at X:XX" / a specific moment → analyze_moment (time range) or get_frame_at
  • Question answerable from speech alone → get_transcript (fast, no download)
  • Title / duration / views / comments only → get_metadata (no download)
  • Motion or fast UI changes → get_frame_burst

Dense UI capture (terminal, dashboard, IDE, spreadsheet — the meaning is in small text): pass maxWidth on any of these tools. Emitted frames are capped at 800 px wide by default, which turns a 1920×1080 screencast into 800×450 and drops a 15 px UI font below what a vision model can read. maxWidth: 0 keeps the source resolution; a value like 1568 is the middle ground. Native frames cost several times more context, so raise it for the close read, not for the overview.

Route B — no MCP server (any agent with a shell)

Run the one-shot CLI via Bash (first run downloads the npm package — slow is not broken; progress streams on stderr):

npx -y mcp-video-analyzer@latest analyze "<video-url-or-path>"

stdout is a single JSON document: metadata, transcript (timestamped entries), ocrResults (on-screen text), timeline, warnings, and frames — an array of { time, filePath, mimeType } pointing to JPEG key frames on disk. Then:

  1. Parse the JSON from stdout.
  2. Read the frames[].filePath images (in parallel) when the question needs visuals.
  3. Answer from transcript + OCR + frames, citing timestamps.

Useful flags: --detail brief|standard|detailed (brief = metadata + transcript only, no frame extraction — the fast/cheap path), --fields metadata,transcript (filters the emitted JSON only; frames are still computed at standard detail), --max-frames <1-60>, --max-width <px> (frame width cap, default 800; 0 keeps source resolution — use it for dense UI captures whose payload is small text), --language <code> (force transcription language), --out <dir> (where frames are copied), --force-refresh. Run npx -y mcp-video-analyzer@latest analyze --help for the full list.

Prerequisites & degradation

  • Node.js 22.12+ (required). ffmpeg is bundled — no install needed.
  • Platform URLs (YouTube, Instagram, TikTok, …) require yt-dlp on PATH; direct .mp4/.webm/.mov URLs and local files work without it. Loom transcript, metadata, and comments need no yt-dlp either. Loom frames usually do — Loom serves most videos as separate DASH video+audio streams that only yt-dlp fetches and merges; a CDN fallback covers some videos without it.
  • The tool never fails on partial results: the warnings array carries actionable hints (yt-dlp install, YTDLP_COOKIES_FROM_BROWSER for Instagram/age-restricted, missing Whisper backend). Relay relevant warnings to the user instead of treating them as errors.
  • An empty transcript alongside a "silent audio" warning means the video genuinely has no speech (common for muted Reels/Stories) — that is content, not a failure.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.