cover-image
Cover Image Generator
Generate hand-drawn style cover images for articles with multiple style options.
Usage
# From markdown file (auto-select style based on content)
/cover-image path/to/article.md
# Specify a style
/cover-image path/to/article.md --style blueprint
/cover-image path/to/article.md --style warm
/cover-image path/to/article.md --style dark-atmospheric
# Without title text
/cover-image path/to/article.md --no-title
# Combine options
/cover-image path/to/article.md --style minimal --no-title
# From direct text input
/cover-image
[paste content or describe topic]
# Direct input with style
/cover-image --style playful
[paste content]
Options
| Option | Description |
|---|---|
--style <name> |
Specify cover style (see Style Gallery below) |
--aspect <ratio> |
Aspect ratio: 2.35:1 (cinematic, default), 16:9 (widescreen), 1:1 (social) |
--lang <code> |
Output language for title text (en, zh, ja, etc.) |
--no-title |
Generate cover without title text (visual only) |
Style Gallery
| Style | Description |
|---|---|
elegant (Default) |
Refined, sophisticated, understated |
flat-doodle |
Bold outlines, pastel colors, cute rounded shapes |
blueprint |
Technical schematics, engineering precision |
bold-editorial |
Magazine cover impact, dramatic typography |
chalkboard |
Black chalkboard, colorful chalk drawings |
dark-atmospheric |
Cinematic dark mode, glowing accents |
editorial-infographic |
Magazine explainer, visual storytelling |
fantasy-animation |
Ghibli/Disney inspired, whimsical charm |
intuition-machine |
Technical briefing, bilingual labels |
minimal |
Ultra-clean, zen-like, focused |
nature |
Organic, calm, earthy |
notion |
Clean SaaS dashboard, productivity styling |
pixel-art |
Retro 8-bit, nostalgic gaming aesthetic |
playful |
Fun, creative, whimsical |
retro |
Halftone dots, vintage badges, classic |
sketch-notes |
Hand-drawn, educational, warm |
vector-illustration |
Flat vector, black outlines, retro colors |
vintage |
Aged paper, historical, expedition style |
warm |
Friendly, approachable, human-centered |
watercolor |
Soft hand-painted, natural warmth |
Detailed style definitions: references/styles/<style>.md
Auto Style Selection
When no --style is specified, system analyzes content to select best style:
| Content Signals | Selected Style |
|---|---|
| Architecture, system design, engineering | blueprint |
| Product launch, keynote, marketing, brand | bold-editorial |
| Education, classroom, tutorial, teaching | chalkboard |
| Entertainment, creative, premium, cinematic | dark-atmospheric |
| Technology explainer, science, research | editorial-infographic |
| Storytelling, children, fantasy, magical | fantasy-animation |
| Technical docs, academic, bilingual | intuition-machine |
| Personal story, emotion, growth, life | warm |
| Simple, zen, focus, essential | minimal |
| Fun, easy, beginner, casual | playful |
| Nature, eco, wellness, health, organic | nature |
| Pop culture, 80s/90s nostalgia, badges | retro |
| Product, SaaS, dashboard, productivity | notion |
| Productivity, workflow, app, tools, cute | flat-doodle |
| Gaming, retro tech, developer, 8-bit | pixel-art |
| Educational, tutorial, knowledge sharing | sketch-notes |
| Creative proposals, brand, toy-like | vector-illustration |
| History, exploration, heritage, biography | vintage |
| Lifestyle, travel, food, personal | watercolor |
| Business, professional, strategy, analysis | elegant |
File Management
Output Directory
Each session creates an independent directory named by content slug:
cover-image/{topic-slug}/
├── source-{slug}.{ext} # Source files (text, images, etc.)
├── prompts/
│ └── cover.md
└── cover.png
Slug Generation:
- Extract main topic from content (2-4 words, kebab-case)
- Example: "The Future of AI" →
future-of-ai
Conflict Resolution
If cover-image/{topic-slug}/ already exists:
- Append timestamp:
{topic-slug}-YYYYMMDD-HHMMSS - Example:
ai-futureexists →ai-future-20260118-143052
Source Files
Copy all sources with naming source-{slug}.{ext}:
source-article.md(main text content)source-logo.png(image from conversation)
Multiple sources supported: text, images, files from conversation.
Workflow
Step 1: Analyze Content
-
Save source content (if not already a file):
- If user provides a file path: use as-is
- If user pastes content: save to
source.mdin target directory
-
Extract key information:
- Main topic: What is the article about?
- Core message: What's the key takeaway?
- Tone: Serious, playful, inspiring, educational?
- Keywords: Identify style-signaling words
-
Language detection:
- Detect source language from content
- Detect user language from conversation context
- Note if source_language ≠ user_language (will ask in Step 3)
Step 2: Determine Options
-
Style selection:
- If
--stylespecified, use that style - Otherwise, scan content for style signals and auto-select 3 candidates
- Default to
elegantif no clear signals
- If
-
Aspect ratio:
- If
--aspectspecified, use that ratio - Otherwise, prepare options: 2.35:1 (cinematic), 16:9 (widescreen), 1:1 (social)
- If
Step 3: Confirm Options
Purpose: Let user confirm all options in a single step before generation.
IMPORTANT: Present ALL options in a single confirmation step using AskUserQuestion. Do NOT interrupt workflow with multiple separate confirmations.
Determine which questions to ask:
| Question | When to Ask |
|---|---|
| Style | Always (required) |
| Aspect ratio | Always (offer common options) |
| Language | Only if source_language ≠ user_language |
Present options (use AskUserQuestion with all applicable questions):
Question 1 (Style) - always:
- Style A (recommended): [style name] - [brief description]
- Style B: [style name] - [brief description]
- Style C: [style name] - [brief description]
- Custom: Provide custom style reference
Question 2 (Aspect) - always:
- 2.35:1 Cinematic (Recommended) - ultra-wide, dramatic
- 16:9 Widescreen - standard video/presentation
- 1:1 Square - social media optimized
Question 3 (Language) - only if source ≠ user language:
- [Source language] (matches content)
- [User language] (your preference)
Language handling:
- If source language = user language: Just inform user (e.g., "Title will be in Chinese")
- If different: Ask which language to use for title text
Step 4: Generate Cover Concept
Create a cover image concept based on selected style:
Title (if included, max 8 characters):
- Distill the core message into a punchy headline
- Use hooks: numbers, questions, contrasts, pain points
- Skip if
--no-titleflag is used
Visual Elements:
- Style-appropriate imagery and icons
- 1-2 symbolic elements representing the topic
- Metaphors or analogies that fit the style
Step 5: Create Prompt File
Save prompt to prompts/cover.md with confirmed options.
All prompts are written in the user's confirmed language preference.
Prompt Format:
Cover theme: [topic in 2-3 words]
Style: [selected style name]
Aspect ratio: [confirmed aspect ratio]
[If title included:]
Title text: [8 characters or less, in confirmed language]
Subtitle: [optional, in confirmed language]
Visual composition:
- Main visual: [description matching style]
- Layout: [positioning based on title inclusion and aspect ratio]
- Decorative elements: [style-appropriate elements]
Color scheme:
- Primary: [style primary color]
- Background: [style background color]
- Accent: [style accent color]
Style notes: [specific style characteristics to emphasize]
[If no title:]
Note: No title text, pure visual illustration only.
Step 6: Generate Image
Image Generation Skill Selection:
- Check available image generation skills
- If multiple skills available, ask user to choose
Generation: Call selected image generation skill with prompt file, output path, and confirmed aspect ratio.
Step 7: Output Summary
Cover Image Generated!
Topic: [topic]
Style: [style name]
Aspect: [aspect ratio]
Title: [cover title] (or "No title - visual only")
Language: [confirmed language]
Location: [output path]
Preview the image to verify it matches your expectations.
Notes
- Cover should be instantly understandable at small preview sizes
- Title (if included) must be readable and impactful
- Visual metaphors work better than literal representations
- Maintain style consistency throughout the cover
- Image generation typically takes 10-30 seconds
- Title text uses user's confirmed language preference
- Aspect ratio: 2.35:1 for cinematic/dramatic, 16:9 for widescreen, 1:1 for social media
Extension Support
Custom styles and configurations via EXTEND.md.
Check paths (priority order):
.content-gen-skills/cover-image/EXTEND.md(project)~/.content-gen-skills/cover-image/EXTEND.md(user)
If found, load before Step 1. Extension content overrides defaults.
More from zlh-428/naruto-skills
url-to-markdown
Fetch any URL and convert to markdown using Chrome CDP. Supports two modes - auto-capture on page load, or wait for user signal (for pages requiring login). Use when user wants to save a webpage as markdown.
32comic
Knowledge comic creator supporting multiple styles (Logicomix/Ligne Claire, Ohmsha manga guide). Creates original educational comics with detailed panel layouts and sequential image generation. Use when user asks to create "知识漫画", "教育漫画", "biography comic", "tutorial comic", or "Logicomix-style comic".
21article-illustrator
Smart article illustration skill. Analyzes article content and generates illustrations at positions requiring visual aids with multiple style options. Use when user asks to "add illustrations to article", "generate images for article", or "illustrate article".
17infographic
Generate professional infographics with 20 layout types and 17 visual styles. Analyzes content, recommends layout×style combinations, and generates publication-ready infographics. Use when user asks to create "infographic", "信息图", or "visual summary".
13image-gen
AI SDK-based image generation using official OpenAI and Google APIs. Supports text-to-image, reference images, aspect ratios, and quality presets.
7release-skills
Release workflow for naruto-skills plugin. Use when user says "release", "发布", "push", "推送", "new version", "新版本", "bump version", "更新版本", or wants to publish changes to remote. Analyzes changes since last tag, updates CHANGELOG (EN/CN), bumps marketplace.json version, commits, and creates version tag. MUST be used before any git push with uncommitted skill changes.
6