Claude Skill

one-shot

已有模特图换模特、换背景。一张模特图 → 多人群多场景版本,商品本身不变。当用户说「换模特」「换背景」「换人种」「一图多版」「同一件衣服换个人」时使用。

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download dlazy-ai-ecommerce-skills-skills_one-shot-c022f20.zip · 23 KB
Part of dlazy-ai/ecommerce-skills — 26 skills

Install

skills CLI npx skills add https://github.com/dlazy-ai/ecommerce-skills/tree/main/skills/one-shot
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install dlazy-ai-ecommerce-skills@llmmart
Git git clone https://github.com/dlazy-ai/ecommerce-skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole dlazy-ai/ecommerce-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

one-shot — 同一商品替换模特和背景

拿一张已经拍好的模特图或人台图,在商品完全不动的前提下换掉人、换掉背景,或两者都换。

和 flat-lay 的区别:flat-lay 从平铺图造一张模特图;本技能是把已有的模特图裂变成多个人群 / 场景版本——一次拍摄,覆盖国内海外、不同年龄段、不同肤色的投放需求。


生成效果示例

输入:原模特图
source-model.jpg — 男青年身穿灰色落肩短袖,浅灰棚拍背景,768×1024

实际执行的命令(换模特换背景):

dlazy gpt-image-2 \
  --prompt 'Replace the model and the background of this e-commerce photo while keeping the garment untouched. Keep the grey oversized short-sleeve T-shirt exactly as it is: same slate-grey colour, same drop-shoulder cut, same white chest logo, same folds and hem. Replace the person with a different male model of similar build and age, and replace the plain studio wall with a sunlit outdoor city street with soft bokeh. Keep the same pose, camera angle, crop and framing. Photorealistic catalog shot, natural light, no text, no watermark.' \
  --images docs/one-shot/source-model.jpg \
  --size 1024x1536 --quality medium --imageFormat jpeg \
  --save docs/one-shot/example-output.jpg

输出

example-output.jpg — 1024×1536。灰色落肩短袖的颜色、版型、胸前 logo 与下摆弧线保持不变;模特换成另一位男青年,棚拍灰墙换成树影斑驳的街景,姿势与景别沿用原图。


1、能力边界

模式 说明
换模特换背景 人和场景全换,只留商品
只换背景 保留原模特(脸、身材、姿势),换掉环境
只换模特 保留原场景与构图,换掉人
附加能力 说明
指定模特 性别 / 年龄 / 肤色 / 身材,锁定同一张脸做多 SKU
参考图 决定新的姿势与场景,支持套图
参考图相似度 50% 相似(借风格,保留原构图)/ 100% 相似(严格照抄参考图)
智能匹配模特位置 自动对齐新模特与原商品的身体位置,避免衣服错位
自动修手 生成后自动修正手部结构
人台图转真人 输入人形模特(假人)图,输出真人上身图

不做:不改商品的款式、颜色、图案与版型;不做换脸到特定真人;不用于伪造他人肖像代言。


2、输入素材规则

生成前先自检这几条硬性约束:

  • 大小:20KB ~ 15MB
  • 分辨率:大于 400×400
  • 格式:jpg / jpeg / png / webp

输入类型:模特图 或 人台图(衣服已经穿在真人 / 假人身上的图)。

输入建议

做法 说明
✅ 商品完整无遮挡 手臂、包袋压住衣服的地方换人后容易崩
✅ 商品在画面中占比够大 太小的商品换人时细节会被重绘丢失
✅ 光线均匀 强逆光、大面积阴影会让新模特的光影对不上
❌ 多人同框 模型分不清该换哪个人
❌ 商品被裁切 出画的部分只能靠猜,容易长出错误结构

3、三种模式怎么选

你的目标 选模式 prompt 要写死的不变量
同款衣服卖给欧美市场 换模特换背景 商品(款式/颜色/图案/版型/褶皱)
同一套图换季节氛围 只换背景 商品 + 模特(脸/发型/身材/姿势)
人台图转真人图 只换模特 商品 + 场景 + 构图 + 光线
一张图裂变成多年龄段版本 只换模特 商品 + 场景 + 姿势 + 景别

