YouTube Edit Kit
One source video in → a clean YouTube cut out: silence + disfluency cuts, burned
corrected captions, SRT + chapters, and optional vertical shorts. Free and local —
ffmpeg + faster-whisper, no API key.
Every gate below is MANDATORY, in order. Skipping a gate or a self-test is a
failure, not a shortcut. Violating the letter of these rules is violating their
spirit. Each rule exists because an agent already broke it in production.
Gates (run in order)
digraph gates {
"G0 Setup check" -> "G1 Transcribe + read" -> "G2 Strategy confirm" -> "G3 Cut + render" -> "G4 Captions" -> "G5 Shorts (optional)" -> "G6 Self-review";
"G0 Setup check" -> "STOP: give user references/SETUP.md installs, wait" [label="tool missing"];
"G2 Strategy confirm" -> "WAIT for user OK" [label="no approval"];
}
G0 — Setup. Verify EVERY tool in references/SETUP.md with its verify command.
Missing → hand the user that file's install instructions and wait. Never
substitute a "similar" tool.
G1 — Transcribe. references/EDIT.md §1: word-level verbatim, cached per
source, then READ the entire packed transcript. Cut decisions come from reading.
G2 — Strategy confirm. Present cut approach + estimated length (+ shorts
count and hook list if applicable) and WAIT for the user's OK. Rendering before
approval is a violation, not initiative.
G3 — Cut. references/EDIT.md §3–5: EDL (silence + disfluency) → per-segment
render → lossless concat.
G4 — Captions. references/CAPTIONS.md — read it before writing any cue.
Term review first (scan_terms.py + reading; YOU are the AI reviewer for proper
nouns/jargon/onomatopoeia — ask the user what you can't verify), then
corrections dictionary, output-timeline mapping, burn LAST.
G5 — Shorts. references/SHORTS.md — moment selection, hook titles,
first-frame rule, blocking self-tests.
G6 — Self-review. references/EDIT.md §7: look at frames, check duration,
spot-check sync. If you wouldn't ship it, don't present it.
Hard rules (production correctness — non-negotiable)
- Never cut inside a word — snap every edge to a word boundary, then pad it.
- Never re-transcribe an edited file for captions — map original timestamps
through the piece table (CAPTIONS.md §2).
- Captions burn LAST, after every overlay, with
-c:a copy.
- Per-segment extract → lossless
-c copy concat; identical codec params on
every clip; 30ms afades at every boundary.
- Cache transcripts per source; never re-transcribe an unchanged file.
- No render before the user approves the strategy; no publish without an
explicit per-destination "go".
- Verify by LOOKING at extracted frames, never by exit code alone.
- Captions never burn without a REVIEWED corrections.json — scan_terms.py +
full transcript read; empty
[] only after the review actually happened.
Quick reference
| Task |
Where |
| Tool installs + verify commands |
references/SETUP.md |
| Full pipeline: EDL, fillers, render, burn |
references/EDIT.md |
| Caption correctness: mapping math, corrections, styles |
references/CAPTIONS.md |
| Shorts: selection, layout, hooks, first-frame rule |
references/SHORTS.md |
| Runnable CLIs (transcribe → EDL → fillers → cut → terms → SRT → shorts) |
scripts/ |
Red flags — STOP, you are rationalizing
| Thought |
Reality |
| "I'll re-transcribe the edit for captions" |
~1s drift per cut, compounds. Map through the piece table. |
| "Burn captions first, overlay after" |
Overlays hide captions. Silent failure. Captions LAST. |
| "One-pass filtergraph is simpler" |
Double-encodes when anything is added. Per-segment + concat. |
| "The cut sounds fine without fades" |
Pops at boundaries on headphones. 30ms afades, every edge. |
| "User is offline, I'll just render" |
Strategy confirm is blocking. Wait. |
| "Exit code 0, ship it" |
Look at the frames. Every self-test is visual. |
| "The transcript looks clean, skip the term review" |
ASR errors are systematic, not obvious. Run scan_terms.py and READ. |
Upgrade path (optional richer skills, if installed)
- longform-to-content — webinars/lectures at scale: relayout + PIP, cold open,
CTR thumbnails, scheduled publishing.
- embedded-captions — designed caption identities with subject occlusion.
- talking-head-recut — kinetic graphic overlay cards (lower-thirds, callouts).
1---2name: youtube-edit-kit3description: Use when a user provides a video file (talking head, vlog, tutorial, recording — 영상, 녹화본) and wants it edited for YouTube — silence/filler cuts, burned captions, SRT, chapters — or wants vertical Shorts/Reels cut from it. Triggers: "영상 편집해줘", "쇼츠 만들어줘", "edit this video", "cut the silences", "make shorts from this", "add captions and chapters".4---56# YouTube Edit Kit78One source video in → a clean YouTube cut out: silence + disfluency cuts, burned9corrected captions, SRT + chapters, and optional vertical shorts. Free and local —10ffmpeg + faster-whisper, no API key.1112**Every gate below is MANDATORY, in order. Skipping a gate or a self-test is a13failure, not a shortcut. Violating the letter of these rules is violating their14spirit.** Each rule exists because an agent already broke it in production.1516## Gates (run in order)1718```dot19digraph gates {20 "G0 Setup check" -> "G1 Transcribe + read" -> "G2 Strategy confirm" -> "G3 Cut + render" -> "G4 Captions" -> "G5 Shorts (optional)" -> "G6 Self-review";21 "G0 Setup check" -> "STOP: give user references/SETUP.md installs, wait" [label="tool missing"];22 "G2 Strategy confirm" -> "WAIT for user OK" [label="no approval"];23}24```2526**G0 — Setup.** Verify EVERY tool in references/SETUP.md with its verify command.27Missing → hand the user that file's install instructions and wait. Never28substitute a "similar" tool.2930**G1 — Transcribe.** references/EDIT.md §1: word-level verbatim, cached per31source, then READ the entire packed transcript. Cut decisions come from reading.3233**G2 — Strategy confirm.** Present cut approach + estimated length (+ shorts34count and hook list if applicable) and WAIT for the user's OK. Rendering before35approval is a violation, not initiative.3637**G3 — Cut.** references/EDIT.md §3–5: EDL (silence + disfluency) → per-segment38render → lossless concat.3940**G4 — Captions.** references/CAPTIONS.md — read it before writing any cue.41Term review first (scan_terms.py + reading; YOU are the AI reviewer for proper42nouns/jargon/onomatopoeia — ask the user what you can't verify), then43corrections dictionary, output-timeline mapping, burn LAST.4445**G5 — Shorts.** references/SHORTS.md — moment selection, hook titles,46first-frame rule, blocking self-tests.4748**G6 — Self-review.** references/EDIT.md §7: look at frames, check duration,49spot-check sync. If you wouldn't ship it, don't present it.5051## Hard rules (production correctness — non-negotiable)52531. Never cut inside a word — snap every edge to a word boundary, then pad it.542. Never re-transcribe an edited file for captions — map original timestamps55 through the piece table (CAPTIONS.md §2).563. Captions burn LAST, after every overlay, with `-c:a copy`.574. Per-segment extract → lossless `-c copy` concat; identical codec params on58 every clip; 30ms afades at every boundary.595. Cache transcripts per source; never re-transcribe an unchanged file.606. No render before the user approves the strategy; no publish without an61 explicit per-destination "go".627. Verify by LOOKING at extracted frames, never by exit code alone.638. Captions never burn without a REVIEWED corrections.json — scan_terms.py +64 full transcript read; empty `[]` only after the review actually happened.6566## Quick reference6768| Task | Where |69|---|---|70| Tool installs + verify commands | references/SETUP.md |71| Full pipeline: EDL, fillers, render, burn | references/EDIT.md |72| Caption correctness: mapping math, corrections, styles | references/CAPTIONS.md |73| Shorts: selection, layout, hooks, first-frame rule | references/SHORTS.md |74| Runnable CLIs (transcribe → EDL → fillers → cut → terms → SRT → shorts) | scripts/ |7576## Red flags — STOP, you are rationalizing7778| Thought | Reality |79|---|---|80| "I'll re-transcribe the edit for captions" | ~1s drift per cut, compounds. Map through the piece table. |81| "Burn captions first, overlay after" | Overlays hide captions. Silent failure. Captions LAST. |82| "One-pass filtergraph is simpler" | Double-encodes when anything is added. Per-segment + concat. |83| "The cut sounds fine without fades" | Pops at boundaries on headphones. 30ms afades, every edge. |84| "User is offline, I'll just render" | Strategy confirm is blocking. Wait. |85| "Exit code 0, ship it" | Look at the frames. Every self-test is visual. |86| "The transcript looks clean, skip the term review" | ASR errors are systematic, not obvious. Run scan_terms.py and READ. |8788## Upgrade path (optional richer skills, if installed)8990- **longform-to-content** — webinars/lectures at scale: relayout + PIP, cold open,91 CTR thumbnails, scheduled publishing.92- **embedded-captions** — designed caption identities with subject occlusion.93- **talking-head-recut** — kinetic graphic overlay cards (lower-thirds, callouts).