cj-video-vision
Skill1 starsChanged 32 days agoMITView on GitHub
Watch and analyze videos via the claude-video-vision MCP server, covering frame extraction, scene/silence/motion analysis, and audio transcription for local files and YouTube URLs. Use when the user mentions a video file (.mp4, .mov, .avi, .mkv, .webm), pastes a YouTube URL, asks to watch/analyze/review/summarize a video, or references video content in conversation. Also use to install or configure the video-vision MCP itself.
In this repository19 other files it gives its agents.
- AGENTS.mdAGENTS.md
- cj-abSkill
- cj-ambitionSkill
- cj-automateSkill
- cj-cloudflare-workerSkill
- cj-code-reviewSkill
- cj-dailySkill
- cj-meetingsSkill
- cj-notesSkill
- cj-nowSkill
- cj-owa-toolsSkill
- cj-thingsSkill
- cj-todoSkill
- cj-uxloopSkill
- cj-voice-dnaSkill
- repo-deepSkill
- repo-depsSkill
- repo-groomSkill
- repo-healthSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
16 rules. About 0 are common, 5 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 26
Check that the MCP tools are reachable (e.g.
- Very specific: line 41
Always start with video_info to get duration, resolution, and audio presence.
- Very specific: line 42
If the user gives a YouTube URL, pass the URL directly as path.
- Very specific: line 47
REQUIRED for videos > 30s: Call video_analyze BEFORE extracting any frames.
- Very specific: line 62
Always include transcription: true when the video has audio.
- Distinctive: line 65
Use the analysis results and transcription to plan frame extraction:
- Distinctive: line 69
Never exceed the minimum FPS needed for the task
- Distinctive: line 70
Prefer fewer segments at lower FPS.
- Very specific: line 72
Call video_watch to extract frames:
- Very specific: line 73
Short videos (< 2 minutes): use fps: "auto" without view_sample: short videos need full coverage to avoid missing brief moments
- Very specific: line 75
Long videos (> 2 minutes): use segments based on analysis data with variable FPS, and view_sample to limit initial frame count
- Very specific: line 78
Use video_detail to drill into specific moments:
- Distinctive: line 79
Start with 3-5 second windows around points of interest
- Very specific: line 80
Use view_sample: 3 to preview (first, middle, last frame)
- Distinctive: line 82
Treat frame viewing like a binary search.
- Very specific: line 94
segments: Use when you have analysis data.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
cj-video-vision
Overview
claude-video-vision is an MCP server
that gives agents video perception: ffmpeg-based structural analysis, frame extraction
at variable FPS/resolution, and audio transcription (Whisper or YouTube captions).
It handles local video files and YouTube URLs (downloaded via yt-dlp).
The server exposes six tools, all prefixed mcp__claude-video-vision__:
video_info: metadata (duration, resolution, audio presence) without processingvideo_analyze: structural analysis via ffmpeg filters (scene changes, silence, motion, freeze, blur, exposure, loudness, black intervals) + transcriptionvideo_watch: extract frames + process audio; supports per-segment FPS/resolutionvideo_detail: drill into specific segments; extract many frames, view fewvideo_configure: change settings (backend, resolution, enable_index, …)video_setup: check/install dependencies (ffmpeg, yt-dlp, whisper)
Boot
Check that the MCP tools are reachable (e.g. via ToolSearch for video_info). If the
server isn't connected, register it and tell the user to restart the session:
claude mcp add --scope user claude-video-vision -- npx -y claude-video-vision@latestOn first use, run video_setup to verify dependencies (ffmpeg required; yt-dlp for
YouTube; a whisper backend for transcription). Config and frame cache honor
XDG_CONFIG_HOME as of v1.3.x.
Workflow
IMPORTANT: Follow these steps in order. Do NOT skip step 2.
- Always start with
video_infoto get duration, resolution, and audio presence. If the user gives a YouTube URL, pass the URL directly aspath. The server downloads it withyt-dlp, prefers YouTube subtitles/auto-captions for transcription, and falls back to the configured audio backend only when captions are missing, empty, or suspiciously incomplete. REQUIRED for videos > 30s: Call
video_analyzeBEFORE extracting any frames. This is NOT optional: it gives you structural data to make smart extraction decisions. Select filters relevant to the user's question:User intent Filters to select "What happens in this video?" scene_changes, silence, transcription "Find the scene transitions" scene_changes, black_intervals "Are there frozen/stuck parts?" freeze, blur "Is this a talking head or action?" motion "When does the music start?" silence, loudness "Analyze the lighting" exposure "Summarize this lecture" transcription, scene_changes, silence General / unclear intent scene_changes, silence, transcription Always include
transcription: truewhen the video has audio. The transcription tells you WHERE to look visually.- Use the analysis results and transcription to plan frame extraction:
- Low FPS (0.1-0.5) for static or predictable segments
- Higher FPS (1-3) only around scene changes, motion peaks, or moments referenced in speech ("look at this", "as you can see", "let me show you")
- Never exceed the minimum FPS needed for the task
- Prefer fewer segments at lower FPS; you can always drill deeper
- Call
video_watchto extract frames:- Short videos (< 2 minutes): use
fps: "auto"withoutview_sample: short videos need full coverage to avoid missing brief moments - Long videos (> 2 minutes): use
segmentsbased on analysis data with variable FPS, andview_sampleto limit initial frame count
- Short videos (< 2 minutes): use
- Use
video_detailto drill into specific moments:- Start with 3-5 second windows around points of interest
- Use
view_sample: 3to preview (first, middle, last frame) - Then request specific timestamps with
viewif you need more detail - Treat frame viewing like a binary search. Never view all extracted frames at once
- On follow-up questions about the same video, consult the manifest already in context. Do not re-extract or re-view frames you already have at the same resolution.
Parameter Guide
- fps:
"auto"for general overview. The video's original fps (fromvideo_info) for frame-by-frame detail. 5-10 for specific short moments. 0.1-0.5 for long videos. - resolution: 256-512 for quick scans. 512-768 for normal analysis. 1024+ when reading on-screen text or fine details.
- segments: Use when you have analysis data. Each segment can have its own fps and resolution. Overrides global fps/start_time/end_time.
- view_sample: Returns N evenly spaced frames from the extracted set. Use it to avoid flooding context with images.
- skip_audio: Set true when you only need visual analysis.
- YouTube URLs: Pass directly as
path. Treattranscription_source: "youtube_subtitles"as stronger thanyoutube_auto_captions; auto-captions can have recognition errors.
Working with Results
You receive:
- Manifest (when enable_index is on): index of all cached frames by resolution and timestamp; use it to avoid redundant requests
- Frames as images: look at them to understand what happens visually
- Audio transcription with timestamps: read the speech content
- Audio tags: non-speech events (music, sounds, …)
- Analysis data: scene changes, silence intervals, motion levels, …
Combine all sources: the analysis and transcription tell you WHEN things happen; the frames tell you WHAT happens.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

