Skip to content
Back to skills

Video Perception

ASecurity

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

  • 1,345 stars
  • 0 votes
  • 1 copy
  • 3 views
  • Added May 26, 2026
ai-agentsbackend

Works with

  • mcp

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add jordanrendric/claude-video-vision --skill video-perception --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Video Perception?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Video Perception
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jordanrendric-video-perception/badge)](https://www.skillsdirectory.com/skills/jordanrendric-video-perception)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: video-perception
description: 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
---

# Video Perception

You have access to video understanding tools via the claude-video-vision MCP server.

## Available Tools

- `video_analyze` — Analyze video structure with ffmpeg filters (scene changes, silence, motion, etc.). Use this BEFORE extracting frames to plan your strategy.
- `video_watch` — Extract frames + process audio from a video. Supports variable FPS/resolution per segment.
- `video_detail` — Drill into specific segments. Separates extraction from viewing — extract many frames, view few at a time.
- `video_info` — Get video metadata without processing.
- `video_configure` — Change settings (backend, resolution, enable_index, etc.).
- `video_setup` — Check/install dependencies.

## Workflow

**IMPORTANT: You MUST follow these steps in order. Do NOT skip step 2.**

1. Always start with `video_info` to get duration, resolution, and audio presence.
   If the user gives a YouTube URL, pass the URL directly as `path`.
   The MCP server downloads it with `yt-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.

2. **REQUIRED for videos > 30s:** Call `video_analyze` BEFORE 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: true` when the video has audio — the transcription
   tells you WHERE to look visually.

   `scene_changes: true` reports hard cuts (scdet score >= 8). If the user needs softer
   transitions (dissolves, slow fades), pass `scene_changes: { threshold: 4 }`; if
   handheld or fast-moving footage floods the list, raise it (e.g. `{ threshold: 15 }`).

3. 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

4. Call `video_watch` to extract frames:
   - For **short videos (< 2 minutes):** Use `fps: "auto"` without `view_sample` — short videos need full coverage to avoid missing brief moments. The auto FPS already adapts to duration.
   - For **long videos (> 2 minutes):** Use `segments` based on analysis data with variable FPS, and `view_sample` to limit initial frame count. You can always drill deeper with `video_detail`.

5. Use `video_detail` to drill into specific moments:
   - Start with 3-5 second windows around points of interest
   - Use `view_sample: 3` to preview (first, middle, last frame)
   - Then request specific timestamps with `view` if you need more detail
   - 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

6. 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:** `"auto"` for general overview. Use the video's original fps (from `video_info`) for frame-by-frame detail. Use 5-10 for analyzing specific short moments. Use 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 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 `path`. Treat
`transcription_source: "youtube_subtitles"` as stronger than
`youtube_auto_captions`; auto-captions can still have recognition errors.

## Working 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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.