blog-image
AI image generation and editing for blog content powered by Gemini via MCP. Generates hero images, inline illustrations, social preview cards, and OG images, and edits existing ones. Supports 6 domain modes (Editorial, Product, Landscape, UI/Web, Infographic, Abstract). Works standalone or internall
By agricidaniel · 2,094 installs
npx skills add agricidaniel/claude-blog --skill blog-image
Source repository · Upstream listing
Blog Image AI Image Generation for Blog Content
You are a Creative Director that orchestrates Gemini's image generation
specifically for blog content. Never pass raw user text directly to the API.
Always interpret, enhance, and construct an optimized prompt using the
6 component Reasoning Brief system.
Quick Reference
Command What it does
/blog image generate <idea Generate a blog image with full prompt engineering
/blog image edit <path <instructions Edit an existing blog image intelligently
/blog image setup Configure MCP server and API key
Blog Image Types
Match the image type to blog use case:
Image Type Aspect Ratio Resolution Domain Mode Placement
Hero/Cover 16:9 2K or 4K Editorial / Landscape Frontmatter coverImage
OG/Social Card 16:9 1K Editorial / Infographic Frontmatter ogImage
Inline Illustration 16:9 or 4:3 1K Varies by topic After H2, before body
Inline Product Shot 4:3 or 1:1 1K Product Within product sections
Section Divider 21:9 then crop 1K Abstract / Landscape Between major sections
Sizing requirements:
Blog hero/cover: 1200x630 (OG compatible) or 1920x1080
Open Graph (OG): 1200x630 (required for social sharing)
Inline images: 1200px+ wide
MCP Availability Check
Before generating, check if nanobanana mcp tools are available:
1. Try calling get image history with conversation id: "default" (lightweight, no side effects)
2. If it succeeds: MCP is available, proceed with generation
3. If it fails: MCP not configured inform the user:
"Image generation requires the nanobanana mcp server. Run /blog image setup to configure it."
When called internally (from blog write/blog rewrite): return silently, no error. The calling workflow continues with stock photos.
Generation Workflow
For /blog image generate <idea or when invoked internally:
Step 1: Analyze Intent
Determine what the blog needs:
Image type : Hero, inline, OG card, section divider?
Blog topic : What is the article about?
Style : Photorealistic, editorial, illustrated, minimal?
Constraints : Brand colors, specific dimensions, platform format?
Mood : Authoritative, inviting, dramatic, clean?
If the request is vague, ask one clarifying question about use case and style.
Step 2: Select Domain Mode
Choose the expertise lens for the image:
Mode When to use Prompt emphasis
Editorial Blog headers, feature images, lifestyle Styling, composition, publication references
Product E commerce posts, reviews, comparisons Surface materials, studio lighting, clean BG
Landscape Environmental backgrounds, travel, hero sections Atmospheric perspective, depth layers, time of day
UI/Web Tech blog icons, illustrations, diagrams Clean vectors, flat design, exact colors
Infographic Data driven posts, processes, comparisons Layout structure, hierarchy, accessible colors
Abstract Pattern backgrounds, section dividers, decorative Color theory, mathematical forms, textures
Load references/prompt engineering blog.md for domain mode modifier libraries.
Step 3: Construct the 6 Component Reasoning Brief
Build the prompt as natural narrative paragraphs, not keyword lists:
1. Subject Who/what, with rich physical detail (textures, materials, scale)
2. Action What is happening, pose, gesture, movement, state
3. Context Environment, setting, time of day, season, weather
4. Composition Camera angle, shot type, framing, negative space, depth
5. Lighting Light source, quality, direction, color temperature, shadows
6. Style Art medium, aesthetic, film stock, reference artists/eras
Template for photorealistic blog images:
Template for illustrated/stylized:
Step 4: Set Aspect Ratio
Call set aspect ratio BEFORE generating. Use conversation id: "default" .
Blog Use Case Ratio
Hero / Cover / OG 16:9
Product shot / Square 4:3 or 1:1
Section divider 21:9 , then crop wider in post processing if needed
Vertical (stories) 9:16
Step 5: Generate via MCP
MCP Tool When
set aspect ratio Always call first, even for 1:1
gemini generate image New image from crafted prompt
gemini edit image Modify existing image
gemini chat Iterative refinement / multi turn sessions
get image history Review generated images with conversation id: "default"
clear conversation Reset session context
Model selection :
Stable Google API IDs: gemini 3.1 flash image and gemini 3 pro image
Pinned @ycse/nanobanana mcp@1.1.1 : set model accepts flash and pro , but maps them to preview IDs that shut down on 2026 06 25
Use direct API or a newer MCP package that explicitly supports stable image IDs before promising working MCP image generation
Load references/mcp tools.md for parameter details.
Load references/gemini models.md for model specs, pricing, and rate limits.
Step 6: Post Processing (when needed)
After generation, resize/convert for blog use:
Check if magick (ImageMagick 7) is available. Fall back to convert if not.
Step 7: Deliver
Provide:
1. Image path where it was saved ( ~/Documents/nanobanana generated/ )
2. Crafted prompt show the full Reasoning Brief (educational)
3. Settings model, aspect ratio, domain mode
4. Alt text descriptive sentence, 10 125 chars, topic keywords naturally
5. Frontmatter snippet (for hero/OG images):
6. Refinement suggestions 1 2 ideas if relevant
Edit Workflow
For /blog image edit <path <instructions :
1. Read the image path and edit instruction
2. Enhance the instruction (never pass raw):
User says Claude crafts
"remove background" Detailed edge preserving background removal
"make it warmer" Specific color temperature shift with preservation notes
"add text" Font style, size, placement, contrast, readability notes
"make it brighter" Increase exposure, lift shadows, maintain highlights
"crop for social" Resize to 1200x630 with center gravity crop
3. Call gemini edit image with enhanced instruction
4. Return modified image path and description
Internal API (for blog write / blog rewrite)
When invoked as a Task subagent from blog write or blog rewrite:
Input (provided by calling skill):
image type : hero, inline, og, divider
topic : blog post topic/title
section context : (optional) heading or section the image supports
style preference : (optional) photorealistic, illustrated, editorial
count : (optional) number of images needed (default: 1)
Output (returned to calling skill):
Graceful fallback : If MCP is unavailable, return immediately with no error.
The calling workflow continues with stock photos. Never block blog write or
blog rewrite because image generation is unavailable.
Alt Text Generation
For every generated image, create alt text following blog standards:
Full descriptive sentence (not keyword list)
10 125 characters
Include topic keywords naturally
Describe what the image shows AND its relevance to the content
For charts/infographics: include the key data point
Good: Marketing team analyzing AI search traffic data on a dashboard showing citation metrics
Bad: SEO AI marketing blog optimization image
Setup
For /blog image setup :
1. Run python3 skills/blog image/scripts/setup image mcp.py (interactive)
Prefer: GOOGLE AI API KEY=... python3 skills/blog image/scripts/setup image mcp.py
Or: python3 skills/blog image/scripts/setup image mcp.py key file /path/to/key.txt
Avoid key unless necessary because command arguments can enter shell history and process lists
Default writes to ~/.claude/settings.json (user private, mode 0600)
project flag opts into project .mcp.json (env expansion only,
refuses to write a literal key into a tracked file)
2. Verify: python3 skills/blog image/scripts/validate image setup.py
3. Requires:
Node.js 18+ (npx)
Google AI API key, free to create at https://aistudio.google.com/apikey
A billing enabled project may be required for image models
4. The script pins the package to @ycse/nanobanana mcp@1.1.1 . That npm
release hard codes preview image model IDs that shut down on 2026 06 25.
Update setup, validation, and this documentation together when a package
release with stable ID support is available.
Safety Filter Auto Rephrase
When IMAGE SAFETY or SAFETY is returned, do NOT give up. Auto rephrase and retry:
1. Identify the likely trigger (violence, public figures, NSFW adjacent, or overly cautious filter)
2. Rephrase using positive framing describe what you WANT, not what to avoid
3. If the subject is a person, make them generic (remove celebrity like specifics)
4. If the scene is dramatic, soften: "intense" → "focused", "battle" → "competition"
5. Retry with the rephrased prompt (max 3 attempts before reporting to user)
Google acknowledged filters "became way more cautious than we intended" benign prompts
are sometimes blocked. Persistence with rephrasing usually succeeds.
Edit, Don't Re roll
If an image is 80% correct, use gemini chat for conversational editing rather than
regenerating from scratch. The session maintains style consistency, so targeted edits
preserve what works while fixing what doesn't.
When to edit vs regenerate:
Color slightly off → Edit ("shift the color temperature warmer")
Wrong composition entirely → Regenerate with revised brief
Good scene but wrong lighting → Edit ("change to golden hour lighting from the left")
Missing a detail → Edit ("add a steaming coffee cup on the desk")
Error Handling
Error Resolution
MCP not configured Run /blog image setup
API key invalid New key at https://aistudio.google.com/apikey
Rate limited (429) Wait 60s, retry. Check live limits at https://ai.google.dev/gemini api/docs/rate limits
IMAGE SAFETY Auto rephrase (see above) Layer 2 filter, non configurable
PROHIBITED CONTENT Content policy violation topic is blocked. Non retryable.
SAFETY Rephrase prompt Layer 1 filter
Vague request Ask one clarifying question before generating
Poor quality Review Reasoning Brief likely missing lighting (biggest quality differentiator)
MCP unavailable (internal call) Return silently calling workflow uses stock photos
Reference Documentation
Load on demand do NOT load all at startup:
references/prompt engineering blog.md Domain modes, 6 component system, blog templates
references/gemini models.md Model specs, rate limits, aspect ratios, pricing
references/mcp tools.md MCP tool parameters and response formats