Skill: beermanzz/character-consistency-workflow (version 1.0.0)

--- name: character-consistency-workflow description: AI 短剧/短片创作中的角色一致性工作流。解决"人物漂移"（character drift）问题——多镜头生成时同一角色外观漂移、换脸、换装。触发关键词：角色一致性、人物漂移、换脸、定妆照、AI视频、多镜头、一致性Tokens、Seedance、Nano Banana。当需要保持角色跨镜头外观统一、防止AI生成时角色"变脸"时使用此技能。 --- # Character Consistency Workflow # AI 短剧创作 · 角色一致性工作流 > 解决 AI 生成多镜头时"人物漂移"（Character Drift）的系统方法论。 --- ## 🔍 问题诊断：什么是 Character Drift？ **Character Drift（人物漂移）** 是 AI 生成视频序列时，同一角色在不同镜头间的外观变化： | 漂移类型 | 表现 | 严重程度 | |---------|------|---------| | **长相漂移** | 脸型、五官、发色在镜头间变化 | ⭐⭐⭐ 高 | | **服装漂移** | 衣服颜色、款式、饰品不一致 | ⭐⭐ 中 | | **表情漂移** | 情绪表情、眼神光变化 | ⭐⭐⭐ 高 | | **肤色漂移** | 肤色明暗、冷暖色调跳变 | ⭐⭐ 中 | | **年龄感漂移** | 面部年龄特征不稳定 | ⭐⭐ 中 | ### 三大一致性层级 ``` Level 1: Appearance（长相一致性） └── 脸型、五官比例、肤色、发型的基准锁定 Level 2: Costume（服装一致性） └── 服装颜色、款式、饰品、道具的连续性 Level 3: Emotion（表情一致性） └── 情绪状态、眼神、面部肌肉走向 ``` ### 技术背景 - **Seedance 2.0** 三大核心突破之一：解决 Character Drift（漂移角色） - **Nano Banana 2**：支持 5 角色 / 14 物体一致性 - 当前主流工具（LibLib、即梦等）均存在不同程度的漂移问题，需要系统性防漂移工作流 --- ## 📦 第一阶段：Asset Preparation（资产准备） ### 定妆照拍摄规范 每个角色需要准备以下参考图（详见 `references/asset-preparation.md`）： 1. **正面定妆照** × 1 - 纯色背景，正面机位，自然光 - 完整上半身可见 2. **侧面/3/4 侧面照** × 2 - 与正面照同天拍摄，光源一致 - 服装、妆容完全相同 3. **表情参考 Sheet** × 1 组 - 6-8 种基础情绪表情 - 平静、开心、愤怒、悲伤、惊讶、沉思 4. **服装细节特写** × 3-5 张 - 领口、袖口、饰品、面料纹理 - 用于补全镜头细节 ### 文件夹组织 ``` characters/ ├── protagonist/ │ ├── ref_front.jpg # 正面定妆照 │ ├── ref_side.jpg # 侧面照 │ ├── ref_3quarter.jpg # 3/4侧面照 │ ├── expressions/ │ │ ├── neutral.jpg │ │ ├── happy.jpg │ │ ├── angry.jpg │ │ └── ... │ └── costume_detail/ │ ├── collar.jpg │ └── accessory.jpg └── antagonist/ └── ... ``` --- ## 🏷️ 第二阶段：Consistency Tokens（一致性 Tokens） ### Token System 概述 Consistency Tokens 是在每个 prompt 中重复使用的固定描述块，用于锁定角色特征。 **Token 公式：** ``` [BASE_IDENTITY] + [PHYSICAL] + [CLOTHING] + [HAIR] + [DISTINGUISHING_MARKS] ``` ### 完整 Token 模板 ``` [REDACTED_SECRET] BASE_IDENTITY: - 姓名/角色名：[角色名] - 年龄感：青年/中年/少年 - 性别外观：[描述] PHYSICAL: - 脸型：[如：鹅蛋脸，颧骨略高] - 眉型：[如：剑眉，眉峰分明] - 眼型：[如：杏眼，眼尾微翘] - 鼻型：[如：直鼻，鼻梁挺拔] - 唇型：[如：薄唇，唇角微扬] SKIN: - 肤色：[如：健康小麦色，质地细腻] - 特殊：[如：左眼角一颗泪痣] HAIR: - 发长：[如：长发及腰] - 发色：[如：深棕色] - 发型：[如：中分，发尾微卷] CLOTHING（按场景固定）: - 场景A服装：[精确描述，包括颜色、款式、饰品] - 场景B服装：[精确描述，包括颜色、款式、饰品] EXPRESSION_PATTERN: - 常用表情：[如：平静时眉心微蹙] - 眼神特点：[如：目光沉稳，偶有闪躲] ``` ### 多场景 Token 示例 ``` # === SCENE 1 TOKENS === [Character: LINDA, female, 28, oval face, sharp chin, arched eyebrows, almond eyes, high nose bridge, thin lips, fair skin with rosy cheeks, long black hair in low ponytail, wearing navy blue blazer, white silk blouse, pearl earrings, minimal gold watch on left wrist] # === SCENE 2 TOKENS (same character, different outfit) === [Character: LINDA, female, 28, oval face, sharp chin, arched eyebrows, almond eyes, high nose bridge, thin lips, fair skin with rosy cheeks, long black hair in low ponytail, wearing red cocktail dress, black stiletto heels, diamond drop earrings] ``` > 注意：长相描述（Physical）**不变**，只有服装描述（Clothing）随场景更新。 --- ## 🎬 第三阶段：Cross-Shot Consistency（跨镜头一致性） ### Prompt 构建规则 **规则 1：每个 Prompt 包含完整 Token** 即使镜头只拍背影，Token 也必须完整存在，防止特征漂移。 **规则 2：Reference Image 路径写入 Prompt** ``` Style Reference: ./characters/protagonist/ref_front.jpg Character Identity locked: [Token Block] ``` **规则 3：Negative Token（反向描述）** ``` Negative: [避免的特征，如：different face shape, different hair color, different clothing, extra limbs, deformed hands, blurry face] ``` **规则 4：镜头间的渐变规则** | 镜头切换类型 | Token 处理 | |------------|-----------| | 同一场景内切 | 完全一致的 Token | | 场景跳切 | 服装更新，Physical Token 不变 | | 时间跳跃 | 重新确认所有 Token，生成前对照定妆照 | | 情绪特写 | 在 Token 基础上叠加表情描述（emotion overlay） | ### 表情情绪叠加格式 ``` # Base Token + Emotion Overlay [Character: LINDA ...] + Emotion: eyes wide, pupils dilated, mouth slightly open, eyebrows raised, expression of shock ``` ### 镜头序列示例 ``` Shot 1: Medium Shot [Character: LINDA ... wearing navy blazer...] + neutral expression Prompt: Medium shot, LINDA standing in office, facing camera, natural lighting, cinematic Shot 2: Close-up (same scene) [Character: LINDA ... wearing navy blazer...] + slight frown, focused eyes Prompt: Close-up, LINDA face, eyes looking at document, slight frown, cinematic lighting, shallow depth of field Shot 3: Cutaway to hands [Character: LINDA ... wearing navy blazer...] + (no face needed) Prompt: Close-up, LINDA hands typing on keyboard, navy blazer sleeve visible, gold watch on wrist, cinematic lighting ``` --- ## ✅ 第四阶段：Quality Check（质量检查） ### 一致性检查清单 生成完成后，按以下顺序检查： ``` □ 1. 长相一致性 □ 脸型是否与定妆照一致？ □ 眉毛形状、眼睛形状是否漂移？ □ 发色、发长是否一致？ □ 2. 服装一致性 □ 服装颜色是否一致？ □ 饰品位置是否正确？ □ 面料质感是否一致？ □ 3. 肤色一致性 □ 肤色明暗是否跳变？ □ 冷暖色调是否一致？ □ 4. 比例一致性 □ 头身比是否稳定？ □ 手部比例是否正常？ □ 5. 光影一致性 □ 光源方向是否一致？ □ 光影质感是否统一？ ``` ### 漂移问题修复对照表 | 问题 | 修复方案 | |-----|---------| | 脸型漂移 | 在 Token 中加入更精确的脸型描述，使用 Reference Image | | 发色漂移 | 明确标注发色 hex 值，如：深棕色 #3B2417 | | 服装颜色漂移 | 明确标注服装颜色，如：海军蓝 #1B2838 | | 眼睛形状漂移 | 使用 expression sheet 中的眼部特写作为参考 | | 手部畸形 | 加入 negative [REDACTED_SECRET] hands, extra fingers | | 饰品消失 | 在 Token 中详细列出所有饰品，加入场景描述 | ### 跨平台一致性策略 | 平台/模型 | 一致性能力 | 建议 | |---------|----------|-----| | Seedance 2.0 | ⭐⭐⭐⭐⭐ 最佳 | 主力使用，其 Character Drift 已被解决 | | Nano Banana 2 | ⭐⭐⭐⭐ 强 | 支持 5 角色/14 物体，适合群戏 | | LibLib/即梦 | ⭐⭐⭐ 中等 | 需要更严格的 Token + Reference | | 其他模型 | ⭐⭐ 不稳定 | 建议用 Seedance 处理关键角色镜头 | --- ## 🛠️ 工具与集成 ### Reference Image 使用方式 在 prompt 中引用本地文件路径： ``` # 使用本地路径 Reference: ./characters/protagonist/ref_front.jpg Style Reference: ./characters/protagonist/ref_front.jpg # 多个参考角度 Primary Ref: ./characters/protagonist/ref_front.jpg Secondary Ref: ./characters/protagonist/ref_3quarter.jpg ``` ### 推荐的 AI 工具 - **Seedance 2.0** — 目前 character consistency 最佳解决方案 - **Nano Banana 2** — 多角色/物体一致性 - **LibLib AI** — 参考图 + Token 组合使用 - **即梦** — 参考图锁定 + 负向描述 --- ## 📁 相关文件 - `references/asset-preparation.md` — 定妆照拍摄规范与资产准备详解 - `references/consistency-tokens.md` — Consistency Tokens 完整模板与格式说明

