Implements the 2026-04-02 transformation spec (Phases 1-8) and fixes all critical bugs found during 5-pipeline E2E testing. Governance & Decision Intelligence: - Pipeline-specific stage order in checkpoint (replaces global STAGES list) - Provider scoring engine (lib/scoring.py) with 7-dimension weighted ranking - Decision log artifact enforced at proposal/idea stage across all 10 pipelines - Delivery promise classifier prevents silent motion-to-still downgrades - Structured shot language in scene_plan schema (camera, lens, lighting, DOF) - Variation checker and slideshow risk scorer block samey output before render - Creative intake, capability extension, and creative-intake meta skills - Final self-review artifact with 5 mandatory checks before presenting output - Source media review contract for user-supplied footage Render & Theme System: - Remotion AnimatedBackground now derives colors from playbook (no more hardcoded dark blue fintech gradient on every video) - video_compose builds custom ThemeConfig from playbook YAML colors/fonts — custom playbooks flow through to Remotion automatically - Explainer component wires theme to all child components (charts, cards, etc.) - resolveAsset() handles absolute paths on Windows/Unix via file:// URIs - RENDERER_FAMILY_MAP synced with actual Remotion compositions Critical Bug Fixes: - Windows npx subprocess: run_command() resolves .cmd wrappers via shutil.which() - Silent renderer downgrade: Remotion failure now returns explicit error with options instead of silently falling back to FFmpeg - .env inline comment parsing strips trailing # comments from API keys - concat_path UnboundLocalError in video_compose finally block - audio_mixer and showcase_card capture=True kwarg bug - Selector estimate_cost() calls fixed (_select_tool -> _select_best_tool) - asset_manifest schema expanded with provider, license, subtype fields - screen-demo subtitle_gen moved from required to optional tools - Duration drift detection in post-render final review (>25% warns)
3.0 KiB
Script Director - Clip Factory Pipeline
When To Use
This stage converts the long-form source into a ranked candidate list and then into the final clip selections. You are mining for standout moments, not summarizing the entire source.
Prerequisites
| Layer | Resource | Purpose |
|---|---|---|
| Schema | schemas/artifacts/script.schema.json |
Artifact validation |
| Prior artifact | state.artifacts["idea"]["brief"] |
Batch goals and platform targets |
| Tools | transcriber, scene_detect |
Transcript-first selection and visual checks |
Process
1. Transcribe The Full Source
Use transcriber first. The transcript is the search surface for hooks, not an afterthought.
Use scene_detect only to sanity-check visual boundaries, speaker changes, or slide changes near promising moments.
2. Score Candidate Moments
Use the brief's ranking criteria and evaluate each moment on:
hookcoherencevalueenergyplatform_fit
This mirrors the way modern clipping products talk about virality and clip quality, while keeping the judgment transparent.
3. Apply The Standalone Test
Every approved clip must make sense to a cold viewer.
Reject or widen clips that contain:
- unresolved pronouns,
- references to earlier context,
- long lead-ins before the point lands,
- endings that stop before the payoff.
4. Select The Final Batch
Pick the smallest set that best satisfies the batch goal.
Maintain diversity across:
- source sections,
- speakers,
- clip families,
- energy levels.
5. Use Metadata For Ranking Truth
The script schema is small, so store the richer batch analysis in script.metadata.
Recommended metadata keys:
candidate_clipsselected_clip_idsranking_modelrejected_candidatessource_coverage_mapplatform_assignments
Each candidate should record:
- source in/out,
- hook text,
- reason selected or rejected,
- scoring dimensions,
- likely crop viability.
6. Quality Gate
- the top-ranked clips are genuinely the strongest, not just the earliest found,
- every selected clip passes the standalone test,
- the set covers the source deliberately instead of clustering in one section,
- low-quality candidates are rejected honestly.
Mid-Production Fact Verification
If you encounter uncertainty during script writing:
- Use
web_searchto verify factual claims before committing them to the script - Use
web_searchto find reference images for visual accuracy - Log verification in the decision log:
category="visual_accuracy_check"
Every factual claim in the script should be traceable to the research_brief.
If you make a claim that isn't in the research, do additional research and
add the source. Do not invent statistics, dates, or attributions.
Common Pitfalls
- Trusting first-pass candidate timestamps without transcript-level review.
- Selecting too many calm, same-energy clips.
- Preserving chronological order instead of ranking by quality.
- Treating transcript quality issues as minor when they affect selection accuracy.