Files
Popiai-skill/image-creation/anime-style-forge/SKILL.md
T

441 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: anime-style-forge
display-name-zh: 二次元风格锻造
description: |
专注二次元/动漫/角色风格化的图片生成与转换。覆盖日系、国漫、韩系、欧美等多画风体系,
通过溯源分析定位参考图的画风基因,用 10 维拆解→3 维坍缩精准锁定风格灵魂,
匹配最优工具与 prompt 写法进行生成。
Trigger on: "动漫化", "二次元风格", "改成国漫风", "赛璐璐", "吉卜力风格",
"韩系水彩", "玄幻3D", "Q版", "日漫风", "画风转换", "漫画风格", "立绘",
"anime style", "manga style", "webtoon style", "ghibli style",
或任何涉及将内容转为特定二次元/动漫画风的请求。
Key distinction: 用户要求生成或转换为某种二次元/动漫画风。
Do NOT trigger for: 写实摄影风格、纯 logo 设计、通用图片编辑(裁剪/去背景等)。
summary-cn: 上传参考图,复刻画风生成新图
summary-en: Forge anime characters in target styles
version: 0.2.3
tags: [Creative, Image, Anime, Style-Transfer, Character, Manga, Donghua, Manhwa]
tags-cn: [创意, 图片, 动漫, 风格迁移, 角色, 漫画, 国漫, 韩漫]
exported-by: MiniMax-hub
---
# Anime Style Forge — 二次元风格锻造
用户描述一个角色/场景 + 指定画风 → 生成对应风格的图片。
或上传一张图 + 指定画风 → 转换为目标风格。
## 核心理念
- **画风溯源驱动**:先判断参考图/目标风格属于哪个画风谱系(时代、流派、制作方式),再匹配工具和 prompt 写法
- **10 维→3 维坍缩**:内部 10 维分析二次元画风特征,坍缩为用户可感知的 画风 / 角色 / 调性 3 维
- **风格档案库**:每种画风沉淀完整的视觉基因(prompt 模板 + 负向词 + 参数预设 + 踩坑提醒),不靠模型"猜"
- **操作极轻**:一句话 + 一张图(可选)→ 直接出图,先出结果再迭代
## 约定
- 中间产物存储在 `./.anime-style-forge/{session_name}/`
- **单图输出**:每次生成只输出 1 张完整图片。Prompt 中严禁出现 "grid"、"collage"、"2x2"、"4-panel"
- **四宫格裁剪**:部分引擎输出 2×2 四宫格而非单图,生成后**必须**自动裁剪为单图(见 Phase 3 单图提取流程),用户只看到最终单图
- **⚠️ 信息屏蔽规则**
- **禁止向用户暴露具体模型/引擎名称**(如底层使用的任何生图模型名、版本号、公司名)。对用户使用能力描述替代(如"最适合该风格的引擎"、"擅长 3D 渲染的引擎"、"擅长日系动漫的引擎"等)
- **禁止向用户暴露 agent 底层工作流**(如 `read_media``image agent``editing agent` 等内部调用细节)。对用户只展示结果和创作意图
- 内部路由表(`model-knowledge-base.md`、速查表等)仅供 agent 决策参考,**不向用户展示**
- **参考图策略(按引擎能力区分)**:
- **编辑型引擎**:风格微调/局部编辑专用 → **必须传参考图**prompt 用编辑指令式
- **人脸锁定型引擎**:传原图锁住面部特征
- **文生图引擎**:→ **不传参考图**,纯文字 prompt 重建内容
- 参考图始终先分析提取角色特征,但只有编辑型/锁定型引擎在生成调用时传入
- 所有风格档案见 `references/style-bank.md`
- 画风视觉指纹见 `references/style-fingerprints.md`
- 模型能力与选择指南见 `references/model-knowledge-base.md`(内部参考,不向用户展示)
---
## Pipeline
```
Phase 0 → Phase 1 → Phase 2 → Phase 3 → Phase 4 → Phase 5
输入 画风定位 快选 出图 迭代 输出
```
---
## Phase 0: 输入
**三种输入模式**
| 模式 | 输入 | 示例 |
|------|------|------|
| **纯文字生成** | 角色/场景描述 + 目标画风 | "画一个国漫玄幻风格的男角色,黑袍持剑" |
| **风格转换** | 参考图 + 目标画风 | [上传照片] "改成吉卜力风格" |
| **画风识别** | 参考图(无指定风格) | [上传图] "这是什么画风?帮我出同风格的" |
文件结构:
```
.anime-style-forge/{session_name}/
├── analysis.json # Phase 1 分析结果
├── generation_log.md # 生成记录
└── outputs/ # 生成图片 v1_01.png …
```
---
## Phase 1: 画风定位
### 分支判断
- **用户已指定画风**(如"国漫3D")→ 直接跳到 1c 风格匹配
- **用户上传参考图但未指定**(如"这种风格")→ 执行 1a + 1b 分析
- **用户说"动漫化"但没说哪种**→ 执行 1a 分析后推荐
### 1a. 画风溯源
分析参考图的画风来源,对照 `references/style-fingerprints.md`
**分析要点**(内部执行,不向用户展示调用细节):
- 逐一比对 style-fingerprints.md 中的视觉指纹
- 重点分析:线条处理方式、上色技法、人物比例、面部画法、色彩体系
- 输出字段:style_family / style_id / confidence / clues / era_feel / production / alt_style
### 1b. 10 维画风分析
**分析维度**(内部执行):
1. 线条(Linework):粗细、清洁度、可见度、描边风格
2. 上色(Coloring):赛璐璃/渐变/水彩/厚涂/平涂
3. 人物比例(Proportions):头身比、写实度、Q版程度
4. 面部画法(Face):眼睛大小/画法、鼻子处理、嘴巴风格
5. 色彩体系(Palette):饱和度、色温、主色调、配色逻辑
6. 光影处理(Shading):二分阴影/柔和渐变/无阴影/戏剧性
7. 背景风格(Background):写实/简化/纯色/氛围化
8. 年代感(Era):哪个年代的画风特征
9. 媒介质感(Medium):数码/传统/3D/混合
10. 文化圈(Origin):日系/国风/韩系/欧美/混合
```
### 1c. 坍缩为 画风 / 角色 / 调性
| 维度 | 对应底层 | 含义 |
|------|---------|------|
| **画风** | 线条 + 上色 + 媒介 + 年代 | 用什么技法画的 |
| **角色** | 人物比例 + 面部画法 + 光影 | 人物长什么样 |
| **调性** | 色彩 + 背景 + 文化圈 | 整体什么感觉 |
取子维度 score 加权平均,确定画风的**灵魂轴**(最有辨识度的 1-2 个维度)。
### 1d. 风格匹配
将分析结果与 `references/style-bank.md` 中的风格档案匹配。
**匹配优先级**
1. style_id 精确匹配
2. style_family + era_feel + production 组合匹配
3. 10 维特征向量最近邻匹配
4. 无法匹配 → 列出 Top 3 相近风格供用户选择
### 1e. 写入 analysis.json
```json
{
"origin": { "style_family": "...", "style_id": "...", "confidence": 0.85, "clues": [...] },
"dimensions": { "linework": {...}, "coloring": {...}, ... },
"collapsed": { "style_axis": 0.9, "character_axis": 0.7, "tone_axis": 0.8 },
"soul": { "primary": "画风", "summary": "90年代赛璐璐动画,硬朗线条+二分阴影是灵魂" }
}
```
---
## Phase 2: 快选
### 展示画风定位结果(必须执行)
向用户展示定位结果时,**不暴露模型名称和内部路由**:
```
🎨 画风定位
风格:[style_name][style_id]
家族:[style_family] · [era_feel] · [production]
置信度:[confidence]
判断依据:[top 3 clues]
灵魂轴:[soul_summary]
🛠️ 推荐方案
Prompt 策略:[针对该风格的关键词方向]
预期效果:[该风格的视觉特点描述]
```
### 任务类型维度决策(⚠️ 必须先于画风路由执行)
> 风格路由表只解决"用什么画风出图",但有些任务的核心瓶颈不是风格,而是**一致性 / 指令遵循 / 输出格式**。这三个维度会覆盖风格路由的优先级。先走此框架,再查风格路由表。
#### 决策三问(按顺序)
**Q1:这张图需要参考上一张(或其他已生成图)吗?**
- 是 → 必须选 `max_refs ≥ 1` 的引擎,**排除 Niji 7 / MJ V7**(它们 max_refs=0,无法接受参考图)
- 否 → 继续 Q2
**Q2:这个任务的输出会被下一步复用为参考图吗?**
- 是 → 必须单图输出,**排除 Niji 7 / MJ V7**(它们固定输出四宫格,裁剪后才能传)
- 否 → 继续 Q3
**Q3:一致性 vs 风格极致,哪个是第一优先级?**
- 一致性优先 → **nano_banana 首选**(指令遵循强 + max_refs=10 + 单图输出)
- 风格优先 → 进入下方画风路由表
#### 任务类型 → 引擎约束速查
| 任务类型 | 核心需求 | 引擎约束 | 推荐 |
|---------|---------|---------|------|
| **分镜/多帧连续**(同角色/同场景 N≥2 张) | 跨图一致性 + 构图可锁定 | max_refs ≥ 1,单图输出 | **nano_banana** |
| **构图固定只改变量**(光影/季节/时间) | 构图锁定(传上一帧作 ref) | max_refs ≥ 1 | **nano_banana** |
| **表情差分**(同角色多表情) | 角色一致性(面部锁定) | max_refs ≥ 1 | **nano_banana** |
| **三视图 / 多角度立绘**(同角色) | 角色一致性 | max_refs ≥ 1 | **nano_banana** |
| **单张独立图**(立绘/头像/场景) | 风格准确度 | 无约束 | → 画风路由表 |
| **风格转换**(参考图→目标风格) | 参考图传递 + 重建 | max_refs ≥ 1,文生图路径 | 目标风格首选引擎 |
#### nano_banana 在分镜/多帧任务中的优势
- `max_refs = 10`:每一帧都可以把前一帧作为参考图传入,逐帧锚定人物外貌和场景构图
- 单图输出:不存在四宫格裁剪问题,输出即可直接传入下一帧
- 指令遵循强:「构图不变,只改光线方向」「同一角色,只换表情」等硬约束执行率高
- 中英文均支持:场景细节描述灵活
> ⚠️ **常见错配**:看到"分镜"任务 → 直接查画风路由表 → 选 Niji 7 / MJ V7 → 多帧角色漂移 + 无法传参考图。**必须先过决策三问。**
### 画风→引擎路由(⚠️ 内部使用,不向用户展示)
> 完整速查表见 `references/model-knowledge-base.md` →「画风→模型推荐速查表」节。按画风 id 查首选/备选引擎,再用上方「任务类型维度决策三问」覆盖校验。
**降级规则**:首选模型不可用时使用备选,**保持原风格的 prompt 写法不变**。
### 生成路径选择(必须询问)
根据任务类型选择路径(向用户描述路径时不提及具体引擎名称):
- **文生图重建(风格转换首选 ⭐)**:分析原图提取所有特征,然后用目标风格的最优引擎纯文字重新生成。画质和风格深度最高。**跨风格转换必须走此路径。**
- **局部编辑(仅限细微修改)**:传入原图 + 编辑指令。仅适用于改发色/改服装颜色/加配饰等**不改变整体风格**的局部修改。
- **人脸锁定**:传入原图锁住面部特征 + 风格 prompt,人物最像但风格转化程度不确定
- **多引擎对比**:同一内容用 2-3 个引擎各出一张,对比挑选最佳
### 内容方向确认
- 用户已描述内容 → 直接进入 Phase 3
- 用户只给了风格没给内容 → 问"你想画什么?"
- 用户只给了参考图说"同风格" → 问"保留原图内容还是换新内容?"
**快捷指令**
- `换风格`:保留内容,只切换画风
- `出立绘`:全身/半身角色立绘
- `出头像`:方形头像构图
- `多风格`:同一内容出 N 种画风对比
- `多模型`:同一风格用多个模型各出一张对比
### 风格转换路径选择(⚠️ 内部决策,不向用户展示)
先问用户一个问题:"更在意**人物像**还是**风格到位**"
| 用户优先级 | 路径 |
|-----------|------|
| 要像原图的人 | 人脸锁定型引擎 + 目标风格 prompt;或文生图引擎 + 精细角色描述 |
| 要画风到位 | 文生图路径(不传参考图);查 KB 速查表选首选引擎 |
| 两者都要 | 两条路径各出一张,让用户对比挑选 |
---
## Phase 3: 出图
### Prompt 构建
`references/style-bank.md` 加载匹配风格的完整档案,按以下结构组装:
```
最终 Prompt = [风格锚点词] + [角色/场景描述] + [画风细化词] + [画质增强词]
负向 Prompt = [风格专属负向词] + [通用负向词]
```
**各风格轴对 Prompt 的影响**
| 灵魂轴 | Prompt 侧重 |
|--------|------------|
| 画风 | 线条描述、上色技法、媒介关键词、年代风格标签 |
| 角色 | 头身比、面部特征、服装细节、姿势动作 |
| 调性 | 色彩关键词、光影描述、氛围形容词、背景处理 |
### 角色描述规范
二次元角色描述需包含(按重要性排序):
1. **性别/种族/年龄段**:少女/少年/成年/幼儿
2. **发型发色**:具体描述(如"黑色长直发,刘海遮住右眼")
3. **眼睛**:颜色、大小、特殊特征
4. **服装**:具体描述材质和款式(如"白色丝绸汉服,金色刺绣")
5. **姿势/动作**:静态姿势或动态动作
6. **表情**:情绪状态
7. **配件/道具**:武器、饰品、宠物等
### 尺寸规则
询问用户或根据用途自动选择:
| 用途 | 推荐尺寸 |
|------|---------|
| 头像 | 1:1 |
| 立绘/角色卡 | 2:3 或 3:4(竖版)|
| 场景/横版 | 16:9 |
| 手机壁纸 | 9:16 |
| 条漫/Webtoon | 9:16(窄长)|
若有参考图,默认跟随原图比例(用 ffprobe 测量后映射,**禁止猜测**)。
### 生成执行
**按引擎分别执行**,查阅 `references/model-knowledge-base.md` 获取引擎专属 prompt 写法。
#### 四宫格单图提取流程
MidjourneyNiji 7 / V7)固定输出 2×2 四宫格(4 张变体拼在一张图中),**不是单图**。**每次调用 MJ 生图后必须立即执行以下裁剪步骤,不得跳过**:
1. 生成完成后,用 `read_media` 分析四宫格,评估 4 个面板(左上/右上/左下/右下)的质量
2. 选出最佳面板(编号 1=左上, 2=右上, 3=左下, 4=右下)
3. **立即用 bash ffmpeg 命令裁剪**(以下四选一,`INPUT` 替换为实际路径,`OUTPUT` 替换为目标路径):
```bash
# 面板1 左上
ffmpeg -i INPUT -vf "crop=iw/2:ih/2:0:0" OUTPUT
# 面板2 右上
ffmpeg -i INPUT -vf "crop=iw/2:ih/2:iw/2:0" OUTPUT
# 面板3 左下
ffmpeg -i INPUT -vf "crop=iw/2:ih/2:0:ih/2" OUTPUT
# 面板4 右下
ffmpeg -i INPUT -vf "crop=iw/2:ih/2:iw/2:ih/2" OUTPUT
```
4. 裁剪后的单图才是最终输出,四宫格原图**不得**作为交付物展示给用户
⚠️ **此流程不可跳过,且必须用 bash ffmpeg 实际执行裁剪**。仅描述"选了哪张"而不裁剪等同于未执行。向用户展示的必须是裁剪后的单图路径,不是四宫格路径。
#### 各引擎 Prompt 语言与参考图传递(⚠️ 内部参考,不向用户展示)
> 详见 `references/model-knowledge-base.md`,此处仅为快速索引。
> 向用户解释时只说"我会用最适合这个风格的方式生成",不提具体引擎名。
输出保存到 `.anime-style-forge/{session_name}/outputs/v{版本}_{序号}.png`。
同步更新 `generation_log.md`
```markdown
## v1 — 2026-04-27
- 风格:jp_cel(日系赛璃璃)
- Prompt[完整 prompt]
- 负向:[完整负向词]
- 结果:v1_01 ~ v1_04
```
---
## Phase 4: 迭代
展示结果后询问满意度:
| 选项 | 动作 |
|------|------|
| ✅ 满意 | → Phase 5 输出 |
| 🔧 微调 | 在 prompt 层调整,不回 Phase 1 |
| 🔄 换风格 | 切换到另一个 style_id,保留内容描述 |
| 🎨 混搭 | "这张的线条 + 那张的配色" → 组合维度重新生成 |
**微调映射表**
| 用户反馈 | Prompt 动作 |
|---------|-----------|
| "线条再粗一点" | 增强 `bold outlines, thick lineart` |
| "颜色太鲜了" | 降饱和,加 `muted`, `desaturated` |
| "眼睛画得不对" | 细化眼睛描述,加 `detailed {style} eyes` |
| "不够二次元" | 增强风格锚点词权重,加 `anime, 2D` |
| "太二次元了/想半写实" | 减弱风格词,加 `semi-realistic` |
| "背景太复杂" | 加 `simple background, solid color bg` |
| "动作不自然" | 重新描述姿势,加 `natural pose` |
| "像AI画的" | 加 `hand-drawn feel`,去 `highly detailed` 等过度修饰词 |
| "想要某某番/游戏的感觉" | 切换到对应作品的风格档案 |
---
## Phase 5: 输出
交付清单:
```
📦 交付
画风:[style_name]
灵魂轴:[soul_summary]
生成数量:[N] 张([M] 轮迭代)
文件位置:.anime-style-forge/{session_name}/outputs/
使用 Prompt[完整 prompt,方便复用]
```
**可选操作**
- **风格入库**:将本次成功的风格参数存入 `.anime-style-forge/style-library/{风格名}.md`,供未来复用
- **多风格对比**:同一内容用 2-3 种画风各出一组,生成对比展示页
- **继续变体**:基于最满意的一张继续出变体
---
## 文件结构
```
anime-style-forge/
├── SKILL.md # 本文件
├── references/
│ ├── style-bank.md # 风格档案库(核心)
│ ├── style-fingerprints.md # 画风视觉指纹(溯源用)
│ ├── model-knowledge-base.md # 生图模型能力矩阵与选择指南
│ ├── benchmark-notes.md # Benchmark 实测经验与已知弱项
│ └── analysis-example.md # 分析示例
└── assets/
└── template.html # 结果展示网页模板
```
## 使用示例
**示例 1:指定风格生成**
```
用户:画一个国漫玄幻3D风格的角色,黑袍持剑站在云海上
→ Phase 1: 直接匹配 cn_xuan3d
→ Phase 2: 展示风格档案 + 确认
→ Phase 3: 组装 promptUnreal Engine + 中式玄幻元素 + 角色描述)
→ Phase 4: 出图,用户对结果微调
→ Phase 5: 交付 + prompt 留存
```
**示例 2:风格转换**
```
用户:[上传真人照片] 帮我动漫化
→ Phase 1: 默认 jp_cel,分析原图面部/服装/背景
→ Phase 2: "推荐赛璐璃风格,也可以选吉卜力/韩系水彩"
→ Phase 3: 文生图,prompt 重建原图内容 + 赛璐璃风格词
→ 输出
```
**示例 3:画风识别 + 同款**
```
用户:[上传一张韩漫截图] 这是什么风格?帮我出一个同风格的角色
→ Phase 1: 溯源分析 → kr_webtoon,灵魂轴=画风(干净勾线+明快平涂)
→ Phase 2: 展示分析 + 问角色描述
→ Phase 3: 用 kr_webtoon 模板生成
→ 输出
```
**示例 4:多风格对比**
```
用户:同一个角色帮我出吉卜力、国漫3D、韩系水彩三种风格
→ Phase 1: 并行加载 jp_ghibli / cn_xuan3d / kr_watercolor
→ Phase 3: 三种风格各出2张 = 6张
→ Phase 5: 生成对比展示页
```
> 📋 Benchmark 实测经验见 `references/benchmark-notes.md`