Cover Image Generator
Generate elegant cover images for articles with 5-dimensional customization. Supports Chinese text rendering.
Usage
# Auto-select dimensions based on content
/cover-image path/to/article.md
# Quick mode: skip confirmation
/cover-image article.md --quick
# Specify dimensions
/cover-image article.md --type conceptual --palette warm --rendering flat-vector
# WeChat Official Account cover
/cover-image article.md --aspect 2.35:1
# Specify provider
/cover-image article.md --provider qwen
# Use style preset
/cover-image article.md --style tech-dark
# Large font for better visibility
/cover-image article.md --font-size large
# Generate multiple options
/cover-image article.md --n 3
# With reference images (Google/OpenAI only)
/cover-image article.md --ref style-ref.png
# Direct content input
/cover-image --palette mono --aspect 1:1 --quick
[paste content]
Options
| Option |
Description |
--type <name> |
hero, conceptual, typography, metaphor, scene, minimal |
--palette <name> |
warm, elegant, cool, dark, earth, vivid, pastel, mono, retro |
--rendering <name> |
flat-vector, hand-drawn, painterly, digital, pixel, chalk |
--text <level> |
none, title-only, title-subtitle, text-rich |
--mood <level> |
subtle, balanced, bold |
--font <name> |
clean, handwritten, serif, display |
--font-size <size> |
small, medium (default), large, xlarge |
--aspect <ratio> |
16:9 (default), 2.35:1 (公众号封面), 4:3, 3:2, 1:1, 3:4 |
--provider <name> |
qwen (default), openai, google |
--style <preset> |
tech-dark, tech-clean, lifestyle-warm, business-elegant, announcement-bold, minimal-zen, creative-playful, retro-vintage |
--lang <code> |
Title language (en, zh, ja, etc.) |
--no-title |
Alias for --text none |
--n <count> |
Number of images to generate (1-4) |
--quick |
Skip confirmation, use auto-selection |
--ref <files...> |
Reference images for style/composition guidance |
Providers
| Provider |
Model |
Text Rendering |
Chinese Support |
Price |
qwen |
qwen-image-plus |
Excellent |
Native Chinese |
0.2 CNY/image |
openai |
gpt-image-1 |
Good |
Limited |
~$0.04/image |
google |
gemini-2.0-flash-exp |
Good |
Limited |
Free tier available |
Provider Selection Logic
--provider specified -> use it
- Chinese title detected -> auto-select
qwen
- Reference images provided -> use
google or openai
- Default ->
qwen
Qwen-Image (Default)
Best for Chinese text rendering. Native support for Chinese characters.
API Endpoint: https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis
Environment Variable: DASHSCOPE_API_KEY
Supported Sizes: 1664*928, 1024*1024, 928*1664, 1472*1104, 1104*1472
OpenAI
Good for English text and creative designs.
Environment Variable: OPENAI_API_KEY
Supported Sizes: 1024x1024, 1536x1024, 1024x1536
Google
Good for multimodal generation with reference images.
Environment Variable: GOOGLE_API_KEY
Supported Sizes: Various aspect ratios supported
Five Dimensions
| Dimension |
Values |
Default |
| Type |
hero, conceptual, typography, metaphor, scene, minimal |
auto |
| Palette |
warm, elegant, cool, dark, earth, vivid, pastel, mono, retro |
auto |
| Rendering |
flat-vector, hand-drawn, painterly, digital, pixel, chalk |
auto |
| Text |
none, title-only, title-subtitle, text-rich |
title-only |
| Mood |
subtle, balanced, bold |
balanced |
| Font |
clean, handwritten, serif, display |
clean |
Auto-selection rules: references/auto-selection.md
Galleries
Types: hero, conceptual, typography, metaphor, scene, minimal
-> Details: references/types.md
Palettes: warm, elegant, cool, dark, earth, vivid, pastel, mono, retro
-> Details: references/palettes/
Renderings: flat-vector, hand-drawn, painterly, digital, pixel, chalk
-> Details: references/renderings/
Text Levels: none (pure visual) | title-only (default) | title-subtitle | text-rich (with tags)
-> Details: references/dimensions/text.md
Mood Levels: subtle (low contrast) | balanced (default) | bold (high contrast)
-> Details: references/dimensions/mood.md
Fonts: clean (sans-serif) | handwritten | serif | display (bold decorative)
-> Details: references/dimensions/font.md
File Structure
Output directory per default_output_dir preference:
same-dir: {article-dir}/
imgs-subdir: {article-dir}/imgs/
independent (default): cover-image/{topic-slug}/
<output-dir>/
├── source-{slug}.{ext} # Source files
├── refs/ # Reference images (if provided)
│ ├── ref-01-{slug}.{ext}
│ └── ref-01-{slug}.md # Description file
├── prompts/cover.md # Generation prompt
└── cover.png # Output image
Slug: 2-4 words, kebab-case. Conflict: append -YYYYMMDD-HHMMSS
Workflow
Progress Checklist
Cover Image Progress:
- [ ] Step 1: Analyze content + save refs + determine output dir
- [ ] Step 2: Confirm options (6 dimensions + provider) unless --quick
- [ ] Step 3: Create prompt
- [ ] Step 4: Generate image
- [ ] Step 5: Resize for platform (if needed)
- [ ] Step 6: Completion report
Step 1: Analyze Content
- Save reference images (if provided) -> references/workflow/reference-images.md
- Save source content (if pasted, save to
source.md)
- Analyze content: topic, tone, keywords, visual metaphors
- Deep analyze references: Extract specific, concrete elements
- Detect language: Compare source, user input
- Determine output directory: Per File Structure rules
- Auto-select provider: Based on language and references
Step 2: Confirm Options
Full confirmation flow: references/workflow/confirm-options.md
| Condition |
Skipped |
Still Asked |
--quick |
6 dimensions + provider |
Aspect ratio (unless --aspect) |
All 6 + --aspect + --provider specified |
All |
None |
Step 3: Create Prompt
Save to prompts/cover.md. Template: references/workflow/prompt-template.md
CRITICAL - References in Frontmatter:
- Files saved to
refs/ -> Add to frontmatter references list
- Style extracted verbally (no file) -> Omit
references, describe in body
- Before writing -> Verify:
test -f refs/ref-NN-{slug}.{ext}
Reference elements in body MUST be detailed, prefixed with "MUST"/"REQUIRED", with integration approach.
Step 4: Generate Image
- Backup existing
cover.png if regenerating
- Select provider based on language and options
- Process references from prompt frontmatter:
direct usage -> pass reference images directly (google/openai only)
style/palette -> extract traits, append to prompt
- Generate via provider API:
- Qwen: POST to dashscope API, poll for result
- OpenAI: Use ImageGen tool or API
- Google: Use ImageGen tool with reference images
- On failure: auto-retry once
Step 5: Resize for Platform
Resize generated image to target platform size:
| Platform |
Target Size |
Aspect Ratio |
| 公众号封面 |
900x383 |
2.35:1 |
| 博客/视频 |
1920x1080 |
16:9 |
| 小红书 |
1080x1080 |
1:1 |
| 手机海报 |
1080x1440 |
3:4 |
Step 6: Completion Report
Cover Generated!
Provider: [provider]
Topic: [topic]
Type: [type] | Palette: [palette] | Rendering: [rendering]
Text: [text] | Mood: [mood] | Font: [font] | Aspect: [ratio]
Title: [title or "visual only"]
Language: [lang]
References: [N images or "extracted style" or "none"]
Location: [directory path]
Files:
- source-{slug}.{ext}
- prompts/cover.md
- cover.png
- cover-{platform}.png (if resized)
Composition Principles
- Whitespace: 40-60% breathing room
- Visual anchor: Main element centered or offset left
- Characters: Simplified silhouettes; NO realistic humans
- Title: Use exact title from user/source; never invent
Aspect Ratios
| Ratio |
Platform |
Use Case |
2.35:1 |
微信公众号封面 |
公众号首图,900x383px |
16:9 |
通用宽屏 |
博客、视频封面 |
1:1 |
社交媒体 |
微博、小红书、Instagram |
4:3 |
经典比例 |
演示文稿、传统媒体 |
3:2 |
摄影标准 |
照片风格封面 |
3:4 |
竖版 |
手机端、海报 |
Environment Variables
References
Dimensions: text.md | mood.md | font.md
Palettes: references/palettes/
Renderings: references/renderings/
Types: references/types.md
Style Presets: references/style-presets.md
Auto-Selection: references/auto-selection.md
Visual Elements: references/visual-elements.md
Workflow: confirm-options.md | prompt-template.md | reference-images.md | qwen-api.md
1---2name: cover-image3description: Generate article cover images with 5 dimensions (type, palette, rendering, text, mood). Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to 'generate cover image', 'create article cover', or 'make cover'.4---5
6# Cover Image Generator
7
8Generate elegant cover images for articles with 5-dimensional customization. Supports Chinese text rendering.
9
10## Usage
11
12```bash
13# Auto-select dimensions based on content
14/cover-image path/to/article.md
15
16# Quick mode: skip confirmation
17/cover-image article.md --quick
18
19# Specify dimensions
20/cover-image article.md --type conceptual --palette warm --rendering flat-vector
21
22# WeChat Official Account cover
23/cover-image article.md --aspect 2.35:1
24
25# Specify provider
26/cover-image article.md --provider qwen
27
28# Use style preset
29/cover-image article.md --style tech-dark
30
31# Large font for better visibility
32/cover-image article.md --font-size large
33
34# Generate multiple options
35/cover-image article.md --n 3
36
37# With reference images (Google/OpenAI only)
38/cover-image article.md --ref style-ref.png
39
40# Direct content input
41/cover-image --palette mono --aspect 1:1 --quick
42[paste content]
43```
44
45## Options
46
47| Option | Description |
48|--------|-------------|
49| `--type <name>` | hero, conceptual, typography, metaphor, scene, minimal |
50| `--palette <name>` | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro |
51| `--rendering <name>` | flat-vector, hand-drawn, painterly, digital, pixel, chalk |
52| `--text <level>` | none, title-only, title-subtitle, text-rich |
53| `--mood <level>` | subtle, balanced, bold |
54| `--font <name>` | clean, handwritten, serif, display |
55| `--font-size <size>` | small, medium (default), large, xlarge |
56| `--aspect <ratio>` | 16:9 (default), 2.35:1 (公众号封面), 4:3, 3:2, 1:1, 3:4 |
57| `--provider <name>` | qwen (default), openai, google |
58| `--style <preset>` | tech-dark, tech-clean, lifestyle-warm, business-elegant, announcement-bold, minimal-zen, creative-playful, retro-vintage |
59| `--lang <code>` | Title language (en, zh, ja, etc.) |
60| `--no-title` | Alias for `--text none` |
61| `--n <count>` | Number of images to generate (1-4) |
62| `--quick` | Skip confirmation, use auto-selection |
63| `--ref <files...>` | Reference images for style/composition guidance |
64
65## Providers
66
67| Provider | Model | Text Rendering | Chinese Support | Price |
68|----------|-------|----------------|-----------------|-------|
69| `qwen` | qwen-image-plus | Excellent | Native Chinese | 0.2 CNY/image |
70| `openai` | gpt-image-1 | Good | Limited | ~$0.04/image |
71| `google` | gemini-2.0-flash-exp | Good | Limited | Free tier available |
72
73### Provider Selection Logic
74
751. `--provider` specified -> use it
762. Chinese title detected -> auto-select `qwen`
773. Reference images provided -> use `google` or `openai`
784. Default -> `qwen`
79
80### Qwen-Image (Default)
81
82Best for Chinese text rendering. Native support for Chinese characters.
83
84**API Endpoint**: `https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis`
85
86**Environment Variable**: `DASHSCOPE_API_KEY`
87
88**Supported Sizes**: `1664*928`, `1024*1024`, `928*1664`, `1472*1104`, `1104*1472`
89
90### OpenAI
91
92Good for English text and creative designs.
93
94**Environment Variable**: `OPENAI_API_KEY`
95
96**Supported Sizes**: `1024x1024`, `1536x1024`, `1024x1536`
97
98### Google
99
100Good for multimodal generation with reference images.
101
102**Environment Variable**: `GOOGLE_API_KEY`
103
104**Supported Sizes**: Various aspect ratios supported
105
106## Five Dimensions
107
108| Dimension | Values | Default |
109|-----------|--------|---------|
110| **Type** | hero, conceptual, typography, metaphor, scene, minimal | auto |
111| **Palette** | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro | auto |
112| **Rendering** | flat-vector, hand-drawn, painterly, digital, pixel, chalk | auto |
113| **Text** | none, title-only, title-subtitle, text-rich | title-only |
114| **Mood** | subtle, balanced, bold | balanced |
115| **Font** | clean, handwritten, serif, display | clean |
116
117Auto-selection rules: [references/auto-selection.md](references/auto-selection.md)
118
119## Galleries
120
121**Types**: hero, conceptual, typography, metaphor, scene, minimal
122-> Details: [references/types.md](references/types.md)
123
124**Palettes**: warm, elegant, cool, dark, earth, vivid, pastel, mono, retro
125-> Details: [references/palettes/](references/palettes/)
126
127**Renderings**: flat-vector, hand-drawn, painterly, digital, pixel, chalk
128-> Details: [references/renderings/](references/renderings/)
129
130**Text Levels**: none (pure visual) | title-only (default) | title-subtitle | text-rich (with tags)
131-> Details: [references/dimensions/text.md](references/dimensions/text.md)
132
133**Mood Levels**: subtle (low contrast) | balanced (default) | bold (high contrast)
134-> Details: [references/dimensions/mood.md](references/dimensions/mood.md)
135
136**Fonts**: clean (sans-serif) | handwritten | serif | display (bold decorative)
137-> Details: [references/dimensions/font.md](references/dimensions/font.md)
138
139## File Structure
140
141Output directory per `default_output_dir` preference:
142- `same-dir`: `{article-dir}/`
143- `imgs-subdir`: `{article-dir}/imgs/`
144- `independent` (default): `cover-image/{topic-slug}/`
145
146```
147<output-dir>/
148├── source-{slug}.{ext} # Source files
149├── refs/ # Reference images (if provided)
150│ ├── ref-01-{slug}.{ext}
151│ └── ref-01-{slug}.md # Description file
152├── prompts/cover.md # Generation prompt
153└── cover.png # Output image
154```
155
156**Slug**: 2-4 words, kebab-case. Conflict: append `-YYYYMMDD-HHMMSS`
157
158## Workflow
159
160### Progress Checklist
161
162```
163Cover Image Progress:
164- [ ] Step 1: Analyze content + save refs + determine output dir
165- [ ] Step 2: Confirm options (6 dimensions + provider) unless --quick
166- [ ] Step 3: Create prompt
167- [ ] Step 4: Generate image
168- [ ] Step 5: Resize for platform (if needed)
169- [ ] Step 6: Completion report
170```
171
172### Step 1: Analyze Content
173
1741. **Save reference images** (if provided) -> [references/workflow/reference-images.md](references/workflow/reference-images.md)
1752. **Save source content** (if pasted, save to `source.md`)
1763. **Analyze content**: topic, tone, keywords, visual metaphors
1774. **Deep analyze references**: Extract specific, concrete elements
1785. **Detect language**: Compare source, user input
1796. **Determine output directory**: Per File Structure rules
1807. **Auto-select provider**: Based on language and references
181
182### Step 2: Confirm Options
183
184Full confirmation flow: [references/workflow/confirm-options.md](references/workflow/confirm-options.md)
185
186| Condition | Skipped | Still Asked |
187|-----------|---------|-------------|
188| `--quick` | 6 dimensions + provider | Aspect ratio (unless `--aspect`) |
189| All 6 + `--aspect` + `--provider` specified | All | None |
190
191### Step 3: Create Prompt
192
193Save to `prompts/cover.md`. Template: [references/workflow/prompt-template.md](references/workflow/prompt-template.md)
194
195**CRITICAL - References in Frontmatter**:
196- Files saved to `refs/` -> Add to frontmatter `references` list
197- Style extracted verbally (no file) -> Omit `references`, describe in body
198- Before writing -> Verify: `test -f refs/ref-NN-{slug}.{ext}`
199
200**Reference elements in body** MUST be detailed, prefixed with "MUST"/"REQUIRED", with integration approach.
201
202### Step 4: Generate Image
203
2041. **Backup existing** `cover.png` if regenerating
2052. **Select provider** based on language and options
2063. **Process references** from prompt frontmatter:
207 - `direct` usage -> pass reference images directly (google/openai only)
208 - `style`/`palette` -> extract traits, append to prompt
2094. **Generate** via provider API:
210 - **Qwen**: POST to dashscope API, poll for result
211 - **OpenAI**: Use ImageGen tool or API
212 - **Google**: Use ImageGen tool with reference images
2135. On failure: auto-retry once
214
215### Step 5: Resize for Platform
216
217Resize generated image to target platform size:
218
219| Platform | Target Size | Aspect Ratio |
220|----------|-------------|--------------|
221| 公众号封面 | 900x383 | 2.35:1 |
222| 博客/视频 | 1920x1080 | 16:9 |
223| 小红书 | 1080x1080 | 1:1 |
224| 手机海报 | 1080x1440 | 3:4 |
225
226### Step 6: Completion Report
227
228```
229Cover Generated!
230
231Provider: [provider]
232Topic: [topic]
233Type: [type] | Palette: [palette] | Rendering: [rendering]
234Text: [text] | Mood: [mood] | Font: [font] | Aspect: [ratio]
235Title: [title or "visual only"]
236Language: [lang]
237References: [N images or "extracted style" or "none"]
238Location: [directory path]
239
240Files:
241- source-{slug}.{ext}
242- prompts/cover.md
243- cover.png
244- cover-{platform}.png (if resized)
245```
246
247## Composition Principles
248
249- **Whitespace**: 40-60% breathing room
250- **Visual anchor**: Main element centered or offset left
251- **Characters**: Simplified silhouettes; NO realistic humans
252- **Title**: Use exact title from user/source; never invent
253
254## Aspect Ratios
255
256| Ratio | Platform | Use Case |
257|-------|----------|----------|
258| `2.35:1` | 微信公众号封面 | 公众号首图,900x383px |
259| `16:9` | 通用宽屏 | 博客、视频封面 |
260| `1:1` | 社交媒体 | 微博、小红书、Instagram |
261| `4:3` | 经典比例 | 演示文稿、传统媒体 |
262| `3:2` | 摄影标准 | 照片风格封面 |
263| `3:4` | 竖版 | 手机端、海报 |
264
265## Environment Variables
266
267| Variable | Required For | Get From |
268|----------|--------------|----------|
269| `DASHSCOPE_API_KEY` | Qwen (default) | https://bailian.console.aliyun.com |
270| `OPENAI_API_KEY` | OpenAI | https://platform.openai.com |
271| `GOOGLE_API_KEY` | Google | https://aistudio.google.com |
272
273## References
274
275**Dimensions**: [text.md](references/dimensions/text.md) | [mood.md](references/dimensions/mood.md) | [font.md](references/dimensions/font.md)
276**Palettes**: [references/palettes/](references/palettes/)
277**Renderings**: [references/renderings/](references/renderings/)
278**Types**: [references/types.md](references/types.md)
279**Style Presets**: [references/style-presets.md](references/style-presets.md)
280**Auto-Selection**: [references/auto-selection.md](references/auto-selection.md)
281**Visual Elements**: [references/visual-elements.md](references/visual-elements.md)
282**Workflow**: [confirm-options.md](references/workflow/confirm-options.md) | [prompt-template.md](references/workflow/prompt-template.md) | [reference-images.md](references/workflow/reference-images.md) | [qwen-api.md](references/workflow/qwen-api.md)