Ad creative batches
Several concepts built on different angles, each delivered in every placement size from feed to stories, plus video versions and a manifest for A/B tests.
Make 3 ad concepts for our espresso machine for TikTok and Instagram
when the agent picks itProduce batches of ad creatives with EggAPI - several concepts built on different angles, each adapted to every placement size, optional short video ads, and a manifest for A/B testing. Use when the user wants ad images, banner, feed or story creatives, ad variants, campaign visuals or short video ads for Meta, TikTok, Google, YouTube, Douyin or Xiaohongshu (广告素材、投放素材、信息流广告、A/B 测试).
Turn a brief into several ad concepts, each delivered in every placement size the campaign needs, so the user can upload them and A/B test. 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):bashcurl -sS https://api.eggapi.ai/v1/uploads \ -H "Authorization: Bearer $EGGAPI_API_KEY" \ -F "files[]=@./photo-1.jpg" -F "files[]=@./photo-2.jpg"
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.
1. Brief
Ask only for what is missing:
- What is advertised and the offer (discount, free trial, launch, bundle).
- Audience, and the one action the ad should drive (buy, sign up, install, visit).
- Placements (see the table in step 3).
- Brand assets: product photos, logo file, brand colors as hex codes, the overall tone. Whether headlines go on the images.
- Volume: how many concepts (default 3) and whether to include video ads.
2. Write the concepts and confirm
Write the concepts before generating anything. Give each one a different angle, for example pain point, main benefit, social proof, offer and urgency, before/after, or aspiration. For each concept list:
- angle
- headline: under 6 words or 12 Chinese characters
- visual: one sentence on what the image shows
- call to action
Show the concepts as a table, together with the placement list and the estimated cost (concepts x placements x image price, plus video seconds x price per second). Users often rewrite headlines here; wait for the go-ahead.
3. Placement sizes
| Placement | Aspect ratio |
|---|---|
| Meta / Instagram feed, TikTok and Douyin feed images, Google display square | 1:1 |
| Stories, Reels, TikTok, Douyin, YouTube Shorts | 9:16 |
| YouTube, landscape display, website hero | 16:9 |
| Xiaohongshu | 3:4 |
| Wide banners | 21:9 |
For 9:16 creatives, keep the headline and the product out of the top 15% and the bottom 25% of the frame, where the app's interface covers it.
4. Generate
For each concept:
- Key visual in the concept's main placement ratio, at
resolution: "2k".- With product photos or a logo: an edit model with them as
images. Defaultgoogle/nano-banana-pro/edit, alternativebytedance/seedream-v5.0-pro/edit(both up to 8 input images). Start the prompt with "Keep the product exactly as in the reference photos: same shape, colors, logo and label text." - Without any assets: text-to-image,
google/nano-banana-pro/text-to-imageorbytedance/seedream-v5.0-pro.
- With product photos or a logo: an edit model with them as
- Every other placement: call the same edit model with the approved key visual (plus the product photos) as
images, the placement'saspect_ratio, and the prompt "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." This keeps all sizes of one concept consistent. - Headlines: put the exact text in quotes, say where it sits ("in a solid band across the bottom", "top left, large bold sans-serif") and name the color. If the text still comes out wrong after one retry, regenerate without text, leave a clear area for it, and tell the user to set the text in their design tool.
- Logos: models redraw logos imperfectly. Leave a clear corner for the logo and, if ImageMagick or ffmpeg is installed, offer to place the user's real logo file on the finished images.
Submit all concepts' key visuals together, review them with the user, then submit all the resizes together.
5. Video ads (optional)
Animate the approved 9:16 key visual of each concept with generate_video:
- Model:
bytedance/seedance-2.5/image-to-video; alternativealibaba/wan-3.0/image-to-video. image: the key visual's URL.aspect_ratio:9:16.duration: 5-8.resolution:720pfor a test round,1080pfor the final.- Prompt one clear motion that catches the eye in the first second: a product reveal, a quick push-in, the before/after change. Text tends to break up in motion, so add captions afterwards in an editor.
- Add
parameters: {"generate_audio": true}only when the user wants sound.
6. Check and deliver
If you can view images, check every file: the product matches the photos, the headline is spelled exactly as approved, nothing important sits in a 9:16 interface zone. Regenerate once what fails, and say which files were re-run.
Save to eggapi-output/<campaign-slug>/ with names like c1-painpoint-1x1.png, c1-painpoint-9x16.png, c2-offer-16x9.png, c1-painpoint-9x16.mp4. Also write manifest.csv there with the columns file,concept,angle,headline,cta,placement,aspect_ratio,model,cost, one row per file, so the user can set up A/B tests and track which angle wins. 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.