跳到正文
FunCoding

video-perception

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

Star
1,356
许可证
MIT
最近提交
2026年10月7日

skills/video-perception/SKILL.md

在 GitHub 上查看

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 intentFilters 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 intentscene_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.

相似的 Skill

blender-motion-state-inspection

AFaffaan-m/ECC278k近 7 天新增 4,046 个 star

官方

slack-gif-creator

ANanthropics/skills181k近 7 天新增 1,119 个 star

精选

algorithmic-art

用 p5.js 生成流场和粒子系统,通过种子随机性创作原创算法艺术。

ANanthropics/skills181k近 7 天新增 1,119 个 star

thinking-out-loud

SHShubhamsaboo/awesome-llm-apps141k近 7 天新增 808 个 star

moneyprinterturbo-video

HAharry0703/MoneyPrinterTurbo130k近 7 天新增 1,722 个 star

complain

PApaperclipai/paperclip101k近 7 天新增 2,948 个 star