{"id":"97d48111-1685-44d3-8788-35b194874814","shortId":"V5zkM6","kind":"skill","title":"image-generation","tagline":"Choose the right image generation tool through the Hyper MCP — OpenAI (gpt-image-2), Nano Banana (Gemini), Seedream (ByteDance via fal.ai) — for ad creatives, branded compositions, text-heavy assets, photorealistic product shots, image-to-image edits, and high-resolution output. ","description":"# Image Generation\n\nGuide for selecting the right image generation tool through the Hyper MCP based on what the user is trying to make.\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. For brand-consistent ad creative work, Firecrawl must also be configured under your Hyper integrations.\n\n## Tool surface\n\n| Group | Tools |\n|-------|-------|\n| OpenAI (`gpt-image-2`) | `openai_image_generation`, `openai_image_edit` |\n| Nano Banana (Gemini) | `nano_banana_image_generation`, `nano_banana_image_edit`, `nano_banana_multi_turn` |\n| Seedream (ByteDance via fal.ai) | `seedream_image_generation` |\n| Brand extraction (companion) | `firecrawl_extract_branding` |\n\n## Out of scope\n\n- Full ad creative workflows (brand extraction → copy → image) — use `ad-creative-generation`.\n- Video generation, transcription, captions, voiceover — use `video-generation`.\n\n## Tool Selection Framework\n\n### Rule 0: Website / brand ad creative requests → extract branding first (Firecrawl)\nIf the user provides a website URL and asks for ad creatives, brand-consistent visuals, or marketing assets, **always extract branding before generating images**.\n\n1. Call `firecrawl_extract_branding` with the URL. The result returns brand colors, fonts, personality / tone, and saved image files (logo, favicon, og_image).\n2. Optionally call `firecrawl_scrape_url` with `formats=[\"screenshot\"]` to capture the landing page for visual context.\n3. Compose your image generation prompt using the extracted colors (hex codes), font names, and personality tone. Pass the logo `file_id` from the result as a `reference_image_file_id`.\n\n**Critical:** The result includes a `file` field — this is a JSON data file, NOT an image. Never pass it to image gen tools. Only `logo.file_id` and `images.*.file_id` are actual images you can use as references.\n\n### Rule 1: Explicit text-heavy assets → Nano Banana Pro (Gemini)\nIf the primary requirement is readable embedded text inside the image itself, such as headlines, labels, UI text, or poster copy:\n\n```python\nnano_banana_image_generation(\n    model=\"pro\",\n    requests=[{\"id\": \"ad1\", \"prompt\": \"Create an ad with readable text '50% OFF'\"}],\n    aspect_ratio=\"16:9\",\n    image_size=\"2K\"\n)\n```\n\n### Rule 2: Reference images or brand assets → OpenAI Edit by default\nIf the user provides images, branding assets, screenshots, or wants an initial branded composition, prefer `openai_image_edit`.\n\n```python\nopenai_image_edit(\n    requests=[{\"prompt\": \"Compose into gift basket\", \"reference_images\": [\"file1\", \"file2\"]}]\n)\n```\n\nUse Nano Banana only when the user explicitly wants Nano Banana or the image is text-heavy enough that text rendering is the main concern.\n\n### Rule 3: Initial ad creative or first-pass concepts → OpenAI\nFor initial creative exploration, first-pass ad concepts, or early branded directions, prefer OpenAI tools:\n\n```python\nopenai_image_generation(\n    requests=[{\"prompt\": \"A polished SaaS ad concept with clean composition\"}],\n    size=\"1024x1024\"\n)\n```\n\nFor reference-based branded ads, prefer:\n\n```python\nopenai_image_edit(\n    requests=[{\"prompt\": \"Create a polished branded ad concept\", \"reference_images\": [\"file1\", \"file2\"]}]\n)\n```\n\n### Rule 4: Nano Banana Pro for production text rendering\nUse `nano_banana_image_generation(model=\"pro\")` when the user explicitly wants Nano Banana or when the output needs strong text rendering inside the image. Do not default to Nano Banana for the first creative pass when OpenAI tools can handle the concept.\n\n## Available Tools\n\n### OpenAI Image Generation\n**Best for:** Quick ideation, first-pass concepts, general creative requests without reference images.\n\n- Model: `gpt-image-2`\n- Standard sizes: 1024x1024, 1024x1536, 1536x1024\n- Quality: `low`, `medium`, `high`\n- Fast results for general creative requests\n\n### OpenAI Image Edit\n**Best for:** Initial branded compositions, website-based ad creatives, image-to-image generation with OpenAI quality.\n\n- Editing or composing images using references\n- Multi-image composition\n\n### Nano Banana Image Generation (Gemini)\n**Best for:** Text-heavy production assets, explicit Nano Banana requests, and high-resolution refinements.\n\n**Models:**\n- `model=\"pro\"` (default): Gemini 3 Pro — best quality, supports Google Search grounding\n- `model=\"flash\"`: Gemini 2.5 Flash — faster and cheaper\n\n**Key Capabilities:**\n- Text in images (headlines, labels, UI elements)\n- High-resolution output (1K, 2K, 4K)\n- Various aspect ratios (1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9)\n- Image-to-image with `reference_images`\n- Real-world grounding via `use_google_search=True`\n\n### Seedream 4.5 Image Generation (ByteDance via fal.ai)\n**Best for:** Product photography, marketing assets, text rendering in images, material / fabric preservation, scenes with accurate spatial depth.\n\n**Key Capabilities:**\n- Fast generation (~2-3 seconds)\n- Resolutions up to 4K (`auto_2K`, `auto_4K`, or preset sizes)\n- Photorealistic quality with strong material / texture detail\n- Size presets: `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9`, `auto_2K`, `auto_4K`\n\n```python\nseedream_image_generation(\n    requests=[{\"prompt\": \"Product shot of leather handbag on marble surface\"}],\n    image_size=\"auto_2K\"\n)\n```\n\n### Nano Banana Image Edit\n**Best for:** Modifying single existing images.\n\n- Targeted changes to uploaded images\n- Same quality options as generation\n\n### Nano Banana Multi-Turn\n**ONLY use when the user explicitly says \"use multi turn image editing\".**\n\n- `mode=\"sync\"`: Chain mode — output from turn N becomes input for turn N+1\n- `mode=\"parallel\"`: Independent mode — all turns processed independently\n\n## Request Format\n\nAll tools use the `requests` parameter:\n\n```python\nrequests=[\n    {\"id\": \"optional_id\", \"prompt\": \"Description\", \"reference_images\": [\"optional\"]}\n]\n```\n\n## Common Patterns\n\n| Pattern | Tool | Notes |\n|---------|------|-------|\n| Website-based ad creative | `firecrawl_extract_branding` → `openai_image_edit` | Extract branding first, then create the first branded concept |\n| Ad with text | `nano_banana_image_generation(model=\"pro\")` | Use when readable text inside the image is a core requirement |\n| Quick concept | `openai_image_generation` | Simple, no constraints |\n| Style transfer | Nano Banana + references | Image-to-image |\n| Print-quality poster | Nano Banana + 4K | High resolution |\n| Product photography | `seedream_image_generation` | Photorealistic, material detail |\n| Edit existing image | `nano_banana_image_edit` | Single image modification |\n| Batch generation | Multiple requests | Parallel generation |\n\n### Pattern H: Brand-Consistent Ad Creative\n\n1. Call `firecrawl_extract_branding` with the website URL\n2. Read the returned colors, fonts, personality, and logo `file_id`\n3. Write a prompt that includes the actual hex colors, font names, and tone from the result\n4. Pass the logo `file_id` as a reference image\n5. Generate the first pass with `openai_image_edit` when using brand references, or `openai_image_generation` for loose ideation\n6. Use `nano_banana_image_generation(model=\"pro\")` only if the image itself needs strong readable text rendering\n\n## Important Reminders\n\n- **DO NOT display image URLs to the user** — they are automatically shown in chat\n- **Refine vague prompts** — unless the user explicitly wants verbatim generation\n- **Match aspect ratio to intent** — social media, print, web, etc.\n- **Use appropriate resolution** — 4K for production, 1K / 2K for iteration\n- **Remember `file_id`s** — generated images can be reused in subsequent operations\n- **For website-based brand work** — call `firecrawl_extract_branding` before generating ad creatives\n- **For initial ad creatives** — prefer OpenAI tools first; reserve Nano Banana Pro for explicit text-heavy assets or explicit user preference","tags":["image","generation","marketing","skills","hyperfx-ai","agent-skills","ai-agent","claude","claude-code","claude-skills","codex","cursor"],"capabilities":["skill","source-hyperfx-ai","skill-image-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/image-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 (7,929 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:16.439Z","embedding":null,"createdAt":"2026-05-07T13:06:43.182Z","updatedAt":"2026-05-18T19:05:16.439Z","lastSeenAt":"2026-05-18T19:05:16.439Z","tsv":"'+1':876 '-3':767 '/mcp)':80 '0':180 '1':215,326,701,702,1005 '1024x1024':494,596 '1024x1536':597 '1536x1024':598 '16':378,716,717,796,802 '1k':695,1132 '2':18,116,239,384,593,703,706,766,1014 '2.5':677 '21':719 '2k':382,696,774,805,825,1133 '3':256,453,666,704,705,707,710,794,800,1025 '4':519,708,709,711,714,793,799,1042 '4.5':738 '4k':697,772,776,807,971,1129 '5':712,713,1052 '50':374 '6':1072 '9':379,715,718,720,797,803 'accur':759 'actual':318,1032 'ad':27,96,155,164,183,200,370,455,470,488,500,512,620,911,928,1003,1160,1164 'ad-creative-gener':163 'ad1':366 'agent':85 'also':101 'alway':209 'app.hyperfx.ai':79 'app.hyperfx.ai/mcp)':78 'appropri':1127 'ask':198 'aspect':376,699,1117 'asset':34,208,331,389,400,651,749,1179 'assum':74 'auto':773,775,804,806,824 'automat':1102 'avail':91,570 'banana':20,124,127,131,135,333,359,428,436,521,529,540,557,641,654,827,847,932,959,970,986,1075,1172 'base':62,498,619,910,1151 'basket':421 'batch':992 'becom':871 'best':575,612,645,668,744,830 'brand':29,94,145,150,158,182,187,203,211,219,226,388,399,406,474,499,511,615,915,920,926,1001,1009,1063,1152,1157 'brand-consist':93,202,1000 'byted':23,139,741 'call':216,241,1006,1154 'capabl':683,763 'caption':170 'captur':249 'chain':865 'chang':837 'chat':1105 'cheaper':681 'choos':4 'clean':491 'code':267 'color':227,265,1018,1034 'common':903 'companion':147 'compos':257,418,632 'composit':30,407,492,616,639 'concept':461,471,489,513,569,582,927,949 'concern':451 'configur':103 'connect':82 'consist':95,204,1002 'constraint':955 'context':255 'copi':160,356 'core':946 'creat':368,508,923 'creativ':28,97,156,165,184,201,456,465,561,584,607,621,912,1004,1161,1165 'critic':287 'data':298 'default':393,554,664 'depth':761 'descript':899 'detail':786,981 'direct':475 'display':1094 'earli':473 'edit':42,122,133,391,411,415,505,611,630,829,862,918,982,988,1060 'element':690 'embed':342 'enough':444 'etc':1125 'exist':834,983 'explicit':327,433,537,652,856,1112,1175,1181 'explor':466 'extract':146,149,159,186,210,218,264,914,919,1008,1156 'fabric':755 'fal.ai':25,141,743 'fast':603,764 'faster':679 'favicon':236 'field':293 'file':234,276,285,292,299,315,1023,1046,1137 'file1':424,516 'file2':425,517 'firecrawl':99,148,189,217,242,913,1007,1155 'first':188,459,468,560,580,921,925,1055,1169 'first-pass':458,467,579 'flash':675,678 'font':228,268,1019,1035 'format':246,886 'framework':178 'full':154 'gemini':21,125,335,644,665,676 'gen':308 'general':583,606 'generat':3,8,49,56,119,129,144,166,168,175,213,260,361,482,531,574,626,643,740,765,811,845,934,952,978,993,997,1053,1068,1077,1115,1140,1159 'gift':420 'googl':671,734 'gpt':16,114,591 'gpt-imag':15,113,590 'ground':673,731 'group':110 'guid':50 'h':999 'handbag':818 'handl':567 'hd':790 'headlin':350,687 'heavi':33,330,443,649,1178 'hex':266,1033 'high':45,602,658,692,972 'high-resolut':44,657,691 'hyper':12,60,76,106 'id':277,286,312,316,365,895,897,1024,1047,1138 'ideat':578,1071 'imag':2,7,17,39,41,48,55,115,118,121,128,132,143,161,214,233,238,259,284,302,307,314,319,346,360,380,386,398,410,414,423,439,481,504,515,530,551,573,588,592,610,623,625,633,638,642,686,722,724,727,739,753,810,822,828,835,840,861,901,917,933,943,951,962,964,977,984,987,990,1051,1059,1067,1076,1083,1095,1141 'image-gener':1 'image-to-imag':38,622,721,961 'import':1090 'includ':290,1030 'independ':879,884 'initi':405,454,464,614,1163 'input':872 'insid':344,549,941 'integr':107 'intent':1120 'iter':1135 'json':297 'key':682,762 'label':351,688 'land':251 'landscap':798,801 'leather':817 'logo':235,275,1022,1045 'logo.file':311 'loos':1070 'low':600 'main':450 'make':70 'marbl':820 'market':207,748 'match':1116 'materi':754,784,980 'mcp':13,61,77 'media':1122 'medium':601 'mode':863,866,877,880 'model':362,532,589,661,662,674,935,1078 'modif':991 'modifi':832 'multi':136,637,849,859 'multi-imag':636 'multi-turn':848 'multipl':994 'must':100 'n':870,875 'name':269,1036 'nano':19,123,126,130,134,332,358,427,435,520,528,539,556,640,653,826,846,931,958,969,985,1074,1171 'need':545,1085 'never':303 'note':907 'og':237 'openai':14,112,117,120,390,409,413,462,477,480,503,564,572,609,628,916,950,1058,1066,1167 'oper':1147 'option':240,843,896,902 'output':47,544,694,867 'page':252 'parallel':878,996 'paramet':892 'pass':273,304,460,469,562,581,1043,1056 'pattern':904,905,998 'person':229,271,1020 'photographi':747,975 'photorealist':35,780,979 'polish':486,510 'portrait':792,795 'poster':355,968 'prefer':408,476,501,1166,1183 'preserv':756 'preset':778,788 'primari':338 'print':966,1123 'print-qual':965 'pro':334,363,522,533,663,667,936,1079,1173 'process':883 'product':36,524,650,746,814,974,1131 'prompt':261,367,417,484,507,813,898,1028,1108 'provid':193,397 'python':357,412,479,502,808,893 'qualiti':599,629,669,781,842,967 'quick':577,948 'ratio':377,700,1118 'read':1015 'readabl':341,372,939,1087 'real':729 'real-world':728 'refer':283,324,385,422,497,514,587,635,726,900,960,1050,1064 'reference-bas':496 'refin':660,1106 'rememb':1136 'remind':1091 'render':447,526,548,751,1089 'request':185,364,416,483,506,585,608,655,812,885,891,894,995 'requir':71,339,947 'reserv':1170 'resolut':46,659,693,769,973,1128 'result':224,280,289,604,1041 'return':225,1017 'reus':1144 'right':6,54 'rule':179,325,383,452,518 'saa':487 'save':232 'say':857 'scene':757 'scope':153 'scrape':243 'screenshot':247,401 'search':672,735 'second':768 'seedream':22,138,142,737,809,976 'select':52,177 'shot':37,815 'shown':1103 'simpl':953 'singl':833,989 'size':381,493,595,779,787,823 'skill':73 'skill-image-generation' 'social':1121 'source-hyperfx-ai' 'spatial':760 'squar':789,791 'standard':594 'strong':546,783,1086 'style':956 'subsequ':1146 'support':670 'surfac':109,821 'sync':864 'target':836 'text':32,329,343,353,373,442,446,525,547,648,684,750,930,940,1088,1177 'text-heavi':31,328,441,647,1176 'textur':785 'tone':230,272,1038 'tool':9,57,88,108,111,176,309,478,565,571,888,906,1168 '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' 'transcript':169 'transfer':957 'tri':68 'true':736 'turn':137,850,860,869,874,882 'ui':352,689 'unless':1109 'upload':839 'url':196,222,244,1013,1096 'use':162,172,262,322,426,527,634,733,852,858,889,937,1062,1073,1126 'user':66,192,396,432,536,855,1099,1111,1182 'vagu':1107 'various':698 'verbatim':1114 'via':24,140,732,742 'video':167,174 'video-gener':173 'visual':205,254 'voiceov':171 'want':403,434,538,1113 'web':1124 'websit':181,195,618,909,1012,1150 'website-bas':617,908,1149 'without':586 'work':98,1153 'workflow':157 'world':730 'write':1026","prices":[{"id":"a1750968-81c2-436d-b1bb-bb70f9e71cd7","listingId":"97d48111-1685-44d3-8788-35b194874814","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:43.182Z"}],"sources":[{"listingId":"97d48111-1685-44d3-8788-35b194874814","source":"github","sourceId":"hyperfx-ai/marketing-skills/image-generation","sourceUrl":"https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/image-generation","isPrimary":false,"firstSeenAt":"2026-05-07T13:06:43.182Z","lastSeenAt":"2026-05-18T19:05:16.439Z"}],"details":{"listingId":"97d48111-1685-44d3-8788-35b194874814","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"hyperfx-ai","slug":"image-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":"3b98e721d9af5c29a95945f60de1f6e0aeb640e8","skill_md_path":"skills/image-generation/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/image-generation"},"layout":"multi","source":"github","category":"marketing-skills","frontmatter":{"name":"image-generation","description":"Choose the right image generation tool through the Hyper MCP — OpenAI (gpt-image-2), Nano Banana (Gemini), Seedream (ByteDance via fal.ai) — for ad creatives, branded compositions, text-heavy assets, photorealistic product shots, image-to-image edits, and high-resolution output. Use when the user asks to generate an image, create an ad creative, do an image-to-image edit, render text inside an image, or produce a print-quality poster."},"skills_sh_url":"https://skills.sh/hyperfx-ai/marketing-skills/image-generation"},"updatedAt":"2026-05-18T19:05:16.439Z"}}