claude-video-vision

jordanrendricMIT活跃维护

给 Claude Code 装上视频理解能力:用 ffmpeg 抽帧、Whisper 转写音轨,再交给多模态模型分析画面与声音,让 Agent 能直接看懂视频内容。

Give Claude the ability to watch and understand videos — Claude Code plugin with frame extraction and multimodal audio analysis

v1.4.0发布于 2026-10-06 01:52 UTC1,483star +12 / 7 天170fork同步于 2026-11-10 23:49 UTC

怎么上手

由 README 提炼,执行前请确认
/plugin marketplace add https://github.com/jordanrendric/claude-video-vision
/plugin install claude-video-vision
硬件要求按 README 说明

README 未说明显存或 GPU 要求;本地 Whisper 后端按内存自动选择模型,可完全离线运行,云端后端则依赖对应 API。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

给 Claude Code 加上看视频的能力,用 ffmpeg 抽帧加音频转写,让 Claude 直接理解视频内容

给 Claude Code 装上视频理解能力:用 ffmpeg 抽帧、Whisper 转写音轨,再交给多模态模型分析画面与声音,让 Agent 能直接看懂视频内容。

核心能力

  • 用 ffmpeg 抽帧后以 base64 图片交给 Claude 直接看画面
  • 音频转写带时间戳,支持 Gemini、本地 Whisper、OpenAI 三种后端
  • 可直接传 YouTube URL,用 yt-dlp 下载并优先复用字幕
  • Claude 按问题自适应调整 fps、时间范围和分辨率
  • 提供 6 个 MCP 工具,含元数据查询、细节下钻和依赖检查

容易踩的坑

需要 Node.js 24+ 和 ffmpeg,YouTube 链接还需另装 yt-dlp;本地 Whisper 首次使用会自动下载模型到 ~/.claude-video-vision/models/;Windows 上 npx 版本过旧会导致 MCP 服务器连接失败,需升级 npm 或全局安装。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

