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 song-driven music-video ad from a config — a generated sung track carries the whole narration across N tableaux (one keyframe -> one i2v clip per lyric beat) with NO separate voiceover, captions synced to the song's OWN word timings (script-window, never Whisper) and
Claude Code
$ npx -y skills add gooseworks-ai/goose-skills --skill render-song-mv --agent claude-code
Codex
$ npx skills add gooseworks-ai/goose-skills --skill render-song-mv -a codex -y
Cursor
$ npx skills add gooseworks-ai/goose-skills --skill render-song-mv -a cursor -y
Gemini CLI
$ npx skills add gooseworks-ai/goose-skills --skill render-song-mv -a gemini-cli -y
GitHub Copilot
$ npx skills add gooseworks-ai/goose-skills --skill render-song-mv -a github-copilot -y
OpenCode
$ npx skills add gooseworks-ai/goose-skills --skill render-song-mv -a opencode -y
Windsurf
$ npx skills add gooseworks-ai/goose-skills --skill render-song-mv -a windsurf -y
name: render-song-mv description: Assemble a song-driven music-video ad from a config — a generated sung track carries the whole narration across N tableaux (one keyframe -> one i2v clip per lyric beat) with NO separate voiceover, captions synced to the song's OWN word timings (script-window, never Whisper) and the hook word landing on the chorus drop, closed on a PIL brand end card. This is the FREE deterministic assembly stage (clip cut-to-timeline + captions + end card + FFmpeg composite); the song, keyframes, and clips come from create-music-elevenlabs / create-image-fal / create-video-fal. Use for the song-driven-music-video format. status: active
Assemble a song-driven music-video ad from a config: a purpose-written, **sung** song is the entire narration (no separate voiceover), and every visual beat is timed to the lyrics. The delivered song sets the timeline; N tableaux (one keyframe → one image-to-video clip per lyric beat, all in a single look pack) are cut to their lyric windows and hard-concatenated on the beat, captions are built from the song's OWN word timings with the hook line landing on the chorus drop, and the spot closes on a PIL brand end card. It reads like a tiny animated music video, not a demo. `scripts/config.example.json` is one worked example (Fernhollow "Bring The Green Back Home", 28s paper-craft 9:16) — its style, song, vocalist, mood, protagonist and setting are that demo's answers, not defaults; `scripts/PIPELINE.md` maps every config block to its step and `scripts/README.md` documents the free assembly.
The creative calls are made upstream by the user (the recipe's `choices`) and arrive in the config; this assembly never picks them.
on a rainy morning.
This is the **FREE, deterministic** assembly stage — it spends nothing. The three paid inputs are separate capabilities: the sung song (`create-music-elevenlabs`, music_v1, force_instrumental FALSE — the lyrics ARE the script, returns mp3 + `words.json`), one keyframe per tableau (`create-image-fal`), and one Kling 3.0 i2v clip per tableau (`create-video-fal`). Given the delivered song + `words.json` + one clip per beat, `render-song-mv` cuts each clip to its lyric window, hard-concats on the beat, builds the lyric-synced captions, composites the PIL end card, and muxes → the master. Re-cuts reuse the existing song / keyframes / clips and spend nothing.
IS the bed and the script (`force_instrumental` false); do not add a spoken voiceover or a second music bed.
overshoots length; snap every tableau boundary to the lyric-phrase edges in the returned word timings (`timeline.json`) — never trim the song to a pre-planned grid.
`audio/words.json` (~3 words at lyric boundaries); accent words get `captions.accent_color`. Whisper on sung audio returns "🎵 Music Playing 🎵", so it can't caption lyrics.
payoff word (`song.hook_word`) sits on the chorus drop; accent that word in the captions.
every keyframe so N beats read as one film; no morph within a clip.
(one optional match-cut into the hero reveal).
composited deterministically (brand gradient + circular logo mark or app icon + wordmark + tagline + CTA) from the brand's real asset; a diffusion model garbles a wordmark.
the final window, mux the song, boost the climax beat (`audio_mix.climax_beat_id` — set it to this run's hook tableau; the demo's `T08` is example-only), loudnorm to −14 LUFS → 1080×1920 h264+aac. No paid calls, no keys.
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…