「参考图相似度」的等价写法

档位 写进 prompt
50% 相似 Borrow the mood, colour grading and lighting style from image 2, but keep the original pose, camera angle and crop from image 1.
100% 相似 Reproduce image 2 exactly for pose, camera angle, crop, background and lighting.

「自动修手」的等价写法:Hands must be anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.

「智能匹配模特位置」的等价写法:Align the new body to the original garment: shoulder line, chest width, waist and hem must land on the same pixels as in image 1, so the garment does not shift or stretch.


4、工具调用

本技能使用 dLazy 的 gpt-image-2(图像编辑模型;本技能的本质是「保商品、换其余」的定向替换,需要强区域保持与指令跟随)。

调用方式

两种等价写法,选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本:

# A. 统一入口(推荐):可切任意后端,加 --dry-run 不计费空跑
node scripts/gen.mjs --task one-shot \
  --prompt '<见下方 Prompt 模板>' \
  --images <按下表顺序> \
  --save output/one-shot-<sku>.jpg

# B. 直接用 dLazy CLI(不想引入 Node 依赖时,效果等价)
dlazy gpt-image-2 --prompt '...' --images ... --save output/one-shot.jpg

参数约定(本技能固定用法)

参数 取值 理由
--images [原模特图];带参考图时 [原模特图, 参考图];固定模特时再追加 模特脸图 顺序即 prompt 中的 image 1 / 2 / 3
--size 与原图比例一致(竖版 1024x1536,方图 1024x1024) 换人不该改变构图比例
--quality medium 常规;high 保面料纹理 只换人时纹理容易被抹平
--imageFormat jpeg 电商上架通用格式
--batch 3 ~ 4 换人随机性大,尤其手部
--save docs/one-shot/output-<市场>-<sku>.jpg 按投放市场归档

Command Examples

# basic call: 换模特换背景
dlazy gpt-image-2 \
  --prompt 'Replace the model and the background while keeping the garment untouched. Keep the garment exactly as it is: same colour, cut, logo, folds and hem. Replace the person with a different model of similar build, and replace the background with a sunlit outdoor city street with soft bokeh. Keep the same pose, camera angle, crop and framing.' \
  --images docs/one-shot/source-model.jpg \
  --size 1024x1536 --quality medium

# complex call: 只换模特 + 严格照抄参考姿势 + 固定模特脸 + 修手 + 出 4 张
dlazy gpt-image-2 \
  --prompt 'Replace only the model. Image 1 is the source photo, image 2 is the pose/scene reference, image 3 is the target model face. Keep the garment 100% identical to image 1 — same colour, knit texture, print placement, silhouette and hem. Reproduce image 2 exactly for pose, camera angle, crop, background and lighting. Use the face and body type from image 3. Align the new body to the original garment: shoulder line, chest width, waist and hem must land on the same pixels as in image 1. Hands must be anatomically correct — five distinct fingers per hand, no fused or extra digits. Photorealistic, no text, no watermark.' \
  --images docs/one-shot/source-model.jpg docs/one-shot/pose-ref.jpg docs/one-shot/model-face.jpg \
  --size 1024x1536 --quality high --imageFormat jpeg \
  --batch 4 --save docs/one-shot/output-eu-sku001.jpg

# 先估价不真跑
dlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg --size 1024x1536

延伸阅读

要查什么 去哪
认证、多后端配置、输出结构、错误码 references/provider-cli.md
gpt-image-2 的全部可用参数 references/model-flags.md
统一入口的全部选项 node scripts/gen.mjs --help

5、Prompt 模板

Replace [the model / the background / the model and the background] of this e-commerce photo
while keeping the garment untouched.

Keep the [商品描述] exactly as it is: same [颜色], same [版型/剪裁], same [印花/logo 位置],
same folds and hem.

Replace the person with [新模特描述:性别 / 年龄 / 肤色 / 身材].
Replace the background with [新场景描述].

Keep the same pose, camera angle, crop and framing.
Align the new body to the original garment: shoulder line, chest width, waist and hem
must land on the same pixels as in image 1.
Hands must be anatomically correct — five distinct fingers per hand, no fused or extra digits.