1 个版本v1.4.0
  1. v1.4.0最新正式版2026-10-06 · 2026-10-06 01:52 UTC

    Changed

    • Node.js 24 LTS is now the minimum (engines.node: >=24). Node 20 reached end-of-life on 2026-04-30. CI runs on Node 24 and 26. Users on Node 22 will see an EBADENGINE warning from npx.
    • video_analyze scene detection defaults to a scdet score of 8 (was 2). Scores below 8 are mostly handheld motion and fast pans, not cuts, so scene_changes: true now returns far fewer and more accurate scenes. Pass scene_changes: { threshold: 2 } to get the old behavior back (#45).
    • Dependencies: openai 4 → 7, @google/genai 1 → 2, zod 3 → 4, @modelcontextprotocol/sdk 1.29 → 1.32, TypeScript 5 → 7. No changes to tool schemas or backend behavior.
    • Tool descriptions now state that start_time / end_time and segment start / end are absolute timestamps, not durations (#35).

    Added

    • scene_changes: { threshold: N } on video_analyze (0–100) to tune scene detection per call (#45).
    • analysis.incomplete on video_analyze: when the ffmpeg pass stops early, the result says how far the analysis got (analyzed_until) instead of silently returning partial data (#47).
    • README troubleshooting section for the Windows Unknown command: "claude-video-vision@latest" MCP startup failure.

    Fixed

    • video_watch / video_detail time ranges: end_time and segment end were read by ffmpeg as a duration from the start time, so a 01:29 → 01:30 segment extracted 90 seconds of frames. Segments also shared one output directory, mixing frames between segments and with stale files. Each segment now returns exactly its own frames (#46).
    • video_analyze truncated long videos: the single ffmpeg pass had a flat 10-minute timeout, so on long or 4K sources it was killed mid-file and the partial result was returned as if complete (e.g. no scenes after 01:09 in a 2.5h film). The timeout now scales with the video length, and an early stop is reported via analysis.incomplete (#47).
    • video_analyze stderr fallback never matched the score: X, time: Y log format of current ffmpeg builds; it now parses both formats, and the scdet filter and both parsers use the same threshold (#45).
    • Session cache: with enable_index, video_watch segments stored raw frame_XXXX paths in the manifest, which later runs overwrote. Frames are now cached under timestamp-named files (#46).
    • video_watch now always removes its temporary /tmp/cvv-* work dir, including when session indexing is on and when extraction fails.
    • Security: transitive dependency updates clear all runtime npm audit findings (1 critical, 4 high).

    Upgrade notes

    • If you used video_watch with segments and enable_index: true before this release, your session cache may point to wrong frames. Clear it with video_configure → clear_sessions, or delete ~/.claude-video-vision/sessions/.

    Full changelog: https://github.com/jordanrendric/claude-video-vision/compare/v1.3.2...v1.4.0

    Thanks to @jorboyd for the detailed reports behind #45, #46 and #47, and to @gaurav-init for #35.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Claude Code Video Vision

    Give Claude the ability to watch and understand videos.

    A Claude Code plugin that extracts frames via ffmpeg and processes audio via multiple backends (Gemini API, local Whisper, or OpenAI API). Claude receives frames as images and audio transcription with timestamps — the plugin is a perception layer, not an interpretation layer.

    Features

    • Multimodal perception — Claude sees video frames directly and reads audio transcriptions with timestamps
    • YouTube URL support — Pass a YouTube URL directly; the MCP server downloads it with yt-dlp, preserving source metadata and captions for context
    • Flexible backends — Choose between cloud APIs or fully local processing
    • Adaptive extraction — Claude adjusts fps, time range, and resolution based on your question
    • Auto-installation — Whisper models download automatically on first use
    • Interactive setup wizard — /setup-video-vision walks you through configuration

    Quick Start

    1. Install the plugin

    Inside Claude Code, run these commands one at a time:

    /plugin marketplace add https://github.com/jordanrendric/claude-video-vision
    

    Then:

    /plugin install claude-video-vision
    

    The MCP server will auto-install via npx from npm on first use — no build step required.

    Alternative: local development

    git clone https://github.com/jordanrendric/claude-video-vision.git
    claude --plugin-dir /path/to/claude-video-vision
    

    2. Configure

    Inside Claude Code, run the interactive wizard:

    /claude-video-vision:setup-video-vision
    

    It will walk you through backend selection, whisper configuration (if local), frame options, and dependency verification.

    Usage

    Slash command

    /watch-video path/to/video.mp4
    /watch-video tutorial.mp4 "what language is used in this tutorial?"
    /watch-video https://www.youtube.com/watch?v=... "summarize this video"
    

    Conversational

    Just mention a video file or YouTube URL — Claude will detect it:

    "analyze this video for me: ~/Downloads/demo.mp4"

    "take a look at the first second of ~/videos/bug-report.mov"

    "summarize this YouTube Short: https://www.youtube.com/shorts/..."

    Claude adapts parameters automatically:

    • "the first second" → extracts at original fps from 00:00:00 to 00:00:01
    • "summarize this 1h lecture" → low fps, full duration
    • "what text is on screen at 1:30?" → high resolution, narrow time window

    Backends

    BackendAudio processingCostSetup
    Gemini APINative (speech + non-speech events)Free tier: 1500 req/dayGEMINI_API_KEY env var
    Local (Whisper)whisper.cpp or Python openai-whisperFree, fully offlinebrew install whisper-cpp + auto model download
    OpenAI APIOpenAI Whisper APIPaid per usageOPENAI_API_KEY env var

    All backends extract video frames via ffmpeg — Claude always has direct visual access.

    Architecture

    ┌───────────────────────────────────────────────────────┐
    │ Claude Code (your session)                            │
    │                                                       │
    │  /watch-video  ──→  Skill: video-perception          │
    │                        │                              │
    │                        ▼                              │
    │                  MCP tool: video_watch                │
    │                        │                              │
    └────────────────────────┼──────────────────────────────┘
                             │
                             ▼
          ┌────────────────────────────────────┐
          │ MCP Server (Node.js)               │
          │                                    │
          │  ┌──────────┐    ┌──────────────┐  │
          │  │ ffmpeg   │    │ Audio backend│  │
          │  │ frames   │ ║  │ (parallel)   │  │
          │  └──────────┘    └──────────────┘  │
          │       │                 │          │
          └───────┼─────────────────┼──────────┘
                  ▼                 ▼
            base64 images     transcription
            + timestamps      + audio events
                  │                 │
                  └────────┬────────┘
                           ▼
                  Claude receives both
    

    Requirements

    • Node.js 24+ (for the MCP server)
    • ffmpeg (auto-detected, install instructions provided by setup wizard)
    • yt-dlp (optional, required only for YouTube URLs; brew install yt-dlp on macOS)
    • Backend-specific:
      • Gemini API: free API key from ai.google.dev
      • Local: brew install whisper-cpp (macOS) or equivalent
      • OpenAI: API key from OpenAI

    MCP Tools

    The plugin exposes 6 MCP tools:

    • video_watch — Extract frames + process audio (main tool)
    • video_analyze — Analyze video structure with ffmpeg filters before extraction
    • video_detail — Drill into specific cached or newly extracted moments
    • video_info — Get video metadata without processing
    • video_configure — Change settings
    • video_setup — Check and guide dependency installation

    Slash Commands

    • /watch-video <path> [question] — Analyze a video
    • /setup-video-vision — Interactive configuration wizard

    Configuration

    Settings are stored in ~/.claude-video-vision/config.json:

    {
      "backend": "local",
      "whisper_engine": "cpp",
      "whisper_model": "auto",
      "whisper_at": false,
      "frame_mode": "images",
      "frame_format": "jpeg",
      "frame_resolution": 512,
      "default_fps": "auto",
      "max_frames": 100,
      "frame_describer_model": "sonnet",
      "enable_index": false,
      "session_max_age_days": 7,
      "downloads_max_age_days": 7
    }
    

    frame_format can be jpeg, png, or webp. jpeg remains the default for backwards compatibility; png is useful for screen recordings where text and sharp UI edges should stay lossless.

    Whisper models auto-download to ~/.claude-video-vision/models/ on first use. Available: tiny, base, small, medium, large-v3-turbo, large-v3, auto (picks best for your RAM).

    YouTube Transcripts

    For YouTube URLs, the server uses this transcript order:

    1. Manual YouTube subtitles when an English track is available.
    2. YouTube automatic captions when manual subtitles are not available.
    3. The configured audio backend when captions are missing, empty, or cover too little of a longer video.

    Audio results label provenance with transcription_source, for example youtube_subtitles or youtube_auto_captions, so Claude can treat manual subtitles as stronger evidence than auto-captions.

    Troubleshooting

    Windows: MCP server fails to connect with Unknown command: "claude-video-vision@latest"

    The plugin starts its MCP server with npx -y claude-video-vision@latest. If claude mcp list shows the server as failed and running that command yourself prints Unknown command: "claude-video-vision@latest" followed by a hint about npm help, then npm received the package name as if it were a subcommand. That points to a broken or outdated npx on your machine, not to the plugin.

    1. Check your npm install in PowerShell:

      npx --version
      npm --version
      where.exe npx
      

      Both versions should match (7 or newer), and where.exe npx should point to npx.cmd inside your Node.js install directory.

    2. Fix it by updating npm (npm install -g npm@latest) or reinstalling Node.js 24+ LTS, then restart Claude Code.

    3. Workaround if it still fails: install the server globally and register it yourself.

      npm install -g claude-video-vision
      claude mcp add --scope user claude-video-vision -- claude-video-vision
      

      The plugin's own server entry will keep showing as failed; you can ignore it. A global install does not update itself, so re-run npm install -g claude-video-vision to pick up new releases.

    Status

    v1.4.0 — see the CHANGELOG for release history. CI runs on Ubuntu and macOS with Node.js 24 and 26.

    License

    MIT — see LICENSE.

    Author

    Jordan Vasconcelos

    Star History