====================== 用户必填配置区(仅需修改这里,其他内容请勿动) ======================
1. ComfyUI 基础API配置
COMFYUI_BASE_URL: "http://127.0.0.1:8188" # 你的ComfyUI本地服务地址,默认端口8188 COMFYUI_API_KEY: "" # 选填,若你的ComfyUI开启了API认证,填写你的API密钥 COMFYUI_OUTPUT_DIR: "D:/ComfyUI/output" # 你的ComfyUI输出文件夹绝对路径,用于OpenClaw定位生成的素材
2. 工作流配置(核心!请替换为你自己导出的API格式工作流JSON)
导出方法:ComfyUI调试好工作流 → 右上角菜单 → Save (API Format) → 复制JSON内容粘贴到对应位置
WORKFLOW_TEMPLATES:
角色原画工作流(适配立绘、三视图、NPC、怪物,推荐带ControlNet线稿控型)
character: | { "3": { "class_type": "KSampler", "inputs": { "cfg": 8, "denoise": 1, "latent_image": ["5", 0], "model": ["4", 0], "negative": ["7", 0], "positive": ["6", 0], "sampler_name": "euler", "scheduler": "normal", "seed": -1, "steps": 20 } }, "4": { "class_type": "CheckpointLoaderSimple", "inputs": { "ckpt_name": "sdxl_xl_base_1.0.safetensors" } }, "5": { "class_type": "EmptyLatentImage", "inputs": { "batch_size": 1, "height": 1024, "width": 1024 } }, "6": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["4", 1], "text": "{{prompt}}" } }, "7": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["4", 1], "text": "{{negative_prompt}}" } }, "8": { "class_type": "VAEDecode", "inputs": { "samples": ["3", 0], "vae": ["4", 2] } }, "9": { "class_type": "SaveImage", "inputs": { "filename_prefix": "game_character", "images": ["8", 0] } } }
场景原画工作流(适配大场景、关卡、主城,推荐带景深、高清修复)
scene: | { "3": { "class_type": "KSampler", "inputs": { "cfg": 7, "denoise": 1, "latent_image": ["5", 0], "model": ["4", 0], "negative": ["7", 0], "positive": ["6", 0], "sampler_name": "dpmpp_2m", "scheduler": "karras", "seed": -1, "steps": 24 } }, "4": { "class_type": "CheckpointLoaderSimple", "inputs": { "ckpt_name": "sdxl_xl_base_1.0.safetensors" } }, "5": { "class_type": "EmptyLatentImage", "inputs": { "batch_size": 1, "height": 1024, "width": 2048 } }, "6": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["4", 1], "text": "{{prompt}}" } }, "7": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["4", 1], "text": "{{negative_prompt}}" } }, "8": { "class_type": "VAEDecode", "inputs": { "samples": ["3", 0], "vae": ["4", 2] } }, "9": { "class_type": "SaveImage", "inputs": { "filename_prefix": "game_scene", "images": ["8", 0] } } }
道具素材工作流(适配武器、装备、图标,推荐带透明背景、对称优化)
prop: | { "3": { "class_type": "KSampler", "inputs": { "cfg": 8, "denoise": 1, "latent_image": ["5", 0], "model": ["4", 0], "negative": ["7", 0], "positive": ["6", 0], "sampler_name": "euler", "scheduler": "normal", "seed": -1, "steps": 20 } }, "4": { "class_type": "CheckpointLoaderSimple", "inputs": { "ckpt_name": "sdxl_xl_base_1.0.safetensors" } }, "5": { "class_type": "EmptyLatentImage", "inputs": { "batch_size": 1, "height": 1024, "width": 1024 } }, "6": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["4", 1], "text": "{{prompt}}, transparent background" } }, "7": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["4", 1], "text": "{{negative_prompt}}, white background, solid background" } }, "8": { "class_type": "VAEDecode", "inputs": { "samples": ["3", 0], "vae": ["4", 2] } }, "9": { "class_type": "SaveImage", "inputs": { "filename_prefix": "game_prop", "images": ["8", 0] } } }
技能特效工作流(适配光效、粒子、序列帧,推荐带透明通道、动态参数)
vfx: | { "3": { "class_type": "KSampler", "inputs": { "cfg": 7.5, "denoise": 1, "latent_image": ["5", 0], "model": ["4", 0], "negative": ["7", 0], "positive": ["6", 0], "sampler_name": "dpmpp_2m", "scheduler": "karras", "seed": -1, "steps": 20 } }, "4": { "class_type": "CheckpointLoaderSimple", "inputs": { "ckpt_name": "sdxl_xl_base_1.0.safetensors" } }, "5": { "class_type": "EmptyLatentImage", "inputs": { "batch_size": 1, "height": 512, "width": 512 } }, "6": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["4", 1], "text": "{{prompt}}, glowing effect, transparent background, black background, vfx, particle effect" } }, "7": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["4", 1], "text": "{{negative_prompt}}, text, watermark, ugly, deformed" } }, "8": { "class_type": "VAEDecode", "inputs": { "samples": ["3", 0], "vae": ["4", 2] } }, "9": { "class_type": "SaveImage", "inputs": { "filename_prefix": "game_vfx", "images": ["8", 0] } } }
3. RTX3090 显存优化配置(默认已优化,可按需调整)
RTX3090_OPTIMIZATION: max_batch_size: 4 # 单批次最大生成数量,3090 24G显存推荐不超过4 max_resolution: 2048 # 单张图片最大分辨率,超过会自动分批次 default_steps: 20 # 默认采样步数,平衡速度与质量 enable_xformers: true # 已默认在ComfyUI启动时开启,此处为参数校验
====================== 核心执行逻辑(OpenClaw自动执行,请勿修改) ======================
一、触发规则(OpenClaw自动识别,以下场景会自动调用本Skill)
- 用户提及游戏美术、原画、素材、道具、角色、场景、特效、立绘、图标、技能光效等生成需求
- 用户要求批量生成游戏相关的图片素材
- 用户要求调用本地ComfyUI生成图片
- 用户查询ComfyUI生成任务进度
二、执行步骤(严格按以下顺序执行)
步骤1:前置校验
- 校验COMFYUI_BASE_URL是否可访问,若无法访问,直接提示用户:「请先启动本地ComfyUI服务,并确认配置的地址正确,当前无法访问 {{COMFYUI_BASE_URL}}」
- 校验用户选择的asset_type是否有对应的工作流模板,若无,使用character默认模板
- 校验batch_count是否超过max_batch_size,若超过,自动拆分多批次提交,避免爆显存
- 校验分辨率是否超过max_resolution,若超过,提示用户并自动调整到推荐分辨率
步骤2:工作流动态参数替换
- 提取用户输入的prompt、negative_prompt、width、height、batch_count、seed参数
- 将参数填充到对应工作流模板的{{变量名}}占位符中
- 替换工作流中的seed参数,-1为随机生成,固定数值直接使用
- 替换工作流中的batch_size参数,适配用户输入的生成数量
- 替换工作流中的width、height参数,适配用户输入的分辨率
步骤3:调用ComfyUI API提交生成任务
- 请求地址:{{COMFYUI_BASE_URL}}/prompt
- 请求方法:POST
- 请求头:
- Content-Type: application/json
- 若COMFYUI_API_KEY不为空,添加 Authorization: Bearer {{COMFYUI_API_KEY}}
- 请求体:
{ "prompt": {{替换参数后的完整工作流JSON}}, "client_id": "openclaw-game-art-generator" }
扫码联系在线客服