# Wjs Voicedrop Writing Chidrens Book

> 「写一本书」时绘本 / 图画书的写法模块——读者画像（孩子及共读的大人）、童趣文风、每页一图一句的结构、写手提示词、评审维度（画面感/语言节奏/情感与安全）、专属约定（以图为主、每页配图、字极简）。由 wjs-voicedrop-writing-book 在第 0 步判定为绘本类型后读入；骨架、build.mjs、发布、封面、断点续跑等通用机制都在 wjs-voicedrop-writing-book，本 skill 只管「怎么写绘本」。触发词："绘本"、"图画书"、"children's book"、"/wjs-voicedrop-writing-chidrens-book"。

- Skill: `jianshuo/wjs-voicedrop-writing-chidrens-book` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add jianshuo/wjs-voicedrop-writing-chidrens-book`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jianshuo/wjs-voicedrop-writing-chidrens-book/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: jianshuo (https://skillmd.com/u/jianshuo)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jianshuo/wjs-voicedrop-writing-chidrens-book

---


# 绘本写法 — 图画故事（childrens）

> 这是 `wjs-voicedrop-writing-book` 的写作模块之一（`type: childrens`）。工作目录、`book.json`、`build.mjs`、发布、封面、断点续跑、修书模式、编排、通用红线等**机制全部在 `wjs-voicedrop-writing-book`**，本文只规定绘本**怎么写**。
>
> ⚠️ **初版草稿**：绘本类型刚拆出来，下面的文风/结构是首版约定，实际用过几本后再收紧。核心机制（每页即发、独立评审、封面、两条硬约束）跟通用 skill 完全一致。

**这类书解决的问题**：给孩子（以及陪读的大人）一个温柔、好看、好读出声的图画故事——可以是一个小故事，也可以是一个概念的启蒙（数数、颜色、情绪、自然）。**图是主角，字是配角。**

**读者画像**：
- **第一读者**：3–8 岁的孩子（按主题定更细的年龄段，写进 `book.json` 的 `meta`）。词汇简单、句子短、有重复和节奏，能被大人**读出声**。
- **第二读者**：陪读的大人——他们要读得不尴尬、愿意重复读很多遍。

**文风铁律**：
- **每页字极少**：一页只讲一个画面、一两句话；宁可少字，让图说话。
- **可朗读**：句子有节奏、有重复句式（重复是绘本的魔法），读出来顺口、有停顿感。
- **具体、可感**：写看得见摸得着的东西（毛茸茸的、红红的、慢慢地），不写抽象道理。
- **不说教**：情感和道理藏在故事里，不在结尾贴一句「这个故事告诉我们」。
- **安全温柔**：无暴力/恐吓/不适内容；就算有冲突也温柔收场。

---

## 结构：绘本用「页」不用「章」

绘本的「章」= **一个跨页（一个画面）**。仍用 `book.json` 的 `chapters` 数组，但每一项是**一页**：`title` 用极短的页名或直接留白（如「第 1 页」），`brief` 写这一页的画面 + 那一两句话。

- 一本绘本通常 **12–20 页**（对应 `chapters` 12–20 项）。
- 每页正文 HTML 片段 = **一张图 + 一到两句话**：
  ```html
  <figure><img src="p01.png"><figcaption></figcaption></figure>
  <p>小熊醒来了，天还灰灰的。</p>
  ```
- `book.json`：`type: "childrens"`，`tagline` 建议留空或 `"一本图画书"`，`meta` 写年龄段（如 `"适合 3–6 岁 · 亲子共读"`），`tint/dark` 用明亮温暖的色。**顶层必须写 `"hidden": true`**——绘本缺省不上架（书架不出，直链可看），主人验收满意后修书去掉这行才上架。

---

## 建筑师：故事怎么搭

Spawn 一个 agent，产出书名、slug、subtitle（一句话故事钩子）、配色、**逐页清单**（每页 `no / 极短页名 / brief=画面+文字`）。要求：

- 一条**简单清晰的故事线**：起（认识主角和它想要的）→ 承（一路上的小遭遇，可重复句式）→ 转（一个小转折/小困难）→ 合（温柔收场）。
- **重复与递进**：绘本靠重复的句式和累积的画面推进（想想《好饿的毛毛虫》），每页在同一句式上加一点变化。
- 主角要**可爱、可共情**，动机要孩子能懂（想找朋友、想睡觉、肚子饿）。
- 一本书**一个概念/一个故事**，别塞多条线。

---

## 写手 subagent：提示词要点

给写手：本页 `no / brief` + 全书故事线（知道前后页，保持句式与主角一致）+ 读者画像与文风铁律。要求：

- **输出格式**：一段 `<article>` 里的 HTML 片段，通常就是 **一个 `<figure><img>` + 一到两句 `<p>`**。可用标签：`<p> <figure><img><figcaption> <strong>`（拟声词/关键词可加粗）。
- **图片**：绘本**每页都要图**，但正文片段里只写相对文件名占位（如 `<img src="p01.png">`），**图在最后一遍统一 paint 生成**（见下「插图」）。写手同时给出这一页的**画面描述**（写进 `reviews` 或单独记，供出图用）。
- 字数：一页通常 **8–40 字**，最多两句。
- 不写 `<h1>`、不写内联 `style`、不编造真实图片 URL。
- 存到 `chapters/NN.html`。

---

## 评审 subagent：维度与判定

**独立 spawn**，只喂「该页成品 + 全书故事线」。维度：

> 你是独立评审，没参与写作。从三个维度打分（各 1–5，给一句理由）+ 必须修清单：
> 1. **画面感 & 图文配合**：这一页有没有一个清晰、能画出来的画面？文字和画面是不是各说各的、还是互相补足？
> 2. **语言与节奏**：读出声顺不顺口？有没有重复/韵律？有没有超出年龄段的难词或长句？
> 3. **情感与安全**：孩子能不能共情？有没有说教味、恐吓、暴力或不适内容？结局温不温柔？
>
> 判定 `pass`：三项都 ≥3，且无安全问题、无说教硬伤、无超龄难词。否则 `fail`。
> 输出 JSON：`{"scores":{"visual":n,"rhythm":n,"heart":n},"verdict":"pass|fail","must_fix":["…"],"note":"一句总评"}`

存 `reviews/NN.json`。不过按通用 skill 的循环换新写手重写，最多 3 轮。

---

## 插图：绘本以图为主（每页都要，最后一遍统一出）

跟科普书相反，绘本**几乎每页都要一张图**。仍守通用 skill 的规矩：**全部用 `/opt/claude-agent/bin/paint`（GPT 出图）**，timeout 600000ms，`build.mjs asset` 上传，内链相对，绝不用本地生图/叠字工具。

- **风格统一**：全书用**同一套画风关键词**（同一句风格前缀 + 同一主角外形描述），逐页只换画面内容，让主角在每页看起来是同一个。把这套风格前缀固定下来，每页 paint 时都带上。
- **图文一体（2026-08-20 起）**：本页那一两句正文要**用合适的字体画进图里**，像真正印刷的绘本页。要求：
  - 字体气质：温柔圆润的中文童趣手写体/圆体，颜色随该页画面配色（深色字配浅背景），大小适中可读；
  - 位置：放在画面的**留白处**（天空/地面/水面的安静区域），绝不压角色的脸和主体；
  - 内容：与 book.json 里该页的正文**一字不差**，提示词里把这句话原样引出并写明「画面上只允许出现这句文字，不要多余字符/水印」；
  - 画完必须**逐字检查**图里的字——GPT 画中文偶有错字/乱码，错一个字就重画（字少，重画便宜）；
  - HTML 的 `<p>` 正文**照旧保留**（与图里文字一致）——有声书管线和搜索/复制靠 DOM 文字，不能只存在图里。
- **画面描述**来自写手给的那一句；paint 提示词 = 统一风格前缀 + 主角/道具参照要点 + 本页画面 + 图内文字（引号原句）。
- 尺寸随版式（绘本图可用较方或横构图，`--size 1024x1024` 或 `1536x1024`）。
- 流程：`paint "<统一风格 + 本页画面 + 无字>" book-<slug>/p01.png --quality high` → `build.mjs asset book-<slug> p01.png p01.png` → 该页 HTML 已引用 `p01.png` → `build.mjs done book-<slug> NN`。

---

## 固定角色库（CRS，Character Reference Sheet）

本 skill 目录下 `characters/` 放着**固定角色的官方设定图**。故事（种子或正文）里出现这些名字时，**必须按 CRS 的形象画，绝不自创新形象**：

| 名字 | CRS 文件 | 形象要点（写进 paint 提示词） |
|---|---|---|
| **嘟嘟（Dudu）** | `characters/dudu-crs.jpg` | 浅棕色毛绒小熊，米白口鼻，头大圆润（约 1/2 身高）、身体短胖；穿灰色连帽卫衣（手工编织抽绳）+ 浅蓝牛仔裤，圆圆的毛绒尾巴。性格温和、好奇、爱冒险。配色：毛绒浅棕 #B7A18C / 米白 #F1E6D2 / 深棕 #8B6E4A / 卫衣灰 #9D9D9D / 牛仔浅蓝 #9D7FD6 |
| **小杰** | `characters/xiaojie-crs.png` | 米色卷绒泰迪熊，黑色珠子眼，深棕三角绒鼻；always 穿红白条纹针织毛衣、左肩深蓝底白点拼块。温柔安静，爱喝茶、看书、窗边发呆。配色：毛色米棕 #DB8692 标注为 beige / 毛衣红 #D52828 / 奶白条纹 #F2E9DB / 肩块深蓝 #1E2444 |
| **小达** | `characters/xiaoda-crs.png` | 白色绒毛小鸭玩偶，头部非常圆润、约占整体 60%，身体短小厚实（约 25%），大而蓬松的淡黄色脚掌（约 15%，是支撑坐姿的主要形体特征）；淡黄色扁嘴，黑色珠光眼（位置偏上、间距较宽），淡淡腮红，头顶一小撮绒毛，粉色格子（gingham）领带打蝴蝶结，翅膀很小、贴在身体两侧。性格软萌、治愈、温柔、爱撒娇；喜欢被抱抱、坐在床上、陪伴主人。配色：白色绒毛 / 嘴与脚掌淡黄 pale yellow / 眼睛黑色珠光 / 领带粉色格子 |
| **米拉（Mira）** | `characters/mira-crs.jpg` | 黑白花纹（奶牛猫）毛绒玩具猫，拟人站姿约 28cm；大头设计（头部约 1/2 身高），身体圆润饱满、四肢短小；粉色鼻子和肉垫，黄绿色圆眼睛（刺绣工艺），黑色耳朵与尾巴，背部黑色斑块。性格温柔、好奇、慵懒、亲人。姿势库：站立/挥手/行走/坐着/面包趴/蜷缩睡觉。配色：黑色毛绒 #0B0B0B / 白色毛绒 #F5F5F5 / 粉（鼻子肉垫）#F4B6C1 / 黄绿（眼睛）#A9B556 |
| **小饼干（Xiaobinggan）** | `characters/xiaobinggan-crs.png` | 灰白色考拉毛绒玩偶，坐姿约 26cm（比嘟嘟略矮，高度比约 0.93:1）；蓬松长绒毛、整体圆润安静，标志性的**大白耳朵**（蓬松柔软、白色长毛），圆润安静的脸型配**黑色椭圆鼻子**（刺绣/植绒质感），灰白配色自然过渡；近左手/侧身有**小黑蝴蝶结（黑色织带）**点缀。性格软萌、安静、治愈。配色：浅灰长毛 #D3D3D3 / 白色长毛 #FFFFFF / 黑色鼻子 #1A1A1A / 黑色织带蝴蝶结 #0F0F0F |
| 嘟嘟+小杰同框 | `characters/both-crs.jpg` | 双人合并设定图 |

**用法（每一页都这样做，包括封面）**：

1. 出图**必须带 `--image` 参照**：只有嘟嘟 → `--image ~/.claude/skills/wjs-voicedrop-writing-chidrens-book/characters/dudu-crs.jpg`；只有小杰 → `xiaojie-crs.png`；只有小达 → `xiaoda-crs.png`；只有米拉 → `mira-crs.jpg`；只有小饼干 → `xiaobinggan-crs.png`；嘟嘟+小杰同框 → `both-crs.jpg`。其他组合同框（如小达和小杰）：`--image` 用**戏份最重那位**的 CRS，其余角色靠上表的形象要点在提示词里逐条文字锚定（每页同一段描述，一字不改）。
2. 提示词里写明：「严格按参考图中角色的形象、配色、衣着来画（参考图是角色设定图，只取形象；**不要**把设定图的排版、标注文字、多视图网格画进画面）」，再接统一风格前缀 + 本页画面描述 + 上表的形象要点。
3. 逐页都带同一张 CRS 参照 + 同一段形象描述，这就是绘本「主角每页长得一样」的锚——**不要**只在第一页用。
4. 故事里没提这些名字时不要硬塞；但若种子只说「小熊」而语境明显指嘟嘟/小杰（比如直接点名），按点名的来。
5. **衣着随情节走**：CRS 上的衣服是日常装扮，不是长在身上的。泡温泉/洗澡/游泳时**不穿衣服**（就是毛绒熊本身，可以搭块小毛巾）；睡觉可换睡衣；下雨加雨具。脱了衣服后**毛色、体型、五官、尾巴仍严格按 CRS**——变的只是衣服，熊不能变。提示词里明确写「此页角色不穿衣服（在泡温泉），身体按参考图的毛绒质感与配色」。

---

## 道具设定图（props 一致性——关键道具和角色一样要锚定）

故事里**出现两次以上的关键道具**（主角的水杯、雨伞、帽子、玩具、书包……尤其是情节围着它转的），不能每页现编——不同页画出来会走样。规矩：

1. **开画第一页之前，先做一张「全书参照图」`refs.png`**：用 paint 改图模式，`--image` 喂角色 CRS（both/单人，见上），提示词让它输出一张**设定图版式**——左侧保留角色形象（**每位角色画正面 + 背面两个姿态**，把 CRS 的多视图价值带进来，后面画背影的页才有锚），右侧排一列道具特写格（每个道具一格、浅色底、正面清晰，外观描述一字一句写死：颜色 / 材质 / 关键细节，如「透明瓶身、红色瓶盖、红挂绳的水杯」）。存 `book-<slug>/refs.png`。**refs.png 是工作文件，不用 `build.mjs asset` 上传、不进正文页。**
2. **refs.png 生成后必须对照验收才准开画**：view_image 同时看原 CRS 和 refs.png，按角色表逐条核对——配色、头身比、标志性细节（如嘟嘟的编织抽绳、小杰的左肩拼块、小达的粉格子领带蝴蝶结与腮红）。任何一条对不上就重新生成 refs.png，**不许带着跑偏的参照开画**——refs 是 CRS 的一跳复制品，它偏了全书会一致地偏，比随机走样更难发现。
3. **之后每一页出图，`--image` 一律带这张 `refs.png`**（它已含角色+道具，替代裸 CRS 作参照图），提示词照常申明「只取形象，不画设定图排版」，并点名本页道具的外观要点。paint 只吃一张参照图——这就是必须把角色和道具**合在一张**里的原因。**但角色的文字锚不因 refs.png 而省**：每页提示词仍然带角色表的完整形象要点——图像跳变丢掉的细节，靠文字原样补上。
4. 道具外观的**文字锚**（那句颜色/材质/细节描述）同时写进 book.json 顶层 `"props"` 字段（如 `{"水杯":"透明瓶身、红盖、红挂绳"}`），修书/续跑时新 session 一读就知道每个道具长什么样。
5. 中途发现某页道具走样 → 用 refs.png 参照重画该页，别将错就错。

**红线**：同一道具在不同页颜色/形状/细节对不上 → 没带 refs.png 或提示词没点名外观，重画。

---

## 封面

同通用 skill 的封面规则（竖版 1024x1536、书名画进图、GPT 出字），但气质要**童趣、明亮、可爱**，和内页画风一致；主角可以出现在封面上。

---

## 绘本专属 Red Flags（通用红线见 wjs-voicedrop-writing-book）

- 一页字太多、超过两三句 → 违反「字极少」，砍到一两句。
- 出现超龄难词/长复句 / 抽象道理 → 降到目标年龄段能懂的具体词。
- 结尾贴「这个故事告诉我们……」的说教 → 删掉，让故事自己说。
- 主角在不同页画风/外形不一致 → 没用统一风格前缀，重出图。
- 故事里出现嘟嘟/小杰，出图却没带对应 CRS `--image` 参照、或形象跑偏（衣着/配色/体型不对）→ 违反固定角色库，按 CRS 重画。
- 画面里出现 CRS 设定图的排版/标注/多视图网格 → 提示词没申明「只取形象」，重画。
- 图里的文字与该页正文不一致 / 有错字乱码 / 出现正文之外的多余字符或水印 → 逐字校对后重画。
- 图里没写本页正文（图文一体是 2026-08-20 起的硬规矩）→ 补上，用童趣字体放留白处。
- 有暴力/恐吓/不适内容、结局不温柔 → 一票否决，重写。
- 某页没有图 → 绘本每页都要图，补上。

