Cookbook
Exact forced-narrative inventory
Produce an exhaustive, frame-accurate burned-in dialogue report with exclusive-end SMPTE boundaries.
Skills: `inspect` → `program-master` → `forced-narrative-exact`
Steps
Step 1 — inspect
# 1. Probe source (duration, FPS fraction, tmcd, drop-frame punctuation)
cd skills/inspect
uv run scripts/probe.py --input /absolute/path/master.mov
# 2. Scope program passes (optional but recommended for multi-pass masters)
cd ../program-master
uv run scripts/run_report.py \
--input /absolute/path/master.mov \
--output-dir /absolute/path/structure_bundle \
--profile profiles/broadcast-default.json
# 3. Dense caption-band candidate discovery
cd ../forced-narrative-exact
uv run scripts/scan_caption_band.py \
--input /absolute/path/master.mov \
--start 80 --end 793 \
--interval 0.5
# 4. Agent reviews scan frames and writes forced_narrative_seed.json
# (see references/formats.md and references/report-contract.md)
# 5. Refine every cue to source frames
uv run scripts/refine_boundaries.py \
--input /absolute/path/master.mov \
--seed /absolute/path/forced_narrative_seed.json
# 6. Build paired Markdown / JSON / CSV / SRT
uv run scripts/build_report.py \
--refined /absolute/path/forced_narrative_refined.json \
--overrides /absolute/path/forced_narrative_overrides.json
# 7. Completeness audit when a verified textless duplicate exists
uv run scripts/audit_completeness.py \
--input /absolute/path/master.mov \
--report /absolute/path/forced_narrative_report.json \
--region 1925,11313,36019 \
--output /absolute/path/completeness_audit.json
# 8. Validate before delivery
uv run scripts/validate_report.py \
--report /absolute/path/forced_narrative_report.json \
--input /absolute/path/master.mov \
--completeness-audit /absolute/path/completeness_audit_reviewed.jsonAgent notes
- OCR discovers candidates only; the agent must approve every cue from pictures.
- Exclusive end frames are mandatory; never widen timings by guesswork.
- Do not deliver when validation fails or completeness is not publication-ready.