# Book Illustrator

> 《图解 Skill —— AI 提效实战指南》专用配图技能。分析本书章节、附录或书稿内容，批量识别需要视觉辅助的位置，并行生成本书统一风格的插图提示词，批量出图，最后回写书稿。 当用户要求"为本书配图"、"给本书章节生成插图"、"补画书中插图"、"重画本书配图"、"生成章节信息图"时使用此技能。 不用于普通文章、营销图、社媒图或其他书籍的通用配图任务。

- Skill: `jimliu/book-illustrator` (Agent Skill, multi-file: 14 files)
- Install (CLI): `npx skillmds@latest add jimliu/book-illustrator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jimliu/book-illustrator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: Jim Liu (baoyu) (https://skillmd.com/u/jimliu)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/jimliu/book-illustrator

---


# 本书智能配图技能

一次性分析《图解 Skill —— AI 提效实战指南》的章节/附录书稿，批量生成所有配图提示词（subagent 并行），批量出图，自动回写。不在每张图之间停下询问。

## 使用方式

```bash
# 方式 1：指定本书章节/附录 Markdown 路径
/book-illustrator path/to/chapter/final.md

# 方式 2：指定本书书稿 URL（自动下载到本地）
/book-illustrator https://example.com/book/chapter-03.md
```

## 开工前必读

先读 `references/design-system.md`（本 SKILL.md 所在目录下），里面有：
- 出版三色调色板（#D87757 + 黑 + 白）
- **对比规则**（防止暗底+暗字，最常见翻车点）
- 反 AI 俗套禁用清单
- 可读性自查清单（出图后必走）
- Prompt Injection Block（subagent brief 里必须内联）

## 工作流程

### 步骤一：获取本书内容

1. **本地路径**：直接读取文件
2. **URL**：下载本书章节/附录 Markdown 内容到临时位置

### 步骤二：分析本书配图需求

**一次性**逐段分析整篇章节/附录书稿，识别所有需要配图的位置。

**配图的三种作用**：
1. **信息补充**：帮助理解抽象概念（如"小步迭代"用滑板→自行车→汽车演进图）
2. **概念具象化**：将抽象观点转化为具体画面，让读者一眼就懂
3. **引导想象**：营造氛围、激发联想，增强阅读体验

**适合配图的本书内容**：
- 抽象概念需要视觉化
- 流程/步骤需要图示
- 对比关系需要可视化
- 核心观点需要强化
- 场景描述需要引导想象

**不需要配图的本书内容**：
- 已经很直观的描述（如代码示例、具体数字）
- 简单的列表枚举
- 引用的原话

**配图数量**（按章节/附录长度）：
- 每个主要小节至少考虑 1 张，优先选择核心观点和抽象概念
- 开头/结尾可酌情增加 1 张（如需要氛围烘托）
- **原则：宁多勿少**，视觉内容能显著提升阅读体验

**布局选择**：根据内容的信息模式匹配布局，详见 `references/layouts/` 目录下的 10 种布局定义：

| 布局 | 中文名 | 适用场景 |
|------|--------|----------|
| `binary-comparison` | 对比图 | A vs B、旧 vs 新 |
| `linear-progression` | 流程图 | 阶段演进、操作流程 |
| `hierarchical-layers` | 层级图 | 渐进式披露、优先级 |
| `hub-spoke` | 辐射图 | 核心概念 + 组成部分 |
| `structural-breakdown` | 结构拆解图 | 文件结构、组件标注 |
| `funnel` | 漏斗图 | 安全闸门、筛选过滤 |
| `tree-branching` | 树形图 | 文件目录、决策分支 |
| `winding-roadmap` | 路线图 | 全局导览、学习旅程 |
| `iceberg` | 冰山图 | 表面 vs 深层 |
| `cheat-sheet-card` | 速查卡 | 本章小结、知识回顾 |

**最容易混的三对**：
- **决策 vs 辐射（tree vs hub-spoke）**：有"选哪条""是 A 还是 B"的决策问题 → `tree-branching`；纯结构分解"X 由 A、B、C 组成" → `hub-spoke`
- **决策 vs 旅程（tree vs winding-roadmap）**：有分叉点 → `tree`；一条路蜿蜒向前没岔路 → `roadmap`
- **辐射 vs 旅程（hub-spoke vs winding-roadmap）**：并列结构 → `hub`；顺序推进 → `roadmap`

### 步骤三：生成批次计划表（等用户确认）

将分析结果整理成计划表展示给用户：

| 编号 | 插入位置 | 布局 | 配图作用 | 一句话 takeaway |
|------|----------|------|----------|-----------------|
| 01 | 章节名 / 段落描述 | binary-comparison | 概念具象化 | 用一句话说清楚这张图要传达什么 |
| 02 | … | … | … | … |

**停下等用户确认**："这些位置和布局对吗？如有调整请告诉我，确认后我会开始生成提示词。"

用户可以调整位置、布局、增删配图，确认后才进入下一步。

### 步骤四：并行生成所有提示词（subagent fan-out）

用户确认批次计划后，**在同一条消息里同时发出所有 Agent 调用**，让每张图的提示词并行生成。

#### 为什么用 subagent fan-out

- **并行省时**：10 张图的总耗时约等于最慢的那一个，不是线性累加
- **抗质量稀释**：主 agent 写到第 5、6 张时 context 堆满，注意力稀释；每个 subagent 是全新 context，只装当前图所需内容
- **强制打包信息**：派 subagent 前必须整理好 brief，这一步本身就是信息榨取的筛选

#### Subagent 配置

- **subagent_type**: `general-purpose`
- **model**: `opus`（提示词写作需要强的指令遵循能力，sonnet/haiku 易自造节名或信息度不足）

#### 主 agent 在派发前，对每张图

1. 从书稿抽出该位置**前后 1-3 段完整原文**（不摘要，信息榨取的源头不能压缩）
2. 确定本图参数：位置、takeaway、layout、color_hotspots（哪些元素用 #D87757）、文件路径
3. 读取以下文件内容，**整段内联**到 brief 里（subagent 拿到后不再去读外部文件）：
   - `references/illustration-template.md`（提示词模板）
   - `references/layouts/{layout}.md`（本图布局的视觉语法）
   - `references/design-system.md` 第 9 节 Prompt Injection Block
4. 按「Subagent Brief 模板」组装 prompt
5. 发起 Agent 调用

#### 主 agent 在收到所有 subagent 回报后

1. 验证每份文件是否落盘：`[章节配图目录]/prompts/NN-slug.md`
2. **抽检 2 份提示词**（随机挑，用 Read 核对），逐项检查：
   - 文件前两行是 `<!-- position: -->` 和 `<!-- layout: -->` HTML 注释？
   - 节标题是纯文本（无 `##`），节名与模板一致（"一、插图输入""二、图片比例"…）？
   - 主要元素用 `（1）（2）（3）` 编号，有 ≥ 4 条，每条嵌套了产品名/旁注/备选项？
   - 书稿段落里的所有产品名、决策问题文字、旁注，在提示词里全部有对应？
   - 五、布局视觉语法是针对本图的叙事（含本图具体元素名），不是通用规则列表？
   - Prompt Injection Block 的三色限定和禁用清单字面出现了？
