Render an 'Instagram-Live social-proof gallery' video from a config — ~5 real brand product stills each framed as an Instagram-LIVE card (IG gradient-ring avatar, username, verified check, red LIVE badge, viewer count, close X, a short claim-free live-comment feed, an empty 'Add a comment…' bar, and reaction hearts floating up the right edge), with a brand-approved benefit sentence building one phrase per slide and a clean logo endcard, rendered deterministically with PIL frames plus FFmpeg — FREE (the music bed comes from create-music-elevenlabs), products and wordmark stay crisp. Use for the ig-live-gallery format.
npx gooseworks install --all # then, in Claude Code, Cursor, or Codex: /gooseworks use the render-ig-live-gallery skill
Render the ig-live-gallery format from a config. Each of the brand's REAL hero product stills is presented as the "live video" inside an authentic Instagram-Live card — dark gradient scrims top & bottom over the bright product, an IG gradient-ring avatar + username + verified check + red LIVE badge + viewer count + close X across the top, a short live-comment feed + an EMPTY "Add a comment…" bar + heart/share icons across the bottom, and pink/red reaction hearts floating up the right edge. A benefit sentence builds one short phrase per slide as the top overlay, and it closes on a clean brand logo card with the payoff line + CTA.
Deterministic and FREE — no generative image/video, no AI-rendered text. The paid music bed is
a separate capability (create-music-elevenlabs) muxed on afterward.
python3 scripts/build.py --config config.json --assets <stills-dir> --out master-silent.mp4
# quick check — one frame per slide:
python3 scripts/build.py --config config.json --assets <stills-dir> --stills <dir>config.example.json is a full worked config (Glossier) — its phrases, comments, payoff and
music prompt are that demo's creative answers, not defaults. Config shape:
username, verified, palette, slide_dur, endcard_dur, crossfadeslides[] — { image, phrase, viewers, comments: [[handle, text], …] } per productendcard — { logo, logo_is_white, payoff, handle, cta }music — { prompt, length_ms, trim_intro_sec } (consumed by create-music-elevenlabs)Image paths in the config resolve against --assets.
The recipe asks the user these before any paid step; the renderer just draws what the config says.
slide_story — what the slides show and how the sentence builds → slides[].image, slides[].phrase, endcard.payoff. Asked of the user; the demo used a makeup routine, one product per step.copy_tone — voice of the phrases and live comments → slides[].phrase, slides[].comments. Asked of the user; the demo used a soft, effortless beauty voice.music — the bed's genre/mood → music.prompt. Asked of the user; the demo used soft dreamy pads + bells.L<246 threshold (catches white-product edge
shading too) and centers that midpoint.A silent WxH (default 1080x1920) H.264 master. Generate + mux the create-music-elevenlabs
bed with a short fade in/out + loudnorm (-map 0:v:0 -map 1:a:0), then QC with watch.
username, verified, palette, slide_dur, endcard_dur, crossfadeslides[] — { image, phrase, viewers, comments: [[handle, text], …] } per productendcard — { logo, logo_is_white, payoff, handle, cta }music — { prompt, length_ms, trim_intro_sec } (consumed by create-music-elevenlabs)slide_story — what the slides show and how the sentence builds → slides[].image, slides[].phrase, endcard.payoff. Asked of the user; the demo used a makeup routine, one product per step.Full 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.