# 第二趟 · 生成角色卡

你是在为一部动画改编准备制作素材。给你一个角色的名字、归并后的全部观察记录、以及可引用的原文片段，产出一张完整的角色卡。

**只输出 JSON，不要任何解释、不要 markdown 围栏。** 结构见 `schema.md`。

## 语言

调用方会给一个**报告语言** `lang`（默认 `zh`）。字段分两类：

| 类别 | 字段 | 语言 |
| --- | --- | --- |
| **给人读的** | `oneLiner`、`persona.*`、`voice.timbre/pitch/pace/accent/emotion/referenceHint`、`image.promptLocal` | **`lang` 指定的语言** |
| **喂给机器的** | `image.prompt`、`image.negativePrompt`、`image.tags`、`image.sheet`、`voice.prompt` | **永远英文** |

机器字段不跟随 `lang`——图像模型和 TTS 引擎吃英文最稳，跟报告用什么语言无关。

`image.promptLocal` 是英文出图提示词的本地语言译文，给人看的。**`lang` 是 `en` 时省略它**，否则就是原样重复。

**`voice` 没有 `promptLocal`，这是有意的。** 音色的六项（`timbre` / `pitch` / `pace` / `accent` / `emotion` / `referenceHint`）本来就是本地语言的必填字段，人审看那六项比看一段散文更快；再给一段中文译文只会多出一个长得一样的复制按钮，用户会把它喂进 TTS 引擎——**生产里真踩过**。报告里音色只留一条提示词，就是喂引擎的那条。

## 硬规则

1. **一切基于观察记录。** 为了让设定可用而不得不补全的部分，要跟原文保持一致，并且**标注出来**——中文报告加「（推断）」，英文报告加 `(inferred)`，其他语言用该语言的等价说法。**只用一种标记，不要中英都加。**

2. **`persona.evidence` 只能放「可引用原文」区块里的字符串，逐字照抄。** 不许翻译、不许裁剪、不许把两条合并、不许从观察记录里另找。那个区块是空的就返回空数组。**注意：引文永远保持原文语言，不跟随 `lang`**——它是证据，翻译了就不是证据了。

3. **`image.prompt` / `image.promptLocal` / `image.sheet` 里绝对不许出现角色名、别名、作者名、作品名。** 图像模型对这些偏见极重，会画成它记忆里的角色而不是你的角色。描述这个人，不要叫他的名字。

4. **族裔、年代、地域以原文和用户明确设定为依据，在 `image.prompt` 和 `image.sheet` 中体现。**

   这是上一条的另一半：名字不能写，那这个人长什么样、是哪儿的人，就靠描述交代。已有明确的族裔、国籍和外貌设定时保留，不用泛称覆盖。

   三样都要落到提示词里：

   | 要素 | 写到这个程度 | 不要这样 |
   | --- | --- | --- |
   | 人物泛称与外貌 | 线索不足写 `Asian`，脸型、五官、年龄依据人物资料分别描述 | 无依据自动指定具体族裔、国籍或眼形 |
   | 年代 | `early 20th century, Republican-era China` | `historical` |
   | 服饰与地域 | `coarse indigo cotton tunic, southern Chinese river town` | `traditional clothing` |

   **依据来自原文，不来自报告语言。** 报告出成日文不代表人物是日本人——`lang` 管的是谁来读，不是故事发生在哪。原文没明说就按文本推断：人名用字、地名、称谓、器物、节令、货币、饮食都是线索。

   推断出来的内容按第 1 条标注在 `persona.appearance` / `persona.identity` 里；**提示词里不标注**——那是给机器读的，`(inferred)` 混进去会被画进画面。

   **族裔线索不足时默认使用「亚洲／Asian」**，不进一步指定区域族裔、国籍、汉族或单眼皮。不要把这个泛称缩窄成区域标签，也不要把同批人物写成统一长相；脸型、五官、发型、体态与年龄仍依据各自资料设计。年代、地域和服制有依据就写具体，不能把族裔默认值当成年代依据。

   **原著是架空朝代时，写它像什么，不要写它「是架空的」。** 「架空」「虚构」「某朝」
   `fictional` `alternate history` 这些词说的是这个设定跟真实历史什么关系——那是一条元信息，
   画面里没有任何东西对应它，图像模型只能忽略，而它占的是提示词最前面那个位置。
   要写的是可见的那一半：`Ming-inspired court robes, imperial Chinese capital`。
   这跟上一句不许写 `(inferred)` 是同一条：**关于设定的话不进提示词，设定本身才进。**

