# 账号创建流程

> Agent 通过结构化问答收集信息，基于通用 prompt 模板 + 风格注入，生成完整的账号配置。
>
> **10 维度账号画像**：账号定位 → 目标受众 → 内容气质 → 视觉基调 → 画风质感 → 色彩体系 → 镜头运动 → 声音身份 → 文字呈现 → 节奏律动

---

## 创建流程

```dot
digraph creation_flow {
    rankdir=TB
    node [shape=box style=rounded fontsize=11]
    edge [arrowsize=0.7]

    start   [label="\"创建账号\"/\"新账号\"" shape=ellipse style=filled fillcolor="#E3F2FD"]
    p1      [label="Phase 1\n账号定位（必须）"]
    p2      [label="Phase 2\n内容DNA（必须）"]
    p3      [label="Phase 3\n视觉身份（必须）"]
    p4      [label="Phase 4\n成片风格（可跳过）" style=filled fillcolor="#E8F5E9"]
    check   [label="爆款自检" shape=diamond style=filled fillcolor="#FFF3E0"]
    confirm [label="汇总确认"]
    gen     [label="生成文件"]
    val     [label="校验"]

    start -> p1 -> p2 -> p3 -> p4
    p4 -> check -> confirm -> gen -> val
}
```

---

## Phase 1：账号定位

| # | 问题 | 必填 | 说明 |
|---|------|------|------|
| 1 | 账号名称？ | ✅ | 用作目录名和显示名（中文即可，如"军事账号"） |
| 2 | 一句话描述？ | ✅ | 写入 account.json 的 description |

**输出**：确定目录名（= id）和 account.json 的 id/name/description。

---

## Phase 2：内容 DNA

| # | 问题 | 必填 | 注入位置 |
|---|------|------|---------|
| 3 | 核心内容方向？如：历史权谋、科技解说、情感故事、美食文化 | ✅ | 分镜.md → 角色定义 + 账号内容理解.核心方向 |
| 4 | 目标受众？如：30岁男性、18-25岁女性 | ✅ | 分镜.md → 账号内容理解.目标受众 |
| 5 | 内容气质？用 2-3 个关键词描述，如：冷峻洞察、温暖治愈、犀利反讽 | ✅ | 分镜.md → 账号内容理解.内容气质 |
| 5.6 | 目标情绪回路？（选填）如：好奇→震惊→领悟，或平静→压迫→释放 | ❌ | 分镜.md → 账号内容理解.情绪回路 |

**注入规则**：
- 角色定义改为"专精{Q3}类口播文案转化为{Q6}画面的分镜导演"
- 新增「账号内容理解」节（Q3+Q4+Q5+Q5.6，仅供子 Agent 理解上下文，不输出到分镜表）

---

## Phase 3：视觉身份

| # | 问题 | 必填 | 注入位置 |
|---|------|------|---------|
| 6 | 整体视觉基调？如：暗黑压迫、明亮温暖、冷冽极简、赛博霓虹 | ✅ | 分镜.md → 宏观视觉风格方向.整体基调 |
| 7 | 画风？如：写实摄影、漫画、水墨、水彩、油画、赛博朋克、3D渲染 | ✅ | 图片.md → 画风与质感 + 固定风格词尾 |
| 8 | 色彩倾向？（三选一） | ✅ | 图片.md → 色彩体系 + 固定风格词尾 |
|   | A. 拖入参考图 → AI 分析提取色彩/质感 | | |
|   | B. 文字描述（如"深蓝为主，金色点缀"） | | |
|   | C. 直接给色值（如"主色 #0A0A0A"） | | |
| 9 | 质感/纹理？如：丝网印刷做旧、颗粒胶片、光滑数字、纸张纹理 | ❌ | 图片.md → 画风与质感 |

**色彩提取规则（Q8 选 A 时）**：
1. 分析参考图的 dominant colors，提取 3-4 个核心色
2. 分配角色：主色（大面积） / 辅色（中间调） / 点缀色（高光焦点） / 禁止色（与风格冲突的色系）
3. 输出色值 + 使用规则

**固定风格词尾生成规则**：
- 根据 Q7+Q8+Q9 生成 3 个模型版本的风格词尾
- MJ 版：英文逗号短语 + `--ar` + `--style raw --q 2 --v 6.1`
- Gemini 版：英文自然语言句子
- Kling 版：中文描述

**分镜.md 宏观视觉风格方向**：
- 整体基调：Q6
- 风格大类：Q7
- 人物气质：从 Q5 + Q6 推导
- 场景基调：从 Q6 推导
- 禁止出现：Q6 + Q7 的反面（如暗黑风 → 禁止明亮轻快）