path: references/asset-preparation.md
content: # Asset Preparation Guide（资产准备指南）

> 定妆照、表情参考、角度参考的完整拍摄与整理规范。

---

## 📋 概述

AI 生成角色一致性的根基在于 Reference Assets（参考资产）的质量。再好的 Token 系统，如果定妆照本身光线不一致、表情不标准，也会导致漂移。

**核心原则：**
- 同一天拍摄所有定妆照
- 固定光源、背景、妆容
- 建立清晰的文件夹命名规范

---

## 🎬 定妆照拍摄规范

### 最小要求：3 个基准角度

| 角度 | 用途 | 拍摄要求 |
|-----|------|---------|
| **正面照** | 主参考，锁定面部基准 | 纯色背景（推荐灰/白），正面机位，自然光或标准影视光 |
| **侧面照** | 侧脸特征锁定 | 同背景，光源与正面照一致，90° 侧脸 |
| **3/4 侧面照** | 中间角度过渡 | 同背景，光源与正面照一致，45°-60° 侧脸 |

### 推荐扩展：6 个角度（高质量工作流）

```
正面 → 正面偏左 15° → 正面偏右 15° → 侧面左 → 侧面右 → 背面
```

### 拍摄要求

**光线标准：**
- 推荐：3-point lighting（三点布光），主光在相机左侧 45°
- 避免：单一顶光（会在眼窝产生阴影）
- 一致性：所有角度使用完全相同的光源设置

