Assemble a premium 3D product-showcase ad from a config — four beat clips (an orbiting hero rotation, a macro push-in, a physics reveal, a typographic close) normalized to the chosen backdrop colour, hard-concatenated in order, closed on a deterministic Playwright brand end card, and mixed under one instrumental bed at loudnorm I=-16 (music-only, no VO). Ships the runnable build_endcard.py + build_masters.py; the rotation/macro clips are create-video-fal i2v seeded on a create-image-fal styled hero, the reveal is Veo3 i2v, and the bed is create-music-elevenlabs. Use for the 3d-product-showcase format.
npx gooseworks install --all # then, in Claude Code, Cursor, or Codex: /gooseworks use the render-3d-product-showcase skill
Assemble a premium 3D product-showcase ad from a config: one real product floats centered
on a clean seamless backdrop (colour and lighting chosen per brand) and sells itself across four beats — an orbiting hero
rotation, a macro push-in on the surface detail, a physics reveal (exploded_view /
particle_disintegration / liquid_splash, or rotation_only), then a typographic brand
close. This capability is the FREE, deterministic assembly that stitches the delivered
beats into the master; it spends nothing.
scripts/config.example.json is the worked example (DIBS Beauty "Desert Island Duo", ~15s
720×1280 9:16); scripts/build_endcard.py + scripts/build_masters.py are the runnable free
assembly; scripts/PIPELINE.md maps every config block to its source step; scripts/README.md
documents the assembly.
The recipe asks these before any paid step; this capability only assembles their result. The demo's value is an example, never a default:
backdrop → studio_look.bg (the pad colour build_masters.py uses) + the beat prompts.
Demo: bubblegum pink #F8B8C6.lighting_mood → studio_look.lighting_preset / rim_light + the beat prompts. Demo:
luxe_botanical_warm (warm rim light upper-right, warm bokeh).reveal → reveal_variant + beats[2]. Demo: exploded_view.music → music.prompt (the bed passed to build_masters.py --music). Demo: uplifting
pop-ambient, drop at 7s, 100 BPM.This is the FREE, deterministic assembly stage — it spends nothing. The paid inputs are
separate capabilities: Beats 1 & 2 (hero rotation + macro push-in) are create-video-fal
image-to-video seeded on a create-image-fal styled hero — a nano-banana restyle of the
brand's REAL product photo onto the seamless studio set, so the product geometry is real and
never AI-invented; Beat 3 (the physics reveal) is a Veo3 image-to-video seeded on Beat 1's last
frame (also create-video-fal); the one instrumental bed is create-music-elevenlabs. There
is no Higgsfield / Marketing Studio in this format — everything paid runs through the
fal-proxy / elevenlabs-proxy so it bills the Ads agent.
Given those beats + the brand wordmark, this capability:
build_endcard.py --bg beat1_last_frame.png --headline "…" --wordmark <wordmark> --out endcard.png
— the deterministic Beat-4 hyperframe (Playwright 1080×1920 → ffmpeg-scale to 720×1280).build_masters.py --config config.json --clips working/clips --endcard endcard.png --music music.mp3 --out master.mp4
— trims each beat to its window, normalizes to the brand canvas, hard-concats, mixes the bed.Re-cuts reuse the existing beats and cost $0.
ffmpeg -sseof -0.1 … -frames:v 1)
once — it seeds the Veo3 Beat 3 AND backs the Beat 4 end-card hyperframe, so the product +
lighting carry across all four beats and the geometry never AI-drifts.--headline-font, Playfair Display by default — + the real
wordmark, recolored for contrast). build_endcard.py auto-picks a legible headline color from
the bg luminance and renders 1080×1920 then scales to 720×1280. The headline font is loaded from Google
Fonts; bundle the .ttf if determinism offline matters. If the resolvable Playwright wants an
uninstalled browser build, export PW_CHROME=<installed Chromium binary> (shoot.js honours it).-an), scale + pad to 720×1280 with the brand bg pad color,
24fps, yuv420p, crf 18 → concat demuxer. No dissolves.afade in/out +
loudnorm I=-16 TP=-1.5 LRA=11, apad + atrimmed to master duration) over the concatenated
beats → a 720×1280 h264+aac master. No paid calls, no keys.backdrop* → studio_look.bg (the pad colour build_masters.py uses) + the beat prompts.lighting_mood* → studio_look.lighting_preset / rim_light + the beat prompts. Demo:reveal* → reveal_variant + beats[2]. Demo: exploded_view.music* → music.prompt (the bed passed to build_masters.py --music). Demo: upliftingFull video production sequence with script review, actual ingredient choices, controlled generation, editing, evidence-based quality review, polish, captions and delivery. A host binding supplies project storage, authentic approvals, provider access and billing.
Build a vox-pop street interview video ad. An interviewer with a handheld mic asks passers-by one question about the brand's product, they give blunt wrong guesses, one gives the real answer, and the cut lands on a branded end card. Generates the takes through the GooseWorks fal proxy (Seedance 2.0 with native voice), then grades, re-cuts, captions and gates them locally. Use for the street-interview format.
Write the words of a short-form video ad (voiceover, dialogue, chat bubbles, on-screen lines) the way performance creative teams do instead of from a blank page. Builds the script from the buyers' own words, the beat sheet of an ad that already works and three deliberately different angles, filters them with a rule check and a second non-Claude model, and takes the strongest into the review with the other two as one-line swaps. Use it in every video ad run before any paid step, and whenever the user asks to write, rewrite or improve a video ad script or says a script sounds generic or AI-written.