---

## Phase 4：成片风格（有默认值）

### 维度 7：镜头运动

| # | 问题 | 默认值 | 说明 |
|---|------|--------|------|
| 10 | 视频运动偏好？ | 克制慢速 | 注入视频.md → 运动风格基调 |
|   | 选项：克制慢速 / 流畅中速 / 快速激烈 | | |
| 11 | Ken Burns 镜头动画？ | 开启（按导演风格） | 图片成片时为每张图添加慢速缩放/平移，消除幻灯片感。选项：关闭 / 默认 / 自定义 |

**Ken Burns 推荐表**（未配置时自动按导演风格匹配）：

| 内容气质 | 缩放速率 | 平移 | 效果 |
|---------|---------|------|------|
| 沉稳/克制/叙事 | 0.4-0.6 %/秒 | 无 | 几乎无感的缓慢推进（类似纪录片） |
| 均衡/节奏/科普 | 0.6-0.8 %/秒 | 微弱 | 稳定匀速推进，适合中长片段 |
| 冲击/激烈/权谋 | 0.8-1.0 %/秒 | 轻微 | 明显的推镜头，强化压迫感 |
| 唯美/治愈/风景 | 0.3-0.5 %/秒 | 强烈（0.3-0.6 /秒） | 缓慢平移+微缩放，展示画面纵深 |

> Q11 选"自定义"时，Agent 应询问缩放速率偏好（快/中/慢）和平移方向偏好（固定/左右/上下），生成对应的 kenBurns 配置。
> 选"默认"时根据 Q5 内容气质 + Q10 运动偏好自动匹配上表。
> 视频模式自动跳过 Ken Burns（视频本身已有运动）。

### 维度 8：声音身份

| # | 问题 | 默认值 | 说明 |
|---|------|--------|------|
| 12 | TTS 音色？ | config.json 全局 ttsVoice | account.json 的 ttsVoice，留空用全局默认 |
| 13 | TTS 语气指令？ | 无 | account.json 的 ttsInstruction，描述期望的语气风格 |
| 14 | 背景音乐偏好？ | 无 | account.json 的 capcut.defaultBGM。提供 URL 或描述风格，Agent 辅助查找 |

**TTS 语气指令示例**：
- 军事/权谋："用沉稳有力的男性声音朗读，语速偏慢，带历史厚重感"
- 科技/科普："用清晰理性的男性声音朗读，语速适中，专业但亲和"
- 情感/治愈："用温柔柔和的女性声音朗读，语速偏慢，有感染力"

### 维度 9：文字呈现

| # | 问题 | 默认值 | 说明 |
|---|------|--------|------|
| 15 | 关键字氛围词？ | 开启（默认样式） | 画面中央大字叠加，增强冲击力。选项：关闭 / 默认样式 / 描述期望效果 |
|   | 期望的花字风格？（选填） | 按账号风格推荐 | 根据视觉基调推荐，见下方花字推荐表 |
| 16 | 字幕风格偏好？ | 默认白字 | 底部口播字幕。选项：默认白字 / 高亮关键词 / 描述期望 |

**字幕风格推荐表**：

| 账号风格 | 推荐配色 | 字号 | 特效 |
|---------|---------|------|------|
| 暗黑/军事 | 白色 + 橙红高亮 | 24 | 淡入淡出 |
| 科技/赛博 | 白色 + 青蓝高亮 | 22 | 淡入淡出 |
| 情感/治愈 | 白色 + 暖黄高亮 | 24 | 淡入淡出 |
| 简约/知识 | 白色 + 无高亮 | 22 | 淡入淡出 |

### 维度 10：节奏律动

| # | 问题 | 默认值 | 说明 |
|---|------|--------|------|
| 17 | 滤镜？ | 无 | account.json 的 capcut.filter，格式 `滤镜名:强度`（如 `质感电影:40`）。见下方滤镜推荐表 |
| 18 | 转场偏好？ | 默认闪白 | account.json 的 capcut.transitions。见下方转场推荐表 |
| 19 | 画幅？ | 9:16 | account.json 的 defaultFormat |
| 20 | 生图模型？ | gemini | account.json 的 imageModel |
| 21 | 视频模型？ | veo3-fast | account.json 的 videoModel |
| 22 | 参考图文件？ | 无 | 用户稍后放入 references/ 目录，Agent 上传 OSS 回写 URL |

**花字效果推荐表**（92 种免费效果，按风格分类）：

