Winning ad remix
Break down why an ad works, then keep its structure while changing one thing at a time: hook, person, setting, offer or copy. Image and video variants, with a manifest for testing.
./winner.mp4 is our best ad. Make 4 variants with new hooks and a new presenter
when the agent picks itRemix a winning ad into new variants with EggAPI - break down why a creative works (hook, layout, colors, pacing), then keep that structure while changing one thing at a time (hook, person, setting, offer or copy), for images and short videos, with a manifest for testing. Use when the user has an ad that performs well and wants more like it, ad variations, creative iterations, or a fresh version of a fatigued creative (爆款素材裂变、广告变体、素材迭代、跑量素材、素材疲劳).
Find out why an ad works, then make variants that keep what works and change one thing each, so test results show which change helped. Reply in the user's language. Write model prompts in English; put any text that should appear in an image in quotes, in its target language.
EggAPI basics
This skill uses the EggAPI MCP server, usually added under the name eggapi: list_models, generate_image, generate_video and get_task (in Claude Code they show up as mcp__eggapi__*). If these tools are missing, stop and send the user to https://eggapi.ai/connect to add the server.
-
Models. Call
list_modelsonce at the start. Use the model IDs this skill names when they are listed; otherwise pick the closest model with the samegeneration_type.unit_price_usdis the price per image, or per second of video;unit_price_by_resolutionoverrides it for a givenresolution. -
Local files. The generate tools only accept public
http(s)URLs. Upload local files first (up to 20 MB per image, 200 MB per video):bashcurl -sS https://api.eggapi.ai/v1/uploads \ -H "Authorization: Bearer $EGGAPI_API_KEY" \ -F "files[]=@./photo-1.jpg" -F "files[]=@./winner.mp4"
The URLs are in
data.files[].url. IfEGGAPI_API_KEYis empty in the shell, ask the user to export it; never ask for the key in the chat. Uploaded files can be opened by anyone who has the URL, so say so before uploading anything private. -
Tasks are async.
generate_imageandgenerate_videoreturn atask_idat once. Submit every independent task first, then pollget_taskfor each untildoneis true: every 5-10 s for images, 10-15 s for videos (usually 1-3 min). If a generate call already returnsurls, no polling is needed. -
Always pass
aspect_ratio(the default is 16:9) and, for video,duration(4-15 s). Supported ratios:1:1,3:4,4:3,9:16,16:9,21:9. -
Edit models return one image per call. For more variants, call again;
num_outputsonly applies to text-to-image models. -
Output URLs work as inputs. Pass a finished image's URL straight into the next edit or video call; no re-upload needed.
-
Save everything. Download each output as soon as its task completes, into
eggapi-output/<project>/under the current directory, withcurl -sSL -o <file> <url>: some output links expire after 24 hours, and some file hosts reject other HTTP clients. Keep the extension from the URL and use descriptive file names. -
Cost. Show the plan with an estimated cost before generating and wait for a go-ahead, unless the user already said to go ahead. At the end, report each task's
costand the total. -
Errors.
insufficient balance: ask the user to top up at https://eggapi.ai/dashboard.temporarily unavailable: switch to another model of the same type. Afailedtask: readerror, adjust the prompt if it points at the content, and retry once.
Ground rules
Remix only creatives the user owns or has the rights to. When the user brings a competitor's ad, take its structure as inspiration (angle, layout, pacing) and do not upload or copy its footage, people, brand or text. Never reproduce a real person's likeness without their permission.
1. Collect the inputs
Ask only for what is missing:
- The winning creative: image or video file, or URL.
- Why it counts as a winner: the metric (click-through, hook rate, conversions) and the audience it ran on. It tells you what to protect.
- What may change and what must stay (brand colors, offer, product).
- Product photos for the product in the ad.
- How many variants (default 4) and the placements.
2. Break it down
For an image, if you can view it, note the hook element, the layout (where the product, the headline, any face and the call to action sit), the color palette, the headline formula and the call to action.
For a video, get its length and pull one frame per second to look at:
ffprobe -v error -show_entries format=duration -of csv=p=0 winner.mp4 mkdir -p frames && ffmpeg -i winner.mp4 -vf "fps=1,scale=480:-1" frames/f-%02d.png
Then write a shot table: time, shot, what happens, on-screen text, sound. Without ffmpeg or image viewing, ask the user to describe the ad shot by shot.
Finish with a short "why it works" and a keep list of two to four elements every variant must keep.
3. Plan the variants and confirm
Change one variable per variant, so a winner can be traced to its change:
| Variable | Example |
|---|---|
| Hook | a question instead of a claim, a different first image or first 2 seconds |
| Person | a different age, gender or style of presenter |
| Setting | home instead of studio, outdoors instead of indoors |
| Offer or copy | a new headline, a different benefit, a new call to action |
| Product variant | another color or size of the same product |
Show a table: variant, what changes, what stays, placement, model, estimated cost. Wait for the go-ahead.
4. Image variants
Use the winner and the product photos as images (8 at most) and keep the winner's aspect ratio, at resolution: "2k":
- Default:
google/nano-banana-pro/edit; alternativebytedance/seedream-v5.0-pro/edit. - Copy-only changes:
openai/gpt-image-2/editwith the winner as the single input image; it renders text well.
Recreate this ad with the same layout, composition, color palette and typography style. Change only this: {the variant's change}. Keep the product exactly as in the product photos: same shape, colors, logo and label text. Headline: "{headline}", in the same position and style as the original.
For other placements, recompose each approved variant: "Recompose this ad for a {ratio} format: keep the same subject, style, colors and headline; extend the background instead of stretching or cutting off the subject."
5. Video variants
Two routes; try the first and fall back to the second.
Follow the winner's structure. Text-to-video with the winner as a reference video:
-
Model:
bytedance/seedance-2.5/text-to-video; alternativealibaba/wan-3.0/text-to-video. -
parameters:{"reference_videos": ["<winner URL>"], "reference_images": ["<product photo URL>", "<new presenter or setting image URL>"], "generate_audio": true}. Keep references few: one video up to 15 seconds and one to three images. Trim a longer winner first:ffmpeg -ss 0 -t 15 -i winner.mp4 -c:v libx264 -c:a aac winner-15s.mp4. -
duration: the winner's length, up to 15.aspect_ratio: the winner's.resolution:720pfor a test,1080pfor the final. -
Prompt the new version and how to use the references:
Follow the shot order, camera movement and pacing of the reference video. {The variant: new presenter, new setting, new hook action}. The product looks exactly like the product in the reference image.
Rebuild shot by shot. When the reference is rejected or not followed: make each shot's first frame as an image variant (step 4), animate each with bytedance/seedance-2.5/image-to-video (alternative alibaba/wan-3.0/image-to-video) using the shot's duration, then join the clips:
printf "file '%s'\n" v1-shot-*.mp4 > v1.txt ffmpeg -f concat -safe 0 -i v1.txt -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a aac v1.mp4
Render one variant first and review it with the user before submitting the rest. Music from the original stays with the user: they add their licensed track in the editor.
6. Check and deliver
If you can view the outputs, check each variant against the keep list, that only the planned variable changed, that the product matches the photos, and that headlines are spelled exactly as approved. Regenerate once what fails and say which files were re-run.
Save to eggapi-output/<campaign-slug>-remix/ with names like v1-hook-question-9x16.png or v3-setting-outdoor-9x16.mp4, plus breakdown.md (the shot table, why it works, the keep list) and manifest.csv with the columns file,variant,changed,kept,placement,aspect_ratio,model,cost. Finish with the list of files and the total cost.
Edit your copy of this file to change the steps, defaults or models; the agent follows your version.