Photorealistic catalog shot, natural light, no text, no watermark.

按模式裁剪模板

模式 删掉哪句 / 加哪句
只换背景 删掉 Replace the person with …,加 Keep the model identical — same face, hair, body and pose.
只换模特 删掉 Replace the background with …,加 Keep the background, props, framing and lighting pixel-identical to image 1.
人台图转真人 加 The source shows the garment on a headless mannequin. Replace the mannequin with a real human model of [描述], adding a natural head, neck, arms and hands. Keep the garment fit exactly as the mannequin shows it.

6、执行流程

  1. 确认模式:查第三节表格,明确哪些是不变量。
  2. 校验输入:商品是否完整无遮挡、是否单人、光线是否均匀。
  3. 写不变量:先把「保什么」写全(商品的颜色/版型/图案/褶皱),再写「换什么」。
  4. 加位置对齐句 + 修手句——这两条几乎每次都要,能显著降低返工率。
  5. 有参考图时选相似度:借氛围用 50% 档写法,严格复刻用 100% 档写法。
  6. --dry-run 估价 → 真跑 → --batch 3~4 挑图,落盘到 docs/one-shot/。
  7. 质检:商品是否被改(重点看图案位置和版型)、衣服是否错位、手部、光影是否统一。

7、常见问题

现象 原因 处理
衣服跟着人一起变了 不变量写得不够具体 逐项写死颜色 / 版型 / 图案位置 / 下摆弧线
换人后衣服错位、被拉伸 新身体与原商品没对齐 加位置对齐句(第三节)
手指崩坏 换人时手部重绘 加修手句 + --batch 4 挑图
只换背景却把人也换了 模式句不完整 补 Keep the model identical — same face, hair, body and pose.
新背景光线和人对不上 未约束光向 追加 Match the new background lighting to the light direction on the model in image 1.
面料纹理被抹平 --quality medium 改 --quality high,或换图后接 material-enhancement
人台图转真人后脖子/手很怪 缺少补全指令 用第五节人台图专用句,明确要求补出头颈与手臂

Tips

Visit https://dlazy.com for more information.

