← ClaudeAtlas

jump-cutlisted

Manufacture "multi-cam" hard cuts on static talking-head stretches by alternating a base framing with tighter punch-in reframings of the SAME speaker, each cut snapped to a word start so it lands on speech. Deterministic, no Claude. Timeline-preserving — audio is copied untouched and total duration is identical, so every downstream timestamp (captions, b-roll windows) stays valid. Runs on the 1080x1920 vertical clip AFTER fill-vertical and BEFORE zoom-punch/broll/burn-subtitles, so cutaways override their own windows and captions burn on top. The visual-change-density lever for sources where b-roll stays sparse.
jperrello/C0BALT_CUT · ★ 2 · Data & Documents · score 68
Install: claude install-skill jperrello/C0BALT_CUT
# jump-cut Single-camera podcast footage reads as one long static crop between cutaways. Top short-form editors break that up with frequent hard cuts between framings of the same speaker — a fake "multi-cam" rhythm that keeps the frame changing even with no new footage. This skill manufactures that churn deterministically. ## Invoke ``` .claude/skills/jump-cut/jump-cut.sh <in.mp4> <transcript.json> <out.mp4> [seg_secs=3.2] ``` - `in.mp4`: the 1080x1920 vertical clip (post fill-vertical) - `transcript.json`: the clip-local word-timed transcript (cuts snap to word starts) - `seg_secs`: target segment length / cut rhythm (default 3.2s) ## How it works - `plan.py` tiles `[0, dur]` into segments at ~`seg_secs` spacing, each boundary snapped to the nearest word start within 0.7s so the cut lands ON speech. - Segments alternate **base** (full frame, unchanged) and **punch** (a centered ~1.11–1.16x reframe biased to the upper third). The cold-open lead (2.6s, the title) and the tail (1.5s, the landing) stay base for a stable open/close. - One ffmpeg pass: `split` → per-segment `trim`+`crop`/`scale` → `concat`. Video is concatenated; **audio is mapped straight from the source with `-c:a copy`**, so duration and every downstream timestamp are preserved exactly. ## Placement rules - count = clamp by `seg_secs` rhythm, capped at `JUMP_CUT_MAX` (default 8) cuts - clips shorter than `JUMP_CUT_MIN` (default 13s) → passthrough (no churn) - first 2.6s (cold-open title) and l