clean-cut
Installation
SKILL.md
clean-cut — the step-1 cut pipeline
Turn a project's raw clips (videos/video-N/DJI_*.MP4) into a clean master + edited-transcript.json (the word-level timing spine every later step anchors to). The single source of truth is videos/video-N/work/analysis/cuts.json — shared by Claude and the editor UI. Every tool lives in tools/ and takes the project dir as its first arg.
You (Claude) author the cuts by reading the transcript. No separate LLM call. The tools handle audio, encoding, QA, and the editor; the judgment — what is a retake, a false start, filler, or fluff — is yours.
Pipeline (run in order)
Let P = the project (e.g. video-1). Clip id = a short handle (0233); every artifact for a clip is named by that id (0233.wav, 0233.json). The raw MP4 path is stored per-clip in cuts.json as file.
- Extract 16 kHz mono WAV per clip →
P/work/audio/<id>.wav(used for transcription + the RMS noise-floor / snap-to-audio tails). Not scripted — run ffmpeg per clip:ffmpeg -i videos/video-1/DJI_...0233_D.MP4 -vn -ac 1 -ar 16000 videos/video-1/work/audio/0233.wav - Draft this video's keyterms →
P/work/keyterms.txt(do this before transcribing). Keyterms bias the recognizer toward this video's proper nouns / product / tech names so they aren't mangled (e.g. "Seedream" not "sea dream", "Cloudflare" not "cloud flare"). Accuracy here is load-bearing: the transcript text drives cut decisions AND/make-tsxgreps it for phrases to time beats — a garbled term breaks both. From the video's topic/title, list the ~10–40 likely brand names, tools, tech, and jargon, one per line (blank lines and#comments ignored). This is per-video — never hardcode terms intranscribe.py. If you skip the file, transcription still runs (empty fallback), just with more errors on specialty words. The shape is one term per line: