video-perception
Original:🇺🇸 English
Translated
Use when the user mentions a video file (.mp4, .mov, .avi, .mkv, .webm), a YouTube URL, asks to watch/analyze/review a video, or references video content in conversation
8installs
Added on
NPX Install
npx skill4agent add jordanrendric/claude-video-vision video-perceptionTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Video Perception
You have access to video understanding tools via the claude-video-vision MCP server.
Available Tools
- — Analyze video structure with ffmpeg filters (scene changes, silence, motion, etc.). Use this BEFORE extracting frames to plan your strategy.
video_analyze - — Extract frames + process audio from a video. Supports variable FPS/resolution per segment.
video_watch - — Drill into specific segments. Separates extraction from viewing — extract many frames, view few at a time.
video_detail - — Get video metadata without processing.
video_info - — Change settings (backend, resolution, enable_index, etc.).
video_configure - — Check/install dependencies.
video_setup
Workflow
IMPORTANT: You MUST follow these steps in order. Do NOT skip step 2.
-
Always start withto get duration, resolution, and audio presence. If the user gives a YouTube URL, pass the URL directly as
video_info. The MCP server downloads it withpath, prefers YouTube subtitles/auto-captions for transcription, and falls back to the configured audio backend only when captions are missing, empty, or suspiciously incomplete.yt-dlp -
REQUIRED for videos > 30s: CallBEFORE 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:
video_analyzeUser 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 includewhen the video has audio — the transcription tells you WHERE to look visually.transcription: true -
Use the analysis results and transcription to plan your frame extraction strategy:
- 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
-
Callto extract frames:
video_watch- For short videos (< 2 minutes): Use without
fps: "auto"— short videos need full coverage to avoid missing brief moments. The auto FPS already adapts to duration.view_sample - For long videos (> 2 minutes): Use based on analysis data with variable FPS, and
segmentsto limit initial frame count. You can always drill deeper withview_sample.video_detail
- For short videos (< 2 minutes): Use
-
Useto drill into specific moments:
video_detail- Start with 3-5 second windows around points of interest
- Use to preview (first, middle, last frame)
view_sample: 3 - Then request specific timestamps with if you need more detail
view - Expand the window only if the initial view is insufficient
- Treat frame viewing like a binary search — narrow down to what matters
- Never view all extracted frames at once
-
When the user asks follow-up questions about the same video, consult the manifest already in your context. Do not re-extract frames you already have at the same resolution. Do not re-request frames you already have in context.
Parameter Guide
fps: for general overview. Use the video's original fps (from ) for frame-by-frame detail. Use 5-10 for analyzing specific short moments. Use 0.1-0.5 for long videos.
"auto"video_inforesolution: 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 this to avoid flooding context with too many images.
skip_audio: Set to true when you only need visual analysis.
YouTube URLs: Pass supported YouTube URLs directly as . Treat
as stronger than
; auto-captions can still have recognition errors.
pathtranscription_source: "youtube_subtitles"youtube_auto_captionsWorking with Results
You receive:
- Manifest (when enable_index is on) — index of all cached frames by resolution and timestamp. Use this to avoid redundant requests.
- Frames as images — look at them to understand what's happening visually
- Audio transcription with timestamps — read the speech content
- Audio tags — non-speech events (music, sounds, etc.)
- Analysis data — scene changes, silence intervals, motion levels, etc.
Combine all sources to form a complete understanding. Use analysis + transcription to guide where you look visually. The analysis tells you WHEN things happen; the frames tell you WHAT happens.