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 myth-vs-fact kinetic-typography explainer video ad (≈29.5s, 9:16) from N myth/fact pairs + hook / turn / punch copy + palette + a brand end-card PNG + a VO track — a hook, 3 red-strike MYTH cards that flip to teal-check FACT cards (per-line strikethrough that crosses
$ npx -y skills add gooseworks-ai/goose-skills --skill render-myth-vs-fact --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/render-myth-vs-factContext preview
The summary Claude sees to decide when to auto-load this skill.
Assemble a myth-vs-fact kinetic-typography explainer video ad (≈29.5s, 9:16) from N myth/fact pairs + hook / turn / punch copy + palette + a brand end-card PNG + a VO track — a hook, 3 red-strike MYTH cards that flip to teal-check FACT cards (per-line strikethrough that crosses
name: render-myth-vs-fact description: Assemble a myth-vs-fact kinetic-typography explainer video ad (≈29.5s, 9:16) from N myth/fact pairs + hook / turn / punch copy + palette + a brand end-card PNG + a VO track — a hook, 3 red-strike MYTH cards that flip to teal-check FACT cards (per-line strikethrough that crosses EVERY wrapped line), a "what actually works" turn, an optional proof reveal, a punch line, and a static end card. DETERMINISTIC assembly with ZERO AI-gen visuals — HTML hyperframes rendered frame-exact via Playwright (`window.renderAt(t)`, animation a pure function of beat-local time), Whisper beat-snap to VO word onsets, concat at a uniform fps, karaoke `.ass` captions burned last (suppressed on the proof + end-card beats), and a VO + optional music mix (music −20 dB, `amix normalize=0`, tail fade). FREE (Python + Playwright + ffmpeg); the recipe supplies the copy / palette / end-card / VO and gates the paid VO / music / Whisper calls to their own capabilities. Use for the myth-vs-fact format. status: active
The free, deterministic renderer for the **myth-vs-fact** video ad format — the calm, sound-off-safe kinetic-typography explainer that busts N common myths and hands the viewer a credible resolution. Red-strike **MYTH** cards flip to teal-check **FACT** cards over a calm-authority VO, then a "what actually works" **turn** + an optional **proof reveal** + a **punch** line + a static brand **end card**.
Every on-screen word is a **deterministic HTML hyperframe** — **no AI image/video gen, no b-roll, no character**. Visuals cost **$0**. The only metered spend is upstream (VO + Whisper word-timestamps + an optional music bed), gated to its own capabilities. This capability OWNS the whole FREE assembly: beat-snap → render → captions → mix → burn → master. Iterate the cut for free; re-roll only the offending paid audio beat.
It ports the validated build from the Clinikally "acne myths" run — brand-neutralised, config-driven, and portable (no `/Users`, no `clients/`; everything via `--config` + `--work-dir`).
**SOUND-OFF SAFE is the whole point:** every claim is legible on-screen and the VO only reinforces it. **VO-FIRST:** render the VO, extract Whisper word onsets on the RENDERED audio, then snap every beat boundary + strike wipe + reveal to those onsets.
`hook` → 3× `myth-fact` (the flip triad — identical grammar so it reads as a pattern) → `turn` (the "what actually works" pivot) → `proof` (optional actives/proof reveal, omit if empty) → `punch` (full-frame closer) → `end-card` (the static brand PNG). Each beat carries its `role`, `duration`, and its copy; ONE role template renders any pair.
VO → re-snap every beat boundary to the nearest word onset. Writes `beat-manifest.json` + `whisper/words-flat.json` into the work dir. `--no-whisper` keeps the config durations un-snapped for a fully offline run.
template under `hyperframes/`, inject the beat's copy + palette + fonts as `window.BEAT`, drive `window.renderAt(t)` frame-by-frame via Playwright, screenshot each frame → ffmpeg at EXACTLY the configured fps (default 25/1). The `end-card` beat is built from the pre-supplied brand PNG (scale/crop + a ~0.35s fade-up) — **never generated per run**.
per cue; close on a >0.4s gap / beat-window edge / sentence-ending punctuation. Captions are burned ONLY in caption-allowed windows; the proof + end-card beats are suppressed.
−20 dB, `amix normalize=0`, ~0.8s tail fade) → burn the `.ass` LAST → master mp4.
brand-neutralised Clinikally values as a worked reference).
tokens + card/tag/fact/pill/chain type), `_shared.js` (the `initRenderer` / `springScale` / `buildLineStrikes` + `strikeLines` per-line-strike / `popIn` / `revealWords` helpers + config injection), and one template per role (`beat-hook.html`, `beat-myth-fact.html`, `beat-turn.html`, `beat-proof.html`, `beat-punch.html`).
`config.json` carries: `fps` (25) / `width` / `height`; `vo` + optional `music` + `mix{music_db:-20, tail_fade:0.8}`; `palette` (the five CSS-var tokens `bg`, `myth_strike`, `fact_accent`, `headline_ink`, `accent`); `brand_name`; `display_font`; `end_card_png` + `end_card_fade`; `caption_style`; `suppress_beats`; and `beats[]` — each `{n, role, duration, captions, cues{...}}` plus the role's copy:
becomes the accented payload) OR `fact_clauses[]` (a staggered clause chain)
The recipe's `myth_fact_pairs`, `hook_line`, `turn_slate`, `punch_line`, `palette`, `end_card_png`, and optional `actives_or_proof` map onto these beats 1:1. See `config.example.json`.
deduped to one rect per visual line) and lay one red bar at each line's vertical MIDDLE, driven as ONE continuous L→R sweep. A single fixed-Y rule reads as an underline
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.