**背景标准：**
- 纯色无纹理背景（灰色 #808080 或白色 #FFFFFF）
- 背景与角色之间保持 1.5m 以上距离（避免轮廓染色）

**服装标准：**
- 定妆照拍摄时穿正式出场服装（场景A主打服装）
- 如有多个主要造型，每个造型单独拍摄一套定妆照

**妆容标准：**
- 最终上镜妆容（避免淡妆导致 AI 自行"补全"浓妆）
- 眉色与发色协调

---

## 😊 表情参考 Sheet（Expression Sheet）

### 标准 8 表情组合

每个角色需要建立一套表情参考，建议排列在一张 2×4 或 4×2 的网格图中：

```
┌─────────┬─────────┬─────────┬─────────┐
│ Neutral │  Happy  │  Angry  │  Sad    │
│  平静   │  开心   │  愤怒   │  悲伤   │
├─────────┼─────────┼─────────┼─────────┤
│ Surprise│ Disgust │  Fear  │ Pensive │
│  惊讶   │  厌恶   │  恐惧   │  沉思   │
└─────────┴─────────┴─────────┴─────────┘
```

### 拍摄规范

- 表情之间间隔 3-5 秒（让表情完全松弛后再拍下一个）
- 眼睛直视镜头（用于 eye contact 参考）
- 嘴角、眉毛完全放松后再进入下一个表情
- 分辨率要求：至少 1024×1024px

