Video Perception
Steruje serwerem ffmpeg MCP, aby Claude odczytywał klatki wideo i transkrypcje z sygnaturami czasowymi
Działa po konfiguracji
Co robi ten skill
Łączy Claude Code z serwerem claude-video-vision MCP, aby mógł odczytywać lokalne pliki wideo (.mp4, .mov, .mkv, .webm) i adresy URL YouTube jako klatki obrazu plus transkrypcję audio z sygnaturami czasowymi. Umiejętność przepisuje przepływ pracy: pobieranie metadanych, uruchamianie analizy strukturalnej ffmpeg (zmiany scen, interwały ciszy, ruch) przed ekstrakcją jakichkolwiek klatek, a następnie pobieranie klatek z adaptacyjną liczbą klatek na sekundę wokół ważnych momentów. Uruchamia się, gdy w rozmowie pojawi się ścieżka pliku wideo, link YouTube lub prośba o obejrzenie, przegląd lub podsumowanie wideo.
Raport z testu
Zainstalowałem claude-video-vision@1.3.2 z npm do sandboxed HOME, sterowałem serwerem MCP przez stdio JSON-RPC i potwierdziłem, że wszystkie sześć narzędzi odpowiada, a następnie wygenerowałem 3-minutowe wideo testowe z czterema oznaczonymi rozdziałami i 1-sekundowym błyskiem „ERROR CODE 7742” o 01:37. BASELINE (naiwne video_watch, fps auto): 100 klatek / 487KB obrazów; złapało błysk o 00:01:37, ale cicho osiągnęło max_frames=100 i nigdy nie wyodrębniło ostatnich 41 sekund wideo. Uruchomienie SKILL (video_info, następnie video_analyze, następnie planowana ekstrakcja segmentów): video_analyze zwróciło dokładną listę cięć 00:00:45, 00:01:30, 00:01:37, 00:01:38, 00:02:15 plus interwał ciszy 00:00:45-00:01:30 dla zerowych tokenów obrazu — w tym cięcie 02:15, którego baseline nigdy nie widział — ale przepisana ekstrakcja segmentów zwróciła tylko 34KB klatek oznaczonych 00:00:10, 00:01:48, 00:01:41, 00:02:21, 00:02:34 i 00:03:54 (poza czasem trwania 3:00) i całkowicie pominęła błysk błędu. Główna przyczyna, którą przeczytałem w dist/extractors/frames.js: -ss jest przekazywane przed -i, podczas gdy -to jest przekazywane po, więc każde żądanie okna działa do EOF; odtworzyłem to na segmentach video_watch, video_watch start_time/end_time i video_detail w czystym HOME. Transkrypcja również zwraca pustą tablicę bez ostrzeżenia, gdy nie skonfigurowano backendu whisper/API.
Testowano: 2026-07-21 · Claude Code 2.x (agent harness)
Instalacja
git clone --depth 1 https://github.com/jordanrendric/claude-video-vision.git /tmp/video-perception-src mkdir -p ~/.claude/skills cp -R /tmp/video-perception-src/skills/video-perception ~/.claude/skills/video-perception # The skill is only guidance — it is USELESS without the MCP server that provides # video_info / video_analyze / video_watch / video_detail / video_configure / video_setup. # # Register the MCP server (needs Node 20+ and ffmpeg on PATH): # claude mcp add claude-video-vision -- npx -y claude-video-vision@latest # # Or install the whole plugin instead of this skill, inside Claude Code, one at a time: # /plugin marketplace add https://github.com/jordanrendric/claude-video-vision # /plugin install claude-video-vision # /setup-video-vision # # Required deps: # brew install ffmpeg # frame extraction (mandatory) # brew install yt-dlp # only for YouTube URLs # Audio transcription needs a backend, otherwise transcription silently returns []: # export GEMINI_API_KEY=... # free tier, backend "gemini-api" # brew install whisper-cpp # fully local, backend "local" # export OPENAI_API_KEY=... # paid, backend "openai" # Config lives at ~/.claude-video-vision/config.json (set via the video_configure tool). # # Known defect in the published v1.3.2 server: any time-bounded request over-extracts. # ffmpeg is called with -ss before -i but -to after -i, so asking for 01:36-01:39 # returns ~100 frames spanning 01:36-02:25. Prefer whole-video video_watch and lean on # video_analyze for timestamps until this is fixed.
Komendy i przykładowe prompty
/video-perceptionSteruje serwerem ffmpeg MCP, aby Claude odczytywał klatki wideo i transkrypcje z sygnaturami czasowymi
Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):
Watch this video and summarize what happensAnalyze this YouTube link for key momentsReview this MP4 and describe the scenes