blog-image
AI image generation and editing for blog content powered by Gemini via MCP. Claude acts as Creative Director - interpreting intent, selecting domain expertise, constructing optimized 6-component prompts (Subject + Action + Context + Composition + Lighting + Style), and orchestrating Gemini for blog-quality results. Generates hero images, inline illustrations, social preview cards, and OG images. Edits existing blog images. Supports 6 blog-optimized domain modes (Editorial, Product, Landscape, UI/Web, Infographic, Abstract). Works standalone via /blog image or internally from blog-write and blog-rewrite workflows. Falls back gracefully when MCP is not configured. Use when user says "blog image", "generate hero image", "blog illustration", "social card", "generate blog image", "edit blog image", "image generate", "blog cover image", "inline image", "OG image".
What this skill does
# 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 | `8:1` or `4:1` | 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` (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 - NEVER as 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: | Blog Use Case | Ratio | |---------------|-------| | Hero / Cover / OG | `16:9` | | Product shot / Square | `4:3` or `1:1` | | Section divider | `8:1` or `4:1` | | Vertical (stories) | `9:16` | ### Step 5: Generate via MCP | MCP Tool | When | |----------|------| | `set_aspect_ratio` | Always call first if ratio differs from 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 | | `clear_conversation` | Reset session context | **Model selection** (use `set_model` MCP tool if switching): - **NB2 Flash** (default): Best for most blog images - fast, 14 ratios, 4K, $0.067/img - **NB Pro**: Use for hero images with text overlays (94% text accuracy) or highest quality - $0.134/img - **Original**: Budget option at $0.039/img - 5 ratios, 1K max 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: ```bash # Resize to blog hero dimensions (1200x630) magick input.png -resize 1200x630^ -gravity center -extent 1200x630 hero.png # Convert to WebP for web optimization magick input.png -quality 85 output.webp # Convert to AVIF (smallest, modern) magick input.png -quality 80 output.avif # Crop to exact OG dimensions magick input.png -resize 1200x630^ -gravity center -extent 1200x630 og-image.png ``` 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): ```yaml coverImage: "/path/to/generated-image.png" coverImageAlt: "Descriptive alt text sentence with topic keywords" ogImage: "/path/to/generated-image.png" ``` 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 o
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.