| name | qiaomu-image-generator |
| description | Use when user requests image generation for articles, papers, covers, or social media. Triggers on "配图", "生成封面", "illustration", "小红书配图", "公众号封面", "X封面", or when other skills need images. |
统一配图生成器
为文章、论文、小红书、公众号封面、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)
封面配置格式
{
"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 个,不要全用。
- 有限色板:海报/封面默认 2-5 色,明确冷暖或主辅色关系。避免泛泛写“色彩丰富”。
- 符号优于脸:当主题涉及人物、歌手、作者或角色时,优先用剪影、背影、局部轮廓、物件和空间隐喻,避免让模型生成不稳定的人脸。
- 文字默认禁止:除非用户明确要封面文字,否则 description 和负面词都应强调 no text/no letters/no logos。中文/英文标题后期排版更可靠。
常用构图词可写进 description:
中心单一焦点,周围大面积留白
负空间形成隐藏图像,图底反转
几何圆形/拱门/三角形框景
前景剪影、中景主体、远景光源三层空间
渺小人物面对巨大物体的尺度反差
单一象征物承载全部叙事
封面风格推荐
| 场景 | 推荐风格 |
|---|
| 公众号/X 封面 | paper-watercolor-cover(默认) |
| 论文解读封面 | paper-watercolor-cover |
| 技术文章封面 | vintage-scientific |
| 轻松话题封面 | newyorker |
工作流程
Step 1: 分析文章/需求
读取文章,识别:
- 场景类型(文章配图/封面/小红书等)
- H2 章节数量
- 用户的覆盖指令(如"用水彩风格")
- 是否属于海报/书封/专辑封面/音乐封面;如果是,必须先提炼视觉符号、构图模式和有限色板
Step 2: 创建输出目录
mkdir -p "{文章目录}/{文章名}.assets"
mkdir -p "{输出目录}"
Step 3: 生成 visual_config.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",
Step 4: 调用生成脚本
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. 具体元素
示例对比
❌ 错误示例(混入具体内容)
{
"prompt": "工笔重彩绘画风格,植物花朵的纹理细腻,热带植物和蘑菇森林...",
"suffix": "每片叶子每朵花都有独特纹理,奇幻森林秘境..."
}
问题:指定了"植物"、"蘑菇"、"森林"等具体内容,限制了风格的通用性。
✅ 正确示例(只有风格特征)
{
"prompt": "工笔重彩绘画风格,每一根线条都极其精致入微,纹理细腻到极致...",
"suffix": "极繁主义的细节密度,每个元素都有独特纹理,奇幻秘境的浪漫感..."
}
优点:只定义渲染方式,可以应用到任何主体(人物、建筑、动物、抽象概念)。
测试方法
创建风格后,用不同的 description 测试:
同一个风格 + 不同主体 = 都应该合理
例如 "minimalist-dreamy-blur" 风格:
- description: "一只猫" → 应该生成朦胧模糊的猫
- description: "城市建筑" → 应该生成朦胧模糊的建筑
- description: "抽象情绪" → 应该生成朦胧模糊的抽象形态
如果某个 description 搭配风格后感觉奇怪,说明风格模板可能混入了具体内容。
常见错误
-
从用户描述中提取具体元素加入风格
- 用户说:"电吉他手" → 不要把"电吉他"写进风格
- 只提取风格特征:"半调网点"、"剪影"、"高对比"
-
用场景来定义风格
- ❌ "上海外滩场景的磨砂玻璃风"
- ✅ "磨砂玻璃材质 + 红橙渐变 + 极简构图"
-
混淆风格与内容
- 风格:"工笔重彩、精致线条"(可以画任何东西)
- 内容:"植物、蘑菇、森林"(具体画什么)
visual_description 写作规范
🎬 像导演拍默片一样思考:
🌏 必须使用中文:
❌ 绝对禁止:
- 风格指令:极简、水墨、油画、素描(风格由 style 字段控制)
- 产品名/公司名:OpenAI、Claude、DeepSeek
- 版本号/型号:2.0、3.5、V3
- 数字参数:78%、152层、200美元
- 日期时间:2025年、12月
- 文字/符号:不要有任何文字
✅ 应该用:
- 空间关系:中心 vs 边缘、顶部 vs 底部
- 大小对比:高塔 vs 低建筑、巨大 vs 渺小
- 动态趋势:向上攀登、向外扩散
- 视觉隐喻:塔楼(地位)、攀登(追赶)
- 负空间:空白处形成另一层图像或暗示未出现的主体
- 有限色板:用 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: 创建目录
mkdir -p /path/to/article.assets
Step 3: 生成配置
{
"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",
Step 4: 执行
python ~/.claude/skills/qiaomu-image-generator/scripts/generate.py \
/path/to/article.assets/visual_config.json
示例 2: 小红书配图(覆盖风格)
用户:「为这篇文章生成小红书配图,用彩色简笔画风格」
配置:
{
"template": "xiaohongshu",
"defaults": {
"style": "colorful_sketch",
"aspect_ratio": "3:4"
}
}
示例 3: 公众号封面
用户:「生成公众号封面」
配置:
{
"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 标题文本