Files (ecommerce-skills)
  • examples
    • brand.yaml 1.6 KB
      # ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成,不要直接改这里。
      # 店铺品牌视觉规范 —— 所有生图技能读这一份,保证几百个 SKU 看起来像同一家店。
      #   node scripts/brand.mjs --brand brand.yaml --for flat-lay
      #   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'
      
      brand:
        name: 示例品牌
        # 一句话概括调性,会原样进 prompt
        tone: quiet minimalist, warm and lived-in, never glossy or commercial
      
      model:
        # 锁模特:给一张脸的参考图,所有技能都会把它作为最后一张参考图传入
        reference: assets/model/face-a.jpg
        description: East Asian woman, late twenties, natural makeup, shoulder-length black hair
        body: slim, height around 168cm
      
      photography:
        background: seamless off-white studio backdrop, RGB 248 248 246
        lighting: soft large softbox from camera left, gentle fill, no hard shadows
        camera: 85mm equivalent, eye level, shallow depth of field
        grade: neutral white balance around 5200K, low contrast, slightly lifted blacks
        crop: full body with headroom, product centered
      
      layout:
        # 给带排版的技能(主图 / 详情页)用
        margin: at least 8% empty margin on all sides
        typeface: clean sans-serif, no decorative fonts
        text_color: near-black on light background
      
      forbid:
        - no visible brand logos other than the product's own
        - no text or watermark
        - no exaggerated poses or dramatic wind effects
        - no oversaturated colors
      
      # 可选:把这些直接写进合规目标,生成时就按平台要求出图
      compliance:
        platform: amazon
      
  • references
    • model-flags.md 2.1 KB
      # `gpt-image-2` 参数清单
      
      本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个,
      这份清单在需要用到非常规参数时再看。
      
      **CRITICAL INSTRUCTION FOR AGENT**:
      Run the `dlazy gpt-image-2` command to get results.
      
      ```bash
      dlazy gpt-image-2 -h
      
      Options:
        --prompt <prompt>            Prompt
        --images [images...]         Images [image: url or local path] (max 5)
        --size <size>                Size [default: auto] (choices: "1024x1024",
                                     "1536x1024", "1024x1536", "2048x2048",
                                     "2048x1152", "3840x2160", "2160x3840", "auto")
        --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: "jpeg",
                                     "png", "webp")
        --quality <quality>          Quality [default: medium] (choices: "low",
                                     "medium", "high")
        --dry-run                    Print payload without executing the tool
        --no-wait                    Return generateId immediately for async tasks
        --timeout <seconds>          Max seconds to wait for async completion
                                     (default: "1800")
        --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under
                                     flag values (flags win)
        --save <path>                Download the result asset to this local path
                                     (mkdir + retry handled for you). A destination
                                     path — NOT a response format; for stdout shape
                                     use --format
        --batch <n>                  Fan-out N parallel runs (cloud tools only)
                                     (default: "1")
        -h, --help                   display help for command
      ```
      
      > Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.
      
      ---
      
      换其他后端时参数由 `scripts/gen.mjs` 统一翻译,见 [`provider-cli.md`](provider-cli.md)。
      
    • provider-cli.md 4.7 KB
      <!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成,不要直接改这里。 -->
      # 后端调用参考
      
      技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里,
      **用到时再读**,不占技能的常驻上下文。
      
      ---
      
      ## 一、认证
      
      ### 默认后端 dLazy
      
      ```bash
      dlazy login            # 设备码流程,远程 shell 也能用,自动写入本地配置
      dlazy auth set <KEY>   # 已有 key 时直接写入
      ```
      
      key 存在用户配置目录(macOS/Linux `~/.dlazy/config.json`,Windows `%USERPROFILE%\.dlazy\config.json`),
      权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。
      
      手动获取:登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。
      key 按组织隔离,可随时轮换或吊销。
      
      ### 其他后端
      
      本技能库不锁定单一厂商。配好任意一家的 key 即可跑:
      
      | 后端 | 环境变量 | 说明 |
      | --- | --- | --- |
      | `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认,最省事 |
      | `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |
      | `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |
      | `fal` | `FAL_KEY` | |
      | `replicate` | `REPLICATE_API_TOKEN` | |
      | `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟,模型 ID 需按开通情况填 |
      
      选路优先级:`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。
      
      ```bash
      node scripts/gen.mjs --doctor     # 看当前哪个后端可用
      ```
      
      各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /
      `GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变,以各家最新文档为准。**
      
      ---
      
      ## 二、两种调用方式
      
      ### 方式 A:统一入口(推荐)
      
      ```bash
      node scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg
      ```
      
      它负责:后端选路、默认尺寸档位、失败重试(429/5xx 指数退避)、落盘建目录、成本估算。
      
      ```bash
      node scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费,只看要发什么
      node scripts/gen.mjs --help
      ```
      
      ### 方式 B:直接用 dLazy CLI
      
      不想引入 Node 依赖时,技能正文里的 `dlazy ...` 命令可以原样执行,效果等价。
      
      ```bash
      npx @dlazy/cli@1.2.3 <command>     # 不装全局二进制
      ```
      
      - CLI 源码:[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`
      
      ---
      
      ## 三、数据流向
      
      调用 dLazy 时:提示词与参数发往 `api.dlazy.com`;传入的本地图片会上传到 `files.dlazy.com`
      供模型读取;产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。
      换成其他后端时,数据流向对应厂商,不经过 dLazy。
      
      ---
      
      ## 四、输出结构
      
      `gen.mjs`(加 `--json`):
      
      ```json
      {
        "ok": true,
        "task": "flat-lay",
        "provider": "dlazy",
        "model": "gpt-image-2",
        "files": ["docs/flat-lay/output-sku001.jpg"],
        "texts": [],
        "estimatedCredits": 60,
        "elapsedMs": 58213
      }
      ```
      
      dLazy CLI 原生:
      
      ```json
      {
        "ok": true,
        "result": {
          "tool": "gpt-image-2",
          "data": { "urls": ["https://files.dlazy.com/data/ai/....jpg"] },
          "savedPath": "docs/flat-lay/example-output.jpg"
        }
      }
      ```
      
      加 `--no-wait` 的异步任务不返回 `data`,返回 `task: { generateId, status }`,
      用 `dlazy status <generateId> --wait` 轮询。
      
      文本类模型(如质检)产出在 `result.data.texts[0]`:
      
      ```bash
      dlazy claude-sonnet-5 --prompt '...' --images x.jpg \
        | python3 -c 'import sys,json;print(json.load(sys.stdin)["result"]["data"]["texts"][0])'
      ```
      
      ---
      
      ## 五、错误处理
      
      | Code | 类型 | 示例 |
      | --- | --- | --- |
      | 401 | 未授权 / 无 key | `ok: false, code: "unauthorized"` |
      | 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |
      | 502 | 本地文件读不到 | `Error: Image file not found: ...` |
      | 503 | 余额不足 | `ok: false, code: "insufficient_balance"` |
      | 503 | 服务端错误 | `HTTP status code error (500)` |
      | 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |
      
      **给 Agent 的硬性要求**
      
      1. 命中 `insufficient_balance` → 明确告诉用户算力不足,并给出充值入口
         <https://dlazy.com/dashboard/organization/settings?tab=credits>
      2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>
         取 key,用 `dlazy auth set <key>` 存好再继续。
      3. 用 `gen.mjs` 时,429 与 5xx 已自动重试;仍失败才向用户报错。
      4. **不要**为了「跑通」而偷偷降级参数(尺寸、档位、批量),先问用户。
      
  • scripts
    • lib
      • miniyaml.mjs 2.8 KB · in bundle
      • providers.mjs 11.9 KB · in bundle
      • tasks.json 3.1 KB
        {
          "_note": "技能 → 默认模型与参数。dlazy 列为默认后端的模型名;其他后端走 providers.mjs 的通用映射,可用 GEN_MODEL_<PROVIDER> 覆盖。",
          "_credits": { "gpt-image-2": 60, "seedream-5.0": 30, "seedream-5.0-pro": 45, "banana-pro": 25, "claude-sonnet-5": 3 },
          "tasks": {
            "flat-lay":                { "model": "gpt-image-2",      "size": "1024x1536", "quality": "high",   "format": "jpeg" },
            "wear-everything":         { "model": "gpt-image-2",      "size": "1024x1536", "quality": "medium", "format": "jpeg" },
            "image-fusion":            { "model": "seedream-5.0",     "size": "3:4",       "resolution": "2k" },
            "one-shot":                { "model": "gpt-image-2",      "size": "1024x1536", "quality": "medium", "format": "jpeg" },
            "fission-pattern":         { "model": "gpt-image-2",      "size": "1024x1536", "quality": "medium", "format": "jpeg" },
            "item-detail":             { "model": "seedream-5.0-pro", "size": "3:4",       "resolution": "2k" },
            "creative-scene":          { "model": "banana-pro",       "size": "1024x1536", "format": "jpeg" },
            "batch-image":             { "model": "seedream-5.0",     "size": "3:4",       "resolution": "2k" },
            "to-3d":                   { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "clothing-extraction":     { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "fabric-on-body":          { "model": "gpt-image-2",      "size": "1024x1536", "quality": "high",   "format": "jpeg" },
            "clothing-detail":         { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "clothing-grass-planting": { "model": "gpt-image-2",      "size": "1024x1536", "quality": "medium", "format": "jpeg" },
            "item-selling-point":      { "model": "seedream-5.0-pro", "size": "1:1",       "resolution": "2k" },
            "item-change-background":  { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "remove-watermark":        { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "material-enhancement":    { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "item-repair":             { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "detect-task":             { "model": "claude-sonnet-5",  "text": true },
            "listing-optimizer":       { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "cross-border-localize":   { "model": "seedream-5.0-pro", "size": "1:1",       "resolution": "2k" },
            "brand-kit":               { "model": "gpt-image-2",      "size": "1024x1536", "quality": "high",   "format": "jpeg" },
            "platform-compliance":     { "model": "claude-sonnet-5",  "text": true },
            "main-image-video":        { "model": "$DLAZY_VIDEO_MODEL", "video": true },
            "product-video-ad":        { "model": "$DLAZY_VIDEO_MODEL", "video": true },
            "ugc-testimonial":         { "model": "$DLAZY_VIDEO_MODEL", "video": true }
          }
        }
        
    • brand.mjs 4.4 KB · in bundle
    • gen.mjs 9.3 KB · in bundle
  • skill.md 11 KB
    ---
    name: one-shot
    description: 已有模特图换模特、换背景。一张模特图 → 多人群多场景版本,商品本身不变。当用户说「换模特」「换背景」「换人种」「一图多版」「同一件衣服换个人」时使用。
    ---
    
    # one-shot — 同一商品替换模特和背景
    
    拿一张**已经拍好的模特图或人台图**,在**商品完全不动**的前提下换掉人、换掉背景,或两者都换。
    
    和 [flat-lay](../flat-lay/skill.md) 的区别:flat-lay 从平铺图**造**一张模特图;本技能是把**已有**的模特图**裂变**成多个人群 / 场景版本——一次拍摄,覆盖国内海外、不同年龄段、不同肤色的投放需求。
    
    ---
    
    ## 生成效果示例
    
    | 输入:原模特图 |
    | --- |
    | <img src="../../docs/one-shot/source-model.jpg" width="280"> |
    | `source-model.jpg` — 男青年身穿灰色落肩短袖,浅灰棚拍背景,768×1024 |
    
    实际执行的命令(换模特换背景):
    
    ```bash
    dlazy gpt-image-2 \
      --prompt 'Replace the model and the background of this e-commerce photo while keeping the garment untouched. Keep the grey oversized short-sleeve T-shirt exactly as it is: same slate-grey colour, same drop-shoulder cut, same white chest logo, same folds and hem. Replace the person with a different male model of similar build and age, and replace the plain studio wall with a sunlit outdoor city street with soft bokeh. Keep the same pose, camera angle, crop and framing. Photorealistic catalog shot, natural light, no text, no watermark.' \
      --images docs/one-shot/source-model.jpg \
      --size 1024x1536 --quality medium --imageFormat jpeg \
      --save docs/one-shot/example-output.jpg
    ```
    
    **输出**
    
    <img src="../../docs/one-shot/example-output.jpg" width="320">
    
    `example-output.jpg` — 1024×1536。灰色落肩短袖的颜色、版型、胸前 logo 与下摆弧线保持不变;模特换成另一位男青年,棚拍灰墙换成树影斑驳的街景,姿势与景别沿用原图。
    
    ---
    
    ## 1、能力边界
    
    | 模式 | 说明 |
    | --- | --- |
    | 换模特换背景 | 人和场景全换,只留商品 |
    | 只换背景 | 保留原模特(脸、身材、姿势),换掉环境 |
    | 只换模特 | 保留原场景与构图,换掉人 |
    
    | 附加能力 | 说明 |
    | --- | --- |
    | 指定模特 | 性别 / 年龄 / 肤色 / 身材,锁定同一张脸做多 SKU |
    | 参考图 | 决定新的姿势与场景,支持套图 |
    | 参考图相似度 | `50% 相似`(借风格,保留原构图)/ `100% 相似`(严格照抄参考图) |
    | 智能匹配模特位置 | 自动对齐新模特与原商品的身体位置,避免衣服错位 |
    | 自动修手 | 生成后自动修正手部结构 |
    | 人台图转真人 | 输入人形模特(假人)图,输出真人上身图 |
    
    **不做**:不改商品的款式、颜色、图案与版型;不做换脸到特定真人;不用于伪造他人肖像代言。
    
    ---
    
    ## 2、输入素材规则
    
    生成前先自检这几条硬性约束:
    
    - 大小:**20KB ~ 15MB**
    - 分辨率:**大于 400×400**
    - 格式:**jpg / jpeg / png / webp**
    
    **输入类型**:模特图 **或** 人台图(衣服已经穿在真人 / 假人身上的图)。
    
    **输入建议**
    
    | 做法 | 说明 |
    | --- | --- |
    | ✅ 商品完整无遮挡 | 手臂、包袋压住衣服的地方换人后容易崩 |
    | ✅ 商品在画面中占比够大 | 太小的商品换人时细节会被重绘丢失 |
    | ✅ 光线均匀 | 强逆光、大面积阴影会让新模特的光影对不上 |
    | ❌ 多人同框 | 模型分不清该换哪个人 |
    | ❌ 商品被裁切 | 出画的部分只能靠猜,容易长出错误结构 |
    
    ---
    
    ## 3、三种模式怎么选
    
    | 你的目标 | 选模式 | prompt 要写死的不变量 |
    | --- | --- | --- |
    | 同款衣服卖给欧美市场 | 换模特换背景 | 商品(款式/颜色/图案/版型/褶皱) |
    | 同一套图换季节氛围 | 只换背景 | 商品 + 模特(脸/发型/身材/姿势) |
    | 人台图转真人图 | 只换模特 | 商品 + 场景 + 构图 + 光线 |
    | 一张图裂变成多年龄段版本 | 只换模特 | 商品 + 场景 + 姿势 + 景别 |
    
    **「参考图相似度」的等价写法**
    
    | 档位 | 写进 prompt |
    | --- | --- |
    | 50% 相似 | `Borrow the mood, colour grading and lighting style from image 2, but keep the original pose, camera angle and crop from image 1.` |
    | 100% 相似 | `Reproduce image 2 exactly for pose, camera angle, crop, background and lighting.` |
    
    **「自动修手」的等价写法**:`Hands must be anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.`
    
    **「智能匹配模特位置」的等价写法**:`Align the new body to the original garment: shoulder line, chest width, waist and hem must land on the same pixels as in image 1, so the garment does not shift or stretch.`
    
    ---
    
    ## 4、工具调用
    
    本技能使用 dLazy 的 **`gpt-image-2`**(图像编辑模型;本技能的本质是「保商品、换其余」的定向替换,需要强区域保持与指令跟随)。
    
    ### 调用方式
    
    两种等价写法,选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本:
    
    ```bash
    # A. 统一入口(推荐):可切任意后端,加 --dry-run 不计费空跑
    node scripts/gen.mjs --task one-shot \
      --prompt '<见下方 Prompt 模板>' \
      --images <按下表顺序> \
      --save output/one-shot-<sku>.jpg
    
    # B. 直接用 dLazy CLI(不想引入 Node 依赖时,效果等价)
    dlazy gpt-image-2 --prompt '...' --images ... --save output/one-shot.jpg
    ```
    
    **参数约定(本技能固定用法)**
    
    | 参数 | 取值 | 理由 |
    | --- | --- | --- |
    | `--images` | `[原模特图]`;带参考图时 `[原模特图, 参考图]`;固定模特时再追加 `模特脸图` | 顺序即 prompt 中的 image 1 / 2 / 3 |
    | `--size` | 与原图比例一致(竖版 `1024x1536`,方图 `1024x1024`) | 换人不该改变构图比例 |
    | `--quality` | `medium` 常规;`high` 保面料纹理 | 只换人时纹理容易被抹平 |
    | `--imageFormat` | `jpeg` | 电商上架通用格式 |
    | `--batch` | `3` ~ `4` | 换人随机性大,尤其手部 |
    | `--save` | `docs/one-shot/output-<市场>-<sku>.jpg` | 按投放市场归档 |
    
    ### Command Examples
    
    ```bash
    # basic call: 换模特换背景
    dlazy gpt-image-2 \
      --prompt 'Replace the model and the background while keeping the garment untouched. Keep the garment exactly as it is: same colour, cut, logo, folds and hem. Replace the person with a different model of similar build, and replace the background with a sunlit outdoor city street with soft bokeh. Keep the same pose, camera angle, crop and framing.' \
      --images docs/one-shot/source-model.jpg \
      --size 1024x1536 --quality medium
    
    # complex call: 只换模特 + 严格照抄参考姿势 + 固定模特脸 + 修手 + 出 4 张
    dlazy gpt-image-2 \
      --prompt 'Replace only the model. Image 1 is the source photo, image 2 is the pose/scene reference, image 3 is the target model face. Keep the garment 100% identical to image 1 — same colour, knit texture, print placement, silhouette and hem. Reproduce image 2 exactly for pose, camera angle, crop, background and lighting. Use the face and body type from image 3. Align the new body to the original garment: shoulder line, chest width, waist and hem must land on the same pixels as in image 1. Hands must be anatomically correct — five distinct fingers per hand, no fused or extra digits. Photorealistic, no text, no watermark.' \
      --images docs/one-shot/source-model.jpg docs/one-shot/pose-ref.jpg docs/one-shot/model-face.jpg \
      --size 1024x1536 --quality high --imageFormat jpeg \
      --batch 4 --save docs/one-shot/output-eu-sku001.jpg
    
    # 先估价不真跑
    dlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg --size 1024x1536
    ```
    
    ### 延伸阅读
    
    | 要查什么 | 去哪 |
    | --- | --- |
    | 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |
    | `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |
    | 统一入口的全部选项 | `node scripts/gen.mjs --help` |
    
    ## 5、Prompt 模板
    
    ```text
    Replace [the model / the background / the model and the background] of this e-commerce photo
    while keeping the garment untouched.
    
    Keep the [商品描述] exactly as it is: same [颜色], same [版型/剪裁], same [印花/logo 位置],
    same folds and hem.
    
    Replace the person with [新模特描述:性别 / 年龄 / 肤色 / 身材].
    Replace the background with [新场景描述].
    
    Keep the same pose, camera angle, crop and framing.
    Align the new body to the original garment: shoulder line, chest width, waist and hem
    must land on the same pixels as in image 1.
    Hands must be anatomically correct — five distinct fingers per hand, no fused or extra digits.
    
    Photorealistic catalog shot, natural light, no text, no watermark.
    ```
    
    **按模式裁剪模板**
    
    | 模式 | 删掉哪句 / 加哪句 |
    | --- | --- |
    | 只换背景 | 删掉 `Replace the person with …`,加 `Keep the model identical — same face, hair, body and pose.` |
    | 只换模特 | 删掉 `Replace the background with …`,加 `Keep the background, props, framing and lighting pixel-identical to image 1.` |
    | 人台图转真人 | 加 `The source shows the garment on a headless mannequin. Replace the mannequin with a real human model of [描述], adding a natural head, neck, arms and hands. Keep the garment fit exactly as the mannequin shows it.` |
    
    ---
    
    ## 6、执行流程
    
    1. **确认模式**:查第三节表格,明确哪些是不变量。
    2. **校验输入**:商品是否完整无遮挡、是否单人、光线是否均匀。
    3. **写不变量**:先把「保什么」写全(商品的颜色/版型/图案/褶皱),再写「换什么」。
    4. **加位置对齐句 + 修手句**——这两条几乎每次都要,能显著降低返工率。
    5. **有参考图时选相似度**:借氛围用 50% 档写法,严格复刻用 100% 档写法。
    6. **`--dry-run` 估价** → 真跑 → `--batch 3~4` 挑图,落盘到 `docs/one-shot/`。
    7. **质检**:商品是否被改(重点看图案位置和版型)、衣服是否错位、手部、光影是否统一。
    
    ---
    
    ## 7、常见问题
    
    | 现象 | 原因 | 处理 |
    | --- | --- | --- |
    | 衣服跟着人一起变了 | 不变量写得不够具体 | 逐项写死颜色 / 版型 / 图案位置 / 下摆弧线 |
    | 换人后衣服错位、被拉伸 | 新身体与原商品没对齐 | 加位置对齐句(第三节) |
    | 手指崩坏 | 换人时手部重绘 | 加修手句 + `--batch 4` 挑图 |
    | 只换背景却把人也换了 | 模式句不完整 | 补 `Keep the model identical — same face, hair, body and pose.` |
    | 新背景光线和人对不上 | 未约束光向 | 追加 `Match the new background lighting to the light direction on the model in image 1.` |
    | 面料纹理被抹平 | `--quality medium` | 改 `--quality high`,或换图后接 [material-enhancement](../material-enhancement/skill.md) |
    | 人台图转真人后脖子/手很怪 | 缺少补全指令 | 用第五节人台图专用句,明确要求补出头颈与手臂 |
    
    ---
    
    ## Tips
    
    Visit https://dlazy.com for more information.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related