### 情绪表情细化

| 情绪 | 关键面部特征 |
|-----|------------|
| **愤怒 (Angry)** | 眉毛内聚，眉心皱纹，嘴唇收紧，下颌突出 |
| **开心 (Happy)** | 眼轮匝肌收缩（卧蚕），嘴角上扬，露出上齿 |
| **悲伤 (Sad)** | 眉毛内角上抬，嘴角下垂，眼眶略红 |
| **惊讶 (Surprise)** | 眉毛抬高，瞪眼，嘴唇微张 |
| **恐惧 (Fear)** | 眉毛抬高并聚拢，眼睛睁大，嘴唇后拉 |
| **厌恶 (Disgust)** | 眉毛下沉，鼻子上皱，上唇抬高 |
| **沉思 (Pensive)** | 眼神向斜上看，轻微侧头，手指接触嘴唇 |

---

## 👔 服装细节特写（Costume Detail）

### 必须拍摄的细节

| 部位 | 说明 | 数量 |
|-----|------|-----|
| **领口** | 领型（圆领/V领/立领）、材质（蕾丝/棉/丝绸） | ×1 |
| **袖口** | 袖型（长袖/短袖/喇叭袖）、袖口处理 | ×1 |
| **腰部** | 腰带/收腰方式/腰线位置 | ×1 |
| **饰品** | 项链/耳环/手表的近距离特写 | ×2-3 |
| **面料** | 特殊面料（丝绸/皮革/针织）的纹理 | ×1 |
| **鞋子** | 完整鞋子 + 鞋面特写 | ×1 |

### 拍摄要求

- 使用微距或近摄模式
- 光线：与定妆照一致的光源方向
- 背景：可使用中性灰背景

---

## 📁 文件夹组织规范

### 完整目录结构

