Install
openclaw skills install @aleaaaan/cos-effect-prompt-main为 COS 照片(cosplay 角色照 / 写真)生成专业级 JSON 后期指令,可直接配合 Nano Banana (Gemini 图像模型)使用。用户在给自己的角色照做后期时使用——加特效(魔法阵、火焰、雷电、 冰霜、翅膀、光环、圣光、粒子、辉光、霓虹、雨、雪、花瓣、赛博街景)、做综合修图(身体塑形 液化、服装焕新、裙摆/披风风动效果)都在范围内。本技能会输出一份结构化的 JSON 指令: 保底规则(构图/脸/姿势不变)+ 检测分析 + 按需启用的处理模块 + 约束与光影噪点一致性。 请务必在用户提到「给照片加特效」「COS 后期」「P 图」「修图」「加魔法阵/火焰/光环/翅膀」 「液化
openclaw skills install @aleaaaan/cos-effect-prompt-main为一个目标服务:把用户"想怎么处理这张 COS 照片"的模糊想法,变成一份 Nano Banana 能一次理解并执行的 JSON 后期指令。
Nano Banana(Gemini 图像模型)吃的是自然语言指令,且它是语言模型——结构化 JSON 指令对它同样有效,甚至因为无歧义而更可靠:保底规则写清楚"什么不许动",处理模块写清楚"改哪里、改成什么样",约束兜底防止翻车。本技能的一切围绕"组装这份 JSON"展开。
输出一份可直接导入图像处理插件的预设 JSON,信封结构如下:
{
"id": "f_special_gold-magic-circle",
"title": "脚下加金色魔法阵",
"content": "{\"role\":\"Cosplay人像后期综合处理师\",...}",
"params": [
{ "key": "intensity", "label": "特效强度", "type": "number", "min": 0, "max": 100, "default": 60, "step": 5, "target": "effects[].intensity" },
{ "key": "style_weight", "label": "风格权重", "type": "number", "min": 0, "max": 100, "default": 50, "step": 5, "target": "style" },
{ "key": "blend_strength", "label": "光影融入", "type": "number", "min": 0, "max": 100, "default": 60, "step": 5, "target": "blend" }
],
"category": "special",
"subCategory": "",
"refImages": [],
"_isFactory": true
}
content:组装好的指令 JSON(固定骨架 + 按需模块 + 约束 + 光影一致)整体序列化为字符串,内部引号转义为 \"。这份字符串就是可直接粘贴给 Nano Banana 的指令。params:可调参数控件,插件据此渲染滑块。每个控件含 key(参数名)/label(中文标签)/type(控件类型,目前 number)/min/max/default/step(范围与默认值)/target(该参数作用于 content 的位置,供插件替换)。category:按主要效果映射英文分类(见下方分类表)title:简短中文标题,概括主要操作(如"脚下加金色魔法阵""旗袍去白色打底")id:f_<category>_<英文kebab-slug>,语义化建议值(如 f_special_gold-magic-circle),导入插件时可按需改subCategory:默认 "";refImages:[];_isFactory:true完整信封示例见 references/preset-envelope.json;指令 JSON 的固定骨架与按需模块见 references/template.json。交付时输出完整可导入的预设 JSON,用代码块包裹。
params 的默认值已烘焙进 content(未调节时可直接使用);插件调节后按 target 替换对应部分。数值→措辞映射:
| 参数 | 0-33 | 34-66 | 67-100 |
|---|---|---|---|
intensity(特效强度) | 轻(克制) | 中(标准) | 强(强烈) |
style_weight(风格权重) | 克制写实 | 均衡 | 强烈风格化 |
blend_strength(光影融入) | 轻微融入 | 自然融入 | 强光影交互 |
intensity=60(中)、style_weight=50(均衡)、blend_strength=60(自然融入)default,content 同步用对应措辞| 主要效果 | category |
|---|---|
| 元素 / 魔法 / 光效类特效(魔法阵/火焰/雷电/翅膀/光环/粒子…) | special |
| 场景类特效(雨/雪/花瓣/废墟/赛博街景/星空/古堡…) | scene |
| 修脸(磨皮/瘦脸/眼睛/妆容…) | face |
| 头发(光泽/亮晶晶/闪粉…) | hair |
| 服装(面料/褶皱/瑕疵/污渍…) | clothing |
| 塑形(瘦腰/液化…) | body |
| 风效(裙摆/披风飘动…) | wind |
| 调色 | color |
| 换背景 | background |
| 光影重塑 | lighting |
| 其他 / 复合 | 取最主要效果的分类;归不了用 other |
多模块请求:
category/title/id都按最主要效果(通常最先提到或用户最在意的一个)确定,但content里仍包含所有启用的模块。
读用户请求,判断启用了哪些模块:
| 用户说了… | 启用模块 |
|---|---|
| 魔法阵 / 火焰 / 雷电 / 翅膀 / 光环 / 辉光 / 粒子 / 雨 / 雪 / 花瓣 / 街景 / 加光效… | special_effects |
| 瘦身 / 塑形 / 液化 / 身材修一下 / 收腰… | body_sculpting |
| 修脸 / 磨皮 / 美肤 / 瘦脸 / 眼睛 / 妆容 / 祛痘 / 祛瑕疵… | face_retouch |
| 头发 / 发丝 / 亮晶晶 / 闪粉 / 光泽 / 发质… | hair_enhancement |
| 衣服皱 / 面料 / 瑕疵 / 污渍 / 破损 / 起球 / 开线… | clothing_refresh |
| 风效 / 裙摆飘起来 / 披风扬起 / 加风… | wind_effect |
用户没提任何模块(只说"帮我修一下这张图")→ 先问一个关键问题:"想加特效(魔法阵/火焰/光效等)还是做综合修图(塑形/服装/风效)?"不要盲目默认。 用户提了某个已知表里没有的处理(调色 / 背景更换 / 光影重塑 / 去路人 / 加文字…)→ 不要拒绝、不要让人重述,直接进入「泛化模块组装」。
role:固定为 Cosplay人像后期综合处理师base_rules:固定(构图/面部/姿势保持不变,透视关系保持不变,不做缩放旋转平移)detection:固定——"分析全身身材比例、服装类型和可移动部分(裙摆/披风/飘带)、头发长度方向,以及画面透视基准(地面灭点/相机角度/景深关系)"integration:固定——light_match(光影一致)+ noise_match(噪点一致)+ perspective_match(所有新增元素符合照片原有透视:灭点方向/相机角度/景深关系)special_effects(本技能核心):从 references/effects.md 查特效词库。每个特效填五个字段:
"special_effects": {
"effects": [
{
"type": "魔法阵",
"location": "脚下地面",
"visual_description": "发光的金色魔法阵,繁复几何图纹与神秘符文环绕旋转,符文线条柔和发光",
"intensity": "明显",
"blend": "魔法阵光芒映照角色产生金色环境光,地面法阵透视正确"
}
]
}
type:特效名(词库条目)location:位置——脚下 / 手中 / 背后 / 头顶 / 全身 / 背景,按用户描述或词库惯例visual_description:词库「视觉描述」字段,是提示词的主体,要"看得见"intensity:用户说了强度就用;没说默认 中(标准)。措辞参照词库「强度词」blend:词库「融入写法」字段——光影、透视一致性、图层逻辑,决定特效"长在照片里"还是"贴上去"。每个特效的 blend 必须写明其形状/朝向/大小如何符合原图灭点与相机角度(贴地元素随地面透视形变如近宽远窄,垂直元素保持正确高度关系)effects 数组,按重要性从高到低排序(主角特效在前)references/effects.md 质感段的「通用质感措辞」拼进 visual_description 末尾、「通用融入调整」拼进 blend,并在 special_effects.style 标注风格。用户明确要求写实实拍 / 二次元手绘 / 扁平贴图等其他风格时,用对应风格覆盖默认face_retouch / hair_enhancement / clothing_refresh:从 references/portrait.md 取对应子项的 JSON 值(每个子项都给了现成的中文表述,直接选用)。只输出与用户需求相关的子项,用户没提的键就省略。例如用户只说"磨皮"就只给 skin,不要整模块都塞进去。
gloss + sparkle 组合(光泽 + 闪粉),这是高频需求;用户说"别太闪"就去掉 sparkleflaw_fix 覆盖污渍/破损/脱线/五金件,按用户具体说的取舍body_sculpting / clothing_refresh / wind_effect:按用户需求填充,字段结构沿用参考模板(见 references/template.json)。塑形务必带 background_fix(液化导致的背景变形完全修复)。风效的 direction 要统一(与头发飘动方向一致)。
constraintsconstraints 由基础项 + 各启用模块的严禁项拼接:
严禁改变动作姿势、严禁液化过度变形、严禁背景出现变形、严禁新增元素透视与照片不一致special_effects 启用时加:严禁重绘人物本体(面部/服饰/体型)、严禁特效光源方向与照片不一致face_retouch 启用时加:严禁过度磨皮失真、严禁改变五官结构导致认不出本人hair_enhancement 启用时加:严禁闪粉/光点溢出到面部或背景、严禁改变发型轮廓clothing_refresh 启用时加:严禁破坏服装版型与图案wind_effect 启用时加:严禁风效不自然或风向不统一body_sculpting 启用时加:严禁液化过度、保持自然比例content)后,套入插件预设信封params 控件:默认 intensity / style_weight / blend_strength 三个(按上方映射表);用户明确指定过强度 / 风格 / 融入程度时,改对应 default 并让 content 同步用对应措辞content 内指令 JSON 键名与参考模板一致、每个启用模块都有实质内容id / title / category 与主要效果匹配<id>.json(如 f_special_gold-magic-circle.json),保存到用户的下载目录(Downloads)——Windows 默认 C:\Users\<用户名>\Downloads,macOS / Linux 为 ~/Downloads;无法确定时询问用户或保存到用户指定位置。保存后在回复中给出文件路径;若环境提供 artifact 报告工具(如 report_artifacts),用它声明该文件,让用户可直接下载用户提到某种画面风格(MJ 风格 / 二次元 / 动漫 / 厚涂 / 赛博朋克 / 电影感 / 梦幻 / 写实 / 极简…)时,从 references/mj-style.md 取措辞,按下面位置注入:
special_effects.style(覆盖默认 CG 质感,或与 CG 并列叠加)content 里加一句风格定调,或写进相关模块的 blendface_retouch / hair_enhancement 的质感描述--ar / --v / --stylize / --no 等时,按 mj-style.md 的「参数 → 指令等价」表转译成描述性语句,不输出 MJ 参数本身判断标准:用户说出风格词,就启用风格处理;没说就用默认(特效 CG 质感,修图自然档)。
触发:用户问「这是什么风格」「识别这张图的风格」「分析画风」「这个风格叫什么」。
流程:
references/mj-style.md 的「风格识别维度」5 个维度(线条 / 色彩 / 光影 / 质感 / 氛围)判定主风格与次风格;先查内置库 mj-style.md,再查已学库 references/styles-learned.mdcontent 是按该风格定调处理的指令,style 注入对应措辞;category 用 style;params 保留三个默认控件## 风格识别
- 判定:二次元厚涂(置信度 85%),梦幻氛围(次风格)
- 特征:干净线条、通透色彩、厚涂笔触、柔和光晕
## 风格预设
```json
{
"id": "f_style_anime-painterly",
"title": "二次元厚涂梦幻",
"content": "{\"role\":\"Cosplay人像后期综合处理师\",...,\"special_effects\":{\"style\":\"日系动漫+厚涂手绘...\",\"effects\":[...]},...}",
"params": [ { "key": "intensity", ... }, { "key": "style_weight", ... }, { "key": "blend_strength", ... } ],
"category": "style",
"subCategory": "",
"refImages": [],
"_isFactory": true
}
### 风格学习(新风格入库)
触发:用户提供一种**内置库没有**的风格(说名称 + 特征,或给一张这种风格的图),并希望学会它。
**流程**:
1. **提炼**:按 5 个识别维度提炼风格特征,拟一条新条目(风格名 / 触发词 / 特征 / 指令措辞)
2. **确认**:向用户展示拟新增条目,**征得同意后才写入**
3. **入库**:追加到 `references/styles-learned.md`(保持条目模板一致),告诉用户已学习
4. **调用**:之后生成时该风格与内置库一起参与匹配;用户说"用刚学的 XX 风格"即可调用
**注意事项**:学习是**修改技能文件**的操作——只在用户明确要求"学会这个风格"时执行,且先展示条目让用户确认,不擅自写入。
## 泛化模块组装(库中没有的需求)
知识库覆盖不了所有后期需求(调色、背景更换、光影重塑、去路人、加文字……)。**遇到库中没有的处理,不要拒绝、不要让人重述**——用下面的模板现造一个模块,质量与已知模块同一标准。
### 第 1 步:从用户原话提取四要素
| 要素 | 键 | 说明 |
|---|---|---|
| 动作 | `action` | 用户要做什么:替换 / 调整 / 添加 / 修复 / 重塑 / 强化 / 消除…,用强动词 |
| 对象 | `target` | 作用对象:整体色调 / 背景 / 光源 / 画面中某物体… |
| 目标描述 | `goal_description` | 期望的视觉结果,写成"看得见"的画面描述——具体到颜色、质感、光线、氛围,参考 effects.md 的视觉描述写法 |
| 保持项 | `preserve` | 必须保持不变的部分(默认:人物本体、动作、构图) |
强度适用就加 `intensity`,措辞参照效果库的强度表。专业表达从 `references/nano-banana.md` 的摄影/电影术语里取(调色→色温/色调/LUT、光影→体积光/轮廓光/阴影)。
### 第 2 步:按泛化模板组装
```json
"<module_name>": {
"action": "调整",
"target": "整体色调",
"goal_description": "冷青蓝电影调色,暗部沉稳、高光带冷色,肤色与背景同色系协调",
"preserve": "人物本体、面部细节、动作与构图",
"intensity": "中",
"blend": "与照片原有光源方向一致,避免局部变色"
}
<module_name> 用语义化小写命名:调色→color_grading、背景更换→background_replace、光影重塑→lighting_reshape、去路人→remove_object;没现成英文就按语义自造constraints 之前,与已知模块并列constraints 里追加一条针对性严禁项(如背景更换→"严禁人物边缘白边/生硬抠图痕迹")integration、CG 质感风格逻辑与已知模块完全一致调色 / 背景更换 / 光影重塑 / 去路人的完整组装见 references/fallback.md。
用户提供照片并问"这个效果怎么做 / 分析这张图的后期 / 照着这张图做 / 反推一下提示词"时,进入此模式。目标:从照片里识别出已有的后期处理,反推出能复现它的 JSON 指令。这是主流程的逆向——输入是一张已处理过的照片,输出是"再造它"的指令。
如果模型有视觉能力,仔细观察照片,逐项检查:
references/effects.md:魔法阵 / 火焰 / 雷电 / 粒子 / 光环 / 翅膀…?位置在哪?强度轻中强?CG 质感还是写实质感?references/portrait.md:皮肤磨皮程度(自然保留质感 or 光滑塑料感)、脸型 / 身材是否有液化痕迹、头发是否有光泽或闪粉看不到照片时(模型无视觉能力),向用户询问关键特征,不要瞎猜:照片里有什么特效 / 皮肤和脸的状态 / 色调风格 / 场景背景。
把识别出的处理点映射到对应模块,只启用照片里真实存在的处理(没看到就不输出)。识别出但知识库没有的处理 → 用泛化模块组装。
输出 = 简短分析 + 复现指令(信封格式)。指令 JSON 仍按主流程组装,visual_description / blend 写"照片里看到的效果长什么样",然后整体套入插件预设信封(content 为转义字符串,category 按主要效果映射)。
## 反推分析
- 特效:脚下金色发光魔法阵(中强,CG 质感,符文旋转)
- 修图:轻微磨皮保留质感,冷色调电影调色
- 场景:夜景街景,霓虹氛围
## 复现指令
```json
{
"id": "f_special_gold-magic-circle",
"title": "复现:脚下金色魔法阵",
"content": "{\"role\":\"Cosplay人像后期综合处理师\",\"base_rules\":{...},\"special_effects\":{\"effects\":[...]},\"constraints\":{...},\"integration\":{...}}",
"category": "special",
"subCategory": "",
"refImages": [],
"_isFactory": true
}
### 第 4 步:结合用户要求
如果用户在"照这张图"之外还有新要求(如"把特效改成蓝色" / "不要这个魔法阵换成火焰"),在反推基础上调整对应字段再输出。这时输出的是**融合指令**:保留照片里想复现的部分,改掉要改的部分。
### 反推注意事项
- 只描述照片里**看得到**的处理,不臆造不存在的效果
- 强度看不清就用"中"兜底
- 分析部分简短(3-5 条),可复现指令完整(按主流程)
- 反推模式同样遵守"按需启用"——照片里没有的模块一律不输出
## 追问规则(克制)
- 没提任何模块 → 问一次方向(特效 or 综合修图)
- 提了特效没说类型 → 从 `references/effects.md` 举例让用户挑(最多一次)
- 说了类型没说强度/位置 → 用默认值,不要连环追问
## 引用知识库
- 特效怎么写 → `references/effects.md`(四大类 28 种特效,含视觉描述 / 融入写法 / 强度词 / 变体)
- 修脸 / 亮晶晶头发 / 服装瑕疵 → `references/portrait.md`(含现成 JSON 值、严格项、组合示例)
- 库中没有的需求 → `references/fallback.md`(泛化模块:调色/背景更换/光影重塑/去路人)
- 插件预设信封示例 → `references/preset-envelope.json`
- MJ 风格 / 二次元 / 厚涂 / 赛博 / 电影感 → `references/mj-style.md`(风格措辞 + 参数转译 + 识别维度 + 触发词)
- 已学习风格库(新风格入库处)→ `references/styles-learned.md`
- 完整 JSON 骨架 → `references/template.json`
- Nano Banana 编辑原理与摄影术语 → `references/nano-banana.md`