| 账号风格 | 推荐花字 | 备选 |
|---------|---------|------|
| 暗黑/军事/权谋 | 暗黑潮酷黑色花字 | 潮酷 黑色紫光、简约白色黑边花字 |
| 潮酷/街头/潮流 | 潮酷 白色橙边 | 超酷发光镂空花字、潮酷橙色 |
| 科技/赛博 | 赛博朋克未来科技感立体发光花字 | 蓝色镂空发光花字、炫彩发光花字 |
| 简约/商务/知识 | 简约白色黑边花字 | 简约白色花字、简约黑色描边立体花字 |
| 清新/生活/治愈 | 小清新 白色 | 清新蓝色发光花字、梦幻粉色发光立体花字 |
| 复古/港风 | 复古 红色 | 红色朦胧港风复古花字、书法墨环图案花字 |
| 综艺/娱乐 | 综艺 白色黑边 | 立体综艺花字、综艺 橙色 |

> Agent 可调用 `get_text_effects` API 获取完整列表（92 种免费 + 更多 VIP）。
> Q17 选"默认样式"时，Agent 根据账号风格从上表自动匹配。

**滤镜推荐表**（免费滤镜，格式 `滤镜名:强度`，强度 0-100）：

| 账号风格 | 推荐滤镜 | 备选 |
|---------|---------|------|
| 暗黑/军事/权谋 | 暗调氛围:40 | 暗夜:50、质感暗调:35 |
| 电影/叙事 | 质感电影:40 | 情感电影:35、情绪电影:30 |
| 复古/怀旧 | 暗调复古电影:40 | 复古工业:45 |
| 科技/赛博 | 质感暗调:30 | — |
| 清新/生活 | 质感电影:25 | 情感电影:20 |
| 纪录/人文 | 质感电影:30 | 情绪电影:25 |

> 留空则不加滤镜。Agent 可调用 CapCut Mate API 获取完整滤镜列表。

**转场推荐表**（免费转场，`duration` 单位微秒，推荐 100000-300000）：

| 转场名 | 效果 | 适用场景 |
|--------|------|---------|
| 闪白 | 明闪过渡，节奏强 | 暗黑/军事/冲击类（默认推荐） |
| 闪白 II | 明闪变体，稍柔和 | 潮酷/街头 |
| 闪黑 | 暗闪过渡，压抑感 | 沉重/悬疑/结尾 |
| 溶解 | 画面缓慢交融 | 唯美/叙事/情感 |
| 叠化 | 经典淡入淡出 | 通用/纪录片 |
| 色彩溶解 | 带色彩过渡的溶解 | 艺术/创意 |

> 默认配置使用「闪白」+ 按位置变体（hook 闪白、body 溶解、closing 闪黑），可直接采用默认。
> Agent 可调用 CapCut Mate API 获取完整转场列表。

**运动偏好 → 视频提示词映射**：

| 用户选择 | 运动风格基调 |
|---------|-------------|
| 克制慢速 | 克制优于激烈，慢优于快，张力优于美感，隐忍优于爆发 |
| 流畅中速 | 流畅自然，节奏跟随文案情绪，张弛有度，不刻意制造压迫 |
| 快速激烈 | 快节奏推进，冲击力优先，镜头运动幅度大，情绪外放 |

---

## 爆款潜力自检（生成前必检）

Agent 在汇总确认前，先做以下快速自检。任何一项为 ❌ 时建议用户补充：

| 检查项 | 通过标准 |
|--------|---------|
| 差异化定位 | Q2 描述能让用户说清"为什么看这个号而不是别的" |
| 情绪价值 | Q5.6 有明确的情绪回路，不是"好看"而是"看完有感觉" |
| 视觉记忆点 | Q7+Q8 色彩/画风能在信息流中一眼认出 |

自检结果展示给用户：全部 ✅ → 进入汇总确认；有 ❌ → 建议补充后再继续（用户可强制跳过）。

---

## 汇总确认

问答结束后，Agent 按 10 维度输出汇总表让用户确认：

```
## 账号创建确认（10 维度）

### 维度 1-2：定位 + 受众
- 名称：{name}
- 描述：{description}
- 目录：accounts/{id}/
- 目标受众：{Q4}

### 维度 3：内容气质
- 核心方向：{Q3}
- 内容气质：{Q5}
- 情绪回路：{Q5.6 或"未指定"}

### 维度 4-6：视觉基调 + 画风 + 色彩
- 基调：{Q6}
- 画风：{Q7}
- 色彩：{Q8 摘要}
- 质感：{Q9}

### 维度 7：镜头运动
- 视频运动：{Q10}
- Ken Burns：{Q11 开启/关闭，速率}

### 维度 8：声音身份
- TTS音色：{Q12}
- TTS语气：{Q13}
- BGM：{Q14}

### 维度 9：文字呈现
- 关键字氛围词：{Q15 开启/关闭，花字风格}
- 字幕风格：{Q16}

### 维度 10：节奏律动
- 滤镜：{Q17}
- 转场：{Q18}
- 画幅：{Q19}
- 生图模型：{Q20}
- 视频模型：{Q21}

确认 "开始" → 创建账号
修改 → 调整后重新输出
```

