Flatten skill category directory structure

This commit is contained in:
2026-05-20 17:04:50 +08:00
parent 0dd552a6f7
commit 63f2baa4bd
354 changed files with 0 additions and 0 deletions
@@ -0,0 +1,72 @@
# 人设图生成
## 目标
基于确定的美术风格,为核心人物生成角色设计图。
## 重点
- 每个角色独立一个目录和设计文件
- **统一使用 `all_in_one_image_generation`model_name: `all_in_one_pro`/ `nano_banana_image_generation`model_name: `nano_banana_2`)生成候选图**
- 保留每张图和对应的用户指令(prompt / 描述)
- 最终由用户在预览页面中挑选人设图
- **宽高比统一使用 2:3 竖版**(`aspect_ratio: "2:3"`
- **禁止生成 N 宫图**(多视角拼合图):提示词中必须包含 `single character, single view, no split screen, no multiple panels, no collage, no reference sheet`
## 流程
1. 根据故事概念中的核心人物描述 + 美术风格,生成角色设计 prompt(提示词末尾追加反 N 宫图指令)
2. **风格 JSON 注入**:从 `art_style.md``风格JSON` 字段读取结构化风格数据,将 JSON 内容融入生图提示词中(如在提示词末尾附加 `Art style: {JSON 内容}`
3. 使用 `all_in_one_image_generation`model_name: `all_in_one_pro`)或 `nano_banana_image_generation`model_name: `nano_banana_2`)生成多版本候选图,**aspect_ratio 统一设为 2:3**
4. 将角色信息和候选图写入各角色的 `design.md`
## 输出格式
每个角色独立一个目录和设计文件。**严格按用户语言选择对应的 example 和字段名**(参见 SKILL.md「输出控制」和「Markdown 字段名中英对照表」):
- 中文用户:参考 `references/character-design-example.md`,字段用中文(`外貌特征``性格气质``标志物件``生图设定``候选图``选定图`),内容用中文
- 非中文用户:参考 `references/character-design-example-en.md`,字段用英文(`Appearance``Personality``Signature Items``Image Settings``Candidates``Selected`),内容用对应语言
关键要点:
- 外貌特征/Appearance 用列表逐项描述(年龄/性别、体型、发型、面部、服装、配饰)
- 生图设定/Image Settings 包含三个子字段:`提示词/Prompt`(英文)、`模型/Model``参考图/Reference`
- 候选图/Candidates 记录文件名、模型和构图说明
- `选定图/Selected` 生成后留空,待用户在预览页面中挑选
## 格式校验
design.md 写入后,**必须**运行校验脚本:
```bash
# 校验单个角色
python3 .opencode/skills/mv-creator/scripts/validate_character_design.py .mv/{song_name}/{theme}/characters/{character_name}/design.md
# 校验 theme 下所有角色
python3 .opencode/skills/mv-creator/scripts/validate_character_design.py .mv/{song_name}/{theme}/
```
校验规则:必需分区完整性、外貌特征列表项、生图设定子字段、候选图非空且文件存在。
- **通过** → 调用 MCP 工具 `preview_and_collect_feedback` 启动预览:
- **script**: `.opencode/skills/mv-creator/scripts/render_preview.py`
- **args**: `[".mv/{song_name}/{theme}", "--type", "character_design", "--lang", "{lang}"]`
- **feedback_path**: `.mv/{song_name}/{theme}/feedback.md`
预览页面展示各角色信息卡片和候选图网格。
每个角色默认选中第一张候选图作为兜底,用户点击图片直接切换选定。
角色卡片的每张候选图有 `@` 按钮,点击可将 `@角色目录/候选图文件名` 插入底部反馈框,用于引用特定候选图。
工具返回反馈内容后:
-`LGTM` 开头 → 将各角色的选定候选图复制为 `selected.jpg`,更新 `design.md`,进入下一阶段
- 包含 `修改建议:` → 先处理选图,再解析建议中的 `@` 引用(候选图 `@角色/候选图` 或上传参考图 `@上传路径`)和修改意见,调整 prompt 重新生成候选图。更新 `design.md`,重新校验和预览
- **未通过** → 由 LLM 根据校验错误信息自动修正,修复后重新校验
## 文件存储
**目录名规则**`{character_name}` 统一使用英文小写 + 下划线(如 `traveller``bar_owner`),不使用中文或显示名。该目录名是后续阶段(分镜、视频生成)引用角色的唯一标识。
```
./.mv/{song_name}/{theme}/characters/{character_name}/
├── design.md # 角色设计说明
├── candidate_01.jpg # 候选图
├── candidate_02.jpg
└── selected.jpg # 最终选定图(用户挑选)
```