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…
Render a 'search-grid' (Pinterest search-moodboard) video from a config — a real-DOM page with four continuous beats (masonry search grid + typing hook with counter-drift columns → 3 cards slide in from the right and stack → the top card box-grows to fullscreen then swipe-left
$ npx -y skills add gooseworks-ai/goose-skills --skill render-search-grid --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/render-search-gridContext preview
The summary Claude sees to decide when to auto-load this skill.
Render a 'search-grid' (Pinterest search-moodboard) video from a config — a real-DOM page with four continuous beats (masonry search grid + typing hook with counter-drift columns → 3 cards slide in from the right and stack → the top card box-grows to fullscreen then swipe-left
name: render-search-grid description: Render a 'search-grid' (Pinterest search-moodboard) video from a config — a real-DOM page with four continuous beats (masonry search grid + typing hook with counter-drift columns → 3 cards slide in from the right and stack → the top card box-grows to fullscreen then swipe-left ×2 through captioned feature shots → warm end card), frame-stepped via Chromium and encoded with FFmpeg — deterministic assembly, FREE (real brand photos + logo; the optional music bed comes from create-music-elevenlabs), so type/logo/photos stay pixel-crisp. Use for the search-grid format. status: active
Render the 'search-grid' format from a config. It is a **deterministic** assembler — no generative image/video, no AI-rendered text. Everything on screen is the brand's REAL product/lifestyle photography + logo, so the typed hook, feature captions, wordmark, and photos stay pixel-crisp. The **only** paid input is an optional music bed, produced upstream by `create-music-elevenlabs` and passed to `render.py --music`.
1. **Search** (0–5s) — a 3-column masonry grid of the brand's catalog behind a Pinterest search bar; a believable phrase types in letter-by-letter. Side columns drift DOWN, the middle column drifts UP (counter-parallax). 2. **Cards** (5–7s) — 3 room/product cards slide in from the RIGHT and stack over a warm blurred backdrop. 3. **Features** (7–14.5s) — the TOP card **physically expands** (its box grows from the stacked rect to full-screen, animating width/height — NOT `transform:scale`, which would stretch the image), then **swipe-left → swipe-left** through the SAME 3 rooms, each now full-bleed with a caption. The 3 cards ARE the 3 features. 4. **End card** (14.5–18s) — hero + wordmark + tagline + CTA on a warm background.
self-contained HTML page exposing `window.seek(tMs)` (images base64-embedded).
Chromium frame-steps `seek()` to a PNG per frame (auto-discovers a cached Playwright chromium, or pass `--exe`).
build → capture → FFmpeg (muxes the bed with `-map 0:v:0 -map 1:a:0` when `--music` is given; `$0` silent pass without it).
fixes this format needs almost every time: crop baked-in white L/R margins off heroes, and key the white out of a black-on-white logo JPG to a transparent PNG.
See `scripts/config.example.json` for the full config shape (a real worked example).
`canvas`, `hook`, `grid_cols` (3 columns × 6 distinct tiles), `rooms` (exactly 3 `{image, caption}` — the cards AND the features), `stack_bg` (blurred warm backdrop), `endcard` (`hero`, `wordmark`, `tagline`, `cta`, `bg`). Craft rules the renderer assumes the inputs already honor: real brand assets only; 6 distinct tiles/column so the drift never repeats; warm (never near-white) backdrops; cropped hero margins; transparent-bg wordmark; captions/tagline/CTA are the brand's OWN approved copy (no invented claims).
`node` + `playwright-core` (or a cached Playwright chromium) and `ffmpeg` on PATH; `python3` with Pillow (for `prep_assets.py`).
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.