Skip to content
Marketing
Skill

/render-multiworld

Assemble a silent, music-led 3-world product-tour ad — trim and hard-cut-concat the per-world WIDE-arrival + top-down-macro clips, composite the HTML/Playwright brand end card (approved headline + handwritten product labels + arrows) over an AI flat-lay background, and mux one

From plugin
goose-skills
1.3k181 skills

Claude Code

$ npx -y skills add gooseworks-ai/goose-skills --skill render-multiworld --agent claude-code

SKILL.md

render-multiworld.SKILL.md
name: render-multiworld
description: Assemble a silent, music-led 3-world product-tour ad — trim and hard-cut-concat the per-world WIDE-arrival + top-down-macro clips, composite the HTML/Playwright brand end card (approved headline + handwritten product labels + arrows) over an AI flat-lay background, and mux one music bed into a 720x1280 web master. FREE, deterministic assembly (Playwright + PIL/HTML + FFmpeg); the recipe supplies the config and gates the paid clip/background/music calls. Use for the multiworld-product-tour format.
status: active

render-multiworld

Assemble a silent, music-led "multi-world product tour" ad (≈27s, 9:16) — a tour of three distinct "third-place" worlds (chosen per video), one per product/variant, that lands on a Pinterest-style brand end card. Each world is a **two-shot pair**: a ~4.5s WIDE kinetic-calm ARRIVAL (the environment dominates, the product stays small) hard-cutting to a ~3.5s top-down MACRO product MOMENT (the sealed product nested with its companion prop). Variant identity is carried by the **world + companion prop**, not by product color. No VO, no captions in the scenes — one music bed carries the whole thing.

This capability is the **FREE, deterministic assembler**. The paid steps — the six per-world clips, the AI flat-lay end-card background, the ElevenLabs music bed — are separate capabilities (see the gap below for the clips); the recipe orchestrates and gates them.

Choices

The calling recipe asks the user these before any paid step; this capability only assembles what they produced. The worked example (the fictional brand Kettle & Fern) values are examples, never defaults.

  • **worlds** — the three places toured → `config.worlds`, `config.scene_grid` (demo: reading

nook / glasshouse / farmers market).

  • **visual_style** — the worlds' look → `config.visual_style`, `worlds[*].palette`,

`end_card.nb2_prompt` (demo: sunlit-natural / handmade).

  • **music** — the bed's genre/mood → `config.music.prompt` (demo: warm acoustic-pop).

Nothing in the assembly keys on world slugs or names: clips are ordered by `scene_grid[].scene`, and the end-card copy is whatever `end_card.overlay` holds.

Run

1. **Trim clips (FFmpeg, FREE)** — trim each per-world clip to its `scene_grid[].duration_sec` (arrival 4.5 / macro 3.5), re-encode to the master spec (720×1280, 24fps, yuv420p, scale+pad, audio stripped). Trimming the macro so the top-down portion dominates also hides any label misrender at the clip's upright tilt extreme. 2. **End card (Playwright/HTML, FREE)** — screenshot `end_card.html` over the AI flat-lay BACKGROUND, then FFmpeg-encode to a `dwell_sec` (3.0s) static clip. Headline (`overlay.headline`, approved brand copy — the demo's was "STEEP SLOWER."; Inter 900), one handwritten Caveat product label + hand-drawn SVG arrow per product, Playfair wordmark + URL. **End-card text is HTML, NEVER AI-rendered** — the AI step produces the background only. 3. **Hard-cut concat (FFmpeg, FREE)** — concat the six trimmed clips in scene order (S01 arrival → S02 macro → … → S06 macro) + the end-card clip. Hard cuts (no dissolves), normalized to one fps/codec first so concat-copy is safe. 4. **Music mux + web encode (FFmpeg, FREE)** — mux the single instrumental bed onto the silent concat with `afade` in/out + `loudnorm I=-16:TP=-1.5:LRA=11`, AAC 192k, clamped to 27.0s, explicit single-audio map so no silent scene-track leaks in → the H.264 (+ AAC) 720×1280 master.

Contract

  • Deterministic + FREE (Playwright + PIL/HTML + FFmpeg); no paid calls, no AI-rendered

end-card text. Iterate the cut for free by re-running the assembly.

  • **Silent, music-led** — no VO, no captions during the scenes; on-screen text appears

ONLY on the end card, HTML-composited.

  • Per world = WIDE arrival (product small, environment dominant) → top-down macro (product +

botanical, no hands). Hard cuts between scenes; end card is a static hold with legible HTML text; music starts at t=0 and fades the tail.

  • **Sealed-product rule** is enforced at QC — trim/concat can't fix an opened or spilling

clip; that's a re-roll (paid), not an assembly fix. Identity via world + botanical, never pack color.

  • The template recipe (DB) supplies the per-video config (worlds, palettes, companion props

and music mood from the user's choices; prompts; end-card copy from the brand kit); this capability is the generic assembler.

Gaps / routing notes

  • **Update:** the current recipe makes the six clips with `create-image-fal` (nano_banana_2

keyframe edit grounded on the real `product_image`) → `create-video-fal` (Kling 3.0 i2v), so the gap below only applies to reproducing the demo's Higgsfield build exactly.

  • **The demo's clips used a Higgsfield-proxy capability that does not exist.** The

source molecule fires them through **Higgsfield Marketing Studio** (`marketing_studio_video/product_showcase`) grounded on imported product UUIDs, with the sealed-product safety block front-loaded on every prompt. `create-video-fal` is a FAL i2v proxy — a different provider and job shape — so it cannot serve this step. Wiring the clip step to templates-as-data requires a Higgsfield video proxy (Marketing Studio `product_showcase`, imported-product grounding, per-prompt safety block) that **does not exist yet**. Until it lands, the clips are generated via the Higgsfield Marketing Studio path directly (CLI/MCP) and that step is **not a fetchable capability**.

  • **The end-card background** is an AI flat-lay render (text-free, all three sealed products +

botanicals) that in prod routes through **create-image-fal** (NB2); only the HTML text overlay + encode run locally as FREE assembly.

  • **The music** is a paid ElevenLabs call that in prod routes through

**create-music-elevenlabs**; only the loudnorm + fade + mux run locally as FREE assembly.

See `scripts/PIPELINE.md` for the full config-field → source-step map and `scrip

Read more
@gooseworks-ai
Ships withgoose-skills

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.

1.3k181 skills
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.3k
Star history of gooseworks-ai/goose-skills on GitHub, a chart by star-history.com

Other skills on goose-skills.

goose-ads

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…

goose-video

goose-video

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

gooseworks

GooseWorks growth coworker and router for markets, competitors, audiences, creators, campaigns, ads, photos, graphics, video,…

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about render-multiworld.

Which coding agents can use render-multiworld?
render-multiworld installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.