```
project/
└── characters/
    └── [character_name]/
        ├── meta.json              # 元数据（角色描述、年龄、性别）
        │
        ├── base/                  # 基准定妆照
        │   ├── ref_front.jpg      # 正面照（主参考）
        │   ├── ref_side_L.jpg     # 左侧侧面照
        │   ├── ref_side_R.jpg     # 右侧侧面照
        │   ├── ref_3quarter_L.jpg  # 左 3/4 侧面
        │   ├── ref_3quarter_R.jpg # 右 3/4 侧面
        │   └── ref_back.jpg       # 背面照（可选）
        │
        ├── expressions/           # 表情参考
        │   ├── neutral.jpg
        │   ├── happy.jpg
        │   ├── angry.jpg
        │   ├── sad.jpg
        │   ├── surprise.jpg
        │   ├── disgust.jpg
        │   ├── fear.jpg
        │   ├── pensive.jpg
        │   └── expression_sheet.jpg  # 合成网格图
        │
        ├── costume/               # 服装参考
        │   ├── outfit_A/          # 场景A服装
        │   │   ├── full.jpg       # 全身图
        │   │   ├── collar.jpg     # 领口特写
        │   │   ├── sleeve.jpg     # 袖口特写
        │   │   └── accessory.jpg  # 饰品特写
        │   └── outfit_B/          # 场景B服装
        │       └── ...
        │
        ├── lighting/              # 光线参考（可选）
        │   ├── main_light.jpg     # 主光参考
        │   └── rim_light.jpg      # 轮廓光参考
        │
        └── tokens/                # Token 笔记
            └── base_tokens.txt    # 该角色的基础 Token 描述
```

### meta.json 示例

```json
{
  "name": "LINDA",
  "chinese_name": "琳达",
  "age_appearance": "28-30",
  "gender": "female",
  "face_shape": "oval",
  "skin_tone": "#F5D0C5",
  "hair_color": "#2C1810",
  "hair_length": "long",
  "eye_color": "#4A3728",
  "build": "slim, 168cm",
  "personality_traits": "reserved, sharp-tongued",
  "distinguishing_marks": [
    "left temple small mole",
    "two beauty marks on neck"
  ],
  "wardrobes": {
    "outfit_A": {
      "name": "Office Look",
      "description": "Navy blue blazer, white silk blouse, pearl earrings, gold watch"
    },
    "outfit_B": {
      "name": "Evening Dress",
      "description": "Red cocktail dress, black stiletto heels, diamond earrings"
    }
  }
}
```

---

## ⚠️ 常见错误与避免方法

| 错误 | 后果 | 避免方法 |
|-----|------|---------|
| 不同天拍摄定妆照 | 光线色温不同，一致性下降 | 集中在同一天、同一个地点拍摄 |
| 背景有纹理 | AI 学习到背景纹理，导致穿帮 | 使用纯色无纹理背景 |
| 表情用力过猛 | 与实际生成的表情差距大 | 表情保持自然，只有关键肌肉动 |
| 饰品遗漏 | 镜头间饰品随机消失 | 在 Token 中列出所有饰品 |
| 服装不完整 | AI 自行补全导致换装 | 定妆照穿全套正式出场服装 |
| 分辨率过低 | 细节丢失，参考价值低 | 定妆照至少 1024×1024px |

---

## 🔗 与 Token 系统的衔接

完成 Asset Preparation 后，将关键信息填入 `consistency-tokens.md` 中的 Token 模板：

```
[Character: LINDA]
Face: oval, sharp chin
Skin: #F5D0C5, rosy cheeks
Hair: long, #2C1810, low ponytail
Eyes: #4A3728, almond shaped
Outfit A: navy blazer + white silk blouse + pearl earrings
Outfit B: red cocktail dress + diamond earrings
Reference: ./characters/LINDA/base/ref_front.jpg
```

> 资产质量 × Token 精确度 = 最终一致性


path: references/consistency-tokens.md
content: # Consistency Tokens Guide（一致性 Tokens 指南）

> 如何为角色编写跨镜头、跨场景保持一致性的描述 Tokens。

---

## 🔑 什么是 Consistency Tokens？

Consistency Tokens（一致性标记）是一组标准化的角色描述文本块，在每个镜头的 prompt 中重复使用，确保 AI 生成时不会漂移。

**核心逻辑：**
```
同一个角色 × 不同镜头 × 相同的 [REDACTED_SECRET] Consistency
```

Tokens 不是一次性写完就结束——它是**贯穿整个项目的工作文档**，每个场景开始前对照更新。

---

## 🏗️ Token 结构：5 层描述体系

