# Qiaomu Image Generator

> Use when user requests image generation for articles, papers, covers, or social media. Triggers on "配图", "生成封面", "illustration", "小红书配图", "公众号封面", "X封面", or when other skills need images.

- Skill: `joeseesun/qiaomu-image-generator` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add joeseesun/qiaomu-image-generator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/joeseesun/qiaomu-image-generator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Design & Media
- Author: joeseesun (https://skillmd.com/u/joeseesun)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/joeseesun/qiaomu-image-generator

---


# 统一配图生成器

为文章、论文、小红书、公众号封面、X 封面等多场景生成配图。

## 核心设计

```
用户请求
    ↓
Claude（智能层）
    ├── 理解意图，选择场景模板
    ├── 处理覆盖指令（风格、比例等）
    └── 生成 visual_config.json
    ↓
执行脚本（执行层）
    ├── 加载风格模板
    ├── 多线程调用 API
    └── 保存图片并插入文章
    ↓
输出结果
```

**原则**：Claude 做决策，脚本做执行。JSON 是唯一契约。

---

## 场景模板

| 场景 | 模板名 | 默认风格 | 比例 | 像素 |
|------|--------|----------|------|------|
| 文章配图 | `article` | minimalist | 16:9 | 1920×1080 |
| 公众号封面 | `wechat_cover` | paper-watercolor-cover | 2.35:1 | 900×383 |
| 小红书 | `xiaohongshu` | colorful_sketch | 3:4 | 1242×1660 |
| X 封面 | `x_cover` | paper-watercolor-cover | 5:2 | 1500×600 |
| 论文配图 | `paper` | newyorker | 16:9 | 1920×1080 |
| 海报设计 | `poster` | mondo-screenprint | 9:16 | 720×1280 |
| 书籍封面 | `book_cover` | literary-mondo-cover | 2:3 | 1024×1536 |
| 专辑封面 | `album_cover` | album-mondo-cover | 1:1 | 1024×1024 |

---

## 风格选择指南

共 **66 种风格**，每种风格都有 `use_cases` 字段标注适用场景。

### 按场景推荐

| 场景 | 推荐风格 |
|------|----------|
| 知识科普 | `minimalist`, `vintage-scientific`, `line-art`, `chalkboard` |
| 技术解析 | `vintage-scientific`, `isometric`, `low-poly`, `geometric-abstract` |
| 产品设计 | `flat-illustration`, `flat-simple`, `minimal-icon`, `soft-geometric` |
| 文艺创作 | `watercolor`, `ink-painting`, `morandi`, `soft-watercolor` |
| 轻松趣味 | `cartoon`, `children-book`, `paper-cut`, `newyorker` |
| 传统文化 | `ink-painting`, `woodcut`, `retro-poster`, `screen-print` |
| 海报/封面 | `mondo-screenprint`, `negative-space-poster`, `literary-mondo-cover`, `album-mondo-cover` |

### 常用风格速查

| 风格ID | 中文名 | 特点 | 适用场景 |
|--------|--------|------|----------|
| `minimalist` | 极简线条 | 单色/双色，减法美学 | 知识分享、思考类文章 |
| `newyorker` | 纽约客 | 黑白钢笔+朱红点缀 | 观点评论、文化分析 |
| `pen-sketch` | 钢笔速写 | 手绘松弛质感 | 叙事文章、旅行笔记 |
| `flat-illustration` | 平面插画 | 纯色填充，无阴影 | 产品推介、科技新闻 |
| `vintage-scientific` | 复古科学插图 | 老式教科书质感 | 科学原理、技术解析 |
| `morandi` | 莫兰迪色系 | 极低饱和度灰调 | 文艺评论、设计分享 |
| `children-book` | 儿童绘本 | 温暖柔和色彩 | 儿童科普、亲子教育 |
| `isometric` | 等距视图 | 30度角斜视，立体感 | 技术架构、产品设计 |
| `mondo-screenprint` | Mondo 丝网海报 | 有限色板、半调网点、符号化 | 海报、封面、活动图 |
| `negative-space-poster` | 负空间概念海报 | 单一焦点、图底反转、隐藏意象 | 高级封面、电影感海报 |
| `literary-mondo-cover` | 文学书封 | 克制、象征、强缩略图辨识度 | 书籍封面、读书笔记 |
| `album-mondo-cover` | 专辑封面 | 1:1、音乐情绪、强视觉记忆点 | 音乐封面、歌单封面 |

**完整风格列表**：见 `config/styles.json`，每种风格包含：
- `name`: 中文名
- `description`: 简短描述
- `prompt`: 风格前缀
- `suffix`: 风格后缀
- `use_cases`: 适用场景数组（供 AI 参考选择）

---

## 封面生成（标准化流程）

**所有内容创作都应生成封面图**，工作流程：

```
读取文章
    ↓
提炼核心关键词（1-3个关键词概括主题）
    ↓
提炼一个可视化符号（物件/轮廓/空间关系/隐喻）
    ↓
选择封面风格（默认 paper-watercolor-cover）
    ↓
生成 visual_config.json（cover 节点）
    ↓
调用生图脚本
    ↓
插入文章开头（作为 cover image）
```

### 封面配置格式

```json
{
  "cover": {
    "enabled": true,
    "filename": "cover.png",
    "style": "paper-watercolor-cover",
    "aspect_ratio": "16:9",
    "description": "关键词1 关键词2 关键词3",
    "retry_count": 2
  }
}
```

### 关键词提炼原则

- 从文章主题中提取 1-3 个核心概念
- 避免过长，控制在 20 字以内
- 示例：`Qwen3-TTS 语音合成 3秒克隆`

### Mondo 式视觉提炼法

从 `qiaomu-mondo-poster-design` 整合来的封面/海报判断流程：

1. **不要复述内容，先找符号**：把文章、歌词、书籍或活动压缩成一个最有记忆点的视觉符号，例如裂纹、门、眼睛、船、椅子、城市剪影、一本发光的书。
2. **优先单一焦点**：封面通常只放一个主视觉，最多加入一个次级隐喻。宁可留白，也不要把所有概念都塞进去。
3. **用构图讲故事**：从居中对称、负空间、几何框景、前中后景分层、剪影主导、尺度反差中选 1-2 个，不要全用。
4. **有限色板**：海报/封面默认 2-5 色，明确冷暖或主辅色关系。避免泛泛写“色彩丰富”。
5. **符号优于脸**：当主题涉及人物、歌手、作者或角色时，优先用剪影、背影、局部轮廓、物件和空间隐喻，避免让模型生成不稳定的人脸。
6. **文字默认禁止**：除非用户明确要封面文字，否则 description 和负面词都应强调 no text/no letters/no logos。中文/英文标题后期排版更可靠。

常用构图词可写进 description：

- `中心单一焦点，周围大面积留白`
- `负空间形成隐藏图像，图底反转`
- `几何圆形/拱门/三角形框景`
- `前景剪影、中景主体、远景光源三层空间`
- `渺小人物面对巨大物体的尺度反差`
- `单一象征物承载全部叙事`

### 封面风格推荐

| 场景 | 推荐风格 |
|------|----------|
| 公众号/X 封面 | `paper-watercolor-cover`（默认） |
| 论文解读封面 | `paper-watercolor-cover` |
| 技术文章封面 | `vintage-scientific` |
| 轻松话题封面 | `newyorker` |

---

## 工作流程

### Step 1: 分析文章/需求

读取文章，识别：
- 场景类型（文章配图/封面/小红书等）
- H2 章节数量
- 用户的覆盖指令（如"用水彩风格"）
- 是否属于海报/书封/专辑封面/音乐封面；如果是，必须先提炼视觉符号、构图模式和有限色板

### Step 2: 创建输出目录

```bash
# 文章配图
mkdir -p "{文章目录}/{文章名}.assets"

# 封面类
mkdir -p "{输出目录}"
```

### Step 3: 生成 visual_config.json

**配置格式**：

```json
{
  "task_id": "article_20260120_143052",
  "template": "article",
  "source": "/path/to/article.md",
  "output_dir": "/path/to/article.assets/",

  "cover": {
    "enabled": false,
    "style": "colorful_sketch",
    "aspect_ratio": "2.35:1",
    "description": "视觉描述...",
    "retry_count": 2
  },

  "illustrations": [
    {
      "index": 1,
      "h2_title": "章节标题",
      "style": "minimalist",
      "aspect_ratio": "16:9",
      "description": "视觉描述..."
    }
  ],

  "defaults": {
    "style": "minimalist",
    "aspect_ratio": "16:9",
    "provider": "jimeng",
    "retry_count": 2
  }
}
```

### Step 4: 调用生成脚本

```bash
python ~/.claude/skills/qiaomu-image-generator/scripts/generate.py \
  /path/to/visual_config.json \
  --workers 3
```

**参数说明**：
- `--workers 3`: 并发线程数（默认 3）
- `--dry-run`: 只打印不执行
- `--no-insert`: 不自动插入到 Markdown
- `--output result.json`: 输出结果到文件

---

## 风格模板编写规范

**核心原则**：风格模板只定义**如何渲染**，不定义**渲染什么**。

### 设计哲学

```
用户输入 = 主体内容（description）
风格模板 = 渲染方式（prompt + suffix）

最终提示词 = prompt + description + suffix
```

**职责分离**：
- **description（主体词）**：描述具体内容（人物、场景、物体、动作）
- **prompt/suffix（风格词）**：定义风格特征（材质、色彩、笔触、构图）

### ✅ 风格模板应该包含

**1. 材质质感**
- 磨砂玻璃、纸张、胶片颗粒、水彩晕染
- 丝网印刷、木刻纹理、半调网点

**2. 色彩处理**
- 红橙渐变、莫兰迪灰调、高饱和度纯色
- 冷暖对比、单色调、有限色板

**3. 笔触技法**
- 精致线条、交叉线纹理、素描笔触
- 色块拼接、剪影轮廓、模糊颗粒

**4. 构图方式**
- 极简留白、拼贴层次、对称/非对称
- 中心/边缘、动态/静态、前景/背景关系

**5. 光影处理**
- 边缘光、通透光、柔和光影
- 高对比、渐变过渡、明暗表现方式

**6. 艺术风格**
- Moebius、Matisse、波普艺术、野兽派
- 工笔重彩、丝网印刷、数字艺术

### ❌ 风格模板不应包含

**1. 具体人物**
- ❌ "重金属摇滚电吉他手"
- ❌ "飘逸长发、戴墨镜"
- ❌ "人物轮廓"

**2. 具体场景**
- ❌ "上海外滩场景"
- ❌ "山水意境"
- ❌ "热带森林"

**3. 具体物体**
- ❌ "植物花朵"、"每片叶子"
- ❌ "家具、小物件"
- ❌ "街景路牌和建筑碎片"

**4. 具体元素**
- ❌ "英文字母和单词"
- ❌ "蘑菇"、"松树"

### 示例对比

#### ❌ 错误示例（混入具体内容）

```json
{
  "prompt": "工笔重彩绘画风格，植物花朵的纹理细腻，热带植物和蘑菇森林...",
  "suffix": "每片叶子每朵花都有独特纹理，奇幻森林秘境..."
}
```

**问题**：指定了"植物"、"蘑菇"、"森林"等具体内容，限制了风格的通用性。

#### ✅ 正确示例（只有风格特征）

```json
{
  "prompt": "工笔重彩绘画风格，每一根线条都极其精致入微，纹理细腻到极致...",
  "suffix": "极繁主义的细节密度，每个元素都有独特纹理，奇幻秘境的浪漫感..."
}
```

**优点**：只定义渲染方式，可以应用到任何主体（人物、建筑、动物、抽象概念）。

### 测试方法

创建风格后，用不同的 description 测试：

```
同一个风格 + 不同主体 = 都应该合理

例如 "minimalist-dreamy-blur" 风格：
- description: "一只猫" → 应该生成朦胧模糊的猫
- description: "城市建筑" → 应该生成朦胧模糊的建筑
- description: "抽象情绪" → 应该生成朦胧模糊的抽象形态
```

如果某个 description 搭配风格后感觉奇怪，说明风格模板可能混入了具体内容。

### 常见错误

1. **从用户描述中提取具体元素加入风格**
   - 用户说："电吉他手" → 不要把"电吉他"写进风格
   - 只提取风格特征："半调网点"、"剪影"、"高对比"

2. **用场景来定义风格**
   - ❌ "上海外滩场景的磨砂玻璃风"
   - ✅ "磨砂玻璃材质 + 红橙渐变 + 极简构图"

3. **混淆风格与内容**
   - 风格："工笔重彩、精致线条"（可以画任何东西）
   - 内容："植物、蘑菇、森林"（具体画什么）

---

## visual_description 写作规范

**🎬 像导演拍默片一样思考**：
- 演员不能说话、没有字幕
- 用**纯视觉语言**传递信息

**🌏 必须使用中文**：
- 即梦 API 对中文理解更准确

**❌ 绝对禁止**：
1. **风格指令**：极简、水墨、油画、素描（风格由 style 字段控制）
2. **产品名/公司名**：OpenAI、Claude、DeepSeek
3. **版本号/型号**：2.0、3.5、V3
4. **数字参数**：78%、152层、200美元
5. **日期时间**：2025年、12月
6. **文字/符号**：不要有任何文字

**✅ 应该用**：
1. **空间关系**：中心 vs 边缘、顶部 vs 底部
2. **大小对比**：高塔 vs 低建筑、巨大 vs 渺小
3. **动态趋势**：向上攀登、向外扩散
4. **视觉隐喻**：塔楼（地位）、攀登（追赶）
5. **负空间**：空白处形成另一层图像或暗示未出现的主体
6. **有限色板**：用 2-5 个明确色彩建立海报识别度

**示例**：

| ❌ 错误 | ✅ 正确 |
|--------|--------|
| "OpenAI 的 logo 在中心" | "中心矗立一座最高的塔楼，四周快速升起多座新塔" |
| "极简线条风格的猫" | "一只橘色短毛猫坐在窗台上，阳光洒落" |

---

## 覆盖指令识别

Claude 应识别用户的自然语言指令并写入 JSON：

| 用户说 | 覆盖字段 |
|--------|----------|
| "用水彩风格" | `style: "watercolor"` |
| "竖版" / "3:4" | `aspect_ratio: "3:4"` |
| "用 Z-Image" / "用通义生图" | `provider: "z-image"` |
| "用即梦" | `provider: "jimeng"` |
| "封面要活泼一点" | `cover.style: "colorful_sketch"` |
| "Mondo/海报感/电影海报" | `style: "mondo-screenprint"` |
| "高级一点/极简概念/留白" | `style: "negative-space-poster"` |
| "书籍封面/读书封面" | `template: "book_cover"` |
| "专辑封面/音乐封面/歌单封面" | `template: "album_cover"` |

**可用 Provider：**
| Provider | 说明 |
|----------|------|
| `jimeng` | 即梦 4.5（默认），高质量生图 |
| `z-image` | 阿里通义 Z-Image-Turbo，支持 LoRA |

---

## 完整示例

### 示例 1: 文章配图

用户：「为这篇文章配图 /path/to/article.md」

**Step 1**: 读取文章，发现 5 个 H2 章节

**Step 2**: 创建目录
```bash
mkdir -p /path/to/article.assets
```

**Step 3**: 生成配置
```json
{
  "task_id": "article_20260120_150000",
  "template": "article",
  "source": "/path/to/article.md",
  "output_dir": "/path/to/article.assets/",
  "illustrations": [
    {
      "index": 1,
      "h2_title": "用Claude写战略文档",
      "description": "一个人坐在书桌前，与一面大镜子对话，镜子里是不断演变的文档轮廓"
    },
    {
      "index": 2,
      "h2_title": "用Google AI Studio做原型",
      "description": "左边陶工快速塑形已完成，右边雕刻家还在缓慢雕琢"
    }
  ],
  "defaults": {
    "style": "minimalist",
    "aspect_ratio": "16:9",
    "retry_count": 2
  }
}
```

**Step 4**: 执行
```bash
python ~/.claude/skills/qiaomu-image-generator/scripts/generate.py \
  /path/to/article.assets/visual_config.json
```

### 示例 2: 小红书配图（覆盖风格）

用户：「为这篇文章生成小红书配图，用彩色简笔画风格」

**配置**：
```json
{
  "template": "xiaohongshu",
  "defaults": {
    "style": "colorful_sketch",
    "aspect_ratio": "3:4"
  }
}
```

### 示例 3: 公众号封面

用户：「生成公众号封面」

**配置**：
```json
{
  "template": "wechat_cover",
  "cover": {
    "enabled": true,
    "style": "colorful_sketch",
    "aspect_ratio": "2.35:1",
    "description": "一只猫站在书架顶端，俯瞰书房"
  }
}
```

---

## 完成后必须输出

**每次配图任务完成后，必须输出以下信息**：

```
✅ 配图完成！

📄 文章：/完整/路径/文章名.md
📁 资源：/完整/路径/文章名.assets/
🖼️ 配图：X 张
⏱️ 耗时：约 X 秒

生成的图片：
1. 01-章节名-极简.png
2. 02-章节名-极简.png
...
```

**关键**：必须输出完整绝对路径。

---

## 配置文件位置

```
~/.claude/skills/qiaomu-image-generator/
├── SKILL.md                 # 本文档
├── config/
│   ├── styles.json          # 风格模板（可编辑）
│   ├── templates.json       # 场景模板（可编辑）
│   └── providers.json       # API 配置
└── scripts/
    └── generate.py          # 执行脚本
```

**自定义风格**：编辑 `config/styles.json` 添加新风格
**自定义场景**：编辑 `config/templates.json` 添加新场景

---

## 故障排查

### 问题 1: 风格不对

**原因**：visual_description 中包含了风格词

**解决**：检查 description 是否有"极简"、"水墨"等词，删除

### 问题 2: 生成失败

**原因**：API 超时或配额用尽

**解决**：
- 检查 `~/.claude/skills/shared-lib/config.json` 中的凭据
- 尝试减少 `--workers` 数量
- 使用 `--dry-run` 检查配置

### 问题 3: 图片没插入文章

**原因**：h2_title 与文章中的 H2 不匹配

**解决**：确保 `h2_title` 完全匹配文章中的 H2 标题文本

