- 重写 `phase-images`:改为并发 3 张并行生成,每个 item 完成立即写入 manifest,支持 MJ task ID 恢复 - 重写 `phase-videos`:先恢复已有 task ID 再提交新任务(并发 3),支持中断恢复 - 迁移 TTS 引擎:从 Qwen-TTS HTTP 接口切换为 CosyVoice WebSocket 接口,支持音色/语气参数透传 - 精简账号系统:移除 `styles/` 目录、`taskId` 过滤和 `--id` 正则校验,`references` 改为顶层字段 - 调整 `slugify`:限制中文字符 5 个、其他 10 个,避免文件名过长 - 更新文档:`manifest-schema.md` 中 `narration` 改为完整原文案,`account-creation.md` 新增 TTS 配置项 - 配置更新:默认 TTS 模型切换为 `cosyvoice-v3.5-plus`,新增 `localAudio` 参数
7.0 KiB
7.0 KiB
账号创建流程
Agent 通过结构化问答收集信息,基于通用 prompt 模板 + 风格注入,生成完整的账号配置。
创建流程
用户说"创建账号"/"新账号"
↓
Phase 1: 账号身份(必须)
↓
Phase 2: 内容 DNA(必须)
↓
Phase 3: 视觉身份(必须,3种输入方式)
↓
Phase 4: 技术配置(有默认值,可跳过)
↓
汇总确认 → 生成文件 → 校验
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 → 账号内容理解.内容气质 |
注入规则:
- 角色定义改为"专精{Q3}类口播文案转化为{Q6}画面的分镜导演"
- 新增「账号内容理解」节(仅供子 Agent 理解上下文,不输出到分镜表)
Phase 3:视觉身份
| # | 问题 | 必填 | 注入位置 |
|---|---|---|---|
| 6 | 整体视觉基调?如:暗黑压迫、明亮温暖、冷冽极简、赛博霓虹 | ✅ | 分镜.md → 宏观视觉风格方向.整体基调 |
| 7 | 画风?如:写实摄影、漫画、水墨、水彩、油画、赛博朋克、3D渲染 | ✅ | 图片.md → 画风与质感 + 固定风格词尾 |
| 8 | 色彩倾向?(三选一) | ✅ | 图片.md → 色彩体系 + 固定风格词尾 |
| A. 拖入参考图 → AI 分析提取色彩/质感 | |||
| B. 文字描述(如"深蓝为主,金色点缀") | |||
| C. 直接给色值(如"主色 #0A0A0A") | |||
| 9 | 质感/纹理?如:丝网印刷做旧、颗粒胶片、光滑数字、纸张纹理 | ❌ | 图片.md → 画风与质感 |
色彩提取规则(Q8 选 A 时):
- 分析参考图的 dominant colors,提取 3-4 个核心色
- 分配角色:主色(大面积) / 辅色(中间调) / 点缀色(高光焦点) / 禁止色(与风格冲突的色系)
- 输出色值 + 使用规则
固定风格词尾生成规则:
- 根据 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:技术配置(有默认值)
| # | 问题 | 默认值 | 说明 |
|---|---|---|---|
| 10 | 视频运动偏好? | 克制慢速 | 注入视频.md → 运动风格基调 |
| 选项:克制慢速 / 流畅中速 / 快速激烈 | |||
| 11 | 画幅? | 9:16 | account.json 的 defaultFormat |
| 12 | 生图模型? | gemini | account.json 的 imageModel |
| 13 | 视频模型? | veo3-fast | account.json 的 videoModel |
| 14 | 参考图文件? | 无 | 用户稍后放入 references/ 目录,Agent 上传 OSS 回写 URL |
| 15 | TTS 音色? | config.json 全局 ttsVoice | account.json 的 ttsVoice,留空用全局默认 |
| 16 | TTS 语气指令? | 无 | account.json 的 ttsInstruction,描述期望的语气风格 |
运动偏好 → 视频提示词映射:
| 用户选择 | 运动风格基调 |
|---|---|
| 克制慢速 | 克制优于激烈,慢优于快,张力优于美感,隐忍优于爆发 |
| 流畅中速 | 流畅自然,节奏跟随文案情绪,张弛有度,不刻意制造压迫 |
| 快速激烈 | 快节奏推进,冲击力优先,镜头运动幅度大,情绪外放 |
汇总确认
问答结束后,Agent 输出汇总表让用户确认:
## 账号创建确认
### 基本信息
- 名称:{name}
- 描述:{description}
- 目录:accounts/{id}/
### 内容方向
- 核心方向:{Q3}
- 目标受众:{Q4}
- 内容气质:{Q5}
### 视觉风格
- 基调:{Q6}
- 画风:{Q7}
- 色彩:{Q8 摘要}
- 质感:{Q9}
### 技术配置
- 运动:{Q10}
- 画幅:{Q11}
- 生图模型:{Q12}
- 视频模型:{Q13}
- TTS音色:{Q15}
- TTS语气:{Q16}
确认 "开始" → 创建账号
修改 → 调整后重新输出
生成规则
文件创建
确认后,Agent 按以下顺序生成:
-
创建目录结构
accounts/{id}/ ├── account.json ├── prompts/ │ ├── 分镜.md │ ├── 图片提示词.md │ └── 视频提示词.md └── references/ # 参考图目录(用户稍后放入) -
生成 account.json
- 从
_template/account.json复制骨架 - 填入 id、name、description、模型、画幅等
- 从
-
生成分镜.md
- 读取
_template/prompts/通用分镜.md - 在角色定义中注入 Q3 内容方向
- 新增「账号内容理解」节(Q3+Q4+Q5)
- 新增「宏观视觉风格方向」节(Q6+Q7+推导)
- 保留通用骨架:切割规则、导演构图词库、shotDesc 写法规范、输入输出格式、质量自检
- 读取
-
生成图片提示词.md
- 读取
_template/prompts/通用图片.md - 新增「账号视觉基础风格」节(Q7+Q8+Q9)
- 替换「固定风格词尾」占位内容为具体风格词(MJ/Gemini/Kling 三版)
- 保留通用骨架:角色定义、入参权重、导演光影词库、imagePrompt 结构、构图原则、输入输出、质量自检
- 读取
-
生成视频提示词.md
- 读取
_template/prompts/通用视频.md - 新增「账号运动风格基调」节(Q10 映射)
- 保留通用骨架:角色定义、入参权重、导演运动词库、三层运动设计、模型语法规范、输入输出、质量自检
- 读取
Prompt 生成原则
- 骨架不动:切割规则、导演词库、写法规范、输出格式、质量自检等通用方法论完整保留,不做修改
- 只注入风格:在通用骨架的固定位置插入账号专属内容
- 三个 prompt 风格一致:分镜定义的视觉方向 → 图片提示词执行光影 → 视频提示词执行运动,三者必须对齐
- 词尾必须具体:MJ/Gemini/Kling 三个版本的固定风格词尾必须替换为具体内容,不允许保留占位文本
校验
生成完成后:
- 检查 3 个 prompt 文件都存在且非空
- 检查 account.json 的 prompt 路径指向正确
- 检查固定风格词尾无占位文本残留
- 运行
pipeline.js validate-account --account {id}