Video Analyzer

VerifiedCaution

Analyze a video with Google Gemini and return a structured Markdown report. Built-in anti-hallucination guardrails.

Sby Skills Guide Bot
Data & AIIntermediate
7/24/2026
Claude Code
#video-analysis#gemini#transcription#multimodal#markdown-report

Recommended for

Automated summary

Sends a video file to Google Gemini and returns a structured markdown report with a top-level summary, scene-by-scene breakdown, audio transcript (or an honest "silent" note), visual details, and key timestamped moments.

Strengths

  • Delivers a ready-to-use structured report: summary, MM:SS scene breakdown, audio, visual details, and key moments
  • Explicit anti-hallucination guardrails: the prompt forbids inventing narrators, voiceovers, or speaker names and requires an honest note when there is no audio
  • Configurable through --prompt, --fps (useful for fast sub-second cuts), and --model
  • Handles large files through the Files API with up-to-300s polling, and files ≤18MB inline
  • Documented troubleshooting paths for missing API key, unsupported format, upload timeout, and model 404 errors

Limitations

  • Requires a GEMINI_API_KEY in the shell environment and google-genai installed globally on Python 3.10+
  • Report quality depends on Gemini's frame sampling: very short cuts may be missed unless --fps is raised
  • The video is uploaded to Google's API; supported formats are limited to mp4, mov, avi, webm, mpeg, mpg, wmv, 3gpp, 3gp, flv
When to use it

Use it when you need to know what actually happens in a video and want a reliable timestamped account rather than a raw transcript.

When not to use it

Avoid it when the footage is confidential and cannot be uploaded to a third-party API, or when you need a verbatim word-for-word transcript instead of a descriptive report.

Security analysis

Caution
Quality score84/100

The skill has no obvious destructive or obfuscated behavior; its purpose is legitimate video analysis. However, it uses Bash, forwards unquoted user arguments into a shell command, uploads video content to an external API, and depends on an uninspected script, so it warrants caution.

Findings
  • •Shell command interpolates $ARGUMENTS unquoted, so shell metacharacters in a path or --prompt value could enable command injection.
  • •Uploads the user's video to Google Gemini, a third-party cloud API, which may expose sensitive or private footage.
  • •Executes an external script at ~/.claude/skills/video-analyzer/scripts/analyze_video.py whose contents are not included and cannot be audited here.
  • •Uses GEMINI_API_KEY from the environment; legitimate for API access but means the skill handles a secret.
How this analysis is made

Examples

General video breakdown
/video-analyzer ~/Downloads/product-demo.mp4
Fast-cut footage with higher sampling
/video-analyzer ./assets/launch-teaser.mp4 --fps 4
Custom focus prompt
/video-analyzer ./recordings/onboarding-flow.mov --prompt "Focus on every UI screen shown, list the on-screen labels verbatim, and note the order of steps."

name: video-analyzer description: Analyzes a video file with Google Gemini and returns a structured markdown report covering top-level summary, scene-by-scene breakdown, audio transcript (or honest "silent" note), visual details, and key timestamped moments. Strong anti-hallucination guardrails — will not invent narrators, voiceovers, or speaker names. Use when you need to understand what actually happens in a video. argument-hint: <path/to/video.mp4> [--prompt "..."] [--fps N] [--model ...] disable-model-invocation: true allowed-tools: Bash, Read

Analyze Video

Analyze a video file with Gemini and return a structured markdown report.

Prerequisites

  • Python 3.10+
  • google-genai installed globally (any Python the shell finds via python3 works — verified working at version 1.64.0)
  • GEMINI_API_KEY set in the user's shell environment (e.g. exported in ~/.zshrc)

Steps

  1. Parse the arguments from $ARGUMENTS:

    • video path (required) — path to the video file
    • --prompt (optional) — custom analysis prompt; defaults to a structured-report prompt with anti-hallucination rules
    • --fps (optional) — custom frame sampling rate (useful for catching sub-second cuts in fast-paced footage)
    • --model (optional) — Gemini model ID; defaults to gemini-3-flash-preview
  2. Verify the video file exists at the given path. If not, report the error and stop.

  3. Run the analysis script using the absolute path to its install location:

python3 ~/.claude/skills/video-analyzer/scripts/analyze_video.py $ARGUMENTS
  1. The script will:

    • Upload the video — inline for files ≤18MB, Files API for larger files (with up-to-300s polling for ACTIVE state)
    • Send the prompt to Gemini with the video attached
    • Print the full markdown report to stdout (info/progress lines go to stderr)
  2. Capture stdout and present the report to the user.

  3. If the script exits with an error, help the user troubleshoot:

    • Missing API key: confirm echo $GEMINI_API_KEY is non-empty in their shell. If it's only in ~/.zshrc, they may need to start a new terminal or source ~/.zshrc.
    • Unsupported format: must be one of mp4, mov, avi, webm, mpeg, mpg, wmv, 3gpp, 3gp, flv
    • Upload timeout: large file or slow connection — retry, or use a shorter clip
    • Model error / 404: try a different model with --model gemini-2.5-flash

Output

A markdown report printed to stdout with these sections:

  • Top-Level Summary — 2-3 sentence overview of what actually happens
  • Scene-by-Scene Breakdown — MM:SS timestamps for each cut/scene with on-screen content, actions, and verbatim text
  • Audio — verbatim transcript with timestamps, OR an honest "no audio / silent / ambient only" note (the prompt explicitly forbids inventing narrators)
  • Visual Details — on-screen text, UI elements, products, branding, people
  • Key Moments — 3-7 timestamped highlights a viewer would remember

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/video-analyzer-mryiqg1v/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/video-analyzer-mryiqg1v' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/video-analyzer-mryiqg1v/download' --output '.skill-downloads/video-analyzer-mryiqg1v/SKILL.md.part' && mv '.skill-downloads/video-analyzer-mryiqg1v/SKILL.md.part' '.skill-downloads/video-analyzer-mryiqg1v/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Bash, Read

Original excerpt: Prerequisites
  • Python 3.10+
  • google-genai installed globally (any Python the shell finds via python3 works — verified working at version 1.64.0)
  • GEMINI_API_KEY set in the user's shell environment (e.g. exported in ~/.zshrc)

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/video-analyzer-mryiqg1v/SKILL.md' && test -s '.skill-downloads/video-analyzer-mryiqg1v/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/video-analyzer' && cp -R '.skill-downloads/video-analyzer-mryiqg1v' '.claude/skills/video-analyzer'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/video-analyzer-mryiqg1v'

openskills read 'video-analyzer-mryiqg1v'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/video-analyzer-mryiqg1v/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills