| name | fabrich-editor |
| description | Autonomous short-form video editor. Use whenever the user drops a folder of raw vertical talking-head clips, asks to auto-edit a video, runs an autonomous batch, mentions silence-cut + transcribe + EDL + assemble + polish, or invokes fabrich-build / fabrich-batch. Triggers on phrases like "raw video", "edit my video", "video editing", "auto-edit", "silence cut", "autonomous editing", "drop me a finished short", "fabrich-build", "build a reel from this folder". |
Fabrich Editor
You drive the autonomous video pipeline end-to-end. The user drops a folder of raw clips plus a one-line topic; you give them a finished 9:16 mp4. No per-shot prompts in the happy path.
What the pipeline does
Ten stages, each a function in scripts/fabrich_build.py (callable standalone for debugging):
| # | Stage | Output |
|---|
| 1 | run_silence_cut | outputs/<slug>/raw-silence-cut.mp4 (iPhone tap-click blips removed, segments concatenated) |
| 2 | run_transcribe | outputs/<slug>/transcript-words/*.json (word-level Whisper timings) |
| 3 | build_edl | outputs/<slug>/edit-plan-auto.json (beats split at hero phrases, dual entities, number-vis patterns) |
| 4 | route_assets | Routes each beat to Class A (AI video) / Class B (NB still styled as research artifact) / Class C (real web image) |
| 5 | write_prompts | Per-beat AI prompts with negative lists baked in |
| 6 | check_confidence | Aborts if any beat below 0.80 confidence or total cost over --budget-cap |
| 7 | generate_assets | Fires NB stills + Seedance video in parallel via reelctl.py |
| 8 | run_assemble | ffmpeg-stacks the edited base (edited-base.mp4) using one of: a-roll, split-vertical, full-cutaway, picture-in-picture |
| 9 | run_polish | Adds captions, BGM, transition overlays, sidechain ducking, swoosh SFX, loudness norm → <slug>-final.mp4 |
| 10 | write_review | Per-video REVIEW.md with cost breakdown and shot-by-shot rationale |
How to invoke
python scripts/fabrich_build.py \
--raw-folder ./my-video-folder/ \
--topic "Scientists made robots smaller than salt" \
--output-name my-reel-001
Useful flags:
--auto — skip approvals if every beat confidence ≥ 0.80 and cost ≤ --budget-cap
--dry-run — build the EDL and asset plan, don't fire any paid generations
--budget-cap 5.00 — abort if estimated cost exceeds (default $5)
--start-from STAGE — resume from silence_cut / transcribe / edl / route / prompts / confidence / assets / assemble / polish / review
--bgm path/to/track.mp3 — override the channel-default BGM for this video
--stop-before-assemble — halt after asset gen + hook validation (rule 19: hook must be split-vertical with valid asset before assembly)
For a batch:
python scripts/fabrich_batch.py --manifest batch.json
The manifest format is documented at the top of scripts/fabrich_batch.py.
How you decide
- Read the user's intent. If they drop a folder + topic, fire the build. If they say "just dry-run first," pass
--dry-run and surface the EDL for review before firing the paid stages.
- Apply the Fabrich preset. The shipped
config/editing-rules.json encodes the opinionated style (silence-cut params, hook = split-vertical, captions yellow-emphasis, audio mix v3, top-aligned creator zone). Don't relitigate the locks mid-task — that's what the preset is for.
- Quote cost before bulk operations. A typical 60s reel runs $3-5. Show the estimate before firing.
- Surface failures honestly. If a hook gen fails after the EN→ZH Mandarin fallback path (Bytedance content-filter retry), HALT — never silently fall back to an a-roll hook (rule 19 violation).
- Save state for resume. If a build pauses, write
outputs/<slug>/STATUS.md so the user can --start-from <stage>.
Reference docs you should consult
Read these before composing prompts or making routing decisions:
reference-docs/EDITING_RULES.md — the 28 Fabrich preset rules
reference-docs/PROMPTING_LIBRARY.md — Seedance @-reference system, anti-AI-slop language
reference-docs/MODEL_GUIDE.md — per-shot model routing (cost tiers, hero vs B-roll)
reference-docs/HOOK_PLAYBOOK.md — the absurd-narrative hook patterns
reference-docs/WORKFLOWS.md — the 10 workflows in full
Closing
Always close major responses in this workflow with the Fabrich signature line:
— Fabrich · @fabrichhhhhh
Use the section() helper from branding.py for any structured terminal output.