```
Layer 1: BASE_IDENTITY    — 角色基本身份（姓名、性别、年龄感）
Layer 2: PHYSICAL         — 面部物理特征（脸型、眉、眼、鼻、唇）
Layer 3: SKIN             — 肤色与特殊标记（痣、疤、纹身）
Layer 4: HAIR             — 发型与发色
Layer 5: CLOTHING         — 服装与饰品（按场景分）
Layer 6: EXPRESSION       — 表情模式与眼神特点
```

---

## 📝 Token 模板（完整版）

```markdown
# ══════════════════════════════════════
# CHARACTER: [角色名]
# Created: [日期]
# Last Updated: [日期]
# ══════════════════════════════════════

## LAYER 1: BASE_IDENTITY
- Name: [角色名]
- Alias/Nickname: [别名]
- Gender: [male/female/non-binary]
- Apparent Age: [e.g., late 20s, early 30s]
- Age Category: [young adult / middle-aged / teenage / child]

## LAYER 2: PHYSICAL FEATURES
- Face Shape: [oval / round / square / heart / long / diamond]
- Forehead: [e.g., broad, slightly recessed hairline]
- Eyebrows: [shape, e.g., arched, thick, thin, rounded arch]
- Eye Shape: [e.g., almond, round, hooded, monolid]
- Eye Size: [large / medium / small]
- Eye Color: [e.g., dark brown #3B2417]
- Iris Detail: [e.g., hazel ring around pupil]
- Nose Shape: [e.g., straight, aquiline, button, pointed]
- Nose Bridge: [e.g., high, low, with slight bump]
- Lips: [e.g., full, thin, defined cupid's bow]
- Lip Color: [e.g., natural pink #E8A0A0]
- Jawline: [e.g., defined, soft, strong chin]
- Cheekbones: [e.g., prominent, flat, high]

## LAYER 3: SKIN & MARKS
- Skin Tone: [e.g., fair porcelain #FDF5E6, warm beige #D4A574]
- Skin Texture: [e.g., smooth, oily T-zone, dry, combination]
- Freckles: [yes/no, location if yes]
- Moles: [yes/no, location and size if yes]
  - Example: "single dark mole on left temple, 2mm"
- Scars: [yes/no, location and description if yes]
- Tattoos: [yes/no, location and description if yes]
- Special Features: [e.g., birthmark on right shoulder blade]

## LAYER 4: HAIR
- Hair Length: [bald / buzzcut / very short / short / medium / long / very long]
- Hair Color: [e.g., black #1A0F0A, platinum blonde #F5E6D3]
- Hair Style: [e.g., side-swept bangs, middle part, slicked back]
- Hair Texture: [e.g., straight, wavy, curly, coily]
- Hair Details: [e.g., loose strands framing face, wispy bangs]
- Hair Accessories: [e.g., hairpin, headband, scrunchie]
- Facial Hair (if applicable): [none / stubble / beard / mustache]

## LAYER 5: CLOTHING (per scene)
### Scene A: [场景名]
- Top: [exact description, color, material]
- Bottom: [exact description, color, material]
- Full Body: [outfit overview]
- Outerwear: [jacket, coat, cardigan if applicable]
- Footwear: [shoes, boots, heels, color, style]
- Accessories:
  - Earrings: [type, material, color]
  - Necklace: [type, material, color]
  - Watch/Jewelry: [specific brand or style if notable]
  - Bag: [bag style and color]
  - Other: [glasses, scarf, belt, etc.]
- Color Hex Codes:
  - Blazer: #1B2838 (navy blue)
  - Blouse: #FFFFFF (white)
  - Heels: #0D0D0D (black)

### Scene B: [场景名]
[... same structure ...]

## LAYER 6: EXPRESSION PATTERNS
- Neutral Expression: [e.g., slight furrow between brows when at rest]
- Smile Type: [e.g., closed-lip smile, shows teeth, asymmetric]
- Common Facial Habit: [e.g., bites lower lip when nervous]
- Eye Contact Style: [e.g., direct, tends to look away when uncomfortable]
- Gesture Patterns: [e.g., touches necklace when anxious]
- Voice Quality: [e.g., low, melodic, husky, sharp]

## LAYER 7: DISTINGUISHING MARKS (Optional)
- Gait/Walk: [e.g., purposeful strides, slight limp, graceful]
- Posture: [e.g., straight-backed, slouches, military bearing]
- Movement Style: [e.g., fluid, sharp, economical]
```

