jezweb/claude-skills2 files

AI Image Generator

Generate AI images using Gemini or GPT APIs directly. Covers model selection (Gemini for scenes; GPT Image 2 for text rendering, batch variations, multi-reference compositing; GPT Image 1.5 for transparent icons), the 5-part prompting framework, API calling patterns, multi-turn editing, and quality assurance. Produces photorealistic scenes, icons, illustrations, OG images, posters, infographics, and product shots. Use when building websites that need images, creating marketing assets, or generating visual content. Triggers: 'generate image', 'ai image', 'create hero image', 'make an icon', 'generate illustration', 'create og image', 'poster', 'infographic', 'image variations', 'gpt-image-2', 'ai art', 'image generation'.

Specification
Skill ID
jezweb/claude-skills/ai-image-generator
Publisher
jezweb
Repository
claude-skills
Installs
0
Files
2
Requires
claude-code-only
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

jezweb/claude-skills/ai-image-generatorInstalls these files
  • SKILL.md
  • references/prompting-guide.md

What this skill tells the agent

AI Image Generator

Generate images using AI APIs (Google Gemini and OpenAI GPT). This skill teaches the prompting patterns and API mechanics for producing professional images directly from Claude Code.

Managed alternative: If you don't want to manage API keys, ImageBot provides a managed image generation service with album templates and brand kit support.

Model Selection

Choose the right model for the job:

NeedModelWhy
Photorealistic scenes / stock photosGemini 3.1 Flash ImageBest depth, complexity, environmental context
Final client scenes (higher detail)Gemini 3 Pro ImageHigher detail, better style consistency
Text on images (posters, OG with copy, infographics)GPT Image 2Text rendering actually works — including multi-script
10-variation style explorationGPT Image 2Native batch — one prompt, 10 variants sharing composition + palette
Multi-reference compositing (product + lifestyle)GPT Image 2Handles lighting, scale, perspective across references
Transparent icons / logosGPT Image 1.5Native RGBA alpha — GPT Image 2 cannot do transparency
Quick drafts / iterationGemini 2.5 Flash ImageFree tier (~500/day)

Rule of thumb: any image with readable text → GPT Image 2 (unless you need transparency, then GPT 1.5). Otherwise → Gemini.

Model IDs

ModelAPI IDProvider
Gemini 3.1 Flash Imagegemini-3.1-flash-image-previewGoogle AI
Gemini 3 Pro Imagegemini-3-pro-image-previewGoogle AI
Gemini 2.5 Flash Imagegemini-2.5-flash-imageGoogle AI
GPT Image 2 (default)gpt-image-2OpenAI
GPT Image 2 (ChatGPT-parity output)chatgpt-image-latestOpenAI
GPT Image 1.5 (transparency-only)gpt-image-1.5OpenAI

Verify model IDs before use — they change frequently:

curl -s "https://generativelanguage.googleapis.com/v1beta/models?key=$GEMINI_API_KEY" | python3 -c "import sys,json; [print(m['name']) for m in json.load(sys.stdin)['models'] if 'image' in m['name'].lower()]"

GPT Image 2 Specifics

Released 2026-04-22. Three capabilities that change when you'd reach for it.

1. Text rendering actually works

Posters, OG images with headlines, infographics with labels, UI mockups, pricing cards. Text is rendered reliably, including non-Latin scripts (Japanese, Korean, Hindi, Bengali). Primary reason to switch from Gemini — Gemini doesn't render readable text at all.

2. Multi-variation batching

One prompt, up to 10 images in a single call. Variants share composition and palette but differ in detail. Good for style exploration before committing, A/B options for a client, rapid ideation.

3. Multi-reference compositing

Feed reference images alongside your prompt — product shots, lifestyle scenes, logos. The model places the product into the scene with correct lighting, scale, perspective. Enables "product in context" workflows without multi-turn editing.

Modes

  • Instant (default, all plans) — generates without a planning pass. Fast, good enough for most cases.
  • Thinking (Plus/Pro/Business plans) — plans layout before drawing. Use when element counts matter ("3 icons in a row", "5 feature bullets") or text must land in specific regions. Fewer re-rolls on complex compositions.

Aspect ratios

3:1 ultra-wide through 1:3 ultra-tall, plus 1:1, 3:2, 2:3, 16:9, 9:16. Wider range than other models — useful for website banners (ultra-wide hero) or mobile story formats (ultra-tall).

