L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

image-portrait-generate

image-portrait-generate

从参考图(人像/宠物)生成高精度写真,覆盖证件照/形象照/艺术照/宠物写真/多人写真/发型调整以及双人合影合成。仅在用户明确要求写真生成、人像风格化或双人合照合成时触发。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: image-portrait-generate description: "从参考图(人像/宠物)生成高精度写真,覆盖证件照/形象照/艺术照/宠物写真/多人写真/发型调整以及双人合影合成。仅在用户明确要求写真生成、人像风格化或双人合照合成时触发。" version: "1.0.0" metadata: {"openclaw":{"requires":{"bins":["meitu"],"env":["MEITU_OPENAPI_ACCESS_KEY","MEITU_OPENAPI_SECRET_KEY","MEITU_OPENAPI_TOOL_TASK_MODE"],"paths":{"read":["/.meitu/credentials.json","/.meitu/tool-registry.json","/.openclaw/workspace/visual/","./openclaw.yaml"],"write":["/.openclaw/workspace/visual/","./output/"]}},"primaryEnv":"MEITU_OPENAPI_ACCESS_KEY"}} requirements: credentials: - name: MEITU_OPENAPI_ACCESS_KEY source: env | ~/.meitu/credentials.json - name: MEITU_OPENAPI_SECRET_KEY source: env | ~/.meitu/credentials.json env: MEITU_OPENAPI_TOOL_TASK_MODE: command permissions: - type: file_read paths: - ~/.meitu/credentials.json - ~/.meitu/tool-registry.json - ~/.openclaw/workspace/visual/ - ./openclaw.yaml - type: file_write paths: - ~/.openclaw/workspace/visual/ - ./output/ - type: exec commands: - meitu

Image Portrait Generate

Overview

从参考图(人像/宠物)生成高精度写真,覆盖单人/宠物/多人写真(证件照/形象照/艺术照/发型调整/场景变换)和双人合影合成。支持 2K/4K 分辨率。仅在用户明确要求写真生成或双人合照合成时触发,不用于泛化的“合影”“团体照”闲聊场景。

API Mapping

  • 单人/宠物/多人写真(主):image_gummy_edit_v45
  • 单人/宠物写真降级(兜底):image_mint_portrait_edit_2k
  • 双人合影合成:image_groupphoto2_edit
  • model 映射:auto(默认)/gummy_pro→v45 / mint_portrait→mint_2k

Dependencies

  • meitu-cli: >=2.0.6
  • 凭证:CONFIG AKSK → meitu tools update;EXEC AKSK → 实际执行(见根 CONFIG.md)
  • 环境变量:MEITU_OPENAPI_TOOL_TASK_MODE=command

路径别名:$VISUAL = {OPENCLAW_HOME}/workspace/visual/

Core Workflow

Preflight → Execute → Deliver

Preflight

  1. meitu --version ≥ 2.0.6
  2. 已用 CONFIG AKSK 跑过 meitu tools update
  3. 当前 AKSK = EXEC,MEITU_OPENAPI_TOOL_TASK_MODE=command
  4. output_dir:openclaw.yaml → ./output/ |else → $VISUAL/output/image-portrait-generate/;mkdir -p

Execute

触发信号 / 路由规则

核心维度:输入图片数 + 合影信号。

场景判定关键词图片数路由
双人合影合影、合照、两个人合成恰好 2image_groupphoto2_edit
双人合影但不足 2 张合影1提示"请提供两张人像照片"
双人合影但超过 2 张合影>2取前 2 张 + 告知
单人 / 宠物写真写真、证件照、形象照、发型、宠物写真1 或 >1image_gummy_edit_v45 → image_mint_portrait_edit_2k
多人写真(3 人+)团体照、3 人写真1(多人图)image_gummy_edit_v45(不降级)
意图不明 + 2 张图--2默认走单人写真

参数定义

参数类型必填范围默认说明
image_listARRAY[STRING]是1–N 张--人像/宠物图片 URL 数组
promptSTRING是----写真描述;缺失时根据上下文自动生成
sizeSTRING否2K / 4K2K输出分辨率(仅 image_gummy_edit_v45 支持)

API 映射说明:

  • image_gummy_edit_v45(主):image_list[0]→image_url(API 本身支持多人),prompt/size 直传
  • image_mint_portrait_edit_2k(降级):image_list[0]→image_url,prompt 直传
  • image_groupphoto2_edit(双人合影):image_list 数组(必须恰好 2 张),prompt→instruction(非中英文自动翻译为中文);固定参数 lora_key=multi_duorenhezhao_2k、rsp_media_type=url

证件照 + 指定底色(蓝/白/红):在 prompt 中写入底色要求(如"蓝色纯色背景证件照")。

工具调用

meitu image-portrait-generate --image_list <img1>[,<img2>,...] --prompt "<desc>" [--size 2K|4K] --json --download-dir {output_dir} --skill_name skill_image-portrait-generate

错误降级

场景处理方式
image_list 缺失提示"请提供参考图片",不调用 API
image_list 中任一图片不可访问返回图片链接无效错误,不重试
prompt 缺失根据上下文自动生成
合影但仅 1 张提示"请提供两张人像照片"
合影且 >2 张取前 2 张并告知
写真但给 2 张默认走单人写真
image_gummy_edit_v45 失败(单人/宠物)自动降级至 image_mint_portrait_edit_2k
image_mint_portrait_edit_2k 失败返回错误
image_gummy_edit_v45 失败(多人/3 人+)不降级,直接返回错误
image_groupphoto2_edit 失败返回错误
未检测到人脸/宠物返回错误:参考图需包含清晰人像或宠物
内容合规拦截直接返回合规提示,不重试、不降级

Deliver

  • 使用 Preflight 解析的 output_dir
  • 从 downloaded_files[0].saved_path 读取已下载文件路径
  • mv {downloaded_files[0].saved_path} {output_dir}/{YYYY-MM-DD}_{descriptive}_image-portrait-generate.{ext}

Output

  • 格式:image
  • 位置:项目 → ./output/,一次性 → $VISUAL/output/image-portrait-generate/

基线 Task ID

见 references/task-id-baseline.md 中对应行。

Skills enregistrées