Video Perception

Steuert einen ffmpeg MCP-Server, damit Claude Videoframes und zeitgestempelte Transkripte liest

von jordanrendric · jordanrendric/claude-video-vision

Funktioniert mit Setup ★ 6.8/10

Video Perception — Steuert einen ffmpeg MCP-Server, damit Claude Videoframes und zeitgestempelte Transkripte liest

Was es kann

Verbindet Claude Code mit dem claude-video-vision MCP-Server, damit es lokale Videodateien (.mp4, .mov, .mkv, .webm) und YouTube-URLs als Bildframes plus zeitgestempelte Audio-Transkription lesen kann. Die Skill schreibt einen Workflow vor: Metadaten abrufen, ffmpeg-Strukturanalyse (Szenenwechsel, Stilleintervalle, Bewegung) durchführen, bevor Frames extrahiert werden, dann Frames mit adaptiver FPS um die wichtigen Momente herum ziehen. Wird ausgelöst, wenn ein Videodateipfad, ein YouTube-Link oder eine Anfrage zum Ansehen, Überprüfen oder Zusammenfassen eines Videos in der Konversation erscheint.

Testbericht

Ich habe claude-video-vision@1.3.2 von npm in einem Sandbox-HOME installiert, den MCP-Server über stdio JSON-RPC gesteuert und bestätigt, dass alle sechs Tools reagieren. Dann habe ich ein 3-minütiges Testvideo mit vier beschrifteten Kapiteln und einem 1-sekündigen „ERROR CODE 7742“-Blitz bei 01:37 generiert. BASELINE (naives video_watch, fps auto): 100 Frames / 487KB Bilder; es fing den Blitz bei 00:01:37 ab, erreichte aber stillschweigend max_frames=100 und extrahierte nie die letzten 41 Sekunden des Videos. SKILL-Lauf (video_info, dann video_analyze, dann eine geplante Segmentextraktion): video_analyze gab die exakte Schnittliste 00:00:45, 00:01:30, 00:01:37, 00:01:38, 00:02:15 plus das Stilleintervall 00:00:45-00:01:30 für null Bild-Tokens zurück – einschließlich des 02:15-Schnitts, den die Baseline nie sah – aber die vorgeschriebene Segmentextraktion gab nur 34KB Frames zurück, die mit 00:00:10, 00:01:48, 00:01:41, 00:02:21, 00:02:34 und 00:03:54 (über die 3:00-Dauer hinaus) beschriftet waren und den Fehlerblitz vollständig verpassten. Die Ursache, die ich in dist/extractors/frames.js las: -ss wird vor -i übergeben, während -to danach übergeben wird, sodass jede Fensteranfrage bis zum EOF läuft; ich reproduzierte dies bei video_watch-Segmenten, video_watch start_time/end_time und video_detail in einem sauberen HOME. Die Transkription gibt auch ein leeres Array ohne Warnung zurück, wenn kein Whisper/API-Backend konfiguriert ist.

Getestet am: 2026-07-21 · Claude Code 2.x (agent harness)

Installation

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.

Befehle & Beispiel-Prompts

  • /video-perceptionSteuert einen ffmpeg MCP-Server, damit Claude Videoframes und zeitgestempelte Transkripte liest

Skills reagieren auf normale Anfragen — keine Slash-Befehle nötig. Nach der Installation aktivieren Prompts wie diese den Skill (auf Englisch):

  • Watch this video and summarize what happens
  • Analyze this YouTube link for key moments
  • Review this MP4 and describe the scenes