---

## 生成规则

### 文件创建

确认后，Agent 按以下顺序生成。

**数据注入全景图**：

```dot
digraph injection {
    rankdir=LR
    node [shape=box fontsize=10]

    subgraph cluster_qa {
        label="Q&A 收集"
        style=dashed
        q12    [label="Q1-Q2\n定位"]
        q3_56  [label="Q3-Q5.6\n内容DNA"]
        q6_9   [label="Q6-Q9\n视觉身份"]
        q10_11 [label="Q10-Q11\n镜头运动"]
        q12_14 [label="Q12-Q14\n声音"]
        q15_16 [label="Q15-Q16\n文字"]
        q17_22 [label="Q17-Q22\n节奏"]
    }

    subgraph cluster_out {
        label="输出文件"
        style=dashed
        account    [label="account.json"]
        storyboard [label="分镜.md"]
        image      [label="图片提示词.md"]
        video      [label="视频提示词.md"]
    }

    q12    -> account
    q3_56  -> storyboard
    q6_9   -> storyboard
    q6_9   -> image
    q10_11 -> video
    q10_11 -> account [label="kenBurns" style=dashed]
    q12_14 -> account
    q15_16 -> account
    q17_22 -> account
}
```

> 每个 Q 答案都有明确的消费者文件，无死数据。

**生成步骤**：

1. **创建目录结构**
   ```
   accounts/{id}/
   ├── account.json
   ├── prompts/
   │   ├── 分镜.md
   │   ├── 图片提示词.md
   │   └── 视频提示词.md
   └── references/        # 参考图目录（用户稍后放入）
   ```

2. **生成 account.json**
   - 从 `_template/account.json` 复制骨架
   - 填入 id、name、description、模型、画幅等
   - Q15 选关闭时删除 `keywordStyle` 节；选自定义花字时更新 `textEffect` 字段
   - Q16 选自定义时更新 `subtitleStyle` 的 color/highlightColor/fontSize
   - Q17 填入 `capcut.filter`（格式 `滤镜名:强度`）
   - Q18 填入 `capcut.transitions` 配置
   - Q11 选关闭时设 `kenBurns.enabled=false`；选自定义时按推荐表生成 `byDirector` 配置
   - Q14 填入 `capcut.defaultBGM`（URL）

3. **生成分镜.md**
   - 读取 `_template/prompts/通用分镜.md`
   - 在角色定义中注入 Q3 内容方向
   - 新增「账号内容理解」节（Q3+Q4+Q5+Q5.6 情绪回路）
   - 新增「宏观视觉风格方向」节（Q6+Q7+推导）
   - 保留通用骨架：切割规则、导演构图词库、shotDesc 写法规范、输入输出格式、质量自检

4. **生成图片提示词.md**
   - 读取 `_template/prompts/通用图片.md`
   - 新增「账号视觉基础风格」节（Q7+Q8+Q9）
   - 替换「固定风格词尾」占位内容为具体风格词（MJ/Gemini/Kling 三版）
   - 保留通用骨架：角色定义、入参权重、导演光影词库、imagePrompt 结构、构图原则、输入输出、质量自检

5. **生成视频提示词.md**
   - 读取 `_template/prompts/通用视频.md`
   - 新增「账号运动风格基调」节（Q10 映射）
   - 保留通用骨架：角色定义、入参权重、导演运动词库、三层运动设计、模型语法规范、输入输出、质量自检

### Prompt 生成原则

- **骨架不动**：切割规则、导演词库、写法规范、输出格式、质量自检等通用方法论完整保留，不做修改
- **只注入风格**：在通用骨架的固定位置插入账号专属内容
- **三个 prompt 风格一致**：分镜定义的视觉方向 → 图片提示词执行光影 → 视频提示词执行运动，三者必须对齐
- **词尾必须具体**：MJ/Gemini/Kling 三个版本的固定风格词尾必须替换为具体内容，不允许保留占位文本

### 校验

生成完成后：
1. 检查 3 个 prompt 文件都存在且非空
2. 检查 account.json 的 prompt 路径指向正确
3. 检查固定风格词尾无占位文本残留
4. 运行 `pipeline.js validate-account --account {id}`
