
Video Frames
Pull still frames or timestamped thumbnails from local videos with ffmpeg via frame.sh for demos, QA, and agent inspection.
Overview
video-frames is an agent skill for the Build phase that extracts single frames or timestamped thumbnails from videos using ffmpeg and the frame.sh helper script.
Install
npx skills add https://github.com/steipete/clawdis --skill video-framesWhat is this skill?
- frame.sh CLI: first frame, --time HH:MM:SS, or --index N with required --out path
- Quick start paths for default frame.jpg and timestamped frame-10s.jpg exports
- JPG for fast share; PNG recommended for crisp UI frames
- OpenClaw metadata: brew install formula for ffmpeg when bin missing
Adoption & trust: 2.3k installs on skills.sh; 378k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent has a video file but cannot answer what is on screen at a given moment without a reliable ffmpeg one-liner.
Who is it for?
Solo builders automating screenshot grabs from recordings for support, content, or UI regression notes inside Claude Code or OpenClaw.
Skip if: Batch transcode pipelines, subtitle burning, or cloud-only video APIs when ffmpeg is not installed locally.
When should I use this skill?
Extract frames or short inspection stills from videos using ffmpeg and frame.sh.
What do I get? / Deliverables
After the skill runs, you get a JPG or PNG still at the chosen time or index path, ready to attach to issues, docs, or vision prompts.
- JPEG or PNG frame file at --out path
Recommended Skills
Journey fit
Frame extraction is a build-time media integration task agents invoke while assembling assets, debugging UI in recordings, or prepping launch collateral. Integrations subphase covers shell-wrapped ffmpeg and helper scripts that connect your repo to local video processing.
How it compares
Use as a focused ffmpeg frame skill, not a full video editor MCP or NLE workflow.
Common Questions / FAQ
Who is video-frames for?
Indie builders and agent users who need quick frame grabs from local MP4s for inspection, thumbnails, or multimodal debugging.
When should I use video-frames?
Use it during Build when documenting a product demo frame, capturing a UI state at 00:00:10, or exporting the first frame as a poster image.
Is video-frames safe to install?
It runs local ffmpeg on paths you supply; check Prism Security Audits on this page and avoid processing untrusted downloads without scanning.
SKILL.md
READMESKILL.md - Video Frames
# Video Frames (ffmpeg) Extract a single frame from a video, or create quick thumbnails for inspection. ## Quick start First frame: ```bash {baseDir}/scripts/frame.sh /path/to/video.mp4 --out /tmp/frame.jpg ``` At a timestamp: ```bash {baseDir}/scripts/frame.sh /path/to/video.mp4 --time 00:00:10 --out /tmp/frame-10s.jpg ``` ## Notes - Prefer `--time` for "what is happening around here?". - Use a `.jpg` for quick share; use `.png` for crisp UI frames. #!/usr/bin/env bash set -euo pipefail usage() { cat >&2 <<'EOF' Usage: frame.sh <video-file> [--time HH:MM:SS] [--index N] --out /path/to/frame.jpg Examples: frame.sh video.mp4 --out /tmp/frame.jpg frame.sh video.mp4 --time 00:00:10 --out /tmp/frame-10s.jpg frame.sh video.mp4 --index 0 --out /tmp/frame0.png EOF exit 2 } if [[ "${1:-}" == "" || "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then usage fi in="${1:-}" shift || true time="" index="" out="" while [[ $# -gt 0 ]]; do case "$1" in --time) time="${2:-}" shift 2 ;; --index) index="${2:-}" shift 2 ;; --out) out="${2:-}" shift 2 ;; *) echo "Unknown arg: $1" >&2 usage ;; esac done if [[ ! -f "$in" ]]; then echo "File not found: $in" >&2 exit 1 fi if [[ "$out" == "" ]]; then echo "Missing --out" >&2 usage fi mkdir -p "$(dirname "$out")" if [[ "$index" != "" ]]; then ffmpeg -hide_banner -loglevel error -y \ -i "$in" \ -vf "select=eq(n\\,${index})" \ -vframes 1 \ "$out" elif [[ "$time" != "" ]]; then ffmpeg -hide_banner -loglevel error -y \ -ss "$time" \ -i "$in" \ -frames:v 1 \ "$out" else ffmpeg -hide_banner -loglevel error -y \ -i "$in" \ -vf "select=eq(n\\,0)" \ -vframes 1 \ "$out" fi echo "$out"