---

## 💡 Token 编写实战示例

### 示例角色：LINDA（琳达）

```markdown
## LAYER 1: BASE_IDENTITY
- Name: Linda Chen
- Alias: "Lind"
- Gender: Female
- Apparent Age: 28-30
- Age Category: Young Adult

## LAYER 2: PHYSICAL FEATURES
- Face Shape: Oval, slightly heart-shaped
- Forehead: Medium width, no hairline recession
- Eyebrows: Arched, medium thickness, naturally groomed
- Eye Shape: Almond, slightly upturned outer corners
- Eye Size: Large
- Eye Color: Dark brown #3B2417
- Iris Detail: Warm flecks in light
- Nose Shape: Straight with slight upward tilt at tip
- Nose Bridge: High and defined
- Lips: Medium full, defined cupid's bow
- Lip Color: Dusty rose #C4908A
- Jawline: Soft with slightly pointed chin
- Cheekbones: High and defined

## LAYER 3: SKIN & MARKS
- Skin Tone: Fair with warm undertones #F5D0C5
- Skin Texture: Normal, dewy finish
- Freckles: None
- Moles: One small dark mole on left temple (2mm)
- Scars: None
- Special Features: Small beauty marks on neck (two, right side)

## LAYER 4: HAIR
- Hair Length: Long (waist length when down)
- Hair Color: Dark brown #2C1810 (near black in low light)
- Hair Style: Middle part, slight wave at ends
- Hair Texture: Straight to slightly wavy
- Hair Details: Face-framing layers, wispy at temples
- Hair Accessories: Minimal — sometimes thin gold hairpin

## LAYER 5: CLOTHING
### Scene A: Office
- Top: White silk blouse, high collar, mother-of-pearl buttons
- Bottom: Navy blue wool blazer, single-breasted, two buttons
- Footwear: Black pointed-toe pumps, 7cm heel
- Accessories:
  - Earrings: Pearl drop, white with pink overtone, 1.5cm
  - Watch: Minimalist gold dress watch, thin brown leather strap
  - Ring: Simple gold band on right ring finger
- Color Hex Codes:
  - Blazer: #1B2838
  - Blouse: #FFFFFF
  - Pumps: #0D0D0D
  - Pearl: #FDEEF4

### Scene B: Evening Event
- Top: Crimson red cocktail dress, off-shoulder, fitted waist
- Bottom: Same as above (dress is one-piece)
- Footwear: Black stiletto heels, strappy
- Accessories:
  - Earrings: Diamond drop earrings, 2cm, white gold setting
  - Clutch: Black satin envelope clutch, gold clasp
  - Necklace: None (neckline is statement)
- Color Hex Codes:
  - Dress: #C41E3A (crimson)
  - Stilettos: #0D0D0D

## LAYER 6: EXPRESSION PATTERNS
- Neutral Expression: Slight furrow between brows, composed
- Smile Type: Controlled, shows minimal teeth, asymmetric (left corner higher)
- Common Facial Habit: Touches pearl earring when thinking
- Eye Contact Style: Direct and steady, piercing when focused
- Gesture Patterns: Precise hand movements, minimal fidgeting
- Voice Quality: Low, measured, slight rasp on emphasis
```

---

## 🎬 Prompt 中使用 Token 的格式

### 标准格式

```markdown
[Character: LINDA, female, late 20s, oval face, high cheekbones, 
almond eyes #3B2417, full lips #C4908A, fair skin #F5D0C5, 
long dark brown hair #2C1810 middle part, wearing navy blazer #1B2838 
+ white silk blouse, pearl drop earrings, gold watch, black pumps]
```

