create-image-fal
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Assemble a cartoon / animated / hand-crafted music-video ad from a config — a sung song carries the whole narrative while N per-bar i2v clips (one recurring animated character, one look pack) are each cut to their BAR window from librosa beat-tracking and hard-concatenated on
$ npx -y skills add gooseworks-ai/goose-skills --skill render-cartoon-music-video --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/render-cartoon-music-videoContext preview
The summary Claude sees to decide when to auto-load this skill.
Assemble a cartoon / animated / hand-crafted music-video ad from a config — a sung song carries the whole narrative while N per-bar i2v clips (one recurring animated character, one look pack) are each cut to their BAR window from librosa beat-tracking and hard-concatenated on
name: render-cartoon-music-video description: Assemble a cartoon / animated / hand-crafted music-video ad from a config — a sung song carries the whole narrative while N per-bar i2v clips (one recurring animated character, one look pack) are each cut to their BAR window from librosa beat-tracking and hard-concatenated on the bar, VEED-whisper white bold-sans captions in the BOTTOM third (Alignment 2, above the logo bug, no pill) burned from the song's word timings re-spelled against the locked lyrics, a persistent brand logo bug held over the body (suppressed on the end card), and closed on a solid-brand-color PIL end card with the song still playing under it — never AI-rendered text. This is the FREE deterministic assembly stage (cut-to-bar + hard concat + logo bug + captions + end card + song mux); the song, character, keyframes, and clips come from create-music-elevenlabs / create-image-fal / create-video-fal. Use for the cartoon-music-video format. status: active
Assemble a **cartoon music-video** ad from a config: an animated / illustrated / hand-crafted story (stop-motion felt-and-foam, claymation, 2D toon, cut-out) where a sung song is the entire script and one recurring animated character carries every shot, cut to the bar with the climax line on the drop. This capability is the **FREE, deterministic assembly** — cut-to-bar, hard-concat, the logo bug + captions burn, and the solid-color end card.
`scripts/config.example.json` is the worked example (Coinbase "Bet on anything", ~55s 1080×1920 9:16, 16 body bars + a 3s end card); `scripts/PIPELINE.md` maps every config block to its source step and `scripts/README.md` documents the free assembly.
This is the **FREE, deterministic** assembly stage — it spends nothing. The paid inputs are separate capabilities: the sung song (`create-music-elevenlabs`, or a user-supplied mp3 + Whisper word timings) beat-tracked with librosa so the BAR GRID sets the timeline; one locked recurring character + one keyframe per bar in one look pack (`create-image-fal`, Nano Banana); and one Seedance i2v clip per bar (`create-video-fal`). Given the song + `word-timestamps.json` + `bars.json` + one clip per bar + the brand wordmark SVG, `render-cartoon-music-video` cuts each clip to its bar window, hard-concats on the bar, burns the logo bug + captions, appends the solid-color end card, and muxes the song under it → the master. Re-cuts reuse the existing song / keyframes / clips and cost **$0**.
bed (no VO to duck under); do not add a spoken voiceover or a second bed.
(assume 4/4); one bar = one shot (default). Snap every tableau window to the bar boundaries — never trim the song to a pre-planned grid.
mishears shouted accents ("BETS" → "Hearts"); re-spell the timed tokens against the locked lyric file (never edit lyrics to match Whisper). VEED-whisper white **bold sans** in the **BOTTOM third** (Alignment 2, `margin_v` above the bottom-left logo bug), ~4–5 words per cue, NO background pill; captions STOP at the end-card boundary. Never mid-frame — it covers the character (fixed 2026-07). If the host ffmpeg lacks libass, render the cues as timed PIL PNG overlays (ffmpeg `overlay=…:enable='between(t,st,en)'`) at the same bottom placement.
the sub-bass drop; accent that line.
over the body bars (cairosvg → PIL from the real SVG), suppressed on the end card where the big wordmark dominates.
brand-color card + white wordmark + subhead, holding ~3s WITH the song still playing under it (afade-out over the tail — no silent tail). A diffusion model garbles a wordmark.
the logo bug + captions, append the end card, mux the song over the whole video with a 0.5s afade tail, `loudnorm I=-14` → a 1080×1920 h264+aac master. No paid calls, no keys. When the host ffmpeg lacks libass/drawtext, BOTH the captions and the logo bug are timed **PIL PNG overlays** (`overlay=x:y:enable='between(t,st,en)'`), not an ASS burn.
upstream keyframe/i2v steps can (a) drift the character **felt → smooth-3D "man"** partway through and (b) hallucinate hands — realistic fingers in a hand macro, a **pointing finger** on a "tap the phone" shot, or a **disembodied hand** sliding in from the frame edge. Both hide at thumbnail size. Extract a **2 fps** contact sheet + a per-bar **FACE** crop and **HAND** crop (across each clip's full duration), confirm every bar is matte felt with the ONE character and no human/floating hands, and re-check the **served** bytes after publish. A drifted bar means regenerating that bar's **KEYFRAME** (not re-cutting) — see the recipe STEP 3/6.
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.
Repo: gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.