Turn a timed video or podcast transcript into an edit decision list an editor can cut from without rewatching the whole take. Flags dead air, filler-only segments, false starts, and retakes, picks the winning take, and outputs a decision CSV, a clean paper edit, and a CMX3600 EDL of the selects. Use when someone has a transcript (SRT, VTT, or Whisper JSON) and wants a rough cut plan, a selects list, a paper edit, or an EDL, or asks where to cut, what to remove, or which take to use.
name: transcript_edit_decision_list description: Turn a timed video or podcast transcript into an edit decision list an editor can cut from without rewatching the whole take. Flags dead air, filler-only segments, false starts, and retakes, picks the winning take, and outputs a decision CSV, a clean paper edit, and a CMX3600 EDL of the selects. Use when someone has a transcript (SRT, VTT, or Whisper JSON) and wants a rough cut plan, a selects list, a paper edit, or an EDL, or asks where to cut, what to remove, or which take to use.
Transcript Edit Decision List
Purpose
A long take is hard to cut from memory and slow to cut by scrubbing. A transcript with timecodes lets you make nearly every cut decision on paper first: what stays, what goes, which retake wins, and where the dead air is. This skill turns that paper work into three concrete deliverables: a decision list with a reason for every row, a clean paper edit the producer can read, and a CMX3600 EDL the editor can import to build the selects sequence.
It covers the full decision list, not just silence removal. Dead air is one row type among filler, false starts, retakes, tangents, and weak sections.
Workflow
1. Lock the inputs before judging anything
Collect and write down:
- The transcript file and its timing depth. SRT and VTT usually carry segment timing. Whisper JSON can carry word timing if word timestamps were turned on. Segment timing supports segment cuts only. Word-accurate filler cuts need word timing, full stop.
- Frame rate and timecode type: 23.976, 24, 25, 29.97 drop-frame, 29.97 non-drop, 50, or 59.94. State which one the source timecode uses. A drop-frame and non-drop mix-up drifts about 3.6 seconds per hour at 29.97.
- Source start timecode. Many cameras start at 01:00:00:00, not zero. Transcript seconds are relative to the file, so add the start offset when the editor works in source timecode.
- One master sequence rule for multicam or multi-clip shoots: sync and merge first, then transcribe the master, so every timecode points at one timeline.
- The target: rough cut length, platform, and what the piece must keep (sponsor line, legal wording, a specific quote). Get this before cutting, not after.
If any of these are unknown, ask or state the assumption at the top of the decision list. Never silently guess a frame rate.
2. Run the mechanical pass
Run the bundled tool for the first pass. It flags long gaps, filler-only segments, repeated openings, and segments that trail off mid-phrase, and it drafts the EDL.
bash
python3 ~/workspace/skills/transcript-edit-decision-list/bin/edl_build.py \
transcript.srt --fps 25 --outdir out/ \
--source-name ep12_master.mp4 --title "EP12 SELECTS"
For 29.97 delivery add --fps 29.97 --drop-frame. Defaults: a gap of 1.2 s or more is proposed as a pause cut, 0.6 s or more as a pause trim, and 0.35 s of handle is added on each side of a kept segment. Change them with --pause-cut, --pause-trim, and --handle when the material calls for it: interviews breathe slower than tutorials.
Output: out/decision-list.csv and out/selects.edl, plus a summary line with counts and the time saved.
3. Do the human pass, in this order
Work big to small. The order matters because small cuts inside a section you later delete are wasted work.
- Structure first. Mark whole sections: false start before the real open, a repeated answer, a production interruption, a tangent, an ending recorded twice. Decide section KEEP or CUT before touching words inside them.
- Retakes. Group every attempt at the same line or answer. Pick one winner per group using the retake criteria in
references/decision-codes.md. Mark the winner KEEP-RETAKE and the rest CUT-RETAKE. Never keep two takes of the same line in the list and leave the choice to the editor.
- Weak sections inside kept material. A section is weak when it repeats a point already made, states a claim the speaker corrects later, or runs long for the value it adds. Mark CUT-WEAK with a one-line reason, or TRIM with the exact in and out words.
- Pauses. Review each flagged gap. Cut production dead air and long searching pauses. Keep pauses that carry weight: a beat before a reveal, emotion, comic timing, a breath before a hard sentence. When in doubt mark REVIEW, not CUT.
- Fillers inside kept segments. Cut a filler only when it obstructs the sentence. A natural um at a thought boundary is speech rhythm, and stripping every filler makes people sound dubbed. Word-level cuts need word timestamps: give the editor the word and its timecode range, not just the segment.
4. Write the decision list
One row per segment or cut, in source order. Columns: number, source in, source out, duration, decision, reason code, and the first few words of the segment so the editor can find it by ear. Decisions are KEEP, CUT, TRIM, or REVIEW. Full code list and retake criteria: references/decision-codes.md.
Rules for the list itself:
- Every CUT and TRIM carries a reason. "Feels slow" is not a reason. "Repeats the point made at 00:04:12" is.
- Timecodes come from the transcript or the tool, never from memory or estimation.
- Handles: in and out points sit off the words, not on them. The default 0.35 s handle keeps breaths and word tails intact. State the handle you used.
- REVIEW rows are questions for a human with ears, listed with what to listen for. A finished list has zero REVIEW rows, or lists the open ones at the top as blockers.
5. Build the paper edit and the EDL
- Paper edit: the kept text only, in final order, verbatim, with the source timecode in front of each passage. Copy the speaker words exactly. Changing wording on paper creates a cut that does not exist in the media. Note any reordering plainly: moving an answer changes what it appears to respond to, so flag every reorder for the producer.
- EDL: export the KEEP and resolved TRIM rows as CMX3600. Event number, reel (8 characters max), track, C for cut, source in and out, record in and out, then a FROM CLIP NAME comment line. Record timecode starts at zero (or the sequence start) and accumulates by event duration. Source duration and record duration must match on every event. Format details and a worked sample:
references/edl-and-handoff.md.
- The bundled tool writes this EDL from KEEP and TRIM rows. REVIEW rows stay out of the EDL until a human resolves them. Add resolved rows by editing the CSV decision and re-running, or append events by hand following the sample.
6. Verify before handoff
- Spot check three rows against the actual media: one KEEP, one CUT, one retake winner. Confirm the words at those timecodes match the transcript. Transcripts drift and mishear; a list built on a bad transcript cuts the wrong words.
- Check the EDL math: sequential event numbers, no record timecode overlaps or gaps, source and record durations equal per event, total record duration close to the sum of kept segments plus handles.
- Read the paper edit aloud once. If a join sounds wrong read aloud, it will sound wrong cut. Fix joins on the list, not in the timeline.
- Add up the saving: source span minus selects duration. Report it. If the target length is set and the selects run long, say so and name the sections you would cut next. Do not pad or quietly miss the target.
Output Contract
Deliver all three, every time:
- Decision list (CSV or markdown table): every segment accounted for, each with a decision and a reason. Nothing in the source is silently missing from the list.
- Paper edit (text or markdown): kept words verbatim, in order, each passage headed by its source timecode, reorders flagged.
- Selects EDL (CMX3600 .edl file): imports into Premiere Pro, DaVinci Resolve, or Avid and builds the selects sequence, with the frame rate and drop-frame choice stated in the handoff note.
Plus a short handoff note: source file, fps, drop or non-drop, handle used, selects duration versus source duration, and any open REVIEW items.
A sample filled decision list and EDL sit in assets/sample-decision-list.csv and assets/sample-selects.edl, generated from the sample transcript quoted in references/edl-and-handoff.md.
Operating Rules
- Propose, do not destroy. This skill produces lists and an EDL. It never edits, trims, or deletes media files.
- No invented timecodes, quotes, or speaker names. If the transcript does not carry it, the list does not claim it.
- Segment timing means segment decisions. Do not promise a word-level filler cut from a transcript that only has segment timing.
- Bulk delete is a draft, not a decision. Tool flags start the conversation. Pauses and fillers can carry meaning, and the human pass exists to protect them.
- One winner per retake group. Leaving two takes in pushes the real decision onto the editor and defeats the point of the list.
- Keep the speaker honest. Cuts may remove words, and reorders must be flagged. Never assemble a sentence the speaker did not say and present it as their words.
- State assumptions at the top: frame rate, timecode type, start offset, handle. An editor who has to guess these will guess one of them wrong.
No ratings yet — be the first to rate it.