### 带情绪叠加的格式

```markdown
[Character: LINDA, ... (base tokens) ...] + Emotion: 
[eyes narrowed, jaw set, expression of controlled anger, 
right hand touching pearl earring]
```

### 带 Negative Token 的格式

```markdown
[Character: LINDA, ...] + Negative: [different face shape, 
different eye color, different hair style, different clothing, 
deformed hands, extra fingers, blurry face, crossed eyes]
```

### 多角色场景格式

```markdown
[Character: LINDA, female, late 20s, ...]
[Character: MARCUS, male, early 30s, ...]
Scene: conference room, glass walls, modern office, late afternoon light
```

---

## ⚠️ 常见错误与修正

### 错误 1：Token 过于模糊

```markdown
# ❌ Bad
"young woman with brown hair and pretty eyes"

# ✅ Good
"female, late 20s, oval face, medium brown eyes #5C4033, 
chestnut brown hair #8B5A2B, wavy, shoulder-length"
```

### 错误 2：Token 在镜头间不一致

```markdown
# ❌ Bad（同一角色，镜头间描述矛盾）
Shot 1: "wearing navy blazer, white shirt, gold watch"
Shot 2: "wearing grey cardigan, blue jeans"  ← 服装突变！

# ✅ Good
Shot 1: "wearing navy blazer #1B2838, white silk blouse, 
pearl earrings, gold watch, black pumps" [Office scene]
Shot 2: "wearing red cocktail dress #C41E3A, diamond earrings, 
black stiletto heels" [Evening event - 这是场景转换，不是漂移]
```

### 错误 3：遗漏饰品

```markdown
# ❌ Bad
"wearing blazer, white shirt"

# ✅ Good
"wearing navy blue single-breasted blazer #1B2838, 
white silk blouse with mother-of-pearl buttons, pearl drop earrings, 
minimalist gold dress watch on left wrist, thin gold band on right ring finger"
```

### 错误 4：表情描述过于简略

```markdown
# ❌ Bad
"angry expression"

# ✅ Good
"expression of controlled anger, eyebrows drawn together and down, 
slight flare of nostrils, lips pressed into thin line, eyes hard and focused, 
jaw set, right hand clenched into fist on table"
```

---

## 🔄 Token 更新规则

### 何时更新 Token

| 情况 | Token 处理 |
|-----|----------|
| 镜头在**同一场景**连续拍摄 | Token 完全不变 |
| **场景跳转**（时间/地点变化） | 只更新 CLOTHING 层，其他层不变 |
| **角色换装**（戏份需要） | 建立新的服装 Token 集（outfit_A, outfit_B...） |
| **角色老化/化妆**（剧情需要） | 建立新的 Token 集（aged_token, makeup_token...） |
| 发现**漂移问题** | 回到 base/ 定妆照对照，修正 PHYSICAL 层描述 |

### Token 版本管理

```
tokens/
├── base_v1.0.txt      # 初始版本
├── base_v1.1.txt      # 微调版（加入 color hex）
├── outfit_B_v1.0.txt # 晚礼服场景 Token
└── aged_v1.0.txt     # 老化场景 Token（剧情需要时）
```

---

## 🎯 快速参考卡

```markdown
# ═══ LINDA — QUICK TOKEN CARD ═══
oval face | high cheekbones | almond eyes #3B2417 | full lips #C4908A
fair skin #F5D0C5 | mole left temple | beauty marks neck
dark brown hair #2C1810 | long | middle part | straight
OFFICE: navy blazer #1B2838 + white blouse + pearl earrings + gold watch
EVENING: crimson dress #C41E3A + diamond earrings + black stilettos
NEUTRAL: slight furrow | controlled asymmetric smile
EYES: direct, steady, piercing when focused
# ═══════════════════════════════════
```

> 打印此卡放在剪辑台旁边，每个镜头开始前快速对照。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)