Cinematic Product Ad
Cinematic 5–10s product ad from a product photo + brand brief.
Inputs
| Name |
Type |
Required |
Default |
Description |
product_image |
image_url |
yes |
— |
URL of the product photo (must already be uploaded). |
brand_brief |
text |
yes |
— |
Mood / style direction (e.g. "luxury minimal", "playful"). |
duration_sec |
int |
no |
6 |
Final video length in seconds (5–10). |
Steps
This skill has TWO phases separated by a user pick. Submit them as two
separate the plan calls — never bundle downstream steps into the
first plan.
Phase A — variant exploration (cheap)
Submit ONE the plan containing only:
- Hero frame variants — 4 separate
muapi image generate nodes
(model=nano-banana-2, aspect_ratio=16:9 by default).
- Each prompt restyles the product against the brand brief mood. Vary
lighting, palette, framing, and lens between variants. Keep product
geometry intact.
- Reference the user's
product_image if the model supports image
conditioning; otherwise describe the product in detail.
After the plan executes, end your turn with a brief message listing the 4
asset_ids and asking the user which one to take forward (e.g.
"Pick a hero (asset_1, asset_2, asset_3, or asset_4)?"). Wait.
Phase B — commit on the picked hero (expensive)
Once the user replies with their pick, submit a SECOND the plan:
- Upscale the picked frame —
enhance_image (operation=upscale).
- Animate the upscaled frame —
muapi video from-image (model=kling-v3.0-standard-image-to-video,
duration={{duration_sec}}, prompt="slow cinematic push-in, soft
volumetric light, subtle product micro-rotation"). Reference the
upscale's URL with $nX.url.
- Background music —
muapi audio create (kind=music) — runs in parallel
with the upscale/animate. Style derived from brand_brief (luxury →
"ambient cinematic, warm strings, slow tempo, instrumental"). Duration
≈ video length.
- Return the upscaled hero image and the final video.
Notes
- If the brief mentions "luxury", bias the palette to gold/black; for "playful",
bias to bright/saturated.
- If video gen fails after failover, fall back to a still-frame slideshow
(just return the upscaled hero + music).
- Don't auto-confirm step 4 — its cost (~80 cr) deserves a user nod.
Trigger Keywords
product ad, commercial, cinematic ad, product video
Notes for the Executing Agent
- This recipe is LLM-orchestrated: read each phase, gather any missing inputs from the user, then call
muapi CLI commands. Use muapi auth configure first if MUAPI_API_KEY is unset.
- For model IDs without a CLI alias yet, fall back to the raw endpoint via
curl -X POST https://api.muapi.ai/api/v1/<endpoint> -H "x-api-key: $MUAPI_API_KEY" -H 'content-type: application/json' -d '{...}' and poll with muapi predict wait <request_id>.
- Substitute
{{input_name}} placeholders with the user's actual inputs before issuing each call.
1---2name: muapi-product-ad-cinematic-23description: Cinematic 5–10s product ad from a product photo + brand brief.4---567# Cinematic Product Ad89**Cinematic 5–10s product ad from a product photo + brand brief.**1011## Inputs1213| Name | Type | Required | Default | Description |14|:---|:---|:---|:---|:---|15| `product_image` | image_url | yes | — | URL of the product photo (must already be uploaded). |16| `brand_brief` | text | yes | — | Mood / style direction (e.g. "luxury minimal", "playful"). |17| `duration_sec` | int | no | 6 | Final video length in seconds (5–10). |181920## Steps2122This skill has TWO phases separated by a user pick. Submit them as two23separate the plan calls — never bundle downstream steps into the24first plan.2526### Phase A — variant exploration (cheap)2728Submit ONE the plan containing only:29301. **Hero frame variants** — 4 separate `muapi image generate` nodes31 (model=nano-banana-2, aspect_ratio=16:9 by default).32 - Each prompt restyles the product against the brand brief mood. Vary33 lighting, palette, framing, and lens between variants. Keep product34 geometry intact.35 - Reference the user's `product_image` if the model supports image36 conditioning; otherwise describe the product in detail.3738After the plan executes, end your turn with a brief message listing the 439asset_ids and asking the user which one to take forward (e.g.40"Pick a hero (asset_1, asset_2, asset_3, or asset_4)?"). Wait.4142### Phase B — commit on the picked hero (expensive)4344Once the user replies with their pick, submit a SECOND the plan:45461. **Upscale** the picked frame — `enhance_image` (operation=upscale).472. **Animate** the upscaled frame — `muapi video from-image` (model=kling-v3.0-standard-image-to-video,48 duration={{duration_sec}}, prompt="slow cinematic push-in, soft49 volumetric light, subtle product micro-rotation"). Reference the50 upscale's URL with `$nX.url`.513. **Background music** — `muapi audio create` (kind=music) — runs in parallel52 with the upscale/animate. Style derived from `brand_brief` (luxury →53 "ambient cinematic, warm strings, slow tempo, instrumental"). Duration54 ≈ video length.554. Return the upscaled hero image and the final video.5657## Notes58- If the brief mentions "luxury", bias the palette to gold/black; for "playful",59 bias to bright/saturated.60- If video gen fails after failover, fall back to a still-frame slideshow61 (just return the upscaled hero + music).62- Don't auto-confirm step 4 — its cost (~80 cr) deserves a user nod.6364## Trigger Keywords6566`product ad`, `commercial`, `cinematic ad`, `product video`676869---7071## Notes for the Executing Agent7273- This recipe is LLM-orchestrated: read each phase, gather any missing inputs from the user, then call `muapi` CLI commands. Use `muapi auth configure` first if `MUAPI_API_KEY` is unset.74- For model IDs without a CLI alias yet, fall back to the raw endpoint via `curl -X POST https://api.muapi.ai/api/v1/<endpoint> -H "x-api-key: $MUAPI_API_KEY" -H 'content-type: application/json' -d '{...}'` and poll with `muapi predict wait <request_id>`.75- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.