
Video Frames
- 1 installs
- 6 repo stars
- Updated August 3, 2026
- avivsinai/telclaude
video-frames is a Claude Code skill that extracts frames from video files with ffmpeg so an LLM can visually analyze the video.
About
This skill extracts frames from video files using ffmpeg so an LLM can analyze video content visually. A developer uses it when a Telegram user sends a video and asks what is in it or wants specific frames or thumbnails. It provides a bundled frame.sh script and manual ffmpeg recipes for interval and key-frame extraction.
- Extracts frames from video files using ffmpeg for LLM visual analysis
- Bundled frame.sh script plus manual key-frame and interval extraction recipes
- Reads extracted frames back to describe video content
Video Frames by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,200 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
video-frames capabilities & compatibility
- Capabilities
- video frames · image generation · summarize
- Use cases
- video generation
- Pricing
- Free
What video-frames says it does
Extract frames from video files using ffmpeg for LLM visual analysis.
Extract 3-5 representative frames for short videos (<30s)
npx skills add https://github.com/avivsinai/telclaude --skill video-framesAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 6 |
| Last updated | August 3, 2026 |
| Repository | avivsinai/telclaude ↗ |
What it does
Extract representative frames from a user-supplied video so the agent can describe its content.
Who is it for?
Turning a video into a handful of frames the agent can read and describe.
Skip if: Generating video or editing/rendering final video output.
When should I use this skill?
A user sends a video and asks what is in it or wants frames, thumbnails, or key moments.
What you get
Produces representative or key-frame images from a video for visual analysis.
By the numbers
- 3-5 frames recommended for short (<30s) videos
- 2-second default frame interval
Files
Video Frames Skill
Extract frames from video files using ffmpeg for LLM visual analysis.
When to Use
Use when users:
- Send a video and ask "what's in this video?"
- Want specific frames or timestamps extracted
- Need thumbnails or key frames from a video
- Ask to analyze video content visually
Frame Extraction
Use the bundled script via telclaude skill-path:
bash "$(telclaude skill-path video-frames scripts/frame.sh)" <video_path> [output_dir] [interval]video_path: Path to the video file (check/media/inbox/for Telegram uploads)output_dir: Where to save frames (default:/media/outbox/frames/)interval: Seconds between frames (default: 2)
Manual extraction (alternative)
Single frame at timestamp:
ffmpeg -ss 00:00:05 -i /media/inbox/video.mp4 -frames:v 1 -q:v 2 /media/outbox/frame.jpgKey frames only (I-frames):
ffmpeg -i /media/inbox/video.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr -q:v 2 /media/outbox/keyframe_%03d.jpgEvery N seconds:
ffmpeg -i /media/inbox/video.mp4 -vf "fps=1/5" -q:v 2 /media/outbox/frame_%03d.jpgVideo Info
Get duration and metadata:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 /media/inbox/video.mp4Output Guidelines
- Extract 3-5 representative frames for short videos (<30s)
- For longer videos, use wider intervals or key frames only
- After extraction, use the Read tool to view frames and describe what you see
- Save output frames to
/media/outbox/so the relay can send them back
#!/usr/bin/env bash
# Extract frames from a video at regular intervals using ffmpeg.
# Usage: frame.sh <video_path> [output_dir] [interval_seconds]
set -euo pipefail
VIDEO="${1:?Usage: frame.sh <video_path> [output_dir] [interval_seconds]}"
OUTDIR="${2:-/media/outbox/frames}"
INTERVAL="${3:-2}"
if [ ! -f "$VIDEO" ]; then
echo "Error: Video file not found: $VIDEO" >&2
exit 1
fi
mkdir -p "$OUTDIR"
# Get video duration
DURATION=$(ffprobe -v error -show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 "$VIDEO" 2>/dev/null | cut -d. -f1)
echo "Video: $VIDEO"
echo "Duration: ${DURATION}s"
echo "Extracting frames every ${INTERVAL}s to $OUTDIR"
ffmpeg -i "$VIDEO" -vf "fps=1/${INTERVAL}" -q:v 2 "${OUTDIR}/frame_%03d.jpg" -y 2>/dev/null
COUNT=$(ls -1 "${OUTDIR}"/frame_*.jpg 2>/dev/null | wc -l | tr -d ' ')
echo "Extracted $COUNT frames"