{"id":"3894e6bc-e2e3-430a-a6ea-935467e142e1","shortId":"dVsTRQ","kind":"skill","title":"ad-creative-generation","tagline":"Generate on-brand ad creatives — visuals + copy — for Google, Meta (Facebook / Instagram), and other paid platforms via the Hyper MCP. Extracts brand identity from a website, writes ad copy variants, and produces brand-consistent images using reference-based image generation. Use","description":"# Ad Creative Generation\n\nGenerate ad creatives — both visuals and copy — that match a brand's identity. This skill orchestrates brand extraction, copywriting, and image generation into a single workflow.\n\n## Requirements\n\nThis skill assumes the [Hyper MCP](https://app.hyperfx.ai/mcp) is connected to your agent so the tools below are available. Brand extraction also requires Firecrawl to be configured under your Hyper integrations.\n\n## Tool surface\n\n| Group | Tools |\n|-------|-------|\n| Brand extraction | `firecrawl_extract_branding` |\n| Image generation (default) | `openai_image_edit`, `openai_image_generation` |\n| Image generation (text-heavy) | `nano_banana_image_generation`, `nano_banana_image_edit` |\n| Image generation (photoreal product shots) | `seedream_image_generation` |\n\nFor deeper image-tool selection guidance see the `image-generation` skill. To turn finished creatives into running campaigns see `google-ads` and `meta-ads`.\n\n## Out of scope\n\n- Picking the right image model when the task isn't ad creative — use `image-generation`.\n- Creating, launching, or budgeting actual ad campaigns — use `google-ads`, `meta-ads`, `tiktok-ads`, `pinterest-ads`, or `amazon-ads`.\n- Searching live competitor ads — use `meta-ads-library`.\n\n## Critical rules\n\n- **Always extract branding first** before generating visuals for a website/brand.\n- **Always pass both logo and screenshot** as reference images — SVG logos are auto-converted to PNG.\n- **DO NOT display image URLs** — they are automatically shown in chat.\n- **Read `brand.screenshot.description`** to understand the product — never guess from the company name.\n- **Default to logo + headline + product screenshot** for SaaS / product ads unless the user requests a different style.\n- **Use OpenAI for the initial ad creative by default** — `openai_image_edit` for branded / reference-based work, `openai_image_generation` for loose first-pass concepts.\n- **Do not default to Nano Banana for the first creative pass** — use it when the user explicitly asks or when readable text inside the image is the main requirement.\n- **`openai_image_edit` supported sizes:** `1024x1024` (square), `1024x1536` (portrait / story), `1536x1024` (landscape / banner). Match to platform placement.\n- **Respect character limits** — Google RSA headlines are 30 chars, descriptions 90 chars; Meta primary text is 125 chars visible.\n- **Change one variable per variant** so test results are attributable.\n- **Match aspect ratio to placement** — feed is 1:1, story is 9:16 (use `1024x1536`), banner is 16:9 (use `1536x1024`).\n\n## Routing Table\n\nBased on what the user needs, read the appropriate reference file:\n\n| User Need | Reference |\n|-----------|-----------|\n| \"Extract branding from this site\" / brand colors, logo | `references/brand-extraction.md` |\n| \"Write ad copy\" / headlines / variants / hooks | `references/ad-copy-frameworks.md` |\n| Google RSAs / display ads / Performance Max assets | `references/google-ads-creatives.md` |\n| Meta / Facebook / Instagram ads / carousel / stories | `references/meta-ads-creatives.md` |\n\nWhen the task spans multiple areas (e.g., \"create ad creatives for this website\"), follow the full workflow below.\n\n## Core Workflow\n\n### Phase 1: Brand Extraction\n\nCall `firecrawl_extract_branding` with the website URL. This single call returns branding data, a saved logo, and a website screenshot:\n\n```python\nbrand = firecrawl_extract_branding(url=\"https://example.com\")\n```\n\nThe result contains:\n- `brand.logo.file_id` — logo image to use as reference\n- `brand.screenshot.file_id` — website screenshot to use as reference\n- `brand.branding` — colors, typography, spacing, personality\n\nBoth `logo` and `screenshot` are saved images ready to pass as `reference_images` to image generation tools. SVG logos are automatically converted to PNG, so always include the logo — no need to filter by format.\n\n**For deeper guidance on brand extraction, read `references/brand-extraction.md`.**\n\n### Phase 2: Ad Copy Generation\n\nUsing the brand personality, tone, and value proposition from the extraction, write ad copy variants. Structure copy by what's being tested:\n\n1. **Hook variants** — different opening angles (number-led, question, pain-point, benefit-first)\n2. **Body variants** — different messaging (social proof, feature highlight, urgency)\n3. **CTA variants** — different calls to action (Learn More, Shop Now, Get Started, Try Free)\n\nChange only one element per variant so results can be attributed to specific changes.\n\n**For copy frameworks, hook patterns, and variant strategy, read `references/ad-copy-frameworks.md`.**\n\n### Phase 3: Visual Creative Generation\n\nGenerate ad images using brand assets as references. Always pass **both logo and screenshot** as reference images — SVG logos are automatically converted to PNG by the branding tool.\n\n**Read `brand.screenshot.description`** to understand what the product actually does and what the UI looks like. Do not guess from the company name.\n\n**Preferred tool for the first creative pass: `openai_image_edit`**\n\n#### Default approach (best practice for SaaS / product ads)\n\nBy default, a strong ad creative has three layers: **brand** (logo), **copy** (headline), and **product** (realistic screenshot showing the core value prop). This is the recommended starting point when the user hasn't specified a creative direction. Use OpenAI for this initial composition unless the user explicitly asks for Nano Banana or the image is primarily a text-rendering task.\n\n```python\nopenai_image_edit(\n    requests=[{\n        \"prompt\": (\n            \"Social media ad creative for [company name]. \"\n            \"Top: the [company] logo. \"\n            \"Headline: '[headline from ad copy phase or site hero text]'. \"\n            \"Below the headline: a clean, realistic product screenshot of [describe the actual UI \"\n            \"based on brand.screenshot.description]. \"\n            \"Match the brand style from the references.\"\n        ),\n        \"reference_images\": [brand.logo.file_id, brand.screenshot.file_id]\n    }],\n    size=\"1024x1024\",\n    quality=\"high\"\n)\n```\n\n#### Following user direction\n\nIf the user asks for a specific creative style (lifestyle imagery, abstract, illustration, people using the product, etc.), follow their direction. The defaults above are a starting point, not a constraint. The reference images still supply brand consistency regardless of creative direction.\n\n#### Things to avoid (unless the user specifically asks)\n\n- Made-up visual elements (robot mascots, random platform logos, abstract graphics)\n- UI chrome (buttons, nav bars, form inputs) — ad platforms add their own CTAs\n- Guessing what the product does from the company name\n- Generic marketing clip art\n\n## Visual Tool Selection\n\n| Scenario | Tool | Why |\n|----------|------|-----|\n| On-brand creative (default) | `openai_image_edit` with logo + screenshot refs | Best default for the first branded concept |\n| Text-heavy creative (headlines in image) | `nano_banana_image_generation` with `model=\"pro\"` | Use only when text rendering inside the image is the main requirement |\n| Quick ideation / concept exploration | `openai_image_generation` | Fast first-pass concepting with no references needed |\n| Iterative refinement of existing image | `nano_banana_image_edit` | Edit a specific generated image |\n| Photoreal product shots / material detail | `seedream_image_generation` | Strong fabric/texture/spatial depth |\n\n## Platform Quick Reference\n\n| Platform | Format | Image Size | Key Limits |\n|----------|--------|-----------|------------|\n| Meta Feed | 1:1 | 1080x1080 | Primary text: 125 chars visible |\n| Meta Story | 9:16 | 1080x1920 | Full screen, 15s max |\n| Meta Carousel | 1:1 | 1080x1080 | Up to 10 cards |\n| Google RSA | N/A (text only) | N/A | 15 headlines (30 chars), 4 descriptions (90 chars) |\n| Google Display | Various | 1200x628 | Responsive display ads |\n\n**For full platform specs, read `references/google-ads-creatives.md` or `references/meta-ads-creatives.md`.**\n\n## Ad Copy Variant Quick Reference\n\nWhen generating variants from existing top performers:\n\n1. Identify the winning elements: hook type, CTA, messaging angle, format\n2. Generate variants that preserve winning elements while changing one variable\n3. Group variants by what's being tested (hook, body, CTA)\n4. Pair variants for A/B testing — each pair should isolate one variable\n\n**For detailed frameworks, read `references/ad-copy-frameworks.md`.**\n\n- **Follow user direction** — if the user wants lifestyle, illustration, abstract, or any other style, follow their lead. The reference images still supply brand consistency regardless of creative direction.","tags":["creative","generation","marketing","skills","hyperfx-ai","agent-skills","ai-agent","claude","claude-code","claude-skills","codex","cursor"],"capabilities":["skill","source-hyperfx-ai","skill-ad-creative-generation","topic-agent-skills","topic-ai-agent","topic-claude","topic-claude-code","topic-claude-skills","topic-codex","topic-cursor","topic-google-ads","topic-hermes","topic-marketing","topic-mcp","topic-meta-ads"],"categories":["marketing-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/hyperfx-ai/marketing-skills/ad-creative-generation","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add hyperfx-ai/marketing-skills","source_repo":"https://github.com/hyperfx-ai/marketing-skills","install_from":"skills.sh"}},"qualityScore":"0.462","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 24 github stars · SKILL.md body (8,683 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:05:14.878Z","embedding":null,"createdAt":"2026-05-07T13:06:42.317Z","updatedAt":"2026-05-18T19:05:14.878Z","lastSeenAt":"2026-05-18T19:05:14.878Z","tsv":"'/mcp)':87 '1':408,409,490,615,1068,1069,1087,1088,1135 '10':1092 '1024x1024':360,871 '1024x1536':362,415 '1080x1080':1070,1089 '1080x1920':1080 '1200x628':1111 '125':388,1073 '15':1100 '1536x1024':365,421 '15s':1083 '16':413,418,1079 '2':589,631,1146 '3':641,681,1157 '30':379,1102 '4':1104,1168 '9':412,419,1078 '90':382,1106 'a/b':1172 'abstract':888,937,1194 'action':647 'actual':201,720,852 'ad':2,9,33,49,53,173,177,191,202,207,210,213,216,220,224,228,291,304,448,457,465,477,590,605,686,752,757,822,834,946,1114,1123 'ad-creative-gener':1 'add':948 'agent':92 'also':101 'alway':232,242,570,693 'amazon':219 'amazon-ad':218 'angl':620,1144 'app.hyperfx.ai':86 'app.hyperfx.ai/mcp)':85 'approach':746 'appropri':432 'area':474 'art':964 'ask':343,800,880,926 'aspect':402 'asset':460,690 'assum':81 'attribut':400,666 'auto':255 'auto-convert':254 'automat':266,565,705 'avail':98 'avoid':921 'banana':135,139,331,803,998,1038 'banner':367,416 'bar':943 'base':45,315,424,854 'benefit':629 'benefit-first':628 'best':747,983 'bodi':632,1166 'brand':8,27,39,62,68,99,115,119,234,312,439,443,491,496,505,515,518,584,595,689,711,762,859,913,973,988,1207 'brand-consist':38 'brand.branding':540 'brand.logo.file':524,866 'brand.screenshot.description':271,714,856 'brand.screenshot.file':532,868 'budget':200 'button':941 'call':493,503,645 'campaign':169,203 'card':1093 'carousel':466,1086 'chang':391,656,669,1154 'char':380,383,389,1074,1103,1107 'charact':373 'chat':269 'chrome':940 'clean':845 'clip':963 'color':444,541 'compani':280,733,825,829,959 'competitor':223 'composit':795 'concept':325,989,1018,1027 'configur':106 'connect':89 'consist':40,914,1208 'constraint':907 'contain':523 'convert':256,566,706 'copi':12,34,58,449,591,606,609,671,764,835,1124 'copywrit':70 'core':487,772 'creat':197,476 'creativ':3,10,50,54,166,192,305,335,478,683,740,758,788,823,884,917,974,993,1211 'critic':230 'cta':642,1142,1167 'ctas':951 'data':506 'deeper':151,581 'default':122,282,307,328,745,754,899,975,984 'depth':1056 'describ':850 'descript':381,1105 'detail':1050,1181 'differ':297,618,634,644 'direct':789,876,897,918,1187,1212 'display':261,456,1109,1113 'e.g':475 'edit':125,141,310,357,744,817,978,1040,1041 'element':659,931,1139,1152 'etc':894 'example.com':520 'exist':1035,1132 'explicit':342,799 'explor':1019 'extract':26,69,100,116,118,233,438,492,495,517,585,603 'fabric/texture/spatial':1055 'facebook':16,463 'fast':1023 'featur':638 'feed':406,1067 'file':434 'filter':577 'finish':165 'firecrawl':103,117,494,516 'first':235,323,334,630,739,987,1025 'first-pass':322,1024 'follow':482,874,895,1185,1199 'form':944 'format':579,1061,1145 'framework':672,1182 'free':655 'full':484,1081,1116 'generat':4,5,47,51,52,73,121,128,130,137,143,149,161,196,237,319,560,592,684,685,1000,1022,1044,1053,1129,1147 'generic':961 'get':652 'googl':14,172,206,375,454,1094,1108 'google-ad':171,205 'graphic':938 'group':113,1158 'guess':277,730,952 'guidanc':156,582 'hasn':784 'headlin':285,377,450,765,831,832,843,994,1101 'heavi':133,992 'hero':839 'high':873 'highlight':639 'hook':452,616,673,1140,1165 'hyper':24,83,109 'id':525,533,867,869 'ideat':1017 'ident':28,64 'identifi':1136 'illustr':889,1193 'imag':41,46,72,120,124,127,129,136,140,142,148,153,160,184,195,250,262,309,318,350,356,527,551,557,559,687,701,743,806,816,865,910,977,996,999,1011,1021,1036,1039,1045,1052,1062,1204 'image-gener':159,194 'image-tool':152 'imageri':887 'includ':571 'initi':303,794 'input':945 'insid':348,1009 'instagram':17,464 'integr':110 'isn':189 'isol':1177 'iter':1032 'key':1064 'landscap':366 'launch':198 'layer':761 'lead':1201 'learn':648 'led':623 'librari':229 'lifestyl':886,1192 'like':727 'limit':374,1065 'live':222 'logo':245,252,284,445,509,526,546,563,573,696,703,763,830,936,980 'look':726 'loos':321 'made':928 'made-up':927 'main':353,1014 'market':962 'mascot':933 'match':60,368,401,857 'materi':1049 'max':459,1084 'mcp':25,84 'media':821 'messag':635,1143 'meta':15,176,209,227,384,462,1066,1076,1085 'meta-ad':175,208 'meta-ads-librari':226 'model':185,1002 'multipl':473 'n/a':1096,1099 'name':281,734,826,960 'nano':134,138,330,802,997,1037 'nav':942 'need':429,436,575,1031 'never':276 'number':622 'number-l':621 'on-brand':6,971 'one':392,658,1155,1178 'open':619 'openai':123,126,300,308,317,355,742,791,815,976,1020 'orchestr':67 'paid':20 'pain':626 'pain-point':625 'pair':1169,1175 'pass':243,324,336,554,694,741,1026 'pattern':674 'peopl':890 'per':394,660 'perform':458,1134 'person':544,596 'phase':489,588,680,836 'photor':144,1046 'pick':181 'pinterest':215 'pinterest-ad':214 'placement':371,405 'platform':21,370,935,947,1057,1060,1117 'png':258,568,708 'point':627,780,904 'portrait':363 'practic':748 'prefer':735 'preserv':1150 'primari':385,1071 'primarili':808 'pro':1003 'produc':37 'product':145,275,286,290,719,751,767,847,893,955,1047 'prompt':819 'proof':637 'prop':774 'proposit':600 'python':514,814 'qualiti':872 'question':624 'quick':1016,1058,1126 'random':934 'ratio':403 'read':270,430,586,678,713,1119,1183 'readabl':346 'readi':552 'realist':768,846 'recommend':778 'ref':982 'refer':44,249,314,433,437,531,539,556,692,700,863,864,909,1030,1059,1127,1203 'reference-bas':43,313 'references/ad-copy-frameworks.md':453,679,1184 'references/brand-extraction.md':446,587 'references/google-ads-creatives.md':461,1120 'references/meta-ads-creatives.md':468,1122 'refin':1033 'regardless':915,1209 'render':812,1008 'request':295,818 'requir':78,102,354,1015 'respect':372 'respons':1112 'result':398,522,663 'return':504 'right':183 'robot':932 'rout':422 'rsa':376,1095 'rsas':455 'rule':231 'run':168 'saa':289,750 'save':508,550 'scenario':968 'scope':180 'screen':1082 'screenshot':247,287,513,535,548,698,769,848,981 'search':221 'see':157,170 'seedream':147,1051 'select':155,967 'shop':650 'shot':146,1048 'show':770 'shown':267 'singl':76,502 'site':442,838 'size':359,870,1063 'skill':66,80,162 'skill-ad-creative-generation' 'social':636,820 'source-hyperfx-ai' 'space':543 'span':472 'spec':1118 'specif':668,883,925,1043 'specifi':786 'squar':361 'start':653,779,903 'still':911,1205 'stori':364,410,467,1077 'strategi':677 'strong':756,1054 'structur':608 'style':298,860,885,1198 'suppli':912,1206 'support':358 'surfac':112 'svg':251,562,702 'tabl':423 'task':188,471,813 'test':397,614,1164,1173 'text':132,347,386,811,840,991,1007,1072,1097 'text-heavi':131,990 'text-rend':810 'thing':919 'three':760 'tiktok':212 'tiktok-ad':211 'tone':597 'tool':95,111,114,154,561,712,736,966,969 'top':827,1133 'topic-agent-skills' 'topic-ai-agent' 'topic-claude' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-cursor' 'topic-google-ads' 'topic-hermes' 'topic-marketing' 'topic-mcp' 'topic-meta-ads' 'tri':654 'turn':164 'type':1141 'typographi':542 'ui':725,853,939 'understand':273,716 'unless':292,796,922 'urgenc':640 'url':263,500,519 'use':42,48,193,204,225,299,337,414,420,529,537,593,688,790,891,1004 'user':294,341,428,435,783,798,875,879,924,1186,1190 'valu':599,773 'variabl':393,1156,1179 'variant':35,395,451,607,617,633,643,661,676,1125,1130,1148,1159,1170 'various':1110 'via':22 'visibl':390,1075 'visual':11,56,238,682,930,965 'want':1191 'websit':31,481,499,512,534 'website/brand':241 'win':1138,1151 'work':316 'workflow':77,485,488 'write':32,447,604","prices":[{"id":"a7b6d9d1-f659-4c8a-81c3-d44698e991b7","listingId":"3894e6bc-e2e3-430a-a6ea-935467e142e1","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"hyperfx-ai","category":"marketing-skills","install_from":"skills.sh"},"createdAt":"2026-05-07T13:06:42.317Z"}],"sources":[{"listingId":"3894e6bc-e2e3-430a-a6ea-935467e142e1","source":"github","sourceId":"hyperfx-ai/marketing-skills/ad-creative-generation","sourceUrl":"https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/ad-creative-generation","isPrimary":false,"firstSeenAt":"2026-05-07T13:06:42.317Z","lastSeenAt":"2026-05-18T19:05:14.878Z"}],"details":{"listingId":"3894e6bc-e2e3-430a-a6ea-935467e142e1","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"hyperfx-ai","slug":"ad-creative-generation","github":{"repo":"hyperfx-ai/marketing-skills","stars":24,"topics":["agent-skills","ai-agent","claude","claude-code","claude-skills","codex","cursor","google-ads","hermes","marketing","mcp","meta-ads","openclaw","seo"],"license":"mit","html_url":"https://github.com/hyperfx-ai/marketing-skills","pushed_at":"2026-05-09T22:58:46Z","description":"Marketing skills for AI agents — paid ads, social media, SEO, competitor research, creative generation, email, analytics, and more. Powered by Hyper MCP.","skill_md_sha":"27538292ee5381212299c79701e7bc20665f58ec","skill_md_path":"skills/ad-creative-generation/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/ad-creative-generation"},"layout":"multi","source":"github","category":"marketing-skills","frontmatter":{"name":"ad-creative-generation","description":"Generate on-brand ad creatives — visuals + copy — for Google, Meta (Facebook / Instagram), and other paid platforms via the Hyper MCP. Extracts brand identity from a website, writes ad copy variants, and produces brand-consistent images using reference-based image generation. Use when the user asks for ad creative, ad copy variants, RSA headlines, Meta ad creative, display ads, carousel ads, or A/B test variants."},"skills_sh_url":"https://skills.sh/hyperfx-ai/marketing-skills/ad-creative-generation"},"updatedAt":"2026-05-18T19:05:14.878Z"}}