image-generation
Generate images through the Hyper MCP with the unified `images_generate` tool — text-to-image, image-to-image, and branded ad creatives — choosing the model (gpt-image-2.5-flare, gpt-image-2.5-sunburst, nano-banana, nano-banana-pro, seedream-4.5) per task. Use when the user asks
Install
npx skills add https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/image-generation
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install hyperfx-ai-marketing-skills@llmmart
git clone https://github.com/hyperfx-ai/marketing-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole hyperfx-ai/marketing-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Image Generation
Generate images with the images_generate tool. It handles text-to-image,
image-to-image (pass reference_images), and multi-image composition. By default
(model="auto") it picks the best model for the request; set model to choose one.
Requirements
This skill assumes the Hyper MCP is connected to your
agent so the images_generate tool is available. For brand-consistent ad creative
work, Firecrawl must also be configured under your Hyper integrations.
How to run the tools in this skill
Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:
| Surface | Find a tool | Run it |
|---|---|---|
| MCP client (Claude, Cursor, Codex, ChatGPT) | search("<what you want to do>"), then describe("<name>") |
call("<name>", {...}) |
| Hyper CLI | hyperai search "<what you want to do>", then hyperai describe <name> |
hyperai call <name> --json '{...}' |
If a tool is not found, its integration is not connected or not enabled for the workspace: stop and tell the user which integration to connect.
Call shape
images_generate(
requests=[{"id": "ad1", "prompt": "A polished SaaS ad, clean composition"}],
aspect_ratio="16:9", # "1:1" (default), "9:16", "16:9", "4:5", "5:4", "2:3", "3:2", "3:4", "4:3", "21:9"
quality="standard", # "draft" | "standard" | "high"
n=1, # 1-4 images per request
model="auto", # see "Choosing a model" below
)
- Image-to-image / brand references: put files in the request:
requests=[{"prompt": "Compose into a gift basket", "reference_images": ["file1", "file2"]}]. - Reproducible output: pass
seed=.... - Ground in real-world search: pass
use_search=True. - Do not display image URLs — they render automatically in chat.
Choosing a model
model="auto" is the right default. Override only when the task clearly calls for a
specific model:
| Task | model |
|---|---|
| First-pass concepts / quick ad ideation / everyday generation | gpt-image-2.5-flare |
| Precise edits and branded compositions from reference images, production creative | gpt-image-2.5-sunburst |
| Cheap iteration, image-to-image, the widest aspect ratios (adds 1:4, 1:8, 4:1, 8:1) | nano-banana |
| Readable text inside the image (posters, labels, infographics) or search-grounded scenes | nano-banana-pro |
| Product photography, material/fabric fidelity, accurate spatial depth | seedream-4.5 |
See references/image-prompting.md for per-model prompt-writing tips.
Branded / website ad creatives — extract branding first
If the user gives a website URL and wants on-brand creatives:
- Call
firecrawl_branding_extractwith the URL → returns brand colors, fonts, personality/tone, and saved image files (logo, favicon, og_image). - Optionally
firecrawl_urls_scrapewithformats=["screenshot"]for visual context. - Write the prompt using the actual hex colors, font names, and tone, and pass the
logo
file_idinreference_images.
The branding result's file field is a JSON data file, NOT an image — never pass it
as a reference. Only logo.file_id and images.*.file_id are usable images.
Higher-level workflows
For multi-shot product or marketplace work, prefer the workflow tools — they preserve product identity and return structured results:
images_product_photoshoots_create— multi-shot product photography (studio, lifestyle, hero, carousel, ad pack). See references/product-photoshoot.md.images_marketplace_cards_create— marketplace listing image sets (Amazon main + secondary, A+ modules, Shopify). See references/marketplace-cards.md.
Reminders
- Do NOT display image URLs to the user — they show automatically in chat.
- Refine vague prompts unless the user wants verbatim generation.
- Match
aspect_ratioto intent (social, print, web). - Use
quality="high"for production,"draft"/"standard"while iterating. - Generated
file_ids can be reused asreference_imagesin later calls. - For website brand work, call
firecrawl_branding_extractbefore generating.
Files (marketing-skills)
-
references
-
image-prompting.md 2.4 KB
# Image Prompting (per model) `images_generate` picks a model for you when `model="auto"`, but the prompt you write should still play to whichever model runs. Set `model` when the task clearly calls for a specific one; otherwise let `auto` decide. ## Choosing a model (cheat sheet) | Need | `model` | |------|---------| | First-pass concepts, ad ideation, everyday generation | `gpt-image-2.5-flare` | | Precise edits, compositions with reference images, production creative | `gpt-image-2.5-sunburst` | | Cheap iteration, the widest aspect ratios, image-to-image with multiple references | `nano-banana` | | Readable text inside the image (posters, labels, infographics) or search-grounded scenes | `nano-banana-pro` | | Product photography, material/fabric fidelity, accurate spatial depth | `seedream-4.5` | | No strong preference | `auto` (default) | ## Per-model prompt shapes ### `gpt-image-2.5-flare` and `gpt-image-2.5-sunburst` (OpenAI) - Flare: first-pass concepts, ad creative ideation, fast everyday generation. - Sunburst: precise edits and compositions from references, production creative. - Prompt sections: objective → composition → style → brand constraints. - Both take every aspect ratio between 1:3 and 3:1. Avoid long blocks of literal text. ### `nano-banana` (Gemini) - Best for: high-resolution refinements, broad aspect ratios, image-to-image with multiple references. - Prompt sections: subject → composition → style → lighting. - Avoid competing visual instructions in the same prompt. ### `nano-banana-pro` (Gemini Pro) - Best for: exact readable text inside the image (posters, labels, infographics) and search-grounded scenes. - Prompt sections: exact_text → layout → hierarchy → style → aspect_ratio. - Avoid ambiguous copy and too many independent text blocks. ### `seedream-4.5` - Best for: product photography, material/fabric preservation, scenes requiring accurate spatial depth. - Prompt sections: product_identity → surface_materials → lighting → camera_angle → environment. - Avoid changing logo/text, warping packaging geometry, and busy backgrounds. ## Parameters `images_generate` takes: `requests` (each `{prompt, id?, reference_images?}`), `model`, `aspect_ratio`, `quality` (`"draft" | "standard" | "high"`), `n` (1-4), `seed`, and `use_search`. `aspect_ratio` is the single spatial control and `quality` covers the resolution/quality tier across models — pass intent through those, not raw pixel sizes. -
marketplace-cards.md 2.6 KB
# Marketplace Cards Reference Use `images_marketplace_cards_create` for the standard image set retailers expect on a listing — Amazon main image + secondary images + A+ modules, Shopify product images, Etsy product photos. ## Scopes Pick a scope and the tool expands it to the deterministic asset set: | Scope | Assets | |-------|--------| | `main` | `main_image` | | `product_images` | `main_image`, `infographic`, `multi_angle`, `detail_shot`, `lifestyle`, `whats_in_box` | | `aplus` | `aplus_hero_banner`, `aplus_pain_points`, `aplus_features`, `aplus_ingredients`, `aplus_efficacy`, `aplus_how_to_use` | | `full_set` | `product_images` + selected A+ modules | You can override the scope by passing an explicit `assets=[...]` list. ## Per-asset framing Each asset has its own aspect ratio and prompt focus baked in: - `main_image` — pure white background, product fills 85% of the frame, no overlays. **1:1** - `infographic` — feature callouts with icons + short labels. **1:1** - `multi_angle` — three-angle composite, consistent lighting. **1:1** - `detail_shot` — extreme close-up on signature feature, shallow depth. **1:1** - `lifestyle` — real environment of intended use. **4:5** - `whats_in_box` — flat lay of every included item, neutral background. **1:1** - `aplus_hero_banner` — wide hero with negative space, premium lighting. **16:9** - `aplus_pain_points` — before/after split or icon grid. **16:9** - `aplus_features` — three to four feature tiles. **16:9** - `aplus_ingredients` — ingredient hero shots with sourcing notes. **16:9** - `aplus_efficacy` — results-led visual with supporting metric. **16:9** - `aplus_how_to_use` — numbered usage steps with hands-on shots. **16:9** ## Marketplace targeting `marketplace="amazon" | "shopify" | "etsy" | "generic"` adds a per-target compliance hint to every prompt — e.g. Amazon enforces white background on the main image and no logos/watermarks. Use `generic` when the listing isn't tied to a specific marketplace. ## Identity preservation Every asset prompt includes preservation clauses (logo/text exact, geometry, colorway, material, scale). Pass product references via `product.references` so the underlying image-to-image backend has them. ## Example ```python images_marketplace_cards_create( product=ProductContext( name="Glow Vitamin C Serum", brand_name="Glow Lab", selling_points=[ "20% L-ascorbic acid", "vegan", "results in 4 weeks", ], references=[MediaInput(file_id="file_image_gen_..._serum")], ), scope="product_images", marketplace="amazon", quality="high", ) ``` -
product-photoshoot.md 2.9 KB
# Product Photoshoot Reference Use `images_product_photoshoots_create` (not generic image generation) whenever the goal is on-brand product or campaign visuals. The tool wraps prompt construction, identity preservation, and variant generation so you don't have to reinvent it per call. ## When to use - The user asks for "product photos", "product shots", "lifestyle photos", "hero banner", "campaign image", "moodboard", "ad creative pack", "carousel", or similar. - You have a `ProductContext` (name, brand, references, selling points) — even a partial one. - You want multiple variants from a single call. ## Modes | Mode | What it produces | Default aspect | |------|------------------|----------------| | `product_shot` | Clean studio catalog shot | 1:1 | | `lifestyle_scene` | Real-environment in-use moment | 4:5 | | `closeup_product_with_person` | Tight crop with hands or partial face | 4:5 | | `moodboard_pin` | Pinterest-style moodboard composition | 2:3 | | `hero_banner` | 16:9 campaign banner with negative space | 16:9 | | `social_carousel` | Connected slide system with shared palette | 4:5 | | `ad_creative_pack` | Paid social variants with offer/hook areas | 1:1 | | `virtual_model_tryout` | Model wearing or using product | 4:5 | | `conceptual_product` | Surreal CGI styling, levitation/splash | 1:1 | | `restyle` | Keep subject, change mood/season/styling | mode default | ## Variant strategy `variant_strategy` controls which dimension changes between variants: - `angles` — front, three-quarter, top-down, low angle, side, back - `scenes` — kitchen, café, studio, desk, soft daylight, dinner table - `hooks` — before/after, problem/solution, scroll-stop, social proof - `palette` — warm, cool, mono, high contrast, pastel, earthy - `props` — minimal, matched accessories, ingredient props, lifestyle, food, outdoor - `mixed` — automatic, picks the natural strategy for the mode ## Identity preservation The tool always inserts these clauses (unless `preserve_product_identity=False`): - Preserve logo and printed text exactly - Preserve packaging geometry and proportions - Preserve colorway and material finish - Keep product scale and silhouette accurate If `product.brand_colors` is set, it's also added as a respect-palette constraint. Anything in `product.constraints` is appended verbatim. ## Example ```python images_product_photoshoots_create( product=ProductContext( name="Ember Travel Mug", category="insulated travel mug", brand_name="Ember", brand_colors=["#0F172A", "#FFEED9"], selling_points=[ "leakproof closure", "16-hour heat retention", ], references=[MediaInput(file_id="file_image_gen_..._mug")], ), mode="lifestyle_scene", prompt="Morning commute, modern apartment kitchen, warm light", count=4, variant_strategy="scenes", quality="high", ) ```
-
-
SKILL.md 4.9 KB
--- name: image-generation description: Generate images through the Hyper MCP with the unified `images_generate` tool — text-to-image, image-to-image, and branded ad creatives — choosing the model (gpt-image-2.5-flare, gpt-image-2.5-sunburst, nano-banana, nano-banana-pro, seedream-4.5) per task. 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. metadata: version: 1.0.0 requires_toolkits: - image_gen icon: image_gen short_description: Generate and edit images with one tool and a model choice, from ad creatives to product shots. --- # Image Generation Generate images with the `images_generate` tool. It handles text-to-image, image-to-image (pass `reference_images`), and multi-image composition. By default (`model="auto"`) it picks the best model for the request; set `model` to choose one. ## Requirements This skill assumes the [Hyper MCP](https://app.hyperfx.ai/mcp) is connected to your agent so the `images_generate` tool is available. For brand-consistent ad creative work, Firecrawl must also be configured under your Hyper integrations. ### How to run the tools in this skill Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you: | Surface | Find a tool | Run it | | --- | --- | --- | | MCP client (Claude, Cursor, Codex, ChatGPT) | `search("<what you want to do>")`, then `describe("<name>")` | `call("<name>", {...})` | | Hyper CLI | `hyperai search "<what you want to do>"`, then `hyperai describe <name>` | `hyperai call <name> --json '{...}'` | If a tool is not found, its integration is not connected or not enabled for the workspace: stop and tell the user which integration to connect. ## Call shape ```python images_generate( requests=[{"id": "ad1", "prompt": "A polished SaaS ad, clean composition"}], aspect_ratio="16:9", # "1:1" (default), "9:16", "16:9", "4:5", "5:4", "2:3", "3:2", "3:4", "4:3", "21:9" quality="standard", # "draft" | "standard" | "high" n=1, # 1-4 images per request model="auto", # see "Choosing a model" below ) ``` - **Image-to-image / brand references:** put files in the request: `requests=[{"prompt": "Compose into a gift basket", "reference_images": ["file1", "file2"]}]`. - **Reproducible output:** pass `seed=...`. - **Ground in real-world search:** pass `use_search=True`. - Do not display image URLs — they render automatically in chat. ## Choosing a model `model="auto"` is the right default. Override only when the task clearly calls for a specific model: | Task | `model` | |------|---------| | First-pass concepts / quick ad ideation / everyday generation | `gpt-image-2.5-flare` | | Precise edits and branded compositions from reference images, production creative | `gpt-image-2.5-sunburst` | | Cheap iteration, image-to-image, the widest aspect ratios (adds 1:4, 1:8, 4:1, 8:1) | `nano-banana` | | Readable text inside the image (posters, labels, infographics) or search-grounded scenes | `nano-banana-pro` | | Product photography, material/fabric fidelity, accurate spatial depth | `seedream-4.5` | See [references/image-prompting.md](references/image-prompting.md) for per-model prompt-writing tips. ## Branded / website ad creatives — extract branding first If the user gives a website URL and wants on-brand creatives: 1. Call `firecrawl_branding_extract` with the URL → returns brand colors, fonts, personality/tone, and saved image files (logo, favicon, og_image). 2. Optionally `firecrawl_urls_scrape` with `formats=["screenshot"]` for visual context. 3. Write the prompt using the actual hex colors, font names, and tone, and pass the logo `file_id` in `reference_images`. The branding result's `file` field is a JSON data file, NOT an image — never pass it as a reference. Only `logo.file_id` and `images.*.file_id` are usable images. ## Higher-level workflows For multi-shot product or marketplace work, prefer the workflow tools — they preserve product identity and return structured results: - `images_product_photoshoots_create` — multi-shot product photography (studio, lifestyle, hero, carousel, ad pack). See [references/product-photoshoot.md](references/product-photoshoot.md). - `images_marketplace_cards_create` — marketplace listing image sets (Amazon main + secondary, A+ modules, Shopify). See [references/marketplace-cards.md](references/marketplace-cards.md). ## Reminders - Do NOT display image URLs to the user — they show automatically in chat. - Refine vague prompts unless the user wants verbatim generation. - Match `aspect_ratio` to intent (social, print, web). - Use `quality="high"` for production, `"draft"`/`"standard"` while iterating. - Generated `file_id`s can be reused as `reference_images` in later calls. - For website brand work, call `firecrawl_branding_extract` before generating.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.