skills/image/SKILL.md
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. 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", "生成圖片", "部落格圖片".
npx skillsauth add rainday/smart-blog-skills imageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
| Command | What it does |
|---------|-------------|
| /smart-blog-skills:image generate <idea> | Generate a blog image with full prompt engineering |
| /smart-blog-skills:image edit <path> <instructions> | Edit an existing blog image intelligently |
| /smart-blog-skills:image setup | Configure MCP server and API key |
| 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 |
Before generating, check if nanobanana-mcp tools are available:
get_image_history (lightweight, no side effects)/smart-blog-skills:image setup
Determine:
If the request is vague, ask one clarifying question about use case and style.
| 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 | | 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 |
Build the prompt as natural narrative paragraphs:
Template for photorealistic:
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. [Color palette/grading].
Aspect ratio 16:9, suitable as a blog hero image.
Call set_aspect_ratio BEFORE generating:
16:94:3 or 1:1| 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 |
Model selection:
Provide:
coverImage: "/path/to/generated-image.png"
coverImageAlt: "Descriptive alt text sentence with topic keywords"
When IMAGE_SAFETY or SAFETY is returned, auto-rephrase and retry:
| Error | Resolution |
|-------|-----------|
| MCP not configured | Run /smart-blog-skills:image setup |
| API key invalid | New key at https://aistudio.google.com/apikey |
| Rate limited (429) | Wait 60s, retry |
| IMAGE_SAFETY | Auto-rephrase (see above) |
| MCP unavailable (internal call) | Return silently |
documentation
Smart Blog 寫文章。從零寫一篇新的部落格文章,包含模板選擇、研究、 YouTube 影片嵌入、Humanizer 反 AI 審稿、品質檢查。 內建反幻覺驗證,繁體中文優先。 Use when user says "write blog", "寫文章", "寫部落格", "new blog post", "smart-blog write", "blog write".
testing
Translate existing blog posts into one or more target languages with SEO-optimized localization. Produces native-quality translations that preserve markdown structure, frontmatter, schema JSON-LD, image and chart embeds, and citation capsules. Localizes keywords, meta tags, numbers, dates, currencies, and quote styles per locale. Flags machine-translation artifacts for review. Run BEFORE localize: this handles language conversion; localize handles cultural adaptation after translation completes. Use when user says "translate blog", "blog translate", "uebersetzen", "traduire", "traducir", "translate post", "blog auf Deutsch", "blog en espanol".
development
Extract, suggest, and sync tags and categories for blog posts across all major CMS platforms. Supports WordPress REST API, Shopify GraphQL, Ghost Content API, Strapi REST/GraphQL, and Sanity GROQ. Generates tag suggestions from content analysis (keyword frequency, heading extraction, semantic grouping), enforces minimum post-count thresholds to prevent thin tag archives, and syncs taxonomy via authenticated API calls. Use when user says "tags", "categories", "taxonomy", "tag suggestions", "sync tags", "WordPress tags", "Shopify tags".
development
Blog strategy development including topic cluster architecture with hub-and-spoke design, audience mapping, competitive landscape analysis, AI citation surface strategy across ChatGPT/Perplexity/AI Overviews, distribution channel planning (YouTube, Reddit, review platforms for GEO), content scoring targets, measurement framework, and content differentiation through original research and first-hand experience. Use when user says "blog strategy", "content strategy", "blog positioning", "what should I blog about", "blog topics", "content pillars", "blog ideation".