From video-editing
Generate a folder of low-resolution frame snapshots at evenly spaced timestamps so Claude (or you) can "see" a video without ingesting the full file. Use when the user says "give me a visual timeline", "let me see this video", "show me frames from this", "white balance check", "what does this video look like", or any request where Claude needs visual context about a video. Output is a folder of small JPEGs plus a timeline.md index.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin video-editingThis skill is limited to using the following tools:
Drop a folder of evenly-spaced, low-res frames from a video so they can be opened (by Claude or by the user) without processing the whole file. Cheap visual context for white-balance checks, scene scrubbing, editorial review.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Drop a folder of evenly-spaced, low-res frames from a video so they can be opened (by Claude or by the user) without processing the whole file. Cheap visual context for white-balance checks, scene scrubbing, editorial review.
Ask if not provided:
12.480 px.<project>/video_timeline/<video-basename>/<dir>/video_timeline/<basename>/DURATION=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$VIDEO")
Compute even-spaced timestamps. To keep the first and last frames meaningful (not the very edge), pad 5% in from each end:
N=12
PAD=$(awk -v d="$DURATION" 'BEGIN { printf "%.3f", d*0.05 }')
USABLE=$(awk -v d="$DURATION" -v p="$PAD" 'BEGIN { printf "%.3f", d - 2*p }')
STEP=$(awk -v u="$USABLE" -v n="$N" 'BEGIN { printf "%.3f", u/(n-1) }')
-ss before -i is fast (keyframe seek) but can land on the nearest keyframe; -ss after -i is accurate but slower. Default to fast seek, since we only want a representative frame, not a precise one.
mkdir -p "$OUT_DIR"
for ((i=0; i<N; i++)); do
T=$(awk -v p="$PAD" -v s="$STEP" -v i="$i" 'BEGIN { printf "%.3f", p + i*s }')
HMS=$(awk -v t="$T" 'BEGIN { h=int(t/3600); m=int((t%3600)/60); s=t-h*3600-m*60; printf "%02d-%02d-%06.3f", h, m, s }')
IDX=$(printf "%04d" $((i+1)))
ffmpeg -hide_banner -loglevel error -y -ss "$T" -i "$VIDEO" \
-frames:v 1 -vf "scale=$WIDTH:-1" -q:v 5 \
"$OUT_DIR/frame_${IDX}_${HMS}.jpg"
done
timeline.mdA small index Claude can read in a single tool call:
# Video Timeline: <basename>
- Source: `<absolute path>`
- Duration: <H:MM:SS>
- Frames: 12 @ 480px wide
| # | Timestamp | File |
|---|-----------|------|
| 1 | 00:00:01.234 | frame_0001_00-00-01.234.jpg |
| 2 | 00:00:11.567 | frame_0002_00-00-11.567.jpg |
| ... |
Print the output dir path and frame count. Offer:
wb-preview if a white-balance issue is spotted.