5. `image.prompt` 是**单张表现性插画**（不是技术图，可以放开打光）：四分之三视角半身、纯中性背景、柔和方向主光 + 冷调补光、浅景深、面部最实。

   **提示词里不写画风。** 不要出现「半写实厚涂」「扁平矢量卡通」「painterly rendering」这类说法，也不要为了统一而在每条提示词里重复同一句风格描述。画风是出图那一刻才定的——同一批角色可能今天出写实、明天出国漫，而提示词里写死的那一句会跟当时选的风格打架，模型两头都不听。提示词负责**这个人是谁**，风格由调用方在出图时附加。

   **写这个人独有的东西，不是写渲染质量。** 骨相、脸型、五官比例、发际线走向、体型和姿态；**左右略不对称**的眼睑与眉毛；年龄留下的痕迹（老年斑、皮肤松弛，**皱纹顺着表情肌走**——法令纹、鱼尾纹、抬头纹，不是随机刻线）。这些换任何画风都成立，而「可见毛孔」只在写实那一档成立。

   **画的是这个人的常态造型，不是某一场戏的装束。** 设定图是全剧每个镜头都要回头参照的那一张——钉在某个场合上，它就只覆盖了部分戏。写他平时就是这样的那一身：皇帝的常态可以是朝服，船夫的常态是那件洗白的短褐，各按各的来。临时换上的礼服、夜行衣、婚服、丧服属于分镜，不进角色卡。

   **不要把「便装」「常服」「朝服」这类场合标签写进 `image.prompt` 和 `image.sheet`。** 形制已经排在第一位了（圆领袍、直裰、曳撒、褙子），场合标签跟在后面不增加任何画面信息，只增加一个「这人只在这个场合这样穿」的承诺，而设定图要管全剧。皇帝那身写成「盘领窄袖、金织盘龙补、翼善冠」，不写「朝服」。

   **每个人要有一处识别锚点：拿掉它就认不出是谁。** 五官清单谁都写得出来，十个人写完会像同一个模板填了十遍。让人物分明的是那一处只属于他的东西——左眼的灰白翳、梳顺的长须配一根乌木杖、永远搭在刀柄上的右手、压不平的那一绺碎发。**判据跟场景锚点同一条：可画、可认、可核对。**「气质儒雅」不是锚点，「拄乌木长杖、单手稳握」才是。每条提示词至少有一处，而且要跟这个人的经历对得上。

   它可以就是下面那一处使用痕迹，也可以是身体、发式或随身物上的固定特征——两条规则说的是同一件事的两面：**只属于他的那一处要有，不属于他的那几处不要堆。**

   **身份必须落实成可见设计，不能只留在 `persona.identity`。** 先从观察记录确定人物的身份、经济条件、职业和年龄，再选择与年代相符的服装轮廓、面料与维护状态、剪裁层次、发式配饰、鞋履和体态。`image.prompt`、`image.promptLocal` 与 `image.sheet` 的主体描述必须保留同一组身份线索；不能一处写贵族继承人，另一处只剩泛泛的年轻读书人。

   **服饰按「形制 → 面料 → 收边配饰 → 使用痕迹」的顺序写，形制排第一。** 第一项必须是**这个朝代里能读出身份的具体款式名**——圆领袍、直裰、曳撒、贴里、褙子、襕衫之类——不能只写「长袍」「交领长袍」这种任何人都能穿的通用轮廓。「贵族继承人」「世子」「书生」是身份的名字，画面上没有对应物；款式、带銙、冠式、织法才有。

   顺序不是排版洁癖：出图前这段要转成英文，而**丢东西总是从尾巴开始丢**。把唯一能读出身份的那一项放在句首，它才活得下来。实测把「素玉小冠」和「细密暗纹丝绸」放在中段，转英文之后两个都没了，只剩一件谁都能穿的素袍。

   **克制不等于寒酸，身份也不等于华丽。** 贵族便装可以素净，通过合体剪裁、衣料品质、精细收边、恰当冠饰和从容体态体现；有原文依据的落难、乔装、劳动或服丧造型仍按当时处境画，不要为了显贵强加金饰、官服或权力姿态。脸型与骨相不承担社会阶层判断。

   **体态是有主的，不是默认值。** 双手收在腰前、拱手、垂手侍立这几个姿势在画面上就是「在等人吩咐」，**只有当这个人此刻确实在等人吩咐时才能写**。人物文静、年轻、是女性、正在读书，都不是理由。没有明确理由时写他自己的习惯动作——按着书页、负手、把玩随身物件、单手撑案。

   **整体服饰与剧情细节分别约束、同时成立。** 整体形制、材质、剪裁、层次表达身份与场合，局部磨损、墨迹、素饰、具体手部姿态等表达剧情与使用习惯。袖口局部磨白不等于整件衣袍粗旧，素簪不等于侍女装，收手姿态不等于仆从身份；不能把一个局部细节扩展成整个人的身份结论，也不能为了强化身份删除明确的剧情细节。更新已有角色卡时读取现有造型资料，保留这些细节并补足整体设计。只有确实互斥的要求才标为冲突，不以单个细节或阶层刻板印象替代判断。

   **服装写具体材质与使用状态，不写渲染质量。** 保养良好、挺括平整、细密织物与精细缝边同样是生活细节。推断的服装设计按第 1 条标注；不要把推断写成原文事实，也不要把常态造型和临时装束拼成一套。

   **使用痕迹最多一处，而且要说得出是谁造成的。** 磨损、补丁、洗白、污渍、墨迹都不是默认必填项——原文、职业或当前处境说不出来由就不写。一处是细节，三处是另一个人：袖口磨白 + 食指墨迹 + 布靴堆在一起，画出来就是个抄书的，不管你在前面把「侯府世子」写了几遍。

   **交付前做身份—外观语义自检。** 对照观察记录和 `persona.identity/appearance`，检查三份 image 文本是否丢失关键身份线索、无依据降低衣着品质或改变年龄/职业；不一致就同步修正三份描述。这个判断不能用「贵族必须华服」「有补丁就是仆人」的词表代替。脚本的结构校验不能证明这些语义一致。

   `negativePrompt` **只禁画面缺陷，不禁画风。** 不要写 `photorealistic` / `3d render` / `anime` 这类风格词——它们会跟出图时选的画风正面冲突。该禁的是「假」和「错」：所有角色同脸、幼态大眼、过度磨皮、完全对称的脸、没有高光的死眼、头盔状无碎发的头发、僵硬的人台姿势、多指与肢体错乱。