3. 任一项不过关，补充说明后重新派同位置的 subagent 返工
4. 全部通过后，展示文件清单，询问："可以开始出图吗？"**等用户确认**

### 步骤五：批量出图

用户确认后，**逐张**调用 `/baoyu-imagine` 技能生成图片，**不中途停下逐张询问**：

1. 读取 `prompts/system.md`（风格规范）和对应的 `prompts/NN-slug.md`（具体提示词），合并为完整提示词
2. 调用 `/baoyu-imagine` 生成图片：
   - 提示词：system.md + NN-slug.md 合并内容
   - 比例：16:9
   - 输出路径：`[章节配图目录]/imgs/NN-slug.webp`
3. 输出进度：「已生成 X/N 张」
4. 如失败，自动重试一次；重试仍失败，记录失败原因，继续下一张
5. 有图明显翻车（一眼不对），标注后继续跑完，最后统一告知哪些需要重画

**出图后，对每张图走可读性自查清单**（见 `references/design-system.md` 第 8 节）。任一条不过，重生成。

### 步骤六：更新书稿

将生成的图片插入到本书书稿对应位置：

```markdown
![配图描述](imgs/01-evolution.webp)
```

**插入规则**：
- 图片插入到对应段落之后
- 图片前后各留一个空行
- alt 文本使用简洁的中文描述

### 步骤七：输出汇总

```
配图完成！

书稿：[书稿路径]
生成数量：X/N 张成功

配图位置：
- 01-failure-trap.webp → [章节名] 后
- 02-iteration.webp → [章节名] 后
...

[如有失败]
失败项：
- 03-workflow.webp：[失败原因]（建议重画原因）
```

---

## Subagent Brief 模板

整批并行时，主 agent 按此模板为每张图组装 brief。所有 `<<<...>>>` 标记的段落都要主 agent 把对应文件**整段内联**——subagent 拿到 brief 后不应再去读外部文件。

