Beat-sync cutting: cut on the beat, not on every beat
A rule and an agent prompt for cutting to music from a list of beat timestamps: cuts land on beats, phrases get room to breathe, and the best shot is held through the hook.
You are the editor. Below are the beat timestamps of the track (seconds, one per line) and the list of shots with their durations. Build an edit decision list. Rules: - Every cut lands on a beat. Not every beat gets a cut. - Default rhythm: one cut every {bars_per_cut} bars (a bar is {beats_per_bar} beats). Vary it: hold a strong shot for 2 bars, then cut twice in one bar, then hold again. Three cuts at the same interval in a row is the maximum. - Let a phrase breathe: no cut inside the last beat before a downbeat that starts a new phrase; the cut lands on that downbeat. - The hook of the track at {hook_start} seconds gets the best shot, held, with the cut landing exactly on its first downbeat. - A shot shorter than one beat is only allowed in a run of 3-4 (a flash sequence), once in the video. - A score written to this cut works the other way round: its chord changes land on the beat nearest a picture cut. Output: a table with shot id, in point, out point, which beat index the cut lands on, and a one-word reason (hold / hit / breathe / flash). Then the total duration. Beats: {beat_timestamps} Shots: {shot_list}
In Claude Code, paste the prompt as a message, or run /video-edit which does this end to end.
Steps
- Get beat timestamps first: `npm i life2film-engine` (WASM, on-device) returns beats, shots and frame scores; any beat tracker that writes seconds works.
- Paste beats and shots into the prompt; feed the table to your editor or to the render script as the cut list.
- Watch it once with the sound off: if the cuts still feel regular, the rhythm is too even. Merge two short shots into one hold.
Tips
- A cut on every beat reads as a slideshow; the eye stops seeing the beat and starts seeing the clock.
- Snap to the downbeat, not to the nearest transient; hi-hats are beats too, and an agent will happily cut on them.
- In Claude Code, `/video-edit` writes the cut as a small JSON script and renders from it, so 'move that cut one beat later' is a one-line edit.
| works with | Claude Code: Runs as a skill or a prompt in the terminal; can read your files and write the result. · Claude: Paste into claude.ai or the Claude app. · ChatGPT: Paste into ChatGPT; works with any GPT model. · Any LLM: Model-agnostic: Gemini, Mistral, a local model. · CapCut / any editor: A manual recipe for any editor. |
| skill | npx skills add fortunto2/solo-factory/video-edit · source |
| cost | Free. No API, no key. |
| status | Unverified: written from the technique, not yet run end to end by us. |
| license | CC BY 4.0 for the text here; skills are MIT. |
| updated | 2026-11-01 |
| for agents | beat-sync-cut-not-every-beat.md |
Related
Score with a hole, not ducking, where something plays live
Cut the score to silence under live music, a laugh or a knock instead of ducking it; ducking is audible, a hole is not. The rule, the measured levels and the ffmpeg line.
Prompt for a music generator: a 30-second instrumental for a short
A brief in the shape music generation tools read: structure by seconds, BPM, three instruments, no vocals, a drop that lands on your hook cut, and an ending that stops instead of fading.
The cutaway rule: what is said, same place and time, never over moving lips
Three constraints for every cutaway in a talking film, and the agent prompt that applies them to a transcript. Kills what viewers read as broken: a picture from elsewhere, a face out of sync.
The day as one text file: an agent reads the speech and proposes the story
The step before any timeline: the day's speech in shooting order, numbered by clip and sentence, read by an agent like a scriptwriter. It proposes story, scenes, hook and cutaways; you argue in text.
Promise and payoff: find the pairs that thread a multi-day film
An agent prompt that reads several days of transcripts and pairs every promise ('tomorrow we'll buy the boat') with the moment it is kept or broken, so the film has a thread, not a sequence of days.
Read the film as text before rendering: the last check that costs nothing
The cut, printed as its lines in order, read by someone who never saw the raw footage. Catches the question whose answer was cut, the name said before the person, the 'this' that points at nothing.