---
name: ad-recreator
description: Recreate a winning reference ad's structure with the user's own product - breaks the reference into shots (cuts, lengths, pacing, colour, motion, where text sits, a hook / problem / demo / proof / CTA guess), writes a shot plan to fill with new prompts, generates the new shots with the Kenerate MCP, then cuts them to the reference's exact timing with on-screen text and a reference-vs-new check sheet. Never copies the reference's logos, people, music or copy. Use when the user says "make an ad like this one", "recreate this ad for my product", "copy the structure of this TikTok ad", or wants a proven ad format adapted.
compatibility: Needs the Kenerate MCP server for the new shots and Python 3.9+ with Pillow and ffmpeg.
metadata:
  author: kenerate
  version: "1.1"
  kenerate-tools: "upload_media generate_image generate_video remove_background pick_model estimate_cost wait_for_generation"
---

# Ad recreator

Plan file first, then generate, then a scripted assembly that matches the reference's timing. Rules:
[references/KENERATE.md](references/KENERATE.md); models: [references/MODELS.md](references/MODELS.md).

## Ground rules (say them to the user)
Recreate the format, not the ad: same rhythm, shot types and text placement, but the user's product, their own
copy, no competitor logos, no real people's likeness, and never the reference's music or voice. The reference must
be something the user may use for reference (their own ad, or a public ad they're studying).

## 1. Analyse the reference (free)
```
python <skill-dir>/scripts/recreate.py analyze --ref "<reference ad url or file>" --name <project>
```
Outputs `<project>_breakdown.json`, `<project>_ref_sheet.jpg` (numbered keyframes with role and length) and
`<project>_plan.json`. Show the sheet and summarise: shots, pacing (cuts per 10 s), aspect, where text sits.
Tune cut detection with `--threshold 0.04` (more cuts) or `0.1` (fewer).

## 2. Fill the plan (agree it with the user)
For each shot write `prompt` (what the new shot shows, same framing / motion / colour mood as `reference_look`) and
`text` (new on-screen copy, short). Then ask about sound: native audio from the video model, music, a voice-over,
or silent - nothing is added without a yes.

## 3. Generate the shots (spends credits)
- Product hero frames: `generate_image(prompt=<shot>, reference_image_urls=[product cut-out], model="kenerate/nano-banana-2.1", aspect_ratio=<plan aspect>)`.
- Motion: `generate_video(image_url=<frame>, prompt=<motion + camera>, model="kenerate/seedance-2.0", duration=<ceil(seconds)>, resolution="720p", audio=false)`
  (`kenerate/wan-3.0` for cheap drafts; `pick_model(task="image-to-video product ad")`). Static shots can stay images.
- `estimate_cost` per shot x shots → total → yes → start all → wait each. Put each `urls[0]` into the shot's `src`.
- Music / voice-over only if the user said yes: `generate_music(engine="elevenlabs-music-v2.5", seconds=<ad length>, instrumental=true)`,
  `generate_speech(engine="elevenlabs-eleven-v3", voice=<from pick_voice>)` → plan `audio.music` / `audio.voiceover`.

## 4. Assemble + check
```
python <skill-dir>/scripts/recreate.py assemble --plan kenerate-out/ad-recreator/<project>_plan.json [--font-family "Inter"]
```
Each shot is trimmed to the reference's length (hard cuts, like most ads), text burned in (`--text-style box|bold`,
`--text-pos top|center|bottom`), audio mixed and ducked locally. Show `<project>_recreated_check.jpg` (reference vs
new, shot by shot) before delivering. Then offer `ad-resizer`, `hook-multiplier` or `captions-pro`.

## Progress and output
analyze: fetch → cuts → measure shots (percent) → sheet + plan. assemble: fetch → cut to timing → join → text →
audio → check sheet.

## If something fails
A generated shot shorter than the slot shortens the ad (warned): regenerate longer or accept. Missing `src` values
are listed by number. Failed generations are refunded; ask before retrying.

## Limits
Cut detection finds hard cuts, not slow dissolves. The role labels are guesses from position: edit them in the plan.