```
你的任务：为《图解 Skill —— AI 提效实战指南》配图写一份完整的图片生成提示词文件。写完用 Write 工具落盘。

产出路径（直接写，不讨论是否建目录）：
{主 agent 填入绝对路径，例如 /path/to/chapter/prompts/01-slug.md}

=== 本图参数 ===

- 位置：{章节名称} / {段落描述}
- takeaway（读者3秒应获得的顿悟，一句话）：{...}
- 推荐布局：{layout}
- 配图作用：{信息补充 / 概念具象化 / 引导想象}
- color_hotspots（哪些元素用 #D87757，其余用黑白）：{...}

=== 书稿相关原文（信息榨取的源头，不要压缩）===

{主 agent：把该配图前后 1-3 段完整原文原封不动贴过来}

=== 信息榨取清单（写主要元素前先做这一步）===

在填主要元素之前，先从原文段落里把以下所有内容列出来——这是本图元素的唯一来源：

1. 产品名/工具名：（所有出现的，包括推荐的和备选的，一个不漏）
2. 决策问题/引导文字：（如"你想怎么上手？""想不想装软件？"等，原文照搬）
3. 分类标签：（区域名、类别名，如"云端智能体""本地智能体""推荐路径"）
4. 旁注/说明文字：（产品旁边的特点说明，如"零安装·中文·首选""技能最强·迭代最快"）
5. 结论性/高潮文字：（如"出发！""效果一样！"等画面高潮元素）

以上每一类都必须在主要元素或次要元素里有对应。漏掉的 = 信息榨取不到位。

=== 配图提示词模板（照此结构填写，把占位符替换为本图内容）===

{主 agent：把 references/illustration-template.md 整段贴过来}

=== 本图布局的视觉语法参考（仅供参考，不要原封不动复制）===

{主 agent：把 references/layouts/{layout}.md 整段贴过来}

注意：第五节（五、布局视觉语法）不是复制上面的通用规则列表，而是用本图的具体元素名来描述这张图的视觉叙事——从哪里开始，中间怎么流动，高潮在哪，整体读图体验是什么。例如："从顶部'你想怎么上手？'出发，左右分叉为云端和本地两路，最终汇聚到底部'出发！'爆炸框，整体从上到下阅读，像一张手绘的选择指南海报。"

=== 设计系统 Prompt Injection Block（必须字面出现在提示词文件里）===

{主 agent：把 references/design-system.md 第 9 节 Prompt Injection Block 代码块整段贴过来}

=== 格式要求（塌陷检查点）===

1. 文件前两行必须是 HTML 注释：
   <!-- position: 第N章 / X.Y小节名 / 段落位置 -->
   <!-- layout: 布局名 -->
2. 节标题用纯文本（"一、插图输入""二、图片比例"…），不加 ## 或 **
3. 主要元素用（1）（2）（3）编号，≥ 4 条，每条嵌套产品名+旁注+备选项，不能只写笼统概括
4. 只能画本书原文里有出处的元素，不要脑补新角色、新符号、新品牌

=== 自检（写完必做）===

(a) 文件前两行是 <!-- position: --> 和 <!-- layout: --> HTML 注释吗？
(b) 节标题是纯文本（没有 ##）吗？
(c) 主要元素用（1）（2）（3）编号了吗？有 ≥ 4 条吗？每条有嵌套的产品名+旁注+备选项吗？
(d) 信息榨取清单里的所有产品名、决策文字、旁注，在提示词的元素里都有对应吗？漏一个就补上
(e) 五、布局视觉语法是针对本图的叙事描述（含本图具体元素名），不是通用规则列表？
(f) 对比规则：有文字叠在 #D87757 色块上时，底色是浅色调变体而非饱和色？
(g) Prompt Injection Block 的三色限定和禁用清单字面出现了？

返回给主 agent：文件路径 + 一句话说明提示词内容 + 自检是否全过（如有不过，列具体问题）。不要粘全文。
```

---

## 文件组织

```
[章节目录]/
├── final.md（或 draft.md）
├── prompts/
│   ├── 01-evolution.md
│   ├── 02-comparison.md
│   └── ...
└── imgs/
    ├── 01-evolution.webp
    ├── 02-comparison.webp
    └── ...
```

**命名规则**：
- `NN-english-slug`，两位数编号按配图出现顺序，slug 用 3-5 个英文短词（连字符分隔）
- 提示词和图片同名，只差后缀（`.md` vs `.webp`）
- 迭代：改提示词原地改同一份文件，不开 `-v2.md`

---

## 常见翻车模式

- **文字压在饱和色块上** → 颜色设计里没注入对比规则 → subagent brief 里补充 Prompt Injection Block 完整内容
- **出现三色外的颜色** → 第四节配色没字面注入 → 返工补全
- **提示词漏掉书稿里的产品名/决策文字** → 信息榨取不到位 → 回原文段落，把所有可视词汇逐一补到元素列表里
- **布局选错（决策图用了 hub-spoke）** → 把"多选一"画成了"并列展开" → 改成 `tree-branching`
- **subagent 未抽检就进入出图** → 塌陷的 prompt 混进了图像生成，浪费出图资源 → 步骤四的抽检是硬流程，不要省

---

## 参考文件

| 文件 | 作用 |
|------|------|
| `references/design-system.md` | **必读**：三色调色板、对比规则、反 AI 俗套、可读性自查、Prompt Injection Block |
| `prompts/system.md` | 图片生成系统提示词（出图时自动附加） |
| `references/illustration-template.md` | 配图提示词模板（subagent 填写的骨架） |
| `references/layouts/*.md` | 10 种布局的视觉语法（按需内联给 subagent） |

