Video Production Rules (REQUIRED for all video build agents)
Hard rules for the Remotion brand-video engine + any video build. Read before editing the video composition; self-QA against this before declaring a render done. Reason: repeated rejects from overlaps + weak motion.
Layout — never overlap (the #1 recurring failure)
- Reserve separate, non-overlapping ZONES for logo, headline, subhead, and photo. A text element's bounding box must NEVER intersect the logo's bounding box. Define zones by % of frame and keep margins.
- Logo prominent (don't let it shrink — bug history: a "settled" logo ignored logoScale; logo size must track logoScale). Give it its own clear band.
- Text off the logo, always. Captions/eyebrows in their own lane.
Style
- Accent line/shapes are accents, not blockers — subtle (≈0.4 opacity, thin, behind content). Never a solid bar across the content.
- Photos: if a group shot, frame so no one is cropped out (contain or careful focal point). Do NOT rembg-cut group photos — the cutouts come out weird; use originals nicely framed. Single-subject cutouts only when clean.
- Fonts: League Spartan (display/accent) + Montserrat (kinetic headlines) + Geist (subheads). Load EXPLICIT weights via @remotion/google-fonts or they silently fall back.
- Brand: navy→blue, orange accent (social), diagonal motif, centered logo at key moments.
Motion — cinematic, not slideshow
- Kinetic char/word stagger, mask-wipe reveals, spring/overshoot easing (NOT critically-damped
damping:200— that's the "PowerPoint tell"), purposeful Ken Burns, parallax, glitch/whip cuts, grain + vignette. Closing beat = celebratory + long enough to read.
GIF
- Remotion's bundled ffmpeg is
--disable-filters→ use the SYSTEM ffmpeg palettegen+paletteuse two-pass for small GIFs.
Self-QA before declaring done (MANDATORY)
- Render, then extract frames (ffmpeg) at each beat.
- Verify: no logo/text overlap on ANY frame; logo prominent; accent not blocking; correct photos (right ones, no weird cutout, no one cropped); fonts rendering (not fallback); closing long enough.
- Only declare done if all pass. If any fail, fix and re-render. Log the result to
LEARNINGS.md.
QA gate
A separate video-QA pass (agent or this self-check) must approve frames before the video is shown to Marita. Never surface a render without the frame-check.