BlackBeltTechnology

veo-showreel-production-kit

"Turn a video timeline + voiceover into a reproducible, sliceable Veo 3.1 prompt package with a consistency anchor and AI storyboard sketches."

BlackBeltTechnology 330 51 Updated 3w ago
GitHub

Install

npx skillscat add blackbelttechnology/pi-agent-dashboard/veo-showreel-production-kit

Install via the SkillsCat registry.

SKILL.md

When to Use

Use when a user has a script/timeline + voiceover and wants to generate a consistent, professional AI video (Veo) where each fragment can be rendered separately/in parallel yet stays visually coherent and is easy to revise. Especially for trade-show/booth showreels.

Procedure

  1. Research the target context (e.g., trade-show showreel best practices) and Veo prompting + consistency features (reference images, first/last-frame, seed, enhance_prompt=false). Write a research/strategy doc.
  2. Write a STYLE BIBLE = global consistency anchor: single location/world, color palette, verbatim STYLE LOCK and AUDIO LOCK sentences, recurring object/character descriptions, a global NEGATIVE prompt, brand/compliance rules, and fixed reproduction settings (model, 16:9, 4K/24fps, constant seed, enhance_prompt=false).
  3. Split the timeline into <=8s render units (Veo max clip ~8s); long scenes become A/B sub-shots. Mark each boundary as hard-cut (parallel) or SEAMLESS (chain last-frame of A as first-frame of B).
  4. Generate per-shot markdown via a data-driven Python script: each file has the 7-layer prompt (camera, subject, action, environment, lighting, STYLE LOCK, AUDIO LOCK), an assembled Full Veo prompt (~110-170 words), the negative prompt, continuity notes, and repro settings. Also emit one combined VIDEO_MASTER.md.
  5. Generate AI storyboard sketches with nano-banana (Gemini image model): a master world-anchor frame + one sketch per cut. Use these as Veo reference/first-frame images. Run with limited concurrency (ThreadPoolExecutor max_workers=3) over a sketch_prompts.json.
  6. Audio policy: instruct Veo 'no spoken dialogue, no voiceover, no song vocals' so it only makes ambient SFX; the official VO + music are added in post.
  7. Emit machine-readable sidecars from the SAME data file the markdown generator reads (never hand-edit them separately):
    • video_production/film.json — { style (required), title?, consistency?, negative?, aspectRatio?, characters?: [{ id, description }] } (unique ids).
    • video_production/shots/shot_NN.json per shot_NN.md — { prompt: { visuals, action, scene?, effects?, audio?, visibleCharacters?: [character ids] }, durationSec: 1–300 }. First frame, SEAMLESS flag, seed and negative stay in the markdown only.
    • video_production/timeline.json — { segments: [{ shot | image, trimStartSec?, durationSec? (required for image), ambientVolume? 0–2, transitionTo?: { style: fade|fadeblack|fadewhite|wipeleft|wiperight|slideup|slidedown|circlecrop|dissolve, durationSec ≤ 3 }, overlay?: { title?, subtitle?, position?: bottom-left|bottom-center|top-left|center } }], output?: { resolution "WxH", fps 1–120, codec mpeg4|h264 }, voiceover?: { path, volume? 0–2 (1), offsetSec? (0) }, music?: { path, volume? 0–2 (0.3) }, captions?: { path: "*.srt" } }. All paths relative to video_production/, inside it, no symlinks. Caption cue times are in the FINAL output time base — never shifted by voiceover.offsetSec. No transition on the last segment.
      These enable pi-veo export render|timeline (pi-video-gen providers) and pi-veo mux (final VO + music + captions).
  8. Write an index README explaining read order, per-slice render steps, assembly, and how to revise one beat (re-render only that slice with same seed+anchor).

Pitfalls

  • Veo clips are ~8s max — never author a single >8s render unit; split into A/B and chain frames.
  • Paraphrasing the style block per shot causes drift; the STYLE LOCK and AUDIO LOCK must be byte-identical across every prompt.
  • Without a shared reference image attached to every generation, parallel slices diverge — always attach the world-anchor.
  • Let Veo invent narration if you don't explicitly forbid speech in the audio line.
  • For neutral/defense content add 'no flags, no national insignia, no real weapons, no brand logos' to the negative prompt and reserve a clean empty center for the logo in the final shot.
  • Sidecar/markdown drift: prompt in shot_NN.json and the markdown "Full Veo prompt" are not cross-checked — regenerate both from one data source.
  • nano-banana CLI: npx -y @the-focus-ai/nano-banana "" --output file.png ; needs GEMINI_API_KEY; describe 16:9 in the prompt (square by default).

Verification

  1. All shot files exist (one per cut) + VIDEO_MASTER.md + style bible + research + voiceover + README.
  2. Every Full Veo prompt ends with the identical STYLE LOCK + AUDIO LOCK and references the same seed.
  3. Storyboard sketches generated for the world anchor and every cut; spot-check key frames (opener, any on-screen-text shot, recurring character, final logo-space shot) for look + compliance.
  4. pi-veo parse <Project> reports Sidecars: enabled with 0 problems (exit 0).
  5. Build a contact sheet (ImageMagick montage) to eyeball cross-shot consistency.

Mode: Veo as FX layer over real footage

When the video is built from real screen or site recordings, Veo does not render shots — it renders only additive FX layers.

  • Every process on screen comes from real footage; drop any beat that has no recording instead of generating it.
  • Prompt each FX layer on a pure black background (light, particles, flares, scan lines; no objects, no people, no text).
  • Composite with mix-blend-mode: screen on the FX wrapper; set the black point before blending if the render is tinted.
  • The assembly, music edit, camera punches and export QA follow the hyperframes-showreel skill.

Categories