Resolution

Up to 2K on the long edge standard. 4K in beta.

Generation time

Up to 2 minutes on complex prompts. Build async UX — don't block on the response. Show progress or spin off and poll.

Constraints

  • No transparent backgrounds. Fall back to gpt-image-1.5 when you need PNG transparency.
  • API Org Verification may be required before the endpoint fires — enable in your OpenAI account settings if you hit auth errors on first call.

Pricing (per 1024×1024 image)

QualityCost
Low$0.006
Medium$0.053
High$0.211

Token pricing: $5/M text in, $10/M text out, $8/M image in, $30/M image out.

The 5-Part Prompting Framework

Build prompts in this order for consistent results:

1. Image Type

Set the genre: "A photorealistic photograph", "An isometric illustration", "A flat vector icon"

2. Subject

Who or what, with specific details: "of a warm, approachable Australian woman in her early 30s, smiling naturally"

3. Environment

Setting and spatial relationships: "in a bright modern home with terracotta decor on wooden shelves behind her"

4. Technical Specs

Camera and lighting: "Shot at 85mm f/2.0, natural window light, head and shoulders framing"

5. Constraints

What to exclude: "Photorealistic, no text, no watermarks, no logos"

Example (Good vs Bad)

BAD — keyword soup:
"professional woman, spa, warm lighting, high quality, 4K"

GOOD — narrative direction:
"A professional skin treatment scene in a warm clinical setting.
A practitioner wearing blue medical gloves uses a microneedling pen
on the client's forehead. The client lies on a white treatment bed,
eyes closed, relaxed. Warm golden-hour light from a window to the
left. Terracotta-toned wall visible in the background. Shot at
85mm f/2.0, shallow depth of field. No text, no watermarks."

Workflow

1. Determine Image Need

PurposeAspect RatioModel
Hero banner (no text)16:9 or 21:9Gemini
Hero banner with headline copy16:9 or 3:1 ultra-wideGPT Image 2
Service card4:3 or 3:4Gemini
Profile / avatar1:1Gemini
Icon / badge (transparent)1:1GPT Image 1.5
OG / social share (no text)1.91:1Gemini
OG / social share with copy1.91:1GPT Image 2
Poster / infographic / pricing card / any typography-heavyvariesGPT Image 2
Style exploration (10 variants of one concept)anyGPT Image 2 (batch)
Instagram post1:1 or 4:5Gemini
Mobile hero9:16Gemini

2. Build the Prompt

Use the 5-part framework. Refer to references/prompting-guide.md for detailed photography parameters.

3. Generate via API

Gemini (Python — handles shell escaping correctly)
python3 << 'PYEOF'
import json, base64, urllib.request, os, sys

GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY")
if not GEMINI_API_KEY:
    print("Set GEMINI_API_KEY environment variable"); sys.exit(1)

model = "gemini-3.1-flash-image-preview"
url = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent?key={GEMINI_API_KEY}"

prompt = """A professional photograph of a modern co-working space in
Newcastle, Australia. Natural light floods through floor-to-ceiling
windows. Three people collaborate at a standing desk — one pointing
at a laptop screen. Exposed brick wall, potted fiddle-leaf fig,
coffee cups on the desk. Shot at 35mm f/4.0, environmental portrait
style. No text, no watermarks, no logos."""

payload = json.dumps({
    "contents": [{"parts": [{"text": prompt}]}],
    "generationConfig": {
        "responseModalities": ["TEXT", "IMAGE"],
        "temperature": 0.8
    }
}).encode()

req = urllib.request.Request(url, data=payload, headers={
    "Content-Type": "application/json",
    "User-Agent": "ImageGen/1.0"
})

resp = urllib.request.urlopen(req, timeout=120)
result = json.loads(resp.read())

# Extract image from response
for part in result["candidates"][0]["content"]["parts"]:
    if "inlineData" in part:
        img_data = base64.b64decode(part["inlineData"]["data"])
        output_path = "hero-image.png"
        with open(output_path, "wb") as f:
            f.write(img_data)
        print(f"Saved: {output_path} ({len(img_data):,} bytes)")
        break
PYEOF

Use this skill in a project

Open any RiverX project, search the Skills panel for jezweb/claude-skills/ai-image-generator, and install it in one click.

Use this skill