{"id":"e65554de-002c-47ac-80f9-412f04037303","entityType":"agent","slug":"clawhub-dlazyai-image-fusion","name":"多单品搭配融图 Image Fusion","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dlazyai-image-fusion","canonicalPath":"/agent/clawhub-dlazyai-image-fusion","generatedAt":"2026-10-10T21:52:43.845Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T19:32:17.355Z","emptyReason":null},"description":"多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。 Skill: 多单品搭配融图 Image Fusion Owner: dlazyai Summary: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:50:57.431Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:43:37.797Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:43:32.389Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:16:17.027Z | user 例行版本更新 2026-10-0","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:image-fusion","sourceUrl":"https://clawhub.ai/dlazyai/image-fusion","homepage":"https://clawhub.ai/dlazyai/skills/image-fusion","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dlazyai/image-fusion","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dlazyai/skills/image-fusion","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。 Skill: 多单品搭配融图 Image Fusion Owner: dlazyai Summary: 多单品融合成一整套 Look。"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T19:32:17.355Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T19:32:17.355Z","emptyReason":null},"stars":null,"forks":null,"downloads":1279,"packageName":null,"latestVersion":"1.0.19","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T19:32:17.355Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T19:32:17.355Z","lastCrawledAt":"2026-10-10T19:32:17.355Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T19:32:17.355Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.19","createdAt":"2026-10-10T01:50:57.431Z","changelog":"例行版本更新 2026-10-10","fileCount":11,"zipByteSize":25182},{"version":"1.0.18","createdAt":"2026-10-08T01:43:37.797Z","changelog":"例行版本更新 2026-10-08","fileCount":11,"zipByteSize":25136},{"version":"1.0.17","createdAt":"2026-10-04T01:43:32.389Z","changelog":"例行版本更新 2026-10-04","fileCount":11,"zipByteSize":25135},{"version":"1.0.16","createdAt":"2026-10-02T05:16:17.027Z","changelog":"例行版本更新 2026-10-02","fileCount":11,"zipByteSize":25179},{"version":"1.0.15","createdAt":"2026-09-30T01:47:25.914Z","changelog":"例行版本更新 2026-09-30","fileCount":11,"zipByteSize":25131},{"version":"1.0.14","createdAt":"2026-09-28T02:36:43.416Z","changelog":"例行版本更新 2026-09-28","fileCount":11,"zipByteSize":25200},{"version":"1.0.13","createdAt":"2026-09-24T02:37:58.417Z","changelog":"例行版本更新 2026-09-24","fileCount":11,"zipByteSize":25241},{"version":"1.0.12","createdAt":"2026-09-22T01:41:23.341Z","changelog":"例行版本更新 2026-09-22","fileCount":11,"zipByteSize":25304}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:image-fusion","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T21:52:43.842Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-image-fusion/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T19:32:17.355Z","emptyReason":null},"readme":"Skill: 多单品搭配融图 Image Fusion\n\nOwner: dlazyai\n\nSummary: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n\nTags: latest:1.0.19\n\nVersion history:\n\nv1.0.19 | 2026-10-10T01:50:57.431Z | user\n\n例行版本更新 2026-10-10\n\nv1.0.18 | 2026-10-08T01:43:37.797Z | user\n\n例行版本更新 2026-10-08\n\nv1.0.17 | 2026-10-04T01:43:32.389Z | user\n\n例行版本更新 2026-10-04\n\nv1.0.16 | 2026-10-02T05:16:17.027Z | user\n\n例行版本更新 2026-10-02\n\nv1.0.15 | 2026-09-30T01:47:25.914Z | user\n\n例行版本更新 2026-09-30\n\nv1.0.14 | 2026-09-28T02:36:43.416Z | user\n\n例行版本更新 2026-09-28\n\nv1.0.13 | 2026-09-24T02:37:58.417Z | user\n\n例行版本更新 2026-09-24\n\nv1.0.12 | 2026-09-22T01:41:23.341Z | user\n\n例行版本更新 2026-09-22\n\nv1.0.11 | 2026-09-20T01:50:41.171Z | user\n\n例行版本更新 2026-09-20\n\nv1.0.10 | 2026-09-18T02:11:40.067Z | user\n\n例行版本更新 2026-09-18\n\nv1.0.9 | 2026-09-14T01:41:26.829Z | user\n\n例行版本更新 2026-09-14\n\nv1.0.8 | 2026-09-10T01:35:09.289Z | user\n\n例行版本更新 2026-09-10\n\nv1.0.7 | 2026-09-08T01:41:57.598Z | user\n\n例行版本更新 2026-09-08\n\nv1.0.6 | 2026-09-07T01:49:45.158Z | user\n\n例行版本更新 2026-09-07\n\nv1.0.5 | 2026-09-04T01:42:50.231Z | user\n\n例行版本更新 2026-09-04\n\nv1.0.4 | 2026-09-02T01:38:29.249Z | user\n\n例行版本更新 2026-09-02\n\nv1.0.3 | 2026-08-31T07:05:08.469Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.2 | 2026-08-31T05:26:00.362Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.1 | 2026-08-29T04:05:03.946Z | user\n\nSync from GitHub\n\nv1.0.0 | 2026-08-18T04:40:34.416Z | user\n\nSync from GitHub\n\nArchive index:\n\nArchive v1.0.19: 11 files, 25182 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2100b), SKILL.md (11925b), _meta.json (132b)\n\nFile v1.0.19:SKILL.md\n\n---\nname: image-fusion\nversion: 1.0.19\ndescription: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n---\n\n# image-fusion — 多单品自由搭配融图\n\n一次给**最多 8 张单品图**，融合成同一个模特身上的**一整套 Look**。\n\n和 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 的「多件上身」（只支持上装+下装两张）不同，本技能是**任意品类的自由组合**：毛衣 + 阔腿裤 + 帽子 + 项链 + 包 + 鞋，一次出一张完整搭配图。\n\n---\n\n## 生成效果示例\n\n| 输入单品 1 | 输入单品 2 | 输入单品 3 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-sweater.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-hat.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-necklace.jpg\" width=\"200\"> |\n| `item-sweater.jpg` — 军绿麻花针织毛衣 | `item-hat.jpg` — 彩色编织渔夫帽 | `item-necklace.jpg` — 珍珠项链 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 3:4 / 2K，5 credits。三件单品同时到位，毛衣的麻花织法、渔夫帽的编织配色与项链的珠径都被保留；未提供的下装与鞋按 prompt 指定补齐。\n\n---\n\n## 1、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单品数量 | 最多 **8 张** |\n| 品类组合 | 上装 / 下装 / 外套 / 连衣裙 / 鞋 / 包 / 帽子 / 围巾 / 首饰 任意混搭 |\n| 参考图（可选） | 决定模特姿势、拍摄角度、景别、场景与光线 |\n| 模特图（可选） | 锁定人脸与身材，多套 Look 保持同一个模特 |\n| 缺件自动补齐 | 只给上装时，下装与鞋由模型按风格自动搭配 |\n\n**不做**：不改单品的颜色、图案、材质与版型；不做尺码推荐；不用于伪造他人肖像代言。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n本技能的素材约束比其他技能宽：\n\n- 数量：**最多 8 张**\n- 大小：**20KB ~ 15MB**\n- 分辨率：**不超过 8192×8192**\n- 格式：**jpg / jpeg / png / heic / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 每张只放一件单品 | 一张图里混着上衣和裤子，模型会分不清该穿哪件 |\n| ✅ 纯色/透明背景平铺图 | 干扰最少，颜色最准 |\n| ✅ 按穿着顺序传图 | 上装 → 下装 → 外套 → 鞋 → 包 → 配饰，prompt 里的 image N 与之对应 |\n| ❌ 同类目重复 | 传两件上衣，模型只会选一件或把它们混在一起 |\n| ❌ 已经有人穿着的图 | 会把原模特的身体一起带进来 |\n\n---\n\n## 3、单品清单 → prompt 映射\n\n融图的关键是**逐件点名**：每张图对应一个明确的穿着位置，不点名的单品会被忽略。\n\n```text\n图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋\n```\n\n写成 prompt：\n\n```text\n将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。\n```\n\n**层次冲突要显式排序**：同时给外套和上装时写 `图2 的外套敞开穿在图1 的上装外面，露出内搭`，否则模型会二选一。\n\n---\n\n## 4、统一整组视觉\n\n一个店铺往往要出十几套 Look，视觉必须统一，否则详情页看起来像拼凑的。固定这四项：\n\n| 要固定的 | 写法 |\n| --- | --- |\n| 模特 | 传同一张模特图，或 prompt 里固定 `青年亚洲女模特，鹅蛋脸，中长黑直发` |\n| 姿势与景别 | 传同一张参考图，或固定 `正面站姿，全身入画` |\n| 背景与光线 | 固定 `纯浅灰色摄影棚背景，柔和顶光` |\n| 构图留白 | 固定 `人物居中，头顶留白约画面高度 8%` |\n\n只换单品清单，其余 prompt 一字不改——这样出来的整组图才是一套。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0`**（支持最多 10 张参考图 + 2K/3K/4K 输出，多单品约束场景下性价比最高：单张 5 credits，适合一个店铺跑几十套 Look）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task image-fusion \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/image-fusion-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0 --prompt '...' --images ... --save output/image-fusion.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[单品1, 单品2, …, (参考图), (模特图)]`，最多 10 张 | 顺序即 prompt 中的 图1 / 图2 / … |\n| `--size` | `3:4`（全身 Look 主图）；`1:1`（方图主图） | 电商竖版为主 |\n| `--resolution` | `2k` 日常；`3k`/`4k` 印刷或大图详情 | 2K 已够上架 |\n| `--batch` | `2` ~ `4` | 多单品组合随机性大，多出几张挑图 |\n| `--save` | `docs/image-fusion/output-look<N>.jpg` | 直接落盘 |\n\n### Command Examples\n\n```bash\n# basic call: 三件单品融合\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的毛衣作为上装，图2 的帽子戴在头上，图3 的项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k\n\n# complex call: 6 件单品 + 姿势参考图 + 固定模特 + 出 4 张挑图\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。图1 的上装、图2 的下装、图3 敞开外穿的外套、图4 的鞋、图5 的手提包（左手提）、图6 的帽子，全部穿戴到同一个模特身上，外套敞开露出图1 的内搭。每件单品与参考图完全一致，颜色、图案、材质与版型不能改。图7 是姿势与场景参考，图8 是模特脸，人脸与身材沿用图8。真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/top.jpg docs/image-fusion/bottom.jpg docs/image-fusion/coat.jpg docs/image-fusion/shoes.jpg docs/image-fusion/bag.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/pose.jpg docs/image-fusion/model-face.jpg \\\n  --size 3:4 --resolution 3k \\\n  --batch 4 --save docs/image-fusion/output-look01.jpg\n\n# 先估价不真跑\ndlazy seedream-5.0 --dry-run --prompt '...' --images a.jpg b.jpg --size 3:4\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：\n图1 的[单品描述]作为[穿着位置]，\n图2 的[单品描述][穿着位置]，\n图3 的[单品描述][穿着位置]。\n[层次关系，例：图3 的外套敞开穿在图1 的上装外面，露出内搭。]\n\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n[缺件补齐，例：下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。]\n\n[模特描述]，[姿势与景别]，[背景]，[光线]，真实照片质感，无文字无水印。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被漏掉 | `务必同时出现全部 N 件单品：<逐件重述一遍>，缺一件视为失败。` |\n| 两件单品混色了 | `图1 与图2 是两件独立单品，颜色不得互相污染：图1 保持<色>，图2 保持<色>。` |\n| 层次穿错 | `穿着层次由内到外为：图1 → 图3；图3 必须敞开且能看到图1 的领口与前襟。` |\n| 图案位置漂移 | `图案定位：<单品>的<图案>位于<位置>，尺寸约<描述>，不得移动或重复。` |\n| 整组视觉不统一 | 保持第四节四项固定描述**逐字不变**，只替换单品清单 |\n\n---\n\n## 7、执行流程\n\n1. **拆清单**：列出这套 Look 的每一件单品，去掉同类目重复项，确认不超过 8 件。\n2. **排序传图**：按上装 → 下装 → 外套 → 鞋 → 包 → 配饰的顺序，prompt 里的 图N 与 `--images` 顺序严格对应。\n3. **点名每一件**：一件一句，写清穿着位置；有层次关系的显式排序。\n4. **补齐缺件**：没给下装/鞋就在 prompt 里指定，别让模型自由发挥。\n5. **固定整组视觉**（第四节四项），多套 Look 之间只换单品清单。\n6. **`--dry-run` 估价** → 真跑 → `--batch 2~4` 挑图，落盘到 `docs/image-fusion/`。\n7. **质检**：件数是否齐、颜色是否串、层次是否对、图案位置是否漂移。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 少穿了一件 | 单品数量多、prompt 没逐件点名 | 逐件点名，并追加「缺一件视为失败」句 |\n| 帽子和头发穿模 | 缺少交互描述 | 追加 `头发从帽檐下自然垂落，帽子与头顶贴合无缝隙` |\n| 两件单品颜色互串 | 色彩相近 | 追加「颜色不得互相污染」句，写死每件的色名 |\n| 外套把内搭全挡住 | 未写层次 | 追加层次排序句，要求露出内搭领口与前襟 |\n| 整组图风格不统一 | 每次 prompt 都改了背景/光线 | 固定第四节四项描述逐字不变 |\n| 单品数量超过 8 | 超出能力 | 拆成两套 Look，或先用 [image-fusion](./skill.md) 出主体、再用 [wear-everything](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/wear-everything/skill.md) 单独加配饰 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.19:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"image-fusion\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1791597057431\n}\n\nFile v1.0.19:references/model-flags.md\n\n# `seedream-5.0` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0 -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\", \"3k\",\r\n                             \"4k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> 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.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.19:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.19:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.19:skill-card.md\n\n## Description:\n\nGuides the creation of ecommerce outfit images by combining up to eight product photos on one model while aiming to preserve each item's appearance.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nEcommerce sellers and creative teams use this skill to prepare prompts and image-generation commands for coordinated product outfit photos, with optional pose and model references.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product, prompt, and optional model or reference images are sent to the selected cloud provider.\n\nMitigation: Use only images authorized for cloud processing, check configured provider credentials, and avoid private or internal image URLs.\n\nRisk: Generated outfits can omit items or change colors, patterns, or layering.\n\nMitigation: Review each result against every input image before publication; revise the prompt or regenerate when details differ.\n\nRisk: Image-generation requests may incur provider charges.\n\nMitigation: Check the proposed request and estimated cost with --dry-run before generating images.\n\n## Reference(s):\n\n- [ClawHub image-fusion skill](https://clawhub.ai/dlazyai/skills/image-fusion)\n- [Provider CLI and data flow](references/provider-cli.md)\n- [Image model options](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands]\n\n**Output Format:** [Markdown with prompt and shell command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Commands generate local ecommerce images through the selected cloud provider; results require visual review for product fidelity.]\n\n## Skill Version(s):\n\n1.0.19 (source: frontmatter and server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.19:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.18: 11 files, 25136 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (1954b), SKILL.md (11925b), _meta.json (132b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: image-fusion\nversion: 1.0.18\ndescription: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n---\n\n# image-fusion — 多单品自由搭配融图\n\n一次给**最多 8 张单品图**，融合成同一个模特身上的**一整套 Look**。\n\n和 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 的「多件上身」（只支持上装+下装两张）不同，本技能是**任意品类的自由组合**：毛衣 + 阔腿裤 + 帽子 + 项链 + 包 + 鞋，一次出一张完整搭配图。\n\n---\n\n## 生成效果示例\n\n| 输入单品 1 | 输入单品 2 | 输入单品 3 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-sweater.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-hat.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-necklace.jpg\" width=\"200\"> |\n| `item-sweater.jpg` — 军绿麻花针织毛衣 | `item-hat.jpg` — 彩色编织渔夫帽 | `item-necklace.jpg` — 珍珠项链 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 3:4 / 2K，5 credits。三件单品同时到位，毛衣的麻花织法、渔夫帽的编织配色与项链的珠径都被保留；未提供的下装与鞋按 prompt 指定补齐。\n\n---\n\n## 1、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单品数量 | 最多 **8 张** |\n| 品类组合 | 上装 / 下装 / 外套 / 连衣裙 / 鞋 / 包 / 帽子 / 围巾 / 首饰 任意混搭 |\n| 参考图（可选） | 决定模特姿势、拍摄角度、景别、场景与光线 |\n| 模特图（可选） | 锁定人脸与身材，多套 Look 保持同一个模特 |\n| 缺件自动补齐 | 只给上装时，下装与鞋由模型按风格自动搭配 |\n\n**不做**：不改单品的颜色、图案、材质与版型；不做尺码推荐；不用于伪造他人肖像代言。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n本技能的素材约束比其他技能宽：\n\n- 数量：**最多 8 张**\n- 大小：**20KB ~ 15MB**\n- 分辨率：**不超过 8192×8192**\n- 格式：**jpg / jpeg / png / heic / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 每张只放一件单品 | 一张图里混着上衣和裤子，模型会分不清该穿哪件 |\n| ✅ 纯色/透明背景平铺图 | 干扰最少，颜色最准 |\n| ✅ 按穿着顺序传图 | 上装 → 下装 → 外套 → 鞋 → 包 → 配饰，prompt 里的 image N 与之对应 |\n| ❌ 同类目重复 | 传两件上衣，模型只会选一件或把它们混在一起 |\n| ❌ 已经有人穿着的图 | 会把原模特的身体一起带进来 |\n\n---\n\n## 3、单品清单 → prompt 映射\n\n融图的关键是**逐件点名**：每张图对应一个明确的穿着位置，不点名的单品会被忽略。\n\n```text\n图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋\n```\n\n写成 prompt：\n\n```text\n将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。\n```\n\n**层次冲突要显式排序**：同时给外套和上装时写 `图2 的外套敞开穿在图1 的上装外面，露出内搭`，否则模型会二选一。\n\n---\n\n## 4、统一整组视觉\n\n一个店铺往往要出十几套 Look，视觉必须统一，否则详情页看起来像拼凑的。固定这四项：\n\n| 要固定的 | 写法 |\n| --- | --- |\n| 模特 | 传同一张模特图，或 prompt 里固定 `青年亚洲女模特，鹅蛋脸，中长黑直发` |\n| 姿势与景别 | 传同一张参考图，或固定 `正面站姿，全身入画` |\n| 背景与光线 | 固定 `纯浅灰色摄影棚背景，柔和顶光` |\n| 构图留白 | 固定 `人物居中，头顶留白约画面高度 8%` |\n\n只换单品清单，其余 prompt 一字不改——这样出来的整组图才是一套。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0`**（支持最多 10 张参考图 + 2K/3K/4K 输出，多单品约束场景下性价比最高：单张 5 credits，适合一个店铺跑几十套 Look）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task image-fusion \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/image-fusion-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0 --prompt '...' --images ... --save output/image-fusion.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[单品1, 单品2, …, (参考图), (模特图)]`，最多 10 张 | 顺序即 prompt 中的 图1 / 图2 / … |\n| `--size` | `3:4`（全身 Look 主图）；`1:1`（方图主图） | 电商竖版为主 |\n| `--resolution` | `2k` 日常；`3k`/`4k` 印刷或大图详情 | 2K 已够上架 |\n| `--batch` | `2` ~ `4` | 多单品组合随机性大，多出几张挑图 |\n| `--save` | `docs/image-fusion/output-look<N>.jpg` | 直接落盘 |\n\n### Command Examples\n\n```bash\n# basic call: 三件单品融合\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的毛衣作为上装，图2 的帽子戴在头上，图3 的项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k\n\n# complex call: 6 件单品 + 姿势参考图 + 固定模特 + 出 4 张挑图\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。图1 的上装、图2 的下装、图3 敞开外穿的外套、图4 的鞋、图5 的手提包（左手提）、图6 的帽子，全部穿戴到同一个模特身上，外套敞开露出图1 的内搭。每件单品与参考图完全一致，颜色、图案、材质与版型不能改。图7 是姿势与场景参考，图8 是模特脸，人脸与身材沿用图8。真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/top.jpg docs/image-fusion/bottom.jpg docs/image-fusion/coat.jpg docs/image-fusion/shoes.jpg docs/image-fusion/bag.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/pose.jpg docs/image-fusion/model-face.jpg \\\n  --size 3:4 --resolution 3k \\\n  --batch 4 --save docs/image-fusion/output-look01.jpg\n\n# 先估价不真跑\ndlazy seedream-5.0 --dry-run --prompt '...' --images a.jpg b.jpg --size 3:4\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：\n图1 的[单品描述]作为[穿着位置]，\n图2 的[单品描述][穿着位置]，\n图3 的[单品描述][穿着位置]。\n[层次关系，例：图3 的外套敞开穿在图1 的上装外面，露出内搭。]\n\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n[缺件补齐，例：下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。]\n\n[模特描述]，[姿势与景别]，[背景]，[光线]，真实照片质感，无文字无水印。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被漏掉 | `务必同时出现全部 N 件单品：<逐件重述一遍>，缺一件视为失败。` |\n| 两件单品混色了 | `图1 与图2 是两件独立单品，颜色不得互相污染：图1 保持<色>，图2 保持<色>。` |\n| 层次穿错 | `穿着层次由内到外为：图1 → 图3；图3 必须敞开且能看到图1 的领口与前襟。` |\n| 图案位置漂移 | `图案定位：<单品>的<图案>位于<位置>，尺寸约<描述>，不得移动或重复。` |\n| 整组视觉不统一 | 保持第四节四项固定描述**逐字不变**，只替换单品清单 |\n\n---\n\n## 7、执行流程\n\n1. **拆清单**：列出这套 Look 的每一件单品，去掉同类目重复项，确认不超过 8 件。\n2. **排序传图**：按上装 → 下装 → 外套 → 鞋 → 包 → 配饰的顺序，prompt 里的 图N 与 `--images` 顺序严格对应。\n3. **点名每一件**：一件一句，写清穿着位置；有层次关系的显式排序。\n4. **补齐缺件**：没给下装/鞋就在 prompt 里指定，别让模型自由发挥。\n5. **固定整组视觉**（第四节四项），多套 Look 之间只换单品清单。\n6. **`--dry-run` 估价** → 真跑 → `--batch 2~4` 挑图，落盘到 `docs/image-fusion/`。\n7. **质检**：件数是否齐、颜色是否串、层次是否对、图案位置是否漂移。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 少穿了一件 | 单品数量多、prompt 没逐件点名 | 逐件点名，并追加「缺一件视为失败」句 |\n| 帽子和头发穿模 | 缺少交互描述 | 追加 `头发从帽檐下自然垂落，帽子与头顶贴合无缝隙` |\n| 两件单品颜色互串 | 色彩相近 | 追加「颜色不得互相污染」句，写死每件的色名 |\n| 外套把内搭全挡住 | 未写层次 | 追加层次排序句，要求露出内搭领口与前襟 |\n| 整组图风格不统一 | 每次 prompt 都改了背景/光线 | 固定第四节四项描述逐字不变 |\n| 单品数量超过 8 | 超出能力 | 拆成两套 Look，或先用 [image-fusion](./skill.md) 出主体、再用 [wear-everything](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/wear-everything/skill.md) 单独加配饰 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.18:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"image-fusion\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791423817797\n}\n\nFile v1.0.18:references/model-flags.md\n\n# `seedream-5.0` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0 -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\", \"3k\",\r\n                             \"4k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> 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.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.18:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.18:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.18:skill-card.md\n\n## Description:\n\nCombines up to eight product photos into a coordinated e-commerce image of a single model wearing the complete look.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nE-commerce teams and creators use the skill to plan and generate coordinated product-look photos from separate clothing and accessory images.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product, model, or reference images and prompts may be sent to a selected cloud provider.\n\nMitigation: Choose an approved provider deliberately and avoid submitting private or sensitive images without authorization; use --doctor or --dry-run before generating.\n\nRisk: Generated looks may omit products or change their colors, patterns, or layering.\n\nMitigation: Review each output against the source images and product list before publishing; regenerate or revise the prompt when details differ.\n\n## Reference(s):\n\n- [Image Fusion release on ClawHub](https://clawhub.ai/dlazyai/skills/image-fusion)\n- [Provider CLI and data flow](references/provider-cli.md)\n- [Model flags](references/model-flags.md)\n- [dLazy CLI](https://github.com/dlazy-ai/cli)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Image files]\n\n**Output Format:** [Markdown instructions and generated JPEG images]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Supports up to eight product images and optional pose or model references; generated images can be saved locally.]\n\n## Skill Version(s):\n\n1.0.18 (source: frontmatter and ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.18:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.17: 11 files, 25135 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2089b), SKILL.md (11925b), _meta.json (132b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: image-fusion\nversion: 1.0.17\ndescription: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n---\n\n# image-fusion — 多单品自由搭配融图\n\n一次给**最多 8 张单品图**，融合成同一个模特身上的**一整套 Look**。\n\n和 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 的「多件上身」（只支持上装+下装两张）不同，本技能是**任意品类的自由组合**：毛衣 + 阔腿裤 + 帽子 + 项链 + 包 + 鞋，一次出一张完整搭配图。\n\n---\n\n## 生成效果示例\n\n| 输入单品 1 | 输入单品 2 | 输入单品 3 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-sweater.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-hat.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-necklace.jpg\" width=\"200\"> |\n| `item-sweater.jpg` — 军绿麻花针织毛衣 | `item-hat.jpg` — 彩色编织渔夫帽 | `item-necklace.jpg` — 珍珠项链 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 3:4 / 2K，5 credits。三件单品同时到位，毛衣的麻花织法、渔夫帽的编织配色与项链的珠径都被保留；未提供的下装与鞋按 prompt 指定补齐。\n\n---\n\n## 1、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单品数量 | 最多 **8 张** |\n| 品类组合 | 上装 / 下装 / 外套 / 连衣裙 / 鞋 / 包 / 帽子 / 围巾 / 首饰 任意混搭 |\n| 参考图（可选） | 决定模特姿势、拍摄角度、景别、场景与光线 |\n| 模特图（可选） | 锁定人脸与身材，多套 Look 保持同一个模特 |\n| 缺件自动补齐 | 只给上装时，下装与鞋由模型按风格自动搭配 |\n\n**不做**：不改单品的颜色、图案、材质与版型；不做尺码推荐；不用于伪造他人肖像代言。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n本技能的素材约束比其他技能宽：\n\n- 数量：**最多 8 张**\n- 大小：**20KB ~ 15MB**\n- 分辨率：**不超过 8192×8192**\n- 格式：**jpg / jpeg / png / heic / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 每张只放一件单品 | 一张图里混着上衣和裤子，模型会分不清该穿哪件 |\n| ✅ 纯色/透明背景平铺图 | 干扰最少，颜色最准 |\n| ✅ 按穿着顺序传图 | 上装 → 下装 → 外套 → 鞋 → 包 → 配饰，prompt 里的 image N 与之对应 |\n| ❌ 同类目重复 | 传两件上衣，模型只会选一件或把它们混在一起 |\n| ❌ 已经有人穿着的图 | 会把原模特的身体一起带进来 |\n\n---\n\n## 3、单品清单 → prompt 映射\n\n融图的关键是**逐件点名**：每张图对应一个明确的穿着位置，不点名的单品会被忽略。\n\n```text\n图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋\n```\n\n写成 prompt：\n\n```text\n将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。\n```\n\n**层次冲突要显式排序**：同时给外套和上装时写 `图2 的外套敞开穿在图1 的上装外面，露出内搭`，否则模型会二选一。\n\n---\n\n## 4、统一整组视觉\n\n一个店铺往往要出十几套 Look，视觉必须统一，否则详情页看起来像拼凑的。固定这四项：\n\n| 要固定的 | 写法 |\n| --- | --- |\n| 模特 | 传同一张模特图，或 prompt 里固定 `青年亚洲女模特，鹅蛋脸，中长黑直发` |\n| 姿势与景别 | 传同一张参考图，或固定 `正面站姿，全身入画` |\n| 背景与光线 | 固定 `纯浅灰色摄影棚背景，柔和顶光` |\n| 构图留白 | 固定 `人物居中，头顶留白约画面高度 8%` |\n\n只换单品清单，其余 prompt 一字不改——这样出来的整组图才是一套。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0`**（支持最多 10 张参考图 + 2K/3K/4K 输出，多单品约束场景下性价比最高：单张 5 credits，适合一个店铺跑几十套 Look）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task image-fusion \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/image-fusion-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0 --prompt '...' --images ... --save output/image-fusion.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[单品1, 单品2, …, (参考图), (模特图)]`，最多 10 张 | 顺序即 prompt 中的 图1 / 图2 / … |\n| `--size` | `3:4`（全身 Look 主图）；`1:1`（方图主图） | 电商竖版为主 |\n| `--resolution` | `2k` 日常；`3k`/`4k` 印刷或大图详情 | 2K 已够上架 |\n| `--batch` | `2` ~ `4` | 多单品组合随机性大，多出几张挑图 |\n| `--save` | `docs/image-fusion/output-look<N>.jpg` | 直接落盘 |\n\n### Command Examples\n\n```bash\n# basic call: 三件单品融合\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的毛衣作为上装，图2 的帽子戴在头上，图3 的项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k\n\n# complex call: 6 件单品 + 姿势参考图 + 固定模特 + 出 4 张挑图\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。图1 的上装、图2 的下装、图3 敞开外穿的外套、图4 的鞋、图5 的手提包（左手提）、图6 的帽子，全部穿戴到同一个模特身上，外套敞开露出图1 的内搭。每件单品与参考图完全一致，颜色、图案、材质与版型不能改。图7 是姿势与场景参考，图8 是模特脸，人脸与身材沿用图8。真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/top.jpg docs/image-fusion/bottom.jpg docs/image-fusion/coat.jpg docs/image-fusion/shoes.jpg docs/image-fusion/bag.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/pose.jpg docs/image-fusion/model-face.jpg \\\n  --size 3:4 --resolution 3k \\\n  --batch 4 --save docs/image-fusion/output-look01.jpg\n\n# 先估价不真跑\ndlazy seedream-5.0 --dry-run --prompt '...' --images a.jpg b.jpg --size 3:4\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：\n图1 的[单品描述]作为[穿着位置]，\n图2 的[单品描述][穿着位置]，\n图3 的[单品描述][穿着位置]。\n[层次关系，例：图3 的外套敞开穿在图1 的上装外面，露出内搭。]\n\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n[缺件补齐，例：下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。]\n\n[模特描述]，[姿势与景别]，[背景]，[光线]，真实照片质感，无文字无水印。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被漏掉 | `务必同时出现全部 N 件单品：<逐件重述一遍>，缺一件视为失败。` |\n| 两件单品混色了 | `图1 与图2 是两件独立单品，颜色不得互相污染：图1 保持<色>，图2 保持<色>。` |\n| 层次穿错 | `穿着层次由内到外为：图1 → 图3；图3 必须敞开且能看到图1 的领口与前襟。` |\n| 图案位置漂移 | `图案定位：<单品>的<图案>位于<位置>，尺寸约<描述>，不得移动或重复。` |\n| 整组视觉不统一 | 保持第四节四项固定描述**逐字不变**，只替换单品清单 |\n\n---\n\n## 7、执行流程\n\n1. **拆清单**：列出这套 Look 的每一件单品，去掉同类目重复项，确认不超过 8 件。\n2. **排序传图**：按上装 → 下装 → 外套 → 鞋 → 包 → 配饰的顺序，prompt 里的 图N 与 `--images` 顺序严格对应。\n3. **点名每一件**：一件一句，写清穿着位置；有层次关系的显式排序。\n4. **补齐缺件**：没给下装/鞋就在 prompt 里指定，别让模型自由发挥。\n5. **固定整组视觉**（第四节四项），多套 Look 之间只换单品清单。\n6. **`--dry-run` 估价** → 真跑 → `--batch 2~4` 挑图，落盘到 `docs/image-fusion/`。\n7. **质检**：件数是否齐、颜色是否串、层次是否对、图案位置是否漂移。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 少穿了一件 | 单品数量多、prompt 没逐件点名 | 逐件点名，并追加「缺一件视为失败」句 |\n| 帽子和头发穿模 | 缺少交互描述 | 追加 `头发从帽檐下自然垂落，帽子与头顶贴合无缝隙` |\n| 两件单品颜色互串 | 色彩相近 | 追加「颜色不得互相污染」句，写死每件的色名 |\n| 外套把内搭全挡住 | 未写层次 | 追加层次排序句，要求露出内搭领口与前襟 |\n| 整组图风格不统一 | 每次 prompt 都改了背景/光线 | 固定第四节四项描述逐字不变 |\n| 单品数量超过 8 | 超出能力 | 拆成两套 Look，或先用 [image-fusion](./skill.md) 出主体、再用 [wear-everything](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/wear-everything/skill.md) 单独加配饰 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.17:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"image-fusion\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1791078212389\n}\n\nFile v1.0.17:references/model-flags.md\n\n# `seedream-5.0` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0 -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\", \"3k\",\r\n                             \"4k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> 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.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.17:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.17:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.17:skill-card.md\n\n## Description:\n\nCreates a cohesive e-commerce outfit image from up to eight product photos on one model.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nE-commerce sellers and creative teams combine product photos into coordinated model-worn outfit images for listings and campaigns, with optional pose or model references.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected product photos, prompts, and optional model or reference images are sent to the configured cloud image provider.\n\nMitigation: Confirm permission to share each image and prompt with the selected provider before generation.\n\nRisk: Cloud generation can incur charges and requires provider credentials.\n\nMitigation: Review the provider credentials and billing, and use a dry run to estimate cost before generating.\n\nRisk: The default model description may not fit the intended brand or representation.\n\nMitigation: Customize the model description and review generated images before publishing.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/dlazyai/skills/image-fusion)\n- [Provider configuration and output guide](artifact/references/provider-cli.md)\n- [Image model options](artifact/references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Images, Text guidance, Shell commands]\n\n**Output Format:** [Generated image files with Markdown guidance and command examples]\n\n**Output Parameters:** [2D images]\n\n**Other Properties Related to Output:** [Supports up to eight product photos per outfit, with optional pose and model references; review the resulting image for product fidelity.]\n\n## Skill Version(s):\n\n1.0.17 (source: frontmatter and ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.17:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.16: 11 files, 25179 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2137b), SKILL.md (11925b), _meta.json (132b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: image-fusion\nversion: 1.0.16\ndescription: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n---\n\n# image-fusion — 多单品自由搭配融图\n\n一次给**最多 8 张单品图**，融合成同一个模特身上的**一整套 Look**。\n\n和 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 的「多件上身」（只支持上装+下装两张）不同，本技能是**任意品类的自由组合**：毛衣 + 阔腿裤 + 帽子 + 项链 + 包 + 鞋，一次出一张完整搭配图。\n\n---\n\n## 生成效果示例\n\n| 输入单品 1 | 输入单品 2 | 输入单品 3 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-sweater.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-hat.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-necklace.jpg\" width=\"200\"> |\n| `item-sweater.jpg` — 军绿麻花针织毛衣 | `item-hat.jpg` — 彩色编织渔夫帽 | `item-necklace.jpg` — 珍珠项链 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 3:4 / 2K，5 credits。三件单品同时到位，毛衣的麻花织法、渔夫帽的编织配色与项链的珠径都被保留；未提供的下装与鞋按 prompt 指定补齐。\n\n---\n\n## 1、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单品数量 | 最多 **8 张** |\n| 品类组合 | 上装 / 下装 / 外套 / 连衣裙 / 鞋 / 包 / 帽子 / 围巾 / 首饰 任意混搭 |\n| 参考图（可选） | 决定模特姿势、拍摄角度、景别、场景与光线 |\n| 模特图（可选） | 锁定人脸与身材，多套 Look 保持同一个模特 |\n| 缺件自动补齐 | 只给上装时，下装与鞋由模型按风格自动搭配 |\n\n**不做**：不改单品的颜色、图案、材质与版型；不做尺码推荐；不用于伪造他人肖像代言。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n本技能的素材约束比其他技能宽：\n\n- 数量：**最多 8 张**\n- 大小：**20KB ~ 15MB**\n- 分辨率：**不超过 8192×8192**\n- 格式：**jpg / jpeg / png / heic / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 每张只放一件单品 | 一张图里混着上衣和裤子，模型会分不清该穿哪件 |\n| ✅ 纯色/透明背景平铺图 | 干扰最少，颜色最准 |\n| ✅ 按穿着顺序传图 | 上装 → 下装 → 外套 → 鞋 → 包 → 配饰，prompt 里的 image N 与之对应 |\n| ❌ 同类目重复 | 传两件上衣，模型只会选一件或把它们混在一起 |\n| ❌ 已经有人穿着的图 | 会把原模特的身体一起带进来 |\n\n---\n\n## 3、单品清单 → prompt 映射\n\n融图的关键是**逐件点名**：每张图对应一个明确的穿着位置，不点名的单品会被忽略。\n\n```text\n图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋\n```\n\n写成 prompt：\n\n```text\n将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。\n```\n\n**层次冲突要显式排序**：同时给外套和上装时写 `图2 的外套敞开穿在图1 的上装外面，露出内搭`，否则模型会二选一。\n\n---\n\n## 4、统一整组视觉\n\n一个店铺往往要出十几套 Look，视觉必须统一，否则详情页看起来像拼凑的。固定这四项：\n\n| 要固定的 | 写法 |\n| --- | --- |\n| 模特 | 传同一张模特图，或 prompt 里固定 `青年亚洲女模特，鹅蛋脸，中长黑直发` |\n| 姿势与景别 | 传同一张参考图，或固定 `正面站姿，全身入画` |\n| 背景与光线 | 固定 `纯浅灰色摄影棚背景，柔和顶光` |\n| 构图留白 | 固定 `人物居中，头顶留白约画面高度 8%` |\n\n只换单品清单，其余 prompt 一字不改——这样出来的整组图才是一套。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0`**（支持最多 10 张参考图 + 2K/3K/4K 输出，多单品约束场景下性价比最高：单张 5 credits，适合一个店铺跑几十套 Look）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task image-fusion \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/image-fusion-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0 --prompt '...' --images ... --save output/image-fusion.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[单品1, 单品2, …, (参考图), (模特图)]`，最多 10 张 | 顺序即 prompt 中的 图1 / 图2 / … |\n| `--size` | `3:4`（全身 Look 主图）；`1:1`（方图主图） | 电商竖版为主 |\n| `--resolution` | `2k` 日常；`3k`/`4k` 印刷或大图详情 | 2K 已够上架 |\n| `--batch` | `2` ~ `4` | 多单品组合随机性大，多出几张挑图 |\n| `--save` | `docs/image-fusion/output-look<N>.jpg` | 直接落盘 |\n\n### Command Examples\n\n```bash\n# basic call: 三件单品融合\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的毛衣作为上装，图2 的帽子戴在头上，图3 的项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k\n\n# complex call: 6 件单品 + 姿势参考图 + 固定模特 + 出 4 张挑图\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。图1 的上装、图2 的下装、图3 敞开外穿的外套、图4 的鞋、图5 的手提包（左手提）、图6 的帽子，全部穿戴到同一个模特身上，外套敞开露出图1 的内搭。每件单品与参考图完全一致，颜色、图案、材质与版型不能改。图7 是姿势与场景参考，图8 是模特脸，人脸与身材沿用图8。真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/top.jpg docs/image-fusion/bottom.jpg docs/image-fusion/coat.jpg docs/image-fusion/shoes.jpg docs/image-fusion/bag.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/pose.jpg docs/image-fusion/model-face.jpg \\\n  --size 3:4 --resolution 3k \\\n  --batch 4 --save docs/image-fusion/output-look01.jpg\n\n# 先估价不真跑\ndlazy seedream-5.0 --dry-run --prompt '...' --images a.jpg b.jpg --size 3:4\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：\n图1 的[单品描述]作为[穿着位置]，\n图2 的[单品描述][穿着位置]，\n图3 的[单品描述][穿着位置]。\n[层次关系，例：图3 的外套敞开穿在图1 的上装外面，露出内搭。]\n\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n[缺件补齐，例：下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。]\n\n[模特描述]，[姿势与景别]，[背景]，[光线]，真实照片质感，无文字无水印。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被漏掉 | `务必同时出现全部 N 件单品：<逐件重述一遍>，缺一件视为失败。` |\n| 两件单品混色了 | `图1 与图2 是两件独立单品，颜色不得互相污染：图1 保持<色>，图2 保持<色>。` |\n| 层次穿错 | `穿着层次由内到外为：图1 → 图3；图3 必须敞开且能看到图1 的领口与前襟。` |\n| 图案位置漂移 | `图案定位：<单品>的<图案>位于<位置>，尺寸约<描述>，不得移动或重复。` |\n| 整组视觉不统一 | 保持第四节四项固定描述**逐字不变**，只替换单品清单 |\n\n---\n\n## 7、执行流程\n\n1. **拆清单**：列出这套 Look 的每一件单品，去掉同类目重复项，确认不超过 8 件。\n2. **排序传图**：按上装 → 下装 → 外套 → 鞋 → 包 → 配饰的顺序，prompt 里的 图N 与 `--images` 顺序严格对应。\n3. **点名每一件**：一件一句，写清穿着位置；有层次关系的显式排序。\n4. **补齐缺件**：没给下装/鞋就在 prompt 里指定，别让模型自由发挥。\n5. **固定整组视觉**（第四节四项），多套 Look 之间只换单品清单。\n6. **`--dry-run` 估价** → 真跑 → `--batch 2~4` 挑图，落盘到 `docs/image-fusion/`。\n7. **质检**：件数是否齐、颜色是否串、层次是否对、图案位置是否漂移。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 少穿了一件 | 单品数量多、prompt 没逐件点名 | 逐件点名，并追加「缺一件视为失败」句 |\n| 帽子和头发穿模 | 缺少交互描述 | 追加 `头发从帽檐下自然垂落，帽子与头顶贴合无缝隙` |\n| 两件单品颜色互串 | 色彩相近 | 追加「颜色不得互相污染」句，写死每件的色名 |\n| 外套把内搭全挡住 | 未写层次 | 追加层次排序句，要求露出内搭领口与前襟 |\n| 整组图风格不统一 | 每次 prompt 都改了背景/光线 | 固定第四节四项描述逐字不变 |\n| 单品数量超过 8 | 超出能力 | 拆成两套 Look，或先用 [image-fusion](./skill.md) 出主体、再用 [wear-everything](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/wear-everything/skill.md) 单独加配饰 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.16:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"image-fusion\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1790918177027\n}\n\nFile v1.0.16:references/model-flags.md\n\n# `seedream-5.0` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0 -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\", \"3k\",\r\n                             \"4k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> 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.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.16:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.16:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.16:skill-card.md\n\n## Description:\n\nCombines up to eight product images into a coordinated ecommerce look on one model while aiming to preserve each item's details.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nEcommerce teams and creators use the skill to generate coordinated product photography from separate clothing and accessory images, optionally matching a model or pose reference.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product and model reference images may be uploaded to the selected cloud provider.\n\nMitigation: Use only images approved for external processing and avoid sensitive private images.\n\nRisk: Automatic provider selection may send images to an unintended provider or incur charges.\n\nMitigation: Set the provider explicitly and review the selected provider and request with --dry-run before generating.\n\nRisk: Generated looks can omit or alter products or show an unsuitable default model; saved images may land in an unintended location.\n\nMitigation: Review each product and model description, inspect generated images against the source items, and choose the save path deliberately.\n\n## Reference(s):\n\n- [ClawHub image-fusion listing](https://clawhub.ai/dlazyai/skills/image-fusion)\n- [Provider and CLI reference](references/provider-cli.md)\n- [Model options](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Image files]\n\n**Output Format:** [Markdown guidance and generated image files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Accepts up to eight product images; optional model and pose references; generated images can be saved locally.]\n\n## Skill Version(s):\n\n1.0.16 (source: skill frontmatter and ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.16:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.15: 11 files, 25131 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (1960b), SKILL.md (11925b), _meta.json (132b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: image-fusion\nversion: 1.0.15\ndescription: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n---\n\n# image-fusion — 多单品自由搭配融图\n\n一次给**最多 8 张单品图**，融合成同一个模特身上的**一整套 Look**。\n\n和 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 的「多件上身」（只支持上装+下装两张）不同，本技能是**任意品类的自由组合**：毛衣 + 阔腿裤 + 帽子 + 项链 + 包 + 鞋，一次出一张完整搭配图。\n\n---\n\n## 生成效果示例\n\n| 输入单品 1 | 输入单品 2 | 输入单品 3 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-sweater.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-hat.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-necklace.jpg\" width=\"200\"> |\n| `item-sweater.jpg` — 军绿麻花针织毛衣 | `item-hat.jpg` — 彩色编织渔夫帽 | `item-necklace.jpg` — 珍珠项链 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 3:4 / 2K，5 credits。三件单品同时到位，毛衣的麻花织法、渔夫帽的编织配色与项链的珠径都被保留；未提供的下装与鞋按 prompt 指定补齐。\n\n---\n\n## 1、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单品数量 | 最多 **8 张** |\n| 品类组合 | 上装 / 下装 / 外套 / 连衣裙 / 鞋 / 包 / 帽子 / 围巾 / 首饰 任意混搭 |\n| 参考图（可选） | 决定模特姿势、拍摄角度、景别、场景与光线 |\n| 模特图（可选） | 锁定人脸与身材，多套 Look 保持同一个模特 |\n| 缺件自动补齐 | 只给上装时，下装与鞋由模型按风格自动搭配 |\n\n**不做**：不改单品的颜色、图案、材质与版型；不做尺码推荐；不用于伪造他人肖像代言。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n本技能的素材约束比其他技能宽：\n\n- 数量：**最多 8 张**\n- 大小：**20KB ~ 15MB**\n- 分辨率：**不超过 8192×8192**\n- 格式：**jpg / jpeg / png / heic / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 每张只放一件单品 | 一张图里混着上衣和裤子，模型会分不清该穿哪件 |\n| ✅ 纯色/透明背景平铺图 | 干扰最少，颜色最准 |\n| ✅ 按穿着顺序传图 | 上装 → 下装 → 外套 → 鞋 → 包 → 配饰，prompt 里的 image N 与之对应 |\n| ❌ 同类目重复 | 传两件上衣，模型只会选一件或把它们混在一起 |\n| ❌ 已经有人穿着的图 | 会把原模特的身体一起带进来 |\n\n---\n\n## 3、单品清单 → prompt 映射\n\n融图的关键是**逐件点名**：每张图对应一个明确的穿着位置，不点名的单品会被忽略。\n\n```text\n图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋\n```\n\n写成 prompt：\n\n```text\n将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。\n```\n\n**层次冲突要显式排序**：同时给外套和上装时写 `图2 的外套敞开穿在图1 的上装外面，露出内搭`，否则模型会二选一。\n\n---\n\n## 4、统一整组视觉\n\n一个店铺往往要出十几套 Look，视觉必须统一，否则详情页看起来像拼凑的。固定这四项：\n\n| 要固定的 | 写法 |\n| --- | --- |\n| 模特 | 传同一张模特图，或 prompt 里固定 `青年亚洲女模特，鹅蛋脸，中长黑直发` |\n| 姿势与景别 | 传同一张参考图，或固定 `正面站姿，全身入画` |\n| 背景与光线 | 固定 `纯浅灰色摄影棚背景，柔和顶光` |\n| 构图留白 | 固定 `人物居中，头顶留白约画面高度 8%` |\n\n只换单品清单，其余 prompt 一字不改——这样出来的整组图才是一套。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0`**（支持最多 10 张参考图 + 2K/3K/4K 输出，多单品约束场景下性价比最高：单张 5 credits，适合一个店铺跑几十套 Look）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task image-fusion \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/image-fusion-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0 --prompt '...' --images ... --save output/image-fusion.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[单品1, 单品2, …, (参考图), (模特图)]`，最多 10 张 | 顺序即 prompt 中的 图1 / 图2 / … |\n| `--size` | `3:4`（全身 Look 主图）；`1:1`（方图主图） | 电商竖版为主 |\n| `--resolution` | `2k` 日常；`3k`/`4k` 印刷或大图详情 | 2K 已够上架 |\n| `--batch` | `2` ~ `4` | 多单品组合随机性大，多出几张挑图 |\n| `--save` | `docs/image-fusion/output-look<N>.jpg` | 直接落盘 |\n\n### Command Examples\n\n```bash\n# basic call: 三件单品融合\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的毛衣作为上装，图2 的帽子戴在头上，图3 的项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k\n\n# complex call: 6 件单品 + 姿势参考图 + 固定模特 + 出 4 张挑图\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。图1 的上装、图2 的下装、图3 敞开外穿的外套、图4 的鞋、图5 的手提包（左手提）、图6 的帽子，全部穿戴到同一个模特身上，外套敞开露出图1 的内搭。每件单品与参考图完全一致，颜色、图案、材质与版型不能改。图7 是姿势与场景参考，图8 是模特脸，人脸与身材沿用图8。真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/top.jpg docs/image-fusion/bottom.jpg docs/image-fusion/coat.jpg docs/image-fusion/shoes.jpg docs/image-fusion/bag.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/pose.jpg docs/image-fusion/model-face.jpg \\\n  --size 3:4 --resolution 3k \\\n  --batch 4 --save docs/image-fusion/output-look01.jpg\n\n# 先估价不真跑\ndlazy seedream-5.0 --dry-run --prompt '...' --images a.jpg b.jpg --size 3:4\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：\n图1 的[单品描述]作为[穿着位置]，\n图2 的[单品描述][穿着位置]，\n图3 的[单品描述][穿着位置]。\n[层次关系，例：图3 的外套敞开穿在图1 的上装外面，露出内搭。]\n\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n[缺件补齐，例：下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。]\n\n[模特描述]，[姿势与景别]，[背景]，[光线]，真实照片质感，无文字无水印。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被漏掉 | `务必同时出现全部 N 件单品：<逐件重述一遍>，缺一件视为失败。` |\n| 两件单品混色了 | `图1 与图2 是两件独立单品，颜色不得互相污染：图1 保持<色>，图2 保持<色>。` |\n| 层次穿错 | `穿着层次由内到外为：图1 → 图3；图3 必须敞开且能看到图1 的领口与前襟。` |\n| 图案位置漂移 | `图案定位：<单品>的<图案>位于<位置>，尺寸约<描述>，不得移动或重复。` |\n| 整组视觉不统一 | 保持第四节四项固定描述**逐字不变**，只替换单品清单 |\n\n---\n\n## 7、执行流程\n\n1. **拆清单**：列出这套 Look 的每一件单品，去掉同类目重复项，确认不超过 8 件。\n2. **排序传图**：按上装 → 下装 → 外套 → 鞋 → 包 → 配饰的顺序，prompt 里的 图N 与 `--images` 顺序严格对应。\n3. **点名每一件**：一件一句，写清穿着位置；有层次关系的显式排序。\n4. **补齐缺件**：没给下装/鞋就在 prompt 里指定，别让模型自由发挥。\n5. **固定整组视觉**（第四节四项），多套 Look 之间只换单品清单。\n6. **`--dry-run` 估价** → 真跑 → `--batch 2~4` 挑图，落盘到 `docs/image-fusion/`。\n7. **质检**：件数是否齐、颜色是否串、层次是否对、图案位置是否漂移。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 少穿了一件 | 单品数量多、prompt 没逐件点名 | 逐件点名，并追加「缺一件视为失败」句 |\n| 帽子和头发穿模 | 缺少交互描述 | 追加 `头发从帽檐下自然垂落，帽子与头顶贴合无缝隙` |\n| 两件单品颜色互串 | 色彩相近 | 追加「颜色不得互相污染」句，写死每件的色名 |\n| 外套把内搭全挡住 | 未写层次 | 追加层次排序句，要求露出内搭领口与前襟 |\n| 整组图风格不统一 | 每次 prompt 都改了背景/光线 | 固定第四节四项描述逐字不变 |\n| 单品数量超过 8 | 超出能力 | 拆成两套 Look，或先用 [image-fusion](./skill.md) 出主体、再用 [wear-everything](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/wear-everything/skill.md) 单独加配饰 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.15:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"image-fusion\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1790732845914\n}\n\nFile v1.0.15:references/model-flags.md\n\n# `seedream-5.0` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0 -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\", \"3k\",\r\n                             \"4k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> 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.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.15:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.15:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.15:skill-card.md\n\n## Description:\n\nCombines up to eight clothing and accessory photos into a coordinated catalog look on one model, with optional pose and model references.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nE-commerce merchandisers and creative teams use this skill to create coordinated outfit photos from separate product images while keeping a consistent model and studio style across looks.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected prompts and product or model images are sent to the configured image provider.\n\nMitigation: Use an approved provider, avoid private images, review API key setup and destinations, and check costs with --dry-run.\n\nRisk: Generated looks may change or omit product details, or use a person's likeness without permission.\n\nMitigation: Review every image against its product references before publishing, and use model photos only with authorization.\n\n## Reference(s):\n\n- [ClawHub image-fusion release](https://clawhub.ai/dlazyai/skills/image-fusion)\n- [Provider CLI reference](references/provider-cli.md)\n- [Model flags](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Images]\n\n**Output Format:** [Text prompts and CLI commands; generated image files and optional JSON results]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Supports batch generation and saving images locally; prompts and selected images are sent to the configured provider.]\n\n## Skill Version(s):\n\n1.0.15 (source: skill frontmatter and server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.15:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.14: 11 files, 25200 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2138b), SKILL.md (11925b), _meta.json (132b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: image-fusion\nversion: 1.0.14\ndescription: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n---\n\n# image-fusion — 多单品自由搭配融图\n\n一次给**最多 8 张单品图**，融合成同一个模特身上的**一整套 Look**。\n\n和 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 的「多件上身」（只支持上装+下装两张）不同，本技能是**任意品类的自由组合**：毛衣 + 阔腿裤 + 帽子 + 项链 + 包 + 鞋，一次出一张完整搭配图。\n\n---\n\n## 生成效果示例\n\n| 输入单品 1 | 输入单品 2 | 输入单品 3 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-sweater.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-hat.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-necklace.jpg\" width=\"200\"> |\n| `item-sweater.jpg` — 军绿麻花针织毛衣 | `item-hat.jpg` — 彩色编织渔夫帽 | `item-necklace.jpg` — 珍珠项链 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 3:4 / 2K，5 credits。三件单品同时到位，毛衣的麻花织法、渔夫帽的编织配色与项链的珠径都被保留；未提供的下装与鞋按 prompt 指定补齐。\n\n---\n\n## 1、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单品数量 | 最多 **8 张** |\n| 品类组合 | 上装 / 下装 / 外套 / 连衣裙 / 鞋 / 包 / 帽子 / 围巾 / 首饰 任意混搭 |\n| 参考图（可选） | 决定模特姿势、拍摄角度、景别、场景与光线 |\n| 模特图（可选） | 锁定人脸与身材，多套 Look 保持同一个模特 |\n| 缺件自动补齐 | 只给上装时，下装与鞋由模型按风格自动搭配 |\n\n**不做**：不改单品的颜色、图案、材质与版型；不做尺码推荐；不用于伪造他人肖像代言。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n本技能的素材约束比其他技能宽：\n\n- 数量：**最多 8 张**\n- 大小：**20KB ~ 15MB**\n- 分辨率：**不超过 8192×8192**\n- 格式：**jpg / jpeg / png / heic / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 每张只放一件单品 | 一张图里混着上衣和裤子，模型会分不清该穿哪件 |\n| ✅ 纯色/透明背景平铺图 | 干扰最少，颜色最准 |\n| ✅ 按穿着顺序传图 | 上装 → 下装 → 外套 → 鞋 → 包 → 配饰，prompt 里的 image N 与之对应 |\n| ❌ 同类目重复 | 传两件上衣，模型只会选一件或把它们混在一起 |\n| ❌ 已经有人穿着的图 | 会把原模特的身体一起带进来 |\n\n---\n\n## 3、单品清单 → prompt 映射\n\n融图的关键是**逐件点名**：每张图对应一个明确的穿着位置，不点名的单品会被忽略。\n\n```text\n图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋\n```\n\n写成 prompt：\n\n```text\n将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。\n```\n\n**层次冲突要显式排序**：同时给外套和上装时写 `图2 的外套敞开穿在图1 的上装外面，露出内搭`，否则模型会二选一。\n\n---\n\n## 4、统一整组视觉\n\n一个店铺往往要出十几套 Look，视觉必须统一，否则详情页看起来像拼凑的。固定这四项：\n\n| 要固定的 | 写法 |\n| --- | --- |\n| 模特 | 传同一张模特图，或 prompt 里固定 `青年亚洲女模特，鹅蛋脸，中长黑直发` |\n| 姿势与景别 | 传同一张参考图，或固定 `正面站姿，全身入画` |\n| 背景与光线 | 固定 `纯浅灰色摄影棚背景，柔和顶光` |\n| 构图留白 | 固定 `人物居中，头顶留白约画面高度 8%` |\n\n只换单品清单，其余 prompt 一字不改——这样出来的整组图才是一套。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0`**（支持最多 10 张参考图 + 2K/3K/4K 输出，多单品约束场景下性价比最高：单张 5 credits，适合一个店铺跑几十套 Look）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task image-fusion \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/image-fusion-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0 --prompt '...' --images ... --save output/image-fusion.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[单品1, 单品2, …, (参考图), (模特图)]`，最多 10 张 | 顺序即 prompt 中的 图1 / 图2 / … |\n| `--size` | `3:4`（全身 Look 主图）；`1:1`（方图主图） | 电商竖版为主 |\n| `--resolution` | `2k` 日常；`3k`/`4k` 印刷或大图详情 | 2K 已够上架 |\n| `--batch` | `2` ~ `4` | 多单品组合随机性大，多出几张挑图 |\n| `--save` | `docs/image-fusion/output-look<N>.jpg` | 直接落盘 |\n\n### Command Examples\n\n```bash\n# basic call: 三件单品融合\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的毛衣作为上装，图2 的帽子戴在头上，图3 的项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k\n\n# complex call: 6 件单品 + 姿势参考图 + 固定模特 + 出 4 张挑图\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。图1 的上装、图2 的下装、图3 敞开外穿的外套、图4 的鞋、图5 的手提包（左手提）、图6 的帽子，全部穿戴到同一个模特身上，外套敞开露出图1 的内搭。每件单品与参考图完全一致，颜色、图案、材质与版型不能改。图7 是姿势与场景参考，图8 是模特脸，人脸与身材沿用图8。真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/top.jpg docs/image-fusion/bottom.jpg docs/image-fusion/coat.jpg docs/image-fusion/shoes.jpg docs/image-fusion/bag.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/pose.jpg docs/image-fusion/model-face.jpg \\\n  --size 3:4 --resolution 3k \\\n  --batch 4 --save docs/image-fusion/output-look01.jpg\n\n# 先估价不真跑\ndlazy seedream-5.0 --dry-run --prompt '...' --images a.jpg b.jpg --size 3:4\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：\n图1 的[单品描述]作为[穿着位置]，\n图2 的[单品描述][穿着位置]，\n图3 的[单品描述][穿着位置]。\n[层次关系，例：图3 的外套敞开穿在图1 的上装外面，露出内搭。]\n\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n[缺件补齐，例：下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。]\n\n[模特描述]，[姿势与景别]，[背景]，[光线]，真实照片质感，无文字无水印。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被漏掉 | `务必同时出现全部 N 件单品：<逐件重述一遍>，缺一件视为失败。` |\n| 两件单品混色了 | `图1 与图2 是两件独立单品，颜色不得互相污染：图1 保持<色>，图2 保持<色>。` |\n| 层次穿错 | `穿着层次由内到外为：图1 → 图3；图3 必须敞开且能看到图1 的领口与前襟。` |\n| 图案位置漂移 | `图案定位：<单品>的<图案>位于<位置>，尺寸约<描述>，不得移动或重复。` |\n| 整组视觉不统一 | 保持第四节四项固定描述**逐字不变**，只替换单品清单 |\n\n---\n\n## 7、执行流程\n\n1. **拆清单**：列出这套 Look 的每一件单品，去掉同类目重复项，确认不超过 8 件。\n2. **排序传图**：按上装 → 下装 → 外套 → 鞋 → 包 → 配饰的顺序，prompt 里的 图N 与 `--images` 顺序严格对应。\n3. **点名每一件**：一件一句，写清穿着位置；有层次关系的显式排序。\n4. **补齐缺件**：没给下装/鞋就在 prompt 里指定，别让模型自由发挥。\n5. **固定整组视觉**（第四节四项），多套 Look 之间只换单品清单。\n6. **`--dry-run` 估价** → 真跑 → `--batch 2~4` 挑图，落盘到 `docs/image-fusion/`。\n7. **质检**：件数是否齐、颜色是否串、层次是否对、图案位置是否漂移。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 少穿了一件 | 单品数量多、prompt 没逐件点名 | 逐件点名，并追加「缺一件视为失败」句 |\n| 帽子和头发穿模 | 缺少交互描述 | 追加 `头发从帽檐下自然垂落，帽子与头顶贴合无缝隙` |\n| 两件单品颜色互串 | 色彩相近 | 追加「颜色不得互相污染」句，写死每件的色名 |\n| 外套把内搭全挡住 | 未写层次 | 追加层次排序句，要求露出内搭领口与前襟 |\n| 整组图风格不统一 | 每次 prompt 都改了背景/光线 | 固定第四节四项描述逐字不变 |\n| 单品数量超过 8 | 超出能力 | 拆成两套 Look，或先用 [image-fusion](./skill.md) 出主体、再用 [wear-everything](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/wear-everything/skill.md) 单独加配饰 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"image-fusion\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790563003416\n}\n\nFile v1.0.14:references/model-flags.md\n\n# `seedream-5.0` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0 -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\", \"3k\",\r\n                             \"4k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> 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.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.14:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.14:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nGuides an agent in combining up to eight product photos into a coordinated fashion look on one model using cloud image generation.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nRetailers, creative teams, and agents create consistent ecommerce outfit images from product photos, with optional model or pose references and prompts for missing garments.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product and model photos and prompts are sent to a selected cloud generation provider.\n\nMitigation: Use only images and prompts approved for that provider; obtain consent and a data-processing basis before using private or personally sensitive photos, and inspect the request with --dry-run.\n\nRisk: Generation requests may use the wrong provider or expose reusable API credentials.\n\nMitigation: Choose or restrict the provider intentionally and use scoped, revocable API keys.\n\nRisk: Generated garments or likenesses may differ from references or imply unauthorized endorsement.\n\nMitigation: Review outputs against the supplied products and do not use another person's likeness to imply endorsement.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/image-fusion)\n- [Model flags](artifact/references/model-flags.md)\n- [Provider CLI reference](artifact/references/provider-cli.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands]\n\n**Output Format:** [Markdown with shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Executing the commands saves generated outfit images to a chosen path; results depend on the selected cloud provider.]\n\n## Skill Version(s):\n\n1.0.14 (source: skill frontmatter and server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.14:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.13: 11 files, 25241 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2198b), SKILL.md (11925b), _meta.json (132b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: image-fusion\nversion: 1.0.13\ndescription: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n---\n\n# image-fusion — 多单品自由搭配融图\n\n一次给**最多 8 张单品图**，融合成同一个模特身上的**一整套 Look**。\n\n和 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 的「多件上身」（只支持上装+下装两张）不同，本技能是**任意品类的自由组合**：毛衣 + 阔腿裤 + 帽子 + 项链 + 包 + 鞋，一次出一张完整搭配图。\n\n---\n\n## 生成效果示例\n\n| 输入单品 1 | 输入单品 2 | 输入单品 3 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-sweater.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-hat.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-necklace.jpg\" width=\"200\"> |\n| `item-sweater.jpg` — 军绿麻花针织毛衣 | `item-hat.jpg` — 彩色编织渔夫帽 | `item-necklace.jpg` — 珍珠项链 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 3:4 / 2K，5 credits。三件单品同时到位，毛衣的麻花织法、渔夫帽的编织配色与项链的珠径都被保留；未提供的下装与鞋按 prompt 指定补齐。\n\n---\n\n## 1、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单品数量 | 最多 **8 张** |\n| 品类组合 | 上装 / 下装 / 外套 / 连衣裙 / 鞋 / 包 / 帽子 / 围巾 / 首饰 任意混搭 |\n| 参考图（可选） | 决定模特姿势、拍摄角度、景别、场景与光线 |\n| 模特图（可选） | 锁定人脸与身材，多套 Look 保持同一个模特 |\n| 缺件自动补齐 | 只给上装时，下装与鞋由模型按风格自动搭配 |\n\n**不做**：不改单品的颜色、图案、材质与版型；不做尺码推荐；不用于伪造他人肖像代言。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n本技能的素材约束比其他技能宽：\n\n- 数量：**最多 8 张**\n- 大小：**20KB ~ 15MB**\n- 分辨率：**不超过 8192×8192**\n- 格式：**jpg / jpeg / png / heic / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 每张只放一件单品 | 一张图里混着上衣和裤子，模型会分不清该穿哪件 |\n| ✅ 纯色/透明背景平铺图 | 干扰最少，颜色最准 |\n| ✅ 按穿着顺序传图 | 上装 → 下装 → 外套 → 鞋 → 包 → 配饰，prompt 里的 image N 与之对应 |\n| ❌ 同类目重复 | 传两件上衣，模型只会选一件或把它们混在一起 |\n| ❌ 已经有人穿着的图 | 会把原模特的身体一起带进来 |\n\n---\n\n## 3、单品清单 → prompt 映射\n\n融图的关键是**逐件点名**：每张图对应一个明确的穿着位置，不点名的单品会被忽略。\n\n```text\n图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋\n```\n\n写成 prompt：\n\n```text\n将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。\n```\n\n**层次冲突要显式排序**：同时给外套和上装时写 `图2 的外套敞开穿在图1 的上装外面，露出内搭`，否则模型会二选一。\n\n---\n\n## 4、统一整组视觉\n\n一个店铺往往要出十几套 Look，视觉必须统一，否则详情页看起来像拼凑的。固定这四项：\n\n| 要固定的 | 写法 |\n| --- | --- |\n| 模特 | 传同一张模特图，或 prompt 里固定 `青年亚洲女模特，鹅蛋脸，中长黑直发` |\n| 姿势与景别 | 传同一张参考图，或固定 `正面站姿，全身入画` |\n| 背景与光线 | 固定 `纯浅灰色摄影棚背景，柔和顶光` |\n| 构图留白 | 固定 `人物居中，头顶留白约画面高度 8%` |\n\n只换单品清单，其余 prompt 一字不改——这样出来的整组图才是一套。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0`**（支持最多 10 张参考图 + 2K/3K/4K 输出，多单品约束场景下性价比最高：单张 5 credits，适合一个店铺跑几十套 Look）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task image-fusion \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/image-fusion-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0 --prompt '...' --images ... --save output/image-fusion.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[单品1, 单品2, …, (参考图), (模特图)]`，最多 10 张 | 顺序即 prompt 中的 图1 / 图2 / … |\n| `--size` | `3:4`（全身 Look 主图）；`1:1`（方图主图） | 电商竖版为主 |\n| `--resolution` | `2k` 日常；`3k`/`4k` 印刷或大图详情 | 2K 已够上架 |\n| `--batch` | `2` ~ `4` | 多单品组合随机性大，多出几张挑图 |\n| `--save` | `docs/image-fusion/output-look<N>.jpg` | 直接落盘 |\n\n### Command Examples\n\n```bash\n# basic call: 三件单品融合\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的毛衣作为上装，图2 的帽子戴在头上，图3 的项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k\n\n# complex call: 6 件单品 + 姿势参考图 + 固定模特 + 出 4 张挑图\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。图1 的上装、图2 的下装、图3 敞开外穿的外套、图4 的鞋、图5 的手提包（左手提）、图6 的帽子，全部穿戴到同一个模特身上，外套敞开露出图1 的内搭。每件单品与参考图完全一致，颜色、图案、材质与版型不能改。图7 是姿势与场景参考，图8 是模特脸，人脸与身材沿用图8。真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/top.jpg docs/image-fusion/bottom.jpg docs/image-fusion/coat.jpg docs/image-fusion/shoes.jpg docs/image-fusion/bag.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/pose.jpg docs/image-fusion/model-face.jpg \\\n  --size 3:4 --resolution 3k \\\n  --batch 4 --save docs/image-fusion/output-look01.jpg\n\n# 先估价不真跑\ndlazy seedream-5.0 --dry-run --prompt '...' --images a.jpg b.jpg --size 3:4\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：\n图1 的[单品描述]作为[穿着位置]，\n图2 的[单品描述][穿着位置]，\n图3 的[单品描述][穿着位置]。\n[层次关系，例：图3 的外套敞开穿在图1 的上装外面，露出内搭。]\n\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n[缺件补齐，例：下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。]\n\n[模特描述]，[姿势与景别]，[背景]，[光线]，真实照片质感，无文字无水印。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被漏掉 | `务必同时出现全部 N 件单品：<逐件重述一遍>，缺一件视为失败。` |\n| 两件单品混色了 | `图1 与图2 是两件独立单品，颜色不得互相污染：图1 保持<色>，图2 保持<色>。` |\n| 层次穿错 | `穿着层次由内到外为：图1 → 图3；图3 必须敞开且能看到图1 的领口与前襟。` |\n| 图案位置漂移 | `图案定位：<单品>的<图案>位于<位置>，尺寸约<描述>，不得移动或重复。` |\n| 整组视觉不统一 | 保持第四节四项固定描述**逐字不变**，只替换单品清单 |\n\n---\n\n## 7、执行流程\n\n1. **拆清单**：列出这套 Look 的每一件单品，去掉同类目重复项，确认不超过 8 件。\n2. **排序传图**：按上装 → 下装 → 外套 → 鞋 → 包 → 配饰的顺序，prompt 里的 图N 与 `--images` 顺序严格对应。\n3. **点名每一件**：一件一句，写清穿着位置；有层次关系的显式排序。\n4. **补齐缺件**：没给下装/鞋就在 prompt 里指定，别让模型自由发挥。\n5. **固定整组视觉**（第四节四项），多套 Look 之间只换单品清单。\n6. **`--dry-run` 估价** → 真跑 → `--batch 2~4` 挑图，落盘到 `docs/image-fusion/`。\n7. **质检**：件数是否齐、颜色是否串、层次是否对、图案位置是否漂移。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 少穿了一件 | 单品数量多、prompt 没逐件点名 | 逐件点名，并追加「缺一件视为失败」句 |\n| 帽子和头发穿模 | 缺少交互描述 | 追加 `头发从帽檐下自然垂落，帽子与头顶贴合无缝隙` |\n| 两件单品颜色互串 | 色彩相近 | 追加「颜色不得互相污染」句，写死每件的色名 |\n| 外套把内搭全挡住 | 未写层次 | 追加层次排序句，要求露出内搭领口与前襟 |\n| 整组图风格不统一 | 每次 prompt 都改了背景/光线 | 固定第四节四项描述逐字不变 |\n| 单品数量超过 8 | 超出能力 | 拆成两套 Look，或先用 [image-fusion](./skill.md) 出主体、再用 [wear-everything](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/wear-everything/skill.md) 单独加配饰 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"image-fusion\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1790217478417\n}\n\nFile v1.0.13:references/model-flags.md\n\n# `seedream-5.0` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0 -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\", \"3k\",\r\n                             \"4k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> 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.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.13:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.13:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nCombines up to eight apparel or accessory product images into a complete e-commerce look on one model while preserving each item's visible details.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nOnline retail teams and content creators use this skill to turn product photos into consistent model-worn outfit images for storefront and listing workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product images, prompts, and optional model or reference images may be sent to the configured cloud provider.\n\nMitigation: Use dry-run before paid generation, choose the provider deliberately, and avoid sensitive or unauthorized images.\n\nRisk: Generated outfit images can omit items, mix colors, or get clothing layers wrong in multi-item compositions.\n\nMitigation: Name each item and wearing position explicitly, use batch outputs for selection, and review every saved image before publication.\n\nRisk: Model photos could be misused to imply an unauthorized endorsement.\n\nMitigation: Use only authorized model imagery and do not use the skill to fabricate a person's likeness or endorsement.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/dlazyai/skills/image-fusion)\n- [Provider CLI reference](references/provider-cli.md)\n- [seedream-5.0 model flags](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with prompt templates, command examples, and configuration notes]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides agents to produce and save generated e-commerce outfit images through configured cloud image providers.]\n\n## Skill Version(s):\n\n1.0.13 (source: frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.13:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.12: 11 files, 25304 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2340b), SKILL.md (11925b), _meta.json (132b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: image-fusion\nversion: 1.0.12\ndescription: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n---\n\n# image-fusion — 多单品自由搭配融图\n\n一次给**最多 8 张单品图**，融合成同一个模特身上的**一整套 Look**。\n\n和 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 的「多件上身」（只支持上装+下装两张）不同，本技能是**任意品类的自由组合**：毛衣 + 阔腿裤 + 帽子 + 项链 + 包 + 鞋，一次出一张完整搭配图。\n\n---\n\n## 生成效果示例\n\n| 输入单品 1 | 输入单品 2 | 输入单品 3 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-sweater.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-hat.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-necklace.jpg\" width=\"200\"> |\n| `item-sweater.jpg` — 军绿麻花针织毛衣 | `item-hat.jpg` — 彩色编织渔夫帽 | `item-necklace.jpg` — 珍珠项链 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 3:4 / 2K，5 credits。三件单品同时到位，毛衣的麻花织法、渔夫帽的编织配色与项链的珠径都被保留；未提供的下装与鞋按 prompt 指定补齐。\n\n---\n\n## 1、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单品数量 | 最多 **8 张** |\n| 品类组合 | 上装 / 下装 / 外套 / 连衣裙 / 鞋 / 包 / 帽子 / 围巾 / 首饰 任意混搭 |\n| 参考图（可选） | 决定模特姿势、拍摄角度、景别、场景与光线 |\n| 模特图（可选） | 锁定人脸与身材，多套 Look 保持同一个模特 |\n| 缺件自动补齐 | 只给上装时，下装与鞋由模型按风格自动搭配 |\n\n**不做**：不改单品的颜色、图案、材质与版型；不做尺码推荐；不用于伪造他人肖像代言。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n本技能的素材约束比其他技能宽：\n\n- 数量：**最多 8 张**\n- 大小：**20KB ~ 15MB**\n- 分辨率：**不超过 8192×8192**\n- 格式：**jpg / jpeg / png / heic / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 每张只放一件单品 | 一张图里混着上衣和裤子，模型会分不清该穿哪件 |\n| ✅ 纯色/透明背景平铺图 | 干扰最少，颜色最准 |\n| ✅ 按穿着顺序传图 | 上装 → 下装 → 外套 → 鞋 → 包 → 配饰，prompt 里的 image N 与之对应 |\n| ❌ 同类目重复 | 传两件上衣，模型只会选一件或把它们混在一起 |\n| ❌ 已经有人穿着的图 | 会把原模特的身体一起带进来 |\n\n---\n\n## 3、单品清单 → prompt 映射\n\n融图的关键是**逐件点名**：每张图对应一个明确的穿着位置，不点名的单品会被忽略。\n\n```text\n图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋\n```\n\n写成 prompt：\n\n```text\n将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。\n```\n\n**层次冲突要显式排序**：同时给外套和上装时写 `图2 的外套敞开穿在图1 的上装外面，露出内搭`，否则模型会二选一。\n\n---\n\n## 4、统一整组视觉\n\n一个店铺往往要出十几套 Look，视觉必须统一，否则详情页看起来像拼凑的。固定这四项：\n\n| 要固定的 | 写法 |\n| --- | --- |\n| 模特 | 传同一张模特图，或 prompt 里固定 `青年亚洲女模特，鹅蛋脸，中长黑直发` |\n| 姿势与景别 | 传同一张参考图，或固定 `正面站姿，全身入画` |\n| 背景与光线 | 固定 `纯浅灰色摄影棚背景，柔和顶光` |\n| 构图留白 | 固定 `人物居中，头顶留白约画面高度 8%` |\n\n只换单品清单，其余 prompt 一字不改——这样出来的整组图才是一套。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0`**（支持最多 10 张参考图 + 2K/3K/4K 输出，多单品约束场景下性价比最高：单张 5 credits，适合一个店铺跑几十套 Look）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task image-fusion \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/image-fusion-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0 --prompt '...' --images ... --save output/image-fusion.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[单品1, 单品2, …, (参考图), (模特图)]`，最多 10 张 | 顺序即 prompt 中的 图1 / 图2 / … |\n| `--size` | `3:4`（全身 Look 主图）；`1:1`（方图主图） | 电商竖版为主 |\n| `--resolution` | `2k` 日常；`3k`/`4k` 印刷或大图详情 | 2K 已够上架 |\n| `--batch` | `2` ~ `4` | 多单品组合随机性大，多出几张挑图 |\n| `--save` | `docs/image-fusion/output-look<N>.jpg` | 直接落盘 |\n\n### Command Examples\n\n```bash\n# basic call: 三件单品融合\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的毛衣作为上装，图2 的帽子戴在头上，图3 的项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k\n\n# complex call: 6 件单品 + 姿势参考图 + 固定模特 + 出 4 张挑图\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。图1 的上装、图2 的下装、图3 敞开外穿的外套、图4 的鞋、图5 的手提包（左手提）、图6 的帽子，全部穿戴到同一个模特身上，外套敞开露出图1 的内搭。每件单品与参考图完全一致，颜色、图案、材质与版型不能改。图7 是姿势与场景参考，图8 是模特脸，人脸与身材沿用图8。真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/top.jpg docs/image-fusion/bottom.jpg docs/image-fusion/coat.jpg docs/image-fusion/shoes.jpg docs/image-fusion/bag.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/pose.jpg docs/image-fusion/model-face.jpg \\\n  --size 3:4 --resolution 3k \\\n  --batch 4 --save docs/image-fusion/output-look01.jpg\n\n# 先估价不真跑\ndlazy seedream-5.0 --dry-run --prompt '...' --images a.jpg b.jpg --size 3:4\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：\n图1 的[单品描述]作为[穿着位置]，\n图2 的[单品描述][穿着位置]，\n图3 的[单品描述][穿着位置]。\n[层次关系，例：图3 的外套敞开穿在图1 的上装外面，露出内搭。]\n\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n[缺件补齐，例：下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。]\n\n[模特描述]，[姿势与景别]，[背景]，[光线]，真实照片质感，无文字无水印。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被漏掉 | `务必同时出现全部 N 件单品：<逐件重述一遍>，缺一件视为失败。` |\n| 两件单品混色了 | `图1 与图2 是两件独立单品，颜色不得互相污染：图1 保持<色>，图2 保持<色>。` |\n| 层次穿错 | `穿着层次由内到外为：图1 → 图3；图3 必须敞开且能看到图1 的领口与前襟。` |\n| 图案位置漂移 | `图案定位：<单品>的<图案>位于<位置>，尺寸约<描述>，不得移动或重复。` |\n| 整组视觉不统一 | 保持第四节四项固定描述**逐字不变**，只替换单品清单 |\n\n---\n\n## 7、执行流程\n\n1. **拆清单**：列出这套 Look 的每一件单品，去掉同类目重复项，确认不超过 8 件。\n2. **排序传图**：按上装 → 下装 → 外套 → 鞋 → 包 → 配饰的顺序，prompt 里的 图N 与 `--images` 顺序严格对应。\n3. **点名每一件**：一件一句，写清穿着位置；有层次关系的显式排序。\n4. **补齐缺件**：没给下装/鞋就在 prompt 里指定，别让模型自由发挥。\n5. **固定整组视觉**（第四节四项），多套 Look 之间只换单品清单。\n6. **`--dry-run` 估价** → 真跑 → `--batch 2~4` 挑图，落盘到 `docs/image-fusion/`。\n7. **质检**：件数是否齐、颜色是否串、层次是否对、图案位置是否漂移。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 少穿了一件 | 单品数量多、prompt 没逐件点名 | 逐件点名，并追加「缺一件视为失败」句 |\n| 帽子和头发穿模 | 缺少交互描述 | 追加 `头发从帽檐下自然垂落，帽子与头顶贴合无缝隙` |\n| 两件单品颜色互串 | 色彩相近 | 追加「颜色不得互相污染」句，写死每件的色名 |\n| 外套把内搭全挡住 | 未写层次 | 追加层次排序句，要求露出内搭领口与前襟 |\n| 整组图风格不统一 | 每次 prompt 都改了背景/光线 | 固定第四节四项描述逐字不变 |\n| 单品数量超过 8 | 超出能力 | 拆成两套 Look，或先用 [image-fusion](./skill.md) 出主体、再用 [wear-everything](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/wear-everything/skill.md) 单独加配饰 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"image-fusion\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1790041283341\n}\n\nFile v1.0.12:references/model-flags.md\n\n# `seedream-5.0` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0 -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\", \"3k\",\r\n                             \"4k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> 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.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.12:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录\n\nArchive v1.0.11: 11 files, 25314 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2383b), SKILL.md (11925b), _meta.json (132b)\n\nArchive v1.0.10: 11 files, 25506 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1904b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2544b), SKILL.md (11925b), _meta.json (132b)","readmeExcerpt":"Skill: 多单品搭配融图 Image Fusion Owner: dlazyai Summary: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:50:57.431Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:43:37.797Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:43:32.389Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:16:17.027Z | user 例行版本更新 2026-10-0","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"dlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg"},{"language":"text","snippet":"图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋"},{"language":"text","snippet":"将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。"},{"language":"bash","snippet":"# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task image-fusion \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/image-fusion-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0 --prompt '...' --images ... --save output/image-fusion.jpg"},{"language":"bash","snippet":"# basic call: 三件单品融合\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的毛衣作为上装，图2 的帽子戴在头上，图3 的项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k\n\n# complex call: 6 件单品 + 姿势参考图 + 固定模特 + 出 4 张挑图\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。图1 的上装、图2 的下装、图3 敞开外穿的外套、图4 的鞋、图5 的手提包（左手提）、图6 的帽子，全部穿戴到同一个模特身上，外套敞开露出图1 的内搭。每件单品与参考图完全一致，颜色、图案、材质与版型不能改。图7 是姿势与场景参考，图8 是模特脸，人脸与身材沿用图8。真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/top.jpg docs/image-fusion/bottom.jpg docs/image-fusion/coat.jpg docs/image-fusion/shoes.jpg docs/image-fusion/bag.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/pose.jpg docs/image-fusion/model-face.jpg \\\n  --size 3:4 --resolution 3k \\\n  --batch 4 --save docs/image-fusion/output-look01.jpg\n\n# 先估价不真跑\ndlazy seedream-5.0 --dry-run --prompt '...' --images a.jpg b.jpg --size 3:4"},{"language":"text","snippet":"电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：\n图1 的[单品描述]作为[穿着位置]，\n图2 的[单品描述][穿着位置]，\n图3 的[单品描述][穿着位置]。\n[层次关系，例：图3 的外套敞开穿在图1 的上装外面，露出内搭。]\n\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n[缺件补齐，例：下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。]\n\n[模特描述]，[姿势与景别]，[背景]，[光线]，真实照片质感，无文字无水印。"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: image-fusion\nversion: 1.0.19\ndescription: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。\n---\n\n# image-fusion — 多单品自由搭配融图\n\n一次给**最多 8 张单品图**，融合成同一个模特身上的**一整套 Look**。\n\n和 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 的「多件上身」（只支持上装+下装两张）不同，本技能是**任意品类的自由组合**：毛衣 + 阔腿裤 + 帽子 + 项链 + 包 + 鞋，一次出一张完整搭配图。\n\n---\n\n## 生成效果示例\n\n| 输入单品 1 | 输入单品 2 | 输入单品 3 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-sweater.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-hat.jpg\" width=\"200\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/item-necklace.jpg\" width=\"200\"> |\n| `item-sweater.jpg` — 军绿麻花针织毛衣 | `item-hat.jpg` — 彩色编织渔夫帽 | `item-necklace.jpg` — 珍珠项链 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0 \\\n  --prompt '电商搭配商拍图。将参考图中的多件单品组合到同一个模特身上：图1 的军绿色麻花针织圆领毛衣作为上装，图2 的彩色编织渔夫帽戴在头上，图3 的珍珠项链戴在颈部。每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。下装自动补一条米白色阔腿长裤，脚穿白色运动鞋。青年亚洲女模特，正面站姿，全身入画，纯浅灰色摄影棚背景，柔和顶光，真实照片质感，无文字无水印。' \\\n  --images docs/image-fusion/item-sweater.jpg docs/image-fusion/item-hat.jpg docs/image-fusion/item-necklace.jpg \\\n  --size 3:4 --resolution 2k \\\n  --save docs/image-fusion/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/image-fusion/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 3:4 / 2K，5 credits。三件单品同时到位，毛衣的麻花织法、渔夫帽的编织配色与项链的珠径都被保留；未提供的下装与鞋按 prompt 指定补齐。\n\n---\n\n## 1、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单品数量 | 最多 **8 张** |\n| 品类组合 | 上装 / 下装 / 外套 / 连衣裙 / 鞋 / 包 / 帽子 / 围巾 / 首饰 任意混搭 |\n| 参考图（可选） | 决定模特姿势、拍摄角度、景别、场景与光线 |\n| 模特图（可选） | 锁定人脸与身材，多套 Look 保持同一个模特 |\n| 缺件自动补齐 | 只给上装时，下装与鞋由模型按风格自动搭配 |\n\n**不做**：不改单品的颜色、图案、材质与版型；不做尺码推荐；不用于伪造他人肖像代言。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n本技能的素材约束比其他技能宽：\n\n- 数量：**最多 8 张**\n- 大小：**20KB ~ 15MB**\n- 分辨率：**不超过 8192×8192**\n- 格式：**jpg / jpeg / png / heic / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 每张只放一件单品 | 一张图里混着上衣和裤子，模型会分不清该穿哪件 |\n| ✅ 纯色/透明背景平铺图 | 干扰最少，颜色最准 |\n| ✅ 按穿着顺序传图 | 上装 → 下装 → 外套 → 鞋 → 包 → 配饰，prompt 里的 image N 与之对应 |\n| ❌ 同类目重复 | 传两件上衣，模型只会选一件或把它们混在一起 |\n| ❌ 已经有人穿着的图 | 会把原模特的身体一起带进来 |\n\n---\n\n## 3、单品清单 → prompt 映射\n\n融图的关键是**逐件点名**：每张图对应一个明确的穿着位置，不点名的单品会被忽略。\n\n```text\n图1 → 上装：军绿色麻花针织圆领毛衣（作为上装穿在身上）\n图2 → 帽子：彩色编织渔夫帽（戴在头上）\n图3 → 项链：珍珠项链（戴在颈部）\n未提供 → 下装：自动补米白色阔腿长裤\n未提供 → 鞋：自动补白色运动鞋\n```\n\n写成 prompt：\n\n```text\n将参考图中的多件单品组合到同一个模特身上：\n图1 的<单品描述>作为上装，图2 的<单品描述>戴在头上，图3 的<单品描述>戴在颈部。\n每件单品必须与参考图完全一致——颜色、织法纹理、图案、材质与细节都不能改。\n下装自动补一条<描述>，脚穿<描述>。\n```\n\n**层次冲突要显式排序**：同时给外套和上装时写 `图2 的外套敞开穿在图1 的上装外面，露出内搭`，否则模型会二选一。\n\n---\n\n## 4、统一整组视觉\n\n一个店铺往往要出十几套 Look，视觉必须统一，否则详情页看起来像拼凑的。固定这四项：\n\n| 要固定的 | 写法 |\n| --- | --- |\n| 模特 | 传同一张模特图，或 prompt 里固定 `青年亚洲女模特，鹅蛋脸，中长黑直发` |\n| 姿势与景别 | 传同一张参考图，或固定 `正面站姿，全身入画` |\n| 背景与光线 | 固定 `纯浅灰色摄影棚背景，柔和顶光` |\n| 构图留白 | 固定 `人物居中，头顶留白约画面高度 8%` |\n\n只换单品清单，"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"image-fusion\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1791597057431\n}"},{"path":"references/model-flags.md","content":"# `seedream-5.0` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0 -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\", \"3k\",\r\n                             \"4k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> 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.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。"},{"path":"references/provider-cli.md","content":"<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTT"},{"path":"scripts/lib/tasks.json","content":"{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。 Skill: 多单品搭配融图 Image Fusion Owner: dlazyai Summary: 多单品融合成一整套 Look。最多 8 张单品图 → 同一模特身上的完整搭配商拍图，每件单品保真。当用户说「多件搭配」「融图」「组一套 look」「搭配图」「几件衣服合成一张」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:50:57.431Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:43:37.797Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:43:32.389Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:16:17.027Z | user 例行版本更新 2026-10-0","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1016,"uniquenessScore":48,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T19:32:17.355Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T19:32:17.355Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:52:43.845Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}