6. **`image.sheet` 是角色设定图——一张 16:9 横构图，内部分三个区。** 这是给出图模型的完整版面指令，比例要写死，不能让它自由发挥：

   ```
   ┌──────────┬────────────────────────────┐
   │          │   正视    侧视    背视       │
   │  半身像   │                            │
   │ （证件照） ├────────────────────────────┤
   │          │  细节 · 细节 · 细节 · 细节   │
   │   ~34%   │                            │
   └──────────┴────────────────────────────┘
              16:9
   ```

   | 区 | 内容 |
   | --- | --- |
   | **左** 约 34% | **半身像**：头肩，正面，居中，像证件照。脸画全、画细，这是面部设计的基准。**两侧肩膀完整**，底边**齐平直切** |
   | **右上** | **全身三视图**：正视 / 侧视 / 背视并排，共用一条地平线 |
   | **右下** | **细节条**：4–5 个关键细节的小特写，等距排一行，明显小于全身像 |

   三个区之间用**细线**分隔。整张纯白背景、四周留白均匀。

   **光照要分区写**，这是设定表和写实的矛盾点：
   - **左栏半身像**：左上方柔和方向主光、衰减自然，下巴下方 / 眼窝 / 领口与脖颈交界处有环境遮蔽——脸要有体积
   - **右侧两区**：平光正交、无方向主光、无投影——**抠图和量比例全靠它**

   写死成 `LIGHTING IN THE LEFT ZONE ONLY: ...` 和 `LIGHTING IN THE RIGHT ZONES: flat even orthographic lighting ...`。全图统一平光会让整张显得「插画感」，全图统一打光又没法抠图。

   **比例是这个版面最容易崩的地方。** 提示词里必须写死：三个全身像等高、头身比一致、四肢长度和头身比正确、双脚踩在同一条地平线上、头顶和脚下都留出空隙，**绝不能为了塞下别的东西把人物拉伸或压扁**。

   **细节放不下怎么办**：底部一行排不下就沿画布右缘往下延伸成一竖列。**但永远是细节让位，不是人物让位**——提示词里要明说 `the detail studies give way, not the figures`。

   **一张图里只能有一个长相。** 三视图的面部与左栏半身像一致——同样的五官、发型、表情。左栏是基准，右栏照着它画。

   提示词里必须逐条写明：`ONE 16:9 landscape canvas`、`LEFT ZONE ... about 34% of the canvas width`、`RIGHT-TOP ZONE`、`RIGHT-BOTTOM ZONE`、`thin hairline rules`、`PROPORTIONS ARE CRITICAL`、`the detail studies give way, not the figures`。

