one-shot
已有模特图换模特、换背景。一张模特图 → 多人群多场景版本,商品本身不变。当用户说「换模特」「换背景」「换人种」「一图多版」「同一件衣服换个人」时使用。
Install
npx skills add https://github.com/dlazy-ai/ecommerce-skills/tree/main/skills/one-shot
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install dlazy-ai-ecommerce-skills@llmmart
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、执行流程
- 确认模式:查第三节表格,明确哪些是不变量。
- 校验输入:商品是否完整无遮挡、是否单人、光线是否均匀。
- 写不变量:先把「保什么」写全(商品的颜色/版型/图案/褶皱),再写「换什么」。
- 加位置对齐句 + 修手句——这两条几乎每次都要,能显著降低返工率。
- 有参考图时选相似度:借氛围用 50% 档写法,严格复刻用 100% 档写法。
--dry-run估价 → 真跑 →--batch 3~4挑图,落盘到docs/one-shot/。- 质检:商品是否被改(重点看图案位置和版型)、衣服是否错位、手部、光影是否统一。
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.
Reviews (0)
No reviews yet.

No comments yet.