Harden talking-head pipeline: Watch & Propose creative overlays, fix Round 1 gaps

Scene-director rewrite: agent now watches footage, understands content, and proposes
creative overlays (charts, stats, key terms, comparisons) before building anything.
Presents enhancement plan to user for approval before proceeding.

Compose-director fixes from Round 1 verification:
- eye_enhance: now explicitly required, not silently skippable
- Caption positioning: explicit MarginV=160 for 9:16, never center
- Final encode: mandatory with target file size table
- ASR corrections: new Step 2b to scan transcript and build corrections dict
- Overlay compositing: new Step 3b for burning approved graphics onto footage

Asset-director rewrite: generates Remotion overlay assets (callouts, stat cards,
charts, comparisons) from scene plan. Includes overlay type → Remotion cut mapping
table and dark theme requirements.

Bug fixes found during subagent verification:
- remotion_caption_burn.py: fix run_command API, add npx.cmd for Windows
- visual_qa.py: fix run_command API (3 places), Windows /dev/null → NUL
This commit is contained in:
calesthio
2026-04-01 11:03:15 -07:00
parent aee9379810
commit 942244ca54
6 changed files with 327 additions and 50 deletions
+6 -3
View File
@@ -257,7 +257,8 @@ class RemotionCaptionBurn(BaseTool):
"-of", "csv=p=0",
input_path,
]
dur_out = self.run_command(dur_cmd, capture=True)
dur_result = self.run_command(dur_cmd)
dur_out = dur_result.stdout
duration_s = float(dur_out.strip().split("\n")[0])
total_frames = math.ceil(duration_s * 30)
@@ -281,9 +282,11 @@ class RemotionCaptionBurn(BaseTool):
props_file = props_dir / f"caption-burn-{Path(input_path).stem}.json"
props_file.write_text(json.dumps(props, indent=2), encoding="utf-8")
# Render
# Render (use npx.cmd on Windows for subprocess compatibility)
import sys
npx_bin = "npx.cmd" if sys.platform == "win32" else "npx"
render_cmd = [
"npx", "remotion", "render",
npx_bin, "remotion", "render",
"src/index.tsx", "TalkingHead",
f"--props={props_file.relative_to(root)}",
"--width=1080", "--height=1920", "--fps=30",