Skip to content
Content
Skill

/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

From plugin
claude-blog
1.6k32 skills20 agents
Install
$ npx -y skills add AgriciDaniel/claude-blog --skill blog-image --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/blog-image

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

blog-image.SKILL.md
name: blog-image
description: >
  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 internally from
  blog-write and blog-rewrite; falls back gracefully when MCP is unavailable.
  Use when user says "blog image", "generate hero image", "blog illustration",
  "edit blog image", "OG image".
user-invokable: true
argument-hint: "[generate|edit|setup] [description-or-path]"
license: MIT
metadata:
  author: AgriciDaniel
  version: "2.1.1"
  mcp-package: "@ycse/nanobanana-mcp"

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:**

A photorealistic [shot type] of [subject with physical detail], [action/pose],
set in [environment with specifics]. [Lighting conditions] create [mood].
Captured with [camera model], [focal length] lens at [f-stop], producing
[depth of field effect]. [Color palette/grading notes]. Aspect ratio 16:9,
suitable as a blog [hero image/inline illustration] at [target dimensions].

**Template for illustrated/stylized:**

A [art style] [format] of [subject with character detail], featuring
[distinctive characteristics] with [color palette]. [Line style] and
[shading technique]. Background is [description]. [Mood/atmosphere].

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-t

Read more
Ships withclaude-blog

claude-blog is a Claude Code skill suite that writes, optimizes, audits, localizes, and refreshes blog content at scale. Every article is evaluated for Google-aligned usefulness and internal AI citation readiness heuristics.

Get the whole plugin

Other skills on claude-blog.