Paste any path, or pick one of the newest recordings. Each is about 5 minutes long.
One section per moment worth keeping. Scrub the timecode-burned proxy and read the numbers straight off the frame.
The boxes above are just a reminder of what exists. Type freely here for anything abstract or combined — one instruction per line works best, but it does not have to be. Whatever converts cleanly becomes a real edit line; whatever does not is kept verbatim in the note rather than guessed at, so nothing you wrote is lost.
Every clip was transcribed once, so this is instant. Searching keepo finds 32 exact callouts across 11 clips. Click a hit to drop that timestamp into a section.
Stingers land +3 to +5 frames after the beat, not on it, and are clamped to −18…−12 dB — never unity. At full volume one clip hijacks the whole reel, which is the single most common complaint about meme audio.
.srt ships too: burned-in captions override the viewer's
reduced-motion setting and are invisible to screen readers.| sync | Mark the action — the hit, the kill, the punchline. Compile shifts the clip so it lands on the beat. Praised ~10× more than transitions. |
| beat L R L R | Per-beat sub-cuts, framing alternating left/right — the only “angle change” single-camera gameplay has. |
| sfx file.wav | Drop audio in. Lands +3–5 frames after the beat, at −15 dB, never unity. |
| laugh | Marker. The cut should come 1.0–1.5 s after it, never on it. |
| slow 0.4 | Motion-interpolated. Slow to render — use --reuse. |
| spin 8 · shake · freeze 0.5 | Rotation, handheld shake, held frame. |
| zoom 1.2 · punch · pan L | Push-in, instant punch, framing drift. |
| text Hello | Burned caption, lower third. |
| in fade 0.6 · out whip | How the section enters and leaves. |
| star · skip · tag | Prioritise, ignore, label. |
resolve_check.py finds the right interpreter and names whichever gate is missing.edl.json either way — nothing about your note changes when you switch backend.