← Back to list
🎬

video-understand Checked

Understand video content locally using ffmpeg frame extraction and Whisper transcription. No API …
🎬 Video & Motion skills By calesthio Version v1.0.0 Added 2026-09-07 Updated 2026-09-07 Source ↗
9.2Overall rating
2Views
5Downloads
56.5kStars

Installation

🤖 Install via AI

Copy the prompt below and send it to your AI assistant (e.g. Claude Code) — it will follow the instructions and install automatically.

Install the "video-understand" skill by following the instructions at https://skill123.me/install/calesthio-video-understand.
⌨️ Command line install

Run in your terminal — downloads and installs to ~/.claude/skills/.

curl -fsSL https://skill123.me/install/calesthio-video-understand.sh | bash
📦 Download ZIP

Download the zip and extract it into your skills directory (e.g. ~/.claude/skills/), then restart your session.

⬇ Download v1.0.0 · 9 KB
📊 Static rating
9.2/10
Trigger
7.0
Structure
10.0
Workflow
9.2
Content
10.0
Engineering
10.0
Security
10.0

Six-dimension rubric with reviewer rationale.

View scorecard ↓
🛡 Dynamic test
—

Not live-tested yet — this skill is rated on static analysis only.

About this skill

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.

Documentation

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.

View full documentation

{
  "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

Score breakdown

Trigger
7.0
Clear What plus four numbered When conditions and no-API-keys hook; no explicit exclusion boundary.
Structure
10.0
94-line SKILL.md with script in scripts/ and JSON schema in references/; no redundant files.
Workflow
9.2
Solid pipeline: scene-to-interval fallback, input and ffmpeg validation, YouTube URL guard, Read-frames verification step.
Content
10.0
Crisp command examples, option and mode tables, imperative style throughout.
Engineering
10.0
Valid frontmatter, script has shebang with declared prerequisites, referenced output-format.md exists.
Security
10.0
Fully local processing, no network calls or secrets; interactive-only pip auto-install is declared and benign.
Clean local tool-wrapper: ffmpeg frame extraction plus Whisper transcription with mode fallback, input guards, graceful degradation, and a well-structured script; description lacks a When-Not boundary.