goose-ads
Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skill…
Assemble a split-screen creator ad from a config: an AI-creator lip-sync take fills the bottom half while real 16:9 product or demo clips play uncropped in the top half over a blurred fill of the same clip (never black bars), with a brand-colour divider between them. Scenes
Claude Code
$ npx -y skills add gooseworks-ai/goose-skills --skill render-split-screen-creator --agent claude-code
Codex
$ npx skills add gooseworks-ai/goose-skills --skill render-split-screen-creator -a codex -y
Cursor
$ npx skills add gooseworks-ai/goose-skills --skill render-split-screen-creator -a cursor -y
Gemini CLI
$ npx skills add gooseworks-ai/goose-skills --skill render-split-screen-creator -a gemini-cli -y
GitHub Copilot
$ npx skills add gooseworks-ai/goose-skills --skill render-split-screen-creator -a github-copilot -y
OpenCode
$ npx skills add gooseworks-ai/goose-skills --skill render-split-screen-creator -a opencode -y
Windsurf
$ npx skills add gooseworks-ai/goose-skills --skill render-split-screen-creator -a windsurf -y
name: render-split-screen-creator description: "Assemble a split-screen creator ad from a config: an AI-creator lip-sync take fills the bottom half while real 16:9 product or demo clips play uncropped in the top half over a blurred fill of the same clip (never black bars), with a brand-colour divider between them. Scenes follow the voiceover timing and are joined hard, an end card holds about 3 seconds, then the finished cut is transcribed and word-level captions are burned in the chosen style. Free, deterministic assembly and captions; the voiceover comes from create-vo-elevenlabs, the creator anchor from create-image-gpt-image-fal, and the lip-sync take is supplied as an input. Use for the split-screen-creator format." status: active
Assemble a **split-screen creator** ad from a config: a two-zone vertical (1080×1920, 9:16, ~40s) format where an **AI creator talking-head** anchors the BOTTOM ~48% of the frame and **real 16:9 product/demo clips** run uncropped in the TOP ~52%, a 3px brand-color divider between the zones. The creator delivers the whole VO cold-to-camera and each top clip proves the claim its VO line makes. This capability is the **FREE, deterministic assembly + captions** — the two-zone composite (contain-fit + blurred-cover fill + divider + creator slice), the hard-concat, the end card, and the word-level caption burn from the assembled cut.
`scripts/config.example.json` is one worked example (the fictional Larderloop "whole Sunday" demo, ~40s 1080×1920 9:16, 6 scenes + an end card) — copy its structure, never its creative values; `scripts/PIPELINE.md` maps every config block to its source step and `scripts/README.md` documents the free assembly.
The creative calls are made upstream by the user (the calling format's recipe `choices`) and arrive here as config. This capability never picks them.
(`creator.brief`); shapes the anchor and the voice upstream. Here it only affects framing checks. The worked example used a woman in her 30s.
The worked example used a lived-in kitchen with window daylight.
was a confident, fast explainer.
`neon-glow`, `clean-bubble`). Burned here. The worked example shipped `serif-accent`.
If a creative field is empty in the config, ask for it — don't fall back to the worked example's value.
This is the **FREE, deterministic** assembly + captions stage — it spends nothing. The paid inputs are separate steps — the VO (`create-vo-elevenlabs`, ElevenLabs `eleven_v3` with-timestamps, sliced into per-scene windows), the **photoreal MEDIUM chest-up** AI-creator anchor (`create-image-gpt-image-fal`, `gpt-image-2`) — shot at a natural webcam distance (headroom + shoulders, real room), **not** a plain-background close-up headshot (see the anchor note below), and the whole-VO lip-sync (a **paid VEED Fabric 1.0 @ 720p take — a no-atom step**, `image_url` = the anchor, `audio_url` = the vo mp3, billed per second of VO and the largest spend; run its calls sequentially, `veed/fabric-1.0` storage-auths 403 under parallel load). Given the creator lip-sync take + the per-scene VO timing + one 16:9 top clip per scene + the scene-1 hook graphic + the end-card clip, `render-split-screen-creator` composites the two zones, hard-concats the scenes, appends the end card, transcribes the assembled cut, and burns the captions → the master. Re-cuts reuse the existing VO / lip-sync / clips and spend nothing.
product/demo clip **contain-fit** (uncropped), the BOTTOM zone is the creator lip-sync framed **head-to-shoulders**: scale-to-width × a small **ZOOM** (~1.15–1.2) then crop the zone with a **downward offset** so the face sits upper-middle and the shoulders enter the bottom. (A plain cover + crop-toward-top shows only the head and cuts the shoulders — and it can't rescue an anchor that was shot too close; fix the anchor distance first.) Tune zoom/offset visually against the source video's creator framing — it's a FREE re-assemble, no VEED re-run. A 3px brand-color divider separates the zones. Canvas 1080×1920, `top_height` ~998. **Keep every stacked height EVEN** (998 + 4 divider + 918 = 1920) — libx264 rejects odd dimensions.
good as the anchor. It must be photoreal/candid (real lived-in room, natural skin cues), framed chest-up at a natural webcam distance (headroom + shoulders), **not** a plain-background close-up and **not** a phone-selfie pose copied from another format (e.g. `ugc-walk-and-talk`). VEED Fabric handles photoreal fine (unlike Seedance).
filled with a darkened **blurred cover-scale of the same clip** — a flat charcoal/black bar reads cheap.
(`top_start`/`top_end`) to the on-message segment that proves its VO line. **Never loop a short clip** — set the window and the assembler speed-fits it to the scene (looping replays into a sparse/black tail).
the concatenated creator VO slices, timed per the per-scene `timing.json`; the lip-sync drives the mouth.
(no dissolves); append the end card holding the last sharp frame ~3s. If the end-card clip fades to black, hold the last sharp second (`endcard.clip_end`), not the black tail.
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skill…
Make product photos (studio, lifestyle or on a model) of a brand's real products with GooseWorks in this chat. Start brand work…
Make an approved GooseWorks video when an answer's next_step gives its command.
Make a video ad in this chat from a real reference ad, found or theirs; styles are the fallback. Follow every answer's next_step.
GooseWorks growth coworker and router for markets, competitors, audiences, creators, campaigns, ads, photos, graphics, video,…
Create a custom video with sourced product accuracy, explicit sound routing and exact-final audiovisual review.
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use…
Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…
Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…