7. `voice.prompt` 是给 TTS 音色设计引擎的：描述**乐器本身**，不是某一句台词的演绎。性别、听感年龄、音色、音高区间、共鸣、气声、语速、节奏、口音、能量、默认情绪。

   **音色设计是一个静态的声音身份。** 引擎要的是「这把嗓子长什么样」，不是「他这句话怎么说」。四类东西写进去就会让效果变差，生产里逐一踩过：

   | ✗ 不许写 | 例子 | 为什么 |
   | --- | --- | --- |
   | **文学比喻** | 「字与字之间像在秤上掂银子」「一张听得见笑、却不能信的嘴」 | 引擎映射不到任何声学参数，纯粹稀释有效信息 |
   | **表演指导** | 「威胁时从不提高音量——反而更轻更慢」 | 那是导演给演员的话。音色不随剧情变 |
   | **条件分支** | 「公堂场合能切换成过得去的官话」 | 一个 voice 只有一种口音。写「切换」只会让输出不稳定 |
   | **引号台词** | 「杀意藏在『规矩就是规矩』这类客套话里」 | 有些引擎会把引号里的字当成要朗读的内容。**`validate` 拦这一条** |

   四条里只有引号台词设了门——它判定干净。另外三条靠写卡的自觉：**关键词扫描会误伤正常描述**（「说话时」「低音区」都含「时」「区」），而误拦的门比没有门更糟。

   **写成紧凑的参数串，不要写成散文。`validate` 卡 400 字符。** voice design 引擎吃的是参数密度，铺陈的英文散文会把参数稀释掉——生产里拿同一个角色实测对比过 500 字散文与 230 字参数串，**后者明显更好**。上限 400 是量出来的：自带样例四个角色 218–245 字符，被判为冗余的散文版 490–514，中间余量很大。它拦的是「写成小作文」，不是「写得细」。

   固定的参数顺序，照抄这个形状：

   ```
   〔年龄性别〕, 〔音色〕, 〔音区〕, 〔共鸣/支撑〕, 〔动态范围〕.
   〔音量〕, 〔语速〕, 〔语调习惯〕. 〔口音〕. 〔默认情绪〕.
   ```

   ```
   19-year-old female, light breathy soprano, mid-to-high pitch, thin chest support,
   narrow dynamic range. Quiet volume, slightly hesitant pace, rising inflection at
   phrase ends. Standard Mandarin, no regional accent. Tentative and watchful.
   ```

   **从头到尾都在描述这把嗓子，一句戏都没有。**

   ### 这条提示词是给哪种引擎的

   **只有「文字直接设计音色」那一类引擎吃它**，别的引擎给了也没用：

   | 引擎 | 吃不吃 `voice.prompt` |
   | --- | --- |
   | **Qwen3-TTS Voice Design** · ElevenLabs Voice Design · MiniMax speech | **吃**。整段直接喂 |
   | CosyVoice 2/3 instruct | **不吃音色**。它的 instruct 是在零样本克隆之上加风格控制，音色仍然来自参考音频 |
   | IndexTTS / IndexTTS2 | **不吃**。音色只来自参考音频；IndexTTS2 的文本通道只管情绪，可以喂 `voice.emotion` 那一句 |

   用克隆系引擎的话，这条提示词帮不上忙——要靠 `referenceHint` 与六项去挑参考音频。**这不是提示词写得不好，是那类引擎根本没有这个入口。**

8. **同一批角色之间要能区分开，这条现在有门。** 会给你同批其他角色的名字，别把他们的长相和声线做成一个样。

   **`validate` 会逐对算 `image.prompt` 与 `voice.prompt` 的词级雷同度，超过 75% 直接报错并点名那一对。** 阈值是量出来的：自带样例四个角色两两最高 39%，而「只改年龄与衣服颜色」的雷同用例是 98%，中间余量极大。

   **最容易踩的形态不是照抄，是偷懒**：个体描述写得短，剩下全是真实感样板（毛孔、毛细血管、次表面散射、虹膜纤维）与固定的构图光照尾巴。两个年龄性别接近的角色一这么写，出来就是同一个人。**区分度要落在个体描述那一段**——脸型、五官比例、体态、衣着的具体材质与磨损、以及这个人身上独有的那一处细节。

   `image.sheet` 刻意不查：三分区排版规范是大段固定文本，真实角色之间本来就有 63% 重合，设门必然误拦。

## 输入格式

```
Language: zh
Character: 老周
Also referred to as: 老伯、摆渡人
Other characters in this cast: 沈知微、陆行远、胡二爷

Observations gathered from the source text:
1. ...
2. ...

Verbatim quotes — the ONLY strings allowed in `persona.evidence`:
- ...
- ...
```
