Skip to content
Video & Audio
Skill

/video-understand

Understand video content locally using ffmpeg frame extraction and Whisper transcription. No API keys needed. Use when: (1) Understanding what a video contains, (2) Transcribing video audio locally, (3) Extracting key frames for visual analysis, (4) Getting video content without

From plugin
openmontage
80k49 skills4 commands

Claude Code

$ npx -y skills add openmontageinc/openmontage --skill video-understand --agent claude-code

SKILL.md

video-understand.SKILL.md
name: video-understand
description: |
  Understand video content locally using ffmpeg frame extraction and Whisper transcription. No API keys needed.
  Use when: (1) Understanding what a video contains, (2) Transcribing video audio locally,
  (3) Extracting key frames for visual analysis, (4) Getting video content without API keys.

video-understand

Understand video content locally using ffmpeg for frame extraction and Whisper for transcription. Fully offline, no API keys required.

Prerequisites

  • `ffmpeg` + `ffprobe` (required): `brew install ffmpeg`
  • `openai-whisper` (optional, for transcription): `pip install openai-whisper`

Commands

# Scene detection + transcribe (default)
python3 skills/video-understand/scripts/understand_video.py video.mp4

# Keyframe extraction
python3 skills/video-understand/scripts/understand_video.py video.mp4 -m keyframe

# Regular interval extraction
python3 skills/video-understand/scripts/understand_video.py video.mp4 -m interval

# Limit frames extracted
python3 skills/video-understand/scripts/understand_video.py video.mp4 --max-frames 10

# Use a larger Whisper model
python3 skills/video-understand/scripts/understand_video.py video.mp4 --whisper-model small

# Frames only, skip transcription
python3 skills/video-understand/scripts/understand_video.py video.mp4 --no-transcribe

# Quiet mode (JSON only, no progress)
python3 skills/video-understand/scripts/understand_video.py video.mp4 -q

# Output to file
python3 skills/video-understand/scripts/understand_video.py video.mp4 -o result.json

CLI Options

| Flag | Description | |------|-------------| | `video` | Input video file (positional, required) | | `-m, --mode` | Extraction mode: `scene` (default), `keyframe`, `interval` | | `--max-frames` | Maximum frames to keep (default: 20) | | `--whisper-model` | Whisper model size: tiny, base, small, medium, large (default: base) | | `--no-transcribe` | Skip audio transcription, extract frames only | | `-o, --output` | Write result JSON to file instead of stdout | | `-q, --quiet` | Suppress progress messages, output only JSON |

Extraction Modes

| Mode | How it works | Best for | |------|-------------|----------| | `scene` | Detects scene changes via ffmpeg `select='gt(scene,0.3)'` | Most videos, varied content | | `keyframe` | Extracts I-frames (codec keyframes) | Encoded video with natural keyframe placement | | `interval` | Evenly spaced frames based on duration and max-frames | Fixed sampling, predictable output |

If `scene` mode detects no scene changes, it automatically falls back to `interval` mode.

Output

The script outputs JSON to stdout (or file with `-o`). See `references/output-format.md` for the full schema.

{
  "video": "video.mp4",
  "duration": 18.076,
  "resolution": {"width": 1224, "height": 1080},
  "mode": "scene",
  "frames": [
    {"path": "/abs/path/frame_0001.jpg", "timestamp": 0.0, "timestamp_formatted": "00:00"}
  ],
  "frame_count": 12,
  "transcript": [
    {"start": 0.0, "end": 2.5, "text": "Hello and welcome..."}
  ],
  "text": "Full transcript...",
  "note": "Use the Read tool to view frame images for visual understanding."
}

Use the Read tool on frame image paths to visually inspect extracted frames.

References

  • `references/output-format.md` -- Full JSON output schema documentation
Read more
@calesthio
Ships withopenmontage

World's first open-source, agentic video production system. 12 production pipelines, 100+ tools, 700+ agent skill and production-knowledge files. Turn your AI coding assistant into a full video production studio.

Stars on GitHub

Momentum

stars in total
80.1k
Star history of calesthio/OpenMontage on GitHub, a chart by star-history.com

Other skills on openmontage.

acestep

acestep

AI music generation with ACE-Step 1.5 — background music, vocal tracks, covers, stem extraction for video production. Use when…

agents

agents

Build voice AI agents with ElevenLabs. Use when creating voice assistants, customer service bots, interactive voice characters,…

ai-video-gen

ai-video-gen

Generate AI videos from text prompts using multiple provider gateways. Use when: (1) Generating videos from text descriptions,…

avatar-video

avatar-video

Create AI avatar videos with precise control over avatars, voices, scripts, scenes, and backgrounds using HeyGen's v2 API. Use…

azure-speech-to-text

azure-speech-to-text

Transcribe audio to text using Azure AI Speech (Fast Transcription REST API). Use when converting audio/video to text, generating…

More skills from other plugins.

captions-overlay

captions-overlay

Overlay doctrine for captions in HyperFrames videos — the caption MODEL (drop / rail / embed) and the rule that captions are an…

@heygen-com@heygen-comInstall Skill
seedance-antislop

seedance-antislop

This skill should be used when a Seedance 2.0 prompt contains generic AI filler, hollow superlatives, vague cinematic language,…

@emily2040@emily2040Install Skill

Questions about video-understand.

Which coding agents can use video-understand?
video-understand installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.