{"id":"7b3e1377-f4f8-4429-8fa5-632c16c23f87","entityType":"agent","slug":"clawhub-dlazyai-flat-lay","name":"服装图一键上身 Flat Lay","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dlazyai-flat-lay","canonicalPath":"/agent/clawhub-dlazyai-flat-lay","generatedAt":"2026-10-10T23:45:43.400Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T21:00:05.294Z","emptyReason":null},"description":"服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。 Skill: 服装图一键上身 Flat Lay Owner: dlazyai Summary: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:50:30.495Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:43:17.593Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:43:12.267Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:16:03.044Z | user 例行版本更新 2026-10-02","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:flat-lay","sourceUrl":"https://clawhub.ai/dlazyai/flat-lay","homepage":"https://clawhub.ai/dlazyai/skills/flat-lay","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dlazyai/flat-lay","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dlazyai/skills/flat-lay","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。 Skill: 服装图一键上身 Flat Lay Owner: dlazyai Summary: 服装平铺图一键上身试穿。服装平铺"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:00:05.294Z","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-10T21:00:05.294Z","emptyReason":null},"stars":null,"forks":null,"downloads":1259,"packageName":null,"latestVersion":"1.0.19","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:00:05.228Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T21:00:05.294Z","lastCrawledAt":"2026-10-10T21:00:05.228Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T21:00:05.228Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.19","createdAt":"2026-10-10T01:50:30.495Z","changelog":"例行版本更新 2026-10-10","fileCount":11,"zipByteSize":25525},{"version":"1.0.18","createdAt":"2026-10-08T01:43:17.593Z","changelog":"例行版本更新 2026-10-08","fileCount":11,"zipByteSize":25542},{"version":"1.0.17","createdAt":"2026-10-04T01:43:12.267Z","changelog":"例行版本更新 2026-10-04","fileCount":11,"zipByteSize":25562},{"version":"1.0.16","createdAt":"2026-10-02T05:16:03.044Z","changelog":"例行版本更新 2026-10-02","fileCount":11,"zipByteSize":25521},{"version":"1.0.15","createdAt":"2026-09-30T01:46:55.512Z","changelog":"例行版本更新 2026-09-30","fileCount":11,"zipByteSize":25550},{"version":"1.0.14","createdAt":"2026-09-28T02:36:23.651Z","changelog":"例行版本更新 2026-09-28","fileCount":11,"zipByteSize":25546},{"version":"1.0.13","createdAt":"2026-09-24T02:37:35.430Z","changelog":"例行版本更新 2026-09-24","fileCount":11,"zipByteSize":25712},{"version":"1.0.12","createdAt":"2026-09-22T01:41:07.201Z","changelog":"例行版本更新 2026-09-22","fileCount":11,"zipByteSize":25901}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:flat-lay","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-flat-lay/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-flat-lay/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-flat-lay/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-flat-lay/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-flat-lay/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-flat-lay/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-10T23:45:43.396Z"}},"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-flat-lay/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-flat-lay/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-flat-lay/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-flat-lay/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-10T21:00:05.294Z","emptyReason":null},"readme":"Skill: 服装图一键上身 Flat Lay\n\nOwner: dlazyai\n\nSummary: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n\nTags: latest:1.0.19\n\nVersion history:\n\nv1.0.19 | 2026-10-10T01:50:30.495Z | user\n\n例行版本更新 2026-10-10\n\nv1.0.18 | 2026-10-08T01:43:17.593Z | user\n\n例行版本更新 2026-10-08\n\nv1.0.17 | 2026-10-04T01:43:12.267Z | user\n\n例行版本更新 2026-10-04\n\nv1.0.16 | 2026-10-02T05:16:03.044Z | user\n\n例行版本更新 2026-10-02\n\nv1.0.15 | 2026-09-30T01:46:55.512Z | user\n\n例行版本更新 2026-09-30\n\nv1.0.14 | 2026-09-28T02:36:23.651Z | user\n\n例行版本更新 2026-09-28\n\nv1.0.13 | 2026-09-24T02:37:35.430Z | user\n\n例行版本更新 2026-09-24\n\nv1.0.12 | 2026-09-22T01:41:07.201Z | user\n\n例行版本更新 2026-09-22\n\nv1.0.11 | 2026-09-20T01:50:26.267Z | user\n\n例行版本更新 2026-09-20\n\nv1.0.10 | 2026-09-18T02:11:26.154Z | user\n\n例行版本更新 2026-09-18\n\nv1.0.9 | 2026-09-14T01:41:10.213Z | user\n\n例行版本更新 2026-09-14\n\nv1.0.8 | 2026-09-10T01:34:51.491Z | user\n\n例行版本更新 2026-09-10\n\nv1.0.7 | 2026-09-08T01:41:35.482Z | user\n\n例行版本更新 2026-09-08\n\nv1.0.6 | 2026-09-07T01:49:27.114Z | user\n\n例行版本更新 2026-09-07\n\nv1.0.5 | 2026-09-04T01:42:33.287Z | user\n\n例行版本更新 2026-09-04\n\nv1.0.4 | 2026-09-02T01:38:10.618Z | user\n\n例行版本更新 2026-09-02\n\nv1.0.3 | 2026-08-31T07:04:49.219Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.2 | 2026-08-31T05:25:40.600Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.1 | 2026-08-29T04:04:10.670Z | user\n\nSync from GitHub\n\nv1.0.0 | 2026-08-18T04:40:16.748Z | user\n\nSync from GitHub\n\nArchive index:\n\nArchive v1.0.19: 11 files, 25525 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (1898b), SKILL.md (11560b), _meta.json (128b)\n\nFile v1.0.19:SKILL.md\n\n---\nname: flat-lay\nversion: 1.0.19\ndescription: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n---\n\n# flat-lay — 服装图一键上身试穿\n\n把一张**服装平铺图**变成**模特上身商拍图**，不用约模特、不用租场地、不用摄影棚。\n\n本技能用 dLazy 的 `gpt-image-2` 实现：以「服装图 + 参考图」双图参考做图像编辑合成，服装保真、姿势场景照抄参考图。\n\n---\n\n## 生成效果示例\n\n| 输入：服装平铺图 | 输入：参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/garment-flatlay.jpg\" width=\"300\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/pose-reference.jpg\" width=\"300\"> |\n| `garment-flatlay.jpg` — 军绿色麻花针织圆领毛衣，800×800 | `pose-reference.jpg` — 男青年正面站姿、浅灰墙棚拍，768×1024 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is the garment flat-lay: an olive-green cable-knit crewneck sweater. Image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1, replacing the grey T-shirt. Keep the garment 100% faithful: identical olive-green color, cable-knit and diamond texture, oversized drop-shoulder fit, ribbed collar and cuffs, and the small woven label on the right cuff. Reproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and the plain light-grey studio wall background. Photorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --save docs/flat-lay/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536，60 credits，约 60s。\n\n麻花织法、菱形提花、落肩版型、袖口罗纹与右袖织标均被保留；姿势、景别、光线与浅灰背景照抄参考图。\n\n---\n\n## 一、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单件上身 | 上传 1 张单件衣服（上装 / 连衣裙 / 连体衣）平铺图或真人上身图 |\n| 多件上身 | 分别上传「上装图」+「下装图」，合成为同一个模特身上的一整套 Look |\n| 参考图 | 决定模特姿势、拍摄角度、景别、场景与光线；可用素材库，也可用自有商拍图 |\n| 指定模特 | 可选。锁定同一张脸，保证同店铺多 SKU 视觉统一；不指定则由参考图中的模特形象决定 |\n| 生成策略 | 通用 / 颜色饱和度优化 / 材质增强 / 崩坏问题优化 / 精准选区 |\n\n**不做**：不改款式、不改颜色、不改印花、不修改吊牌文字；不用于伪造他人肖像的商业代言。\n\n---\n\n## 二、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**推荐的输入类型（✅）**\n\n| 类型 | 说明 |\n| --- | --- |\n| 上装平铺图 | 纯色背景、平铺展开、完整可见 |\n| 连体衣 / 连衣裙平铺图 | 单件整体 |\n| 真人上身图 | 已有的真人商拍图，用于换姿势换场景 |\n\n**会明显拉低效果的输入（❌）**\n\n| 问题 | 说明 |\n| --- | --- |\n| 商品被遮挡 | 模特手臂、包袋、道具压住衣服主体 |\n| 套装商品 | 一张图里上装+下装+鞋子，单件上身识别不了 → 请改用「多件上身」并拆成两张 |\n| 商品不清晰 | 模糊、过曝、低分辨率、强色偏 |\n\n---\n\n## 三、参考图与模特的选择维度\n\n**参考图**（决定姿势与场景，是出图风格的主导变量）\n\n- 维度：`单图 / 套图`\n- 类目：`女装 / 男装 / 童装`（多选）\n- 地区：`国内 / 海外`（多选）\n- 类型：`电商 / 种草`（多选）\n- 筛选：性别 `男 / 女`；年龄 `婴儿 / 小童 / 大童 / 青少年 / 青年人 / 中年人 / 老年人`；肤色 `欧美人 / 非洲人 / 亚洲人 / 其他肤色`\n- 也可直接用自有参考图（支持批量），或按图搜同类姿势\n\n**模特**（可选，锁定人脸）\n\n- 维度：性别 / 年龄 / 肤色 / 身材，或随机指定\n- 指定模特会增加约 1 分钟生成时间\n\n选择建议：\n\n- 想要**款式还原优先** → 参考图选正面站姿、纯色背景、景别与商品一致（上装选半身，连衣裙选全身）。\n- 想要**氛围种草优先** → 参考图选带场景的街拍 / 室内生活场景，接受轻微版型偏差。\n- **多 SKU 批量** → 固定同一张参考图 + 同一个模特，只换服装图。\n\n---\n\n## 四、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（多图参考的图像编辑合成模型，最多 5 张参考图，支持 1024×1536 竖版商拍比例）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task flat-lay \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/flat-lay-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/flat-lay.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[服装图, 参考图]`（多件上身时 `[上装图, 下装图, 参考图]`） | 顺序即 prompt 中的 image 1 / 2 / 3 |\n| `--size` | `1024x1536`（竖版 3:4，商拍主图）；平铺细节图用 `1024x1024` | 电商主图默认竖版 |\n| `--quality` | `high` | 面料纹理与针织结构需要高质量档位 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `2` ~ `4` | 一次多出几张挑图 |\n| `--save` | `docs/flat-lay/output-<sku>.jpg` | 直接落盘，省一步下载 |\n\n### Command Examples\n\n```bash\n# basic call: 单件上身（服装图 + 参考图）\ndlazy gpt-image-2 \\\n  --prompt 'On-model e-commerce photo. Image 1 is the garment flat-lay, image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1. Keep the garment identical in color, texture, print and fit. Copy the reference pose, camera angle, crop, lighting and background.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high\n\n# complex call: 多件上身 + 指定模特 + 一次出 4 张挑图 + 直接落盘\ndlazy gpt-image-2 \\\n  --prompt 'Full-look on-model e-commerce photo. Image 1 is the top flat-lay, image 2 is the bottom flat-lay, image 3 is the pose/scene reference, image 4 is the fixed model face. Dress the model in the top from image 1 and the bottom from image 2. Preserve both garments exactly: color, knit/weave texture, print placement, hem and cuff details. Reproduce image 3 for pose, camera angle, crop, lighting and background. Keep the face and body type from image 4 unchanged. Photorealistic catalog shot, no text, no watermark.' \\\n  --images docs/flat-lay/top.jpg docs/flat-lay/bottom.jpg docs/flat-lay/pose-reference.jpg docs/flat-lay/model-face.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --batch 4 --save docs/flat-lay/output-sku001.jpg\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 五、Prompt 模板\n\n把中括号内容替换后填入 `--prompt`。**英文 prompt 对服装保真更稳定**。\n\n```text\nE-commerce on-model product photography.\nImage 1 is the garment flat-lay: [品类 + 颜色 + 面料，例：an olive-green cable-knit crewneck sweater].\nImage 2 is the pose/scene reference.\n\nDress the model from image 2 in the garment from image 1, replacing the garment they are currently wearing.\n\nKeep the garment 100% faithful: identical [颜色], [面料/织法纹理], [版型，例：oversized drop-shoulder fit],\n[领口/袖口/下摆细节], and [印花/logo/吊牌位置].\n\nReproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and background.\n\nPhotorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.\n```\n\n**按生成策略追加的句子**\n\n| 策略 | 追加到 prompt 末尾 |\n| --- | --- |\n| 通用（默认） | 不加 |\n| 颜色饱和度优化 | `Match the garment color to image 1 exactly — same hue, saturation and brightness; do not boost or wash out the color.` |\n| 材质增强 | `Emphasize fabric micro-texture: visible knit loops / weave grain / pile direction, realistic fiber sheen and soft shadow in the folds.` |\n| 崩坏问题优化 | `Anatomy must be correct: five fingers per hand, symmetric shoulders, no extra limbs, no melted collar or warped sleeve seams.` |\n| 精准选区 | `Change only the garment region. Keep the face, hair, hands, lower body, accessories and background pixel-identical to image 2.` |\n\n---\n\n## 六、执行流程\n\n1. **校验输入**：尺寸 / 分辨率 / 格式，剔除遮挡、套装、模糊图（见第二节）。\n2. **判断模式**：单件 → 1 张服装图；整套 → 上装图 + 下装图分开传。\n3. **准备参考图**：选一张商拍图，维度对齐目标人群（性别/年龄/肤色/类目/国内海外/电商种草）。\n4. **可选固定模特**：批量场景务必固定，保证多 SKU 同一张脸。\n5. **写 prompt**：用第五节模板，把服装的颜色、织法、版型、细节写具体——**写得越具体，还原度越高**。\n6. **`--dry-run` 估价**，确认 credits 后去掉该参数真跑。\n7. **`--batch 2~4` 出多张挑图**，落盘到 `docs/flat-lay/`。\n8. **质检**：颜色是否偏、纹理是否糊、印花位置是否移动、手指与领口是否崩坏。不合格 → 按第五节表格追加对应策略句子重跑。\n\n---\n\n## 七、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 颜色偏了 | 平铺图有色偏 / 模型自行调色 | 追加「颜色饱和度优化」句；prompt 里写死具体色名 |\n| 纹理糊成一片 | `--quality medium`，或平铺图分辨率低 | 改 `--quality high`；换更清晰的平铺图 |\n| 印花 / logo 位置移动 | prompt 未描述位置 | 明确写 `logo centered on left chest, 8cm wide` 之类 |\n| 手指、领口崩坏 | 生成随机性 | 追加「崩坏问题优化」句 + `--batch 4` 挑图 |\n| 背景 / 人脸被改动 | 模型重绘了整图 | 追加「精准选区」句 |\n| 只上传套装图，识别不了单件 | 输入违规 | 拆成上装图 + 下装图，走多件上身 |\n| 版型明显不对（宽松变紧身） | 参考图景别与品类不匹配 | 上装选半身参考图，连衣裙选全身参考图 |\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\": \"flat-lay\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1791597030495\n}\n\nFile v1.0.19:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\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\r\n                               (default: \"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\r\n                               use --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\nCreates on-model apparel images from garment flat lays and pose references for e-commerce photography.\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 use the skill to compose product photos showing a model wearing a garment or outfit while following a chosen pose and scene reference.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Garment, reference, and optional face images are sent to a selected image-generation provider.\n\nMitigation: Review the request with --dry-run, explicitly select the provider, and upload personal likenesses or proprietary images only with appropriate rights and consent.\n\nRisk: Generated apparel details or anatomy may differ from the source images.\n\nMitigation: Inspect colors, fabric texture, logos, fit, and anatomy before using images in product listings.\n\n## Reference(s):\n\n- [Flat Lay release on ClawHub](https://clawhub.ai/dlazyai/skills/flat-lay)\n- [Provider setup and image data flow](artifact/references/provider-cli.md)\n- [Image model options](artifact/references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Shell commands, Guidance, Files]\n\n**Output Format:** [Markdown instructions and generated image files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generated images are saved locally; an optional JSON response reports output paths and generation status.]\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, 25542 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (1994b), SKILL.md (11560b), _meta.json (128b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: flat-lay\nversion: 1.0.18\ndescription: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n---\n\n# flat-lay — 服装图一键上身试穿\n\n把一张**服装平铺图**变成**模特上身商拍图**，不用约模特、不用租场地、不用摄影棚。\n\n本技能用 dLazy 的 `gpt-image-2` 实现：以「服装图 + 参考图」双图参考做图像编辑合成，服装保真、姿势场景照抄参考图。\n\n---\n\n## 生成效果示例\n\n| 输入：服装平铺图 | 输入：参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/garment-flatlay.jpg\" width=\"300\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/pose-reference.jpg\" width=\"300\"> |\n| `garment-flatlay.jpg` — 军绿色麻花针织圆领毛衣，800×800 | `pose-reference.jpg` — 男青年正面站姿、浅灰墙棚拍，768×1024 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is the garment flat-lay: an olive-green cable-knit crewneck sweater. Image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1, replacing the grey T-shirt. Keep the garment 100% faithful: identical olive-green color, cable-knit and diamond texture, oversized drop-shoulder fit, ribbed collar and cuffs, and the small woven label on the right cuff. Reproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and the plain light-grey studio wall background. Photorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --save docs/flat-lay/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536，60 credits，约 60s。\n\n麻花织法、菱形提花、落肩版型、袖口罗纹与右袖织标均被保留；姿势、景别、光线与浅灰背景照抄参考图。\n\n---\n\n## 一、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单件上身 | 上传 1 张单件衣服（上装 / 连衣裙 / 连体衣）平铺图或真人上身图 |\n| 多件上身 | 分别上传「上装图」+「下装图」，合成为同一个模特身上的一整套 Look |\n| 参考图 | 决定模特姿势、拍摄角度、景别、场景与光线；可用素材库，也可用自有商拍图 |\n| 指定模特 | 可选。锁定同一张脸，保证同店铺多 SKU 视觉统一；不指定则由参考图中的模特形象决定 |\n| 生成策略 | 通用 / 颜色饱和度优化 / 材质增强 / 崩坏问题优化 / 精准选区 |\n\n**不做**：不改款式、不改颜色、不改印花、不修改吊牌文字；不用于伪造他人肖像的商业代言。\n\n---\n\n## 二、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**推荐的输入类型（✅）**\n\n| 类型 | 说明 |\n| --- | --- |\n| 上装平铺图 | 纯色背景、平铺展开、完整可见 |\n| 连体衣 / 连衣裙平铺图 | 单件整体 |\n| 真人上身图 | 已有的真人商拍图，用于换姿势换场景 |\n\n**会明显拉低效果的输入（❌）**\n\n| 问题 | 说明 |\n| --- | --- |\n| 商品被遮挡 | 模特手臂、包袋、道具压住衣服主体 |\n| 套装商品 | 一张图里上装+下装+鞋子，单件上身识别不了 → 请改用「多件上身」并拆成两张 |\n| 商品不清晰 | 模糊、过曝、低分辨率、强色偏 |\n\n---\n\n## 三、参考图与模特的选择维度\n\n**参考图**（决定姿势与场景，是出图风格的主导变量）\n\n- 维度：`单图 / 套图`\n- 类目：`女装 / 男装 / 童装`（多选）\n- 地区：`国内 / 海外`（多选）\n- 类型：`电商 / 种草`（多选）\n- 筛选：性别 `男 / 女`；年龄 `婴儿 / 小童 / 大童 / 青少年 / 青年人 / 中年人 / 老年人`；肤色 `欧美人 / 非洲人 / 亚洲人 / 其他肤色`\n- 也可直接用自有参考图（支持批量），或按图搜同类姿势\n\n**模特**（可选，锁定人脸）\n\n- 维度：性别 / 年龄 / 肤色 / 身材，或随机指定\n- 指定模特会增加约 1 分钟生成时间\n\n选择建议：\n\n- 想要**款式还原优先** → 参考图选正面站姿、纯色背景、景别与商品一致（上装选半身，连衣裙选全身）。\n- 想要**氛围种草优先** → 参考图选带场景的街拍 / 室内生活场景，接受轻微版型偏差。\n- **多 SKU 批量** → 固定同一张参考图 + 同一个模特，只换服装图。\n\n---\n\n## 四、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（多图参考的图像编辑合成模型，最多 5 张参考图，支持 1024×1536 竖版商拍比例）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task flat-lay \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/flat-lay-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/flat-lay.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[服装图, 参考图]`（多件上身时 `[上装图, 下装图, 参考图]`） | 顺序即 prompt 中的 image 1 / 2 / 3 |\n| `--size` | `1024x1536`（竖版 3:4，商拍主图）；平铺细节图用 `1024x1024` | 电商主图默认竖版 |\n| `--quality` | `high` | 面料纹理与针织结构需要高质量档位 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `2` ~ `4` | 一次多出几张挑图 |\n| `--save` | `docs/flat-lay/output-<sku>.jpg` | 直接落盘，省一步下载 |\n\n### Command Examples\n\n```bash\n# basic call: 单件上身（服装图 + 参考图）\ndlazy gpt-image-2 \\\n  --prompt 'On-model e-commerce photo. Image 1 is the garment flat-lay, image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1. Keep the garment identical in color, texture, print and fit. Copy the reference pose, camera angle, crop, lighting and background.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high\n\n# complex call: 多件上身 + 指定模特 + 一次出 4 张挑图 + 直接落盘\ndlazy gpt-image-2 \\\n  --prompt 'Full-look on-model e-commerce photo. Image 1 is the top flat-lay, image 2 is the bottom flat-lay, image 3 is the pose/scene reference, image 4 is the fixed model face. Dress the model in the top from image 1 and the bottom from image 2. Preserve both garments exactly: color, knit/weave texture, print placement, hem and cuff details. Reproduce image 3 for pose, camera angle, crop, lighting and background. Keep the face and body type from image 4 unchanged. Photorealistic catalog shot, no text, no watermark.' \\\n  --images docs/flat-lay/top.jpg docs/flat-lay/bottom.jpg docs/flat-lay/pose-reference.jpg docs/flat-lay/model-face.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --batch 4 --save docs/flat-lay/output-sku001.jpg\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 五、Prompt 模板\n\n把中括号内容替换后填入 `--prompt`。**英文 prompt 对服装保真更稳定**。\n\n```text\nE-commerce on-model product photography.\nImage 1 is the garment flat-lay: [品类 + 颜色 + 面料，例：an olive-green cable-knit crewneck sweater].\nImage 2 is the pose/scene reference.\n\nDress the model from image 2 in the garment from image 1, replacing the garment they are currently wearing.\n\nKeep the garment 100% faithful: identical [颜色], [面料/织法纹理], [版型，例：oversized drop-shoulder fit],\n[领口/袖口/下摆细节], and [印花/logo/吊牌位置].\n\nReproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and background.\n\nPhotorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.\n```\n\n**按生成策略追加的句子**\n\n| 策略 | 追加到 prompt 末尾 |\n| --- | --- |\n| 通用（默认） | 不加 |\n| 颜色饱和度优化 | `Match the garment color to image 1 exactly — same hue, saturation and brightness; do not boost or wash out the color.` |\n| 材质增强 | `Emphasize fabric micro-texture: visible knit loops / weave grain / pile direction, realistic fiber sheen and soft shadow in the folds.` |\n| 崩坏问题优化 | `Anatomy must be correct: five fingers per hand, symmetric shoulders, no extra limbs, no melted collar or warped sleeve seams.` |\n| 精准选区 | `Change only the garment region. Keep the face, hair, hands, lower body, accessories and background pixel-identical to image 2.` |\n\n---\n\n## 六、执行流程\n\n1. **校验输入**：尺寸 / 分辨率 / 格式，剔除遮挡、套装、模糊图（见第二节）。\n2. **判断模式**：单件 → 1 张服装图；整套 → 上装图 + 下装图分开传。\n3. **准备参考图**：选一张商拍图，维度对齐目标人群（性别/年龄/肤色/类目/国内海外/电商种草）。\n4. **可选固定模特**：批量场景务必固定，保证多 SKU 同一张脸。\n5. **写 prompt**：用第五节模板，把服装的颜色、织法、版型、细节写具体——**写得越具体，还原度越高**。\n6. **`--dry-run` 估价**，确认 credits 后去掉该参数真跑。\n7. **`--batch 2~4` 出多张挑图**，落盘到 `docs/flat-lay/`。\n8. **质检**：颜色是否偏、纹理是否糊、印花位置是否移动、手指与领口是否崩坏。不合格 → 按第五节表格追加对应策略句子重跑。\n\n---\n\n## 七、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 颜色偏了 | 平铺图有色偏 / 模型自行调色 | 追加「颜色饱和度优化」句；prompt 里写死具体色名 |\n| 纹理糊成一片 | `--quality medium`，或平铺图分辨率低 | 改 `--quality high`；换更清晰的平铺图 |\n| 印花 / logo 位置移动 | prompt 未描述位置 | 明确写 `logo centered on left chest, 8cm wide` 之类 |\n| 手指、领口崩坏 | 生成随机性 | 追加「崩坏问题优化」句 + `--batch 4` 挑图 |\n| 背景 / 人脸被改动 | 模型重绘了整图 | 追加「精准选区」句 |\n| 只上传套装图，识别不了单件 | 输入违规 | 拆成上装图 + 下装图，走多件上身 |\n| 版型明显不对（宽松变紧身） | 参考图景别与品类不匹配 | 上装选半身参考图，连衣裙选全身参考图 |\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\": \"flat-lay\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791423797593\n}\n\nFile v1.0.18:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\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\r\n                               (default: \"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\r\n                               use --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\nTurns garment flat-lay and pose reference images into on-model product photos for e-commerce.\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 use garment photos and pose references to generate on-model catalog images, including multi-garment looks and optional consistent model references.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts and uploaded images, including model face references, are sent to the selected cloud image provider.\n\nMitigation: Use only images you own or have permission to use; avoid unauthorized likenesses and confirm the selected provider before uploading.\n\nRisk: Image generation can spend provider credits and produce imperfect garment or likeness details.\n\nMitigation: Run --dry-run to check provider, model, inputs, estimated cost, and save path; review generated images before publishing.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/dlazyai/skills/flat-lay)\n- [Provider setup and output reference](references/provider-cli.md)\n- [Image model options](references/model-flags.md)\n- [dLazy CLI documentation and source](https://github.com/dlazy-ai/cli)\n\n## Skill Output:\n\n**Output Type(s):** [Images, Shell commands, Guidance]\n\n**Output Format:** [JPEG, PNG, or WebP images; Markdown guidance and shell examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generated images can be saved locally; visually check garment details and model likeness before use.]\n\n## Skill Version(s):\n\n1.0.18 (source: ClawHub release and SKILL.md frontmatter)\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, 25562 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (1966b), SKILL.md (11560b), _meta.json (128b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: flat-lay\nversion: 1.0.17\ndescription: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n---\n\n# flat-lay — 服装图一键上身试穿\n\n把一张**服装平铺图**变成**模特上身商拍图**，不用约模特、不用租场地、不用摄影棚。\n\n本技能用 dLazy 的 `gpt-image-2` 实现：以「服装图 + 参考图」双图参考做图像编辑合成，服装保真、姿势场景照抄参考图。\n\n---\n\n## 生成效果示例\n\n| 输入：服装平铺图 | 输入：参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/garment-flatlay.jpg\" width=\"300\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/pose-reference.jpg\" width=\"300\"> |\n| `garment-flatlay.jpg` — 军绿色麻花针织圆领毛衣，800×800 | `pose-reference.jpg` — 男青年正面站姿、浅灰墙棚拍，768×1024 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is the garment flat-lay: an olive-green cable-knit crewneck sweater. Image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1, replacing the grey T-shirt. Keep the garment 100% faithful: identical olive-green color, cable-knit and diamond texture, oversized drop-shoulder fit, ribbed collar and cuffs, and the small woven label on the right cuff. Reproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and the plain light-grey studio wall background. Photorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --save docs/flat-lay/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536，60 credits，约 60s。\n\n麻花织法、菱形提花、落肩版型、袖口罗纹与右袖织标均被保留；姿势、景别、光线与浅灰背景照抄参考图。\n\n---\n\n## 一、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单件上身 | 上传 1 张单件衣服（上装 / 连衣裙 / 连体衣）平铺图或真人上身图 |\n| 多件上身 | 分别上传「上装图」+「下装图」，合成为同一个模特身上的一整套 Look |\n| 参考图 | 决定模特姿势、拍摄角度、景别、场景与光线；可用素材库，也可用自有商拍图 |\n| 指定模特 | 可选。锁定同一张脸，保证同店铺多 SKU 视觉统一；不指定则由参考图中的模特形象决定 |\n| 生成策略 | 通用 / 颜色饱和度优化 / 材质增强 / 崩坏问题优化 / 精准选区 |\n\n**不做**：不改款式、不改颜色、不改印花、不修改吊牌文字；不用于伪造他人肖像的商业代言。\n\n---\n\n## 二、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**推荐的输入类型（✅）**\n\n| 类型 | 说明 |\n| --- | --- |\n| 上装平铺图 | 纯色背景、平铺展开、完整可见 |\n| 连体衣 / 连衣裙平铺图 | 单件整体 |\n| 真人上身图 | 已有的真人商拍图，用于换姿势换场景 |\n\n**会明显拉低效果的输入（❌）**\n\n| 问题 | 说明 |\n| --- | --- |\n| 商品被遮挡 | 模特手臂、包袋、道具压住衣服主体 |\n| 套装商品 | 一张图里上装+下装+鞋子，单件上身识别不了 → 请改用「多件上身」并拆成两张 |\n| 商品不清晰 | 模糊、过曝、低分辨率、强色偏 |\n\n---\n\n## 三、参考图与模特的选择维度\n\n**参考图**（决定姿势与场景，是出图风格的主导变量）\n\n- 维度：`单图 / 套图`\n- 类目：`女装 / 男装 / 童装`（多选）\n- 地区：`国内 / 海外`（多选）\n- 类型：`电商 / 种草`（多选）\n- 筛选：性别 `男 / 女`；年龄 `婴儿 / 小童 / 大童 / 青少年 / 青年人 / 中年人 / 老年人`；肤色 `欧美人 / 非洲人 / 亚洲人 / 其他肤色`\n- 也可直接用自有参考图（支持批量），或按图搜同类姿势\n\n**模特**（可选，锁定人脸）\n\n- 维度：性别 / 年龄 / 肤色 / 身材，或随机指定\n- 指定模特会增加约 1 分钟生成时间\n\n选择建议：\n\n- 想要**款式还原优先** → 参考图选正面站姿、纯色背景、景别与商品一致（上装选半身，连衣裙选全身）。\n- 想要**氛围种草优先** → 参考图选带场景的街拍 / 室内生活场景，接受轻微版型偏差。\n- **多 SKU 批量** → 固定同一张参考图 + 同一个模特，只换服装图。\n\n---\n\n## 四、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（多图参考的图像编辑合成模型，最多 5 张参考图，支持 1024×1536 竖版商拍比例）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task flat-lay \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/flat-lay-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/flat-lay.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[服装图, 参考图]`（多件上身时 `[上装图, 下装图, 参考图]`） | 顺序即 prompt 中的 image 1 / 2 / 3 |\n| `--size` | `1024x1536`（竖版 3:4，商拍主图）；平铺细节图用 `1024x1024` | 电商主图默认竖版 |\n| `--quality` | `high` | 面料纹理与针织结构需要高质量档位 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `2` ~ `4` | 一次多出几张挑图 |\n| `--save` | `docs/flat-lay/output-<sku>.jpg` | 直接落盘，省一步下载 |\n\n### Command Examples\n\n```bash\n# basic call: 单件上身（服装图 + 参考图）\ndlazy gpt-image-2 \\\n  --prompt 'On-model e-commerce photo. Image 1 is the garment flat-lay, image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1. Keep the garment identical in color, texture, print and fit. Copy the reference pose, camera angle, crop, lighting and background.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high\n\n# complex call: 多件上身 + 指定模特 + 一次出 4 张挑图 + 直接落盘\ndlazy gpt-image-2 \\\n  --prompt 'Full-look on-model e-commerce photo. Image 1 is the top flat-lay, image 2 is the bottom flat-lay, image 3 is the pose/scene reference, image 4 is the fixed model face. Dress the model in the top from image 1 and the bottom from image 2. Preserve both garments exactly: color, knit/weave texture, print placement, hem and cuff details. Reproduce image 3 for pose, camera angle, crop, lighting and background. Keep the face and body type from image 4 unchanged. Photorealistic catalog shot, no text, no watermark.' \\\n  --images docs/flat-lay/top.jpg docs/flat-lay/bottom.jpg docs/flat-lay/pose-reference.jpg docs/flat-lay/model-face.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --batch 4 --save docs/flat-lay/output-sku001.jpg\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 五、Prompt 模板\n\n把中括号内容替换后填入 `--prompt`。**英文 prompt 对服装保真更稳定**。\n\n```text\nE-commerce on-model product photography.\nImage 1 is the garment flat-lay: [品类 + 颜色 + 面料，例：an olive-green cable-knit crewneck sweater].\nImage 2 is the pose/scene reference.\n\nDress the model from image 2 in the garment from image 1, replacing the garment they are currently wearing.\n\nKeep the garment 100% faithful: identical [颜色], [面料/织法纹理], [版型，例：oversized drop-shoulder fit],\n[领口/袖口/下摆细节], and [印花/logo/吊牌位置].\n\nReproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and background.\n\nPhotorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.\n```\n\n**按生成策略追加的句子**\n\n| 策略 | 追加到 prompt 末尾 |\n| --- | --- |\n| 通用（默认） | 不加 |\n| 颜色饱和度优化 | `Match the garment color to image 1 exactly — same hue, saturation and brightness; do not boost or wash out the color.` |\n| 材质增强 | `Emphasize fabric micro-texture: visible knit loops / weave grain / pile direction, realistic fiber sheen and soft shadow in the folds.` |\n| 崩坏问题优化 | `Anatomy must be correct: five fingers per hand, symmetric shoulders, no extra limbs, no melted collar or warped sleeve seams.` |\n| 精准选区 | `Change only the garment region. Keep the face, hair, hands, lower body, accessories and background pixel-identical to image 2.` |\n\n---\n\n## 六、执行流程\n\n1. **校验输入**：尺寸 / 分辨率 / 格式，剔除遮挡、套装、模糊图（见第二节）。\n2. **判断模式**：单件 → 1 张服装图；整套 → 上装图 + 下装图分开传。\n3. **准备参考图**：选一张商拍图，维度对齐目标人群（性别/年龄/肤色/类目/国内海外/电商种草）。\n4. **可选固定模特**：批量场景务必固定，保证多 SKU 同一张脸。\n5. **写 prompt**：用第五节模板，把服装的颜色、织法、版型、细节写具体——**写得越具体，还原度越高**。\n6. **`--dry-run` 估价**，确认 credits 后去掉该参数真跑。\n7. **`--batch 2~4` 出多张挑图**，落盘到 `docs/flat-lay/`。\n8. **质检**：颜色是否偏、纹理是否糊、印花位置是否移动、手指与领口是否崩坏。不合格 → 按第五节表格追加对应策略句子重跑。\n\n---\n\n## 七、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 颜色偏了 | 平铺图有色偏 / 模型自行调色 | 追加「颜色饱和度优化」句；prompt 里写死具体色名 |\n| 纹理糊成一片 | `--quality medium`，或平铺图分辨率低 | 改 `--quality high`；换更清晰的平铺图 |\n| 印花 / logo 位置移动 | prompt 未描述位置 | 明确写 `logo centered on left chest, 8cm wide` 之类 |\n| 手指、领口崩坏 | 生成随机性 | 追加「崩坏问题优化」句 + `--batch 4` 挑图 |\n| 背景 / 人脸被改动 | 模型重绘了整图 | 追加「精准选区」句 |\n| 只上传套装图，识别不了单件 | 输入违规 | 拆成上装图 + 下装图，走多件上身 |\n| 版型明显不对（宽松变紧身） | 参考图景别与品类不匹配 | 上装选半身参考图，连衣裙选全身参考图 |\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\": \"flat-lay\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1791078192267\n}\n\nFile v1.0.17:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\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\r\n                               (default: \"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\r\n                               use --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\nTurns garment flat-lay photos and pose references into on-model e-commerce images while aiming to preserve the garment'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\nE-commerce teams and merchants use this skill to turn garment photos and pose references into model-worn product images, including single garments or coordinated outfits.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected product photos, model references, and prompts are sent to the configured cloud provider.\n\nMitigation: Avoid sensitive private images and untrusted internal image URLs; confirm the selected provider before uploading.\n\nRisk: Image-generation calls may consume paid credits and require API credentials.\n\nMitigation: Use dry-run to inspect requests and estimated cost; use scoped, revocable API keys.\n\nRisk: Generated images may alter garment details or produce inaccurate anatomy.\n\nMitigation: Review color, fabric texture, fit, logos, and anatomy before publishing.\n\n## Reference(s):\n\n- [Flat Lay skill listing](https://clawhub.ai/dlazyai/skills/flat-lay)\n- [Model flags](references/model-flags.md)\n- [Provider setup and data flow](references/provider-cli.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Image files]\n\n**Output Format:** [Text instructions and locally saved generated images]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Image quality and garment fidelity require visual review.]\n\n## Skill Version(s):\n\n1.0.17 (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.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, 25521 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (1920b), SKILL.md (11560b), _meta.json (128b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: flat-lay\nversion: 1.0.16\ndescription: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n---\n\n# flat-lay — 服装图一键上身试穿\n\n把一张**服装平铺图**变成**模特上身商拍图**，不用约模特、不用租场地、不用摄影棚。\n\n本技能用 dLazy 的 `gpt-image-2` 实现：以「服装图 + 参考图」双图参考做图像编辑合成，服装保真、姿势场景照抄参考图。\n\n---\n\n## 生成效果示例\n\n| 输入：服装平铺图 | 输入：参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/garment-flatlay.jpg\" width=\"300\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/pose-reference.jpg\" width=\"300\"> |\n| `garment-flatlay.jpg` — 军绿色麻花针织圆领毛衣，800×800 | `pose-reference.jpg` — 男青年正面站姿、浅灰墙棚拍，768×1024 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is the garment flat-lay: an olive-green cable-knit crewneck sweater. Image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1, replacing the grey T-shirt. Keep the garment 100% faithful: identical olive-green color, cable-knit and diamond texture, oversized drop-shoulder fit, ribbed collar and cuffs, and the small woven label on the right cuff. Reproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and the plain light-grey studio wall background. Photorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --save docs/flat-lay/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536，60 credits，约 60s。\n\n麻花织法、菱形提花、落肩版型、袖口罗纹与右袖织标均被保留；姿势、景别、光线与浅灰背景照抄参考图。\n\n---\n\n## 一、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单件上身 | 上传 1 张单件衣服（上装 / 连衣裙 / 连体衣）平铺图或真人上身图 |\n| 多件上身 | 分别上传「上装图」+「下装图」，合成为同一个模特身上的一整套 Look |\n| 参考图 | 决定模特姿势、拍摄角度、景别、场景与光线；可用素材库，也可用自有商拍图 |\n| 指定模特 | 可选。锁定同一张脸，保证同店铺多 SKU 视觉统一；不指定则由参考图中的模特形象决定 |\n| 生成策略 | 通用 / 颜色饱和度优化 / 材质增强 / 崩坏问题优化 / 精准选区 |\n\n**不做**：不改款式、不改颜色、不改印花、不修改吊牌文字；不用于伪造他人肖像的商业代言。\n\n---\n\n## 二、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**推荐的输入类型（✅）**\n\n| 类型 | 说明 |\n| --- | --- |\n| 上装平铺图 | 纯色背景、平铺展开、完整可见 |\n| 连体衣 / 连衣裙平铺图 | 单件整体 |\n| 真人上身图 | 已有的真人商拍图，用于换姿势换场景 |\n\n**会明显拉低效果的输入（❌）**\n\n| 问题 | 说明 |\n| --- | --- |\n| 商品被遮挡 | 模特手臂、包袋、道具压住衣服主体 |\n| 套装商品 | 一张图里上装+下装+鞋子，单件上身识别不了 → 请改用「多件上身」并拆成两张 |\n| 商品不清晰 | 模糊、过曝、低分辨率、强色偏 |\n\n---\n\n## 三、参考图与模特的选择维度\n\n**参考图**（决定姿势与场景，是出图风格的主导变量）\n\n- 维度：`单图 / 套图`\n- 类目：`女装 / 男装 / 童装`（多选）\n- 地区：`国内 / 海外`（多选）\n- 类型：`电商 / 种草`（多选）\n- 筛选：性别 `男 / 女`；年龄 `婴儿 / 小童 / 大童 / 青少年 / 青年人 / 中年人 / 老年人`；肤色 `欧美人 / 非洲人 / 亚洲人 / 其他肤色`\n- 也可直接用自有参考图（支持批量），或按图搜同类姿势\n\n**模特**（可选，锁定人脸）\n\n- 维度：性别 / 年龄 / 肤色 / 身材，或随机指定\n- 指定模特会增加约 1 分钟生成时间\n\n选择建议：\n\n- 想要**款式还原优先** → 参考图选正面站姿、纯色背景、景别与商品一致（上装选半身，连衣裙选全身）。\n- 想要**氛围种草优先** → 参考图选带场景的街拍 / 室内生活场景，接受轻微版型偏差。\n- **多 SKU 批量** → 固定同一张参考图 + 同一个模特，只换服装图。\n\n---\n\n## 四、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（多图参考的图像编辑合成模型，最多 5 张参考图，支持 1024×1536 竖版商拍比例）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task flat-lay \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/flat-lay-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/flat-lay.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[服装图, 参考图]`（多件上身时 `[上装图, 下装图, 参考图]`） | 顺序即 prompt 中的 image 1 / 2 / 3 |\n| `--size` | `1024x1536`（竖版 3:4，商拍主图）；平铺细节图用 `1024x1024` | 电商主图默认竖版 |\n| `--quality` | `high` | 面料纹理与针织结构需要高质量档位 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `2` ~ `4` | 一次多出几张挑图 |\n| `--save` | `docs/flat-lay/output-<sku>.jpg` | 直接落盘，省一步下载 |\n\n### Command Examples\n\n```bash\n# basic call: 单件上身（服装图 + 参考图）\ndlazy gpt-image-2 \\\n  --prompt 'On-model e-commerce photo. Image 1 is the garment flat-lay, image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1. Keep the garment identical in color, texture, print and fit. Copy the reference pose, camera angle, crop, lighting and background.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high\n\n# complex call: 多件上身 + 指定模特 + 一次出 4 张挑图 + 直接落盘\ndlazy gpt-image-2 \\\n  --prompt 'Full-look on-model e-commerce photo. Image 1 is the top flat-lay, image 2 is the bottom flat-lay, image 3 is the pose/scene reference, image 4 is the fixed model face. Dress the model in the top from image 1 and the bottom from image 2. Preserve both garments exactly: color, knit/weave texture, print placement, hem and cuff details. Reproduce image 3 for pose, camera angle, crop, lighting and background. Keep the face and body type from image 4 unchanged. Photorealistic catalog shot, no text, no watermark.' \\\n  --images docs/flat-lay/top.jpg docs/flat-lay/bottom.jpg docs/flat-lay/pose-reference.jpg docs/flat-lay/model-face.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --batch 4 --save docs/flat-lay/output-sku001.jpg\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 五、Prompt 模板\n\n把中括号内容替换后填入 `--prompt`。**英文 prompt 对服装保真更稳定**。\n\n```text\nE-commerce on-model product photography.\nImage 1 is the garment flat-lay: [品类 + 颜色 + 面料，例：an olive-green cable-knit crewneck sweater].\nImage 2 is the pose/scene reference.\n\nDress the model from image 2 in the garment from image 1, replacing the garment they are currently wearing.\n\nKeep the garment 100% faithful: identical [颜色], [面料/织法纹理], [版型，例：oversized drop-shoulder fit],\n[领口/袖口/下摆细节], and [印花/logo/吊牌位置].\n\nReproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and background.\n\nPhotorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.\n```\n\n**按生成策略追加的句子**\n\n| 策略 | 追加到 prompt 末尾 |\n| --- | --- |\n| 通用（默认） | 不加 |\n| 颜色饱和度优化 | `Match the garment color to image 1 exactly — same hue, saturation and brightness; do not boost or wash out the color.` |\n| 材质增强 | `Emphasize fabric micro-texture: visible knit loops / weave grain / pile direction, realistic fiber sheen and soft shadow in the folds.` |\n| 崩坏问题优化 | `Anatomy must be correct: five fingers per hand, symmetric shoulders, no extra limbs, no melted collar or warped sleeve seams.` |\n| 精准选区 | `Change only the garment region. Keep the face, hair, hands, lower body, accessories and background pixel-identical to image 2.` |\n\n---\n\n## 六、执行流程\n\n1. **校验输入**：尺寸 / 分辨率 / 格式，剔除遮挡、套装、模糊图（见第二节）。\n2. **判断模式**：单件 → 1 张服装图；整套 → 上装图 + 下装图分开传。\n3. **准备参考图**：选一张商拍图，维度对齐目标人群（性别/年龄/肤色/类目/国内海外/电商种草）。\n4. **可选固定模特**：批量场景务必固定，保证多 SKU 同一张脸。\n5. **写 prompt**：用第五节模板，把服装的颜色、织法、版型、细节写具体——**写得越具体，还原度越高**。\n6. **`--dry-run` 估价**，确认 credits 后去掉该参数真跑。\n7. **`--batch 2~4` 出多张挑图**，落盘到 `docs/flat-lay/`。\n8. **质检**：颜色是否偏、纹理是否糊、印花位置是否移动、手指与领口是否崩坏。不合格 → 按第五节表格追加对应策略句子重跑。\n\n---\n\n## 七、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 颜色偏了 | 平铺图有色偏 / 模型自行调色 | 追加「颜色饱和度优化」句；prompt 里写死具体色名 |\n| 纹理糊成一片 | `--quality medium`，或平铺图分辨率低 | 改 `--quality high`；换更清晰的平铺图 |\n| 印花 / logo 位置移动 | prompt 未描述位置 | 明确写 `logo centered on left chest, 8cm wide` 之类 |\n| 手指、领口崩坏 | 生成随机性 | 追加「崩坏问题优化」句 + `--batch 4` 挑图 |\n| 背景 / 人脸被改动 | 模型重绘了整图 | 追加「精准选区」句 |\n| 只上传套装图，识别不了单件 | 输入违规 | 拆成上装图 + 下装图，走多件上身 |\n| 版型明显不对（宽松变紧身） | 参考图景别与品类不匹配 | 上装选半身参考图，连衣裙选全身参考图 |\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\": \"flat-lay\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1790918163044\n}\n\nFile v1.0.16:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\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\r\n                               (default: \"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\r\n                               use --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\nTurns garment flat-lay images and pose references into on-model product images for apparel listings.\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\nApparel sellers and creative teams use the skill to create on-model catalog photos from garment images and pose references, with optional consistent model appearance across products.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Garment, model, and reference images may be uploaded to the selected cloud provider.\n\nMitigation: Review provider settings and send only images and paths you are authorized to share.\n\nRisk: Provider credentials may grant access to paid generation services.\n\nMitigation: Use limited, revocable API keys and review estimated charges before generating.\n\nRisk: The bundled generator exposes tasks beyond this flat-lay workflow.\n\nMitigation: Check the selected task and proposed command before execution.\n\n## Reference(s):\n\n- [Flat Lay ClawHub listing](https://clawhub.ai/dlazyai/skills/flat-lay)\n- [Provider setup and data flow](references/provider-cli.md)\n- [Image generation options](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Images]\n\n**Output Format:** [Markdown guidance and shell commands; generated JPEG, PNG, or WebP images]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generated images may be saved locally; cloud generation may incur usage charges.]\n\n## Skill Version(s):\n\n1.0.16 (source: frontmatter and 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, 25550 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (2021b), SKILL.md (11560b), _meta.json (128b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: flat-lay\nversion: 1.0.15\ndescription: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n---\n\n# flat-lay — 服装图一键上身试穿\n\n把一张**服装平铺图**变成**模特上身商拍图**，不用约模特、不用租场地、不用摄影棚。\n\n本技能用 dLazy 的 `gpt-image-2` 实现：以「服装图 + 参考图」双图参考做图像编辑合成，服装保真、姿势场景照抄参考图。\n\n---\n\n## 生成效果示例\n\n| 输入：服装平铺图 | 输入：参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/garment-flatlay.jpg\" width=\"300\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/pose-reference.jpg\" width=\"300\"> |\n| `garment-flatlay.jpg` — 军绿色麻花针织圆领毛衣，800×800 | `pose-reference.jpg` — 男青年正面站姿、浅灰墙棚拍，768×1024 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is the garment flat-lay: an olive-green cable-knit crewneck sweater. Image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1, replacing the grey T-shirt. Keep the garment 100% faithful: identical olive-green color, cable-knit and diamond texture, oversized drop-shoulder fit, ribbed collar and cuffs, and the small woven label on the right cuff. Reproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and the plain light-grey studio wall background. Photorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --save docs/flat-lay/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536，60 credits，约 60s。\n\n麻花织法、菱形提花、落肩版型、袖口罗纹与右袖织标均被保留；姿势、景别、光线与浅灰背景照抄参考图。\n\n---\n\n## 一、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单件上身 | 上传 1 张单件衣服（上装 / 连衣裙 / 连体衣）平铺图或真人上身图 |\n| 多件上身 | 分别上传「上装图」+「下装图」，合成为同一个模特身上的一整套 Look |\n| 参考图 | 决定模特姿势、拍摄角度、景别、场景与光线；可用素材库，也可用自有商拍图 |\n| 指定模特 | 可选。锁定同一张脸，保证同店铺多 SKU 视觉统一；不指定则由参考图中的模特形象决定 |\n| 生成策略 | 通用 / 颜色饱和度优化 / 材质增强 / 崩坏问题优化 / 精准选区 |\n\n**不做**：不改款式、不改颜色、不改印花、不修改吊牌文字；不用于伪造他人肖像的商业代言。\n\n---\n\n## 二、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**推荐的输入类型（✅）**\n\n| 类型 | 说明 |\n| --- | --- |\n| 上装平铺图 | 纯色背景、平铺展开、完整可见 |\n| 连体衣 / 连衣裙平铺图 | 单件整体 |\n| 真人上身图 | 已有的真人商拍图，用于换姿势换场景 |\n\n**会明显拉低效果的输入（❌）**\n\n| 问题 | 说明 |\n| --- | --- |\n| 商品被遮挡 | 模特手臂、包袋、道具压住衣服主体 |\n| 套装商品 | 一张图里上装+下装+鞋子，单件上身识别不了 → 请改用「多件上身」并拆成两张 |\n| 商品不清晰 | 模糊、过曝、低分辨率、强色偏 |\n\n---\n\n## 三、参考图与模特的选择维度\n\n**参考图**（决定姿势与场景，是出图风格的主导变量）\n\n- 维度：`单图 / 套图`\n- 类目：`女装 / 男装 / 童装`（多选）\n- 地区：`国内 / 海外`（多选）\n- 类型：`电商 / 种草`（多选）\n- 筛选：性别 `男 / 女`；年龄 `婴儿 / 小童 / 大童 / 青少年 / 青年人 / 中年人 / 老年人`；肤色 `欧美人 / 非洲人 / 亚洲人 / 其他肤色`\n- 也可直接用自有参考图（支持批量），或按图搜同类姿势\n\n**模特**（可选，锁定人脸）\n\n- 维度：性别 / 年龄 / 肤色 / 身材，或随机指定\n- 指定模特会增加约 1 分钟生成时间\n\n选择建议：\n\n- 想要**款式还原优先** → 参考图选正面站姿、纯色背景、景别与商品一致（上装选半身，连衣裙选全身）。\n- 想要**氛围种草优先** → 参考图选带场景的街拍 / 室内生活场景，接受轻微版型偏差。\n- **多 SKU 批量** → 固定同一张参考图 + 同一个模特，只换服装图。\n\n---\n\n## 四、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（多图参考的图像编辑合成模型，最多 5 张参考图，支持 1024×1536 竖版商拍比例）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task flat-lay \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/flat-lay-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/flat-lay.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[服装图, 参考图]`（多件上身时 `[上装图, 下装图, 参考图]`） | 顺序即 prompt 中的 image 1 / 2 / 3 |\n| `--size` | `1024x1536`（竖版 3:4，商拍主图）；平铺细节图用 `1024x1024` | 电商主图默认竖版 |\n| `--quality` | `high` | 面料纹理与针织结构需要高质量档位 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `2` ~ `4` | 一次多出几张挑图 |\n| `--save` | `docs/flat-lay/output-<sku>.jpg` | 直接落盘，省一步下载 |\n\n### Command Examples\n\n```bash\n# basic call: 单件上身（服装图 + 参考图）\ndlazy gpt-image-2 \\\n  --prompt 'On-model e-commerce photo. Image 1 is the garment flat-lay, image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1. Keep the garment identical in color, texture, print and fit. Copy the reference pose, camera angle, crop, lighting and background.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high\n\n# complex call: 多件上身 + 指定模特 + 一次出 4 张挑图 + 直接落盘\ndlazy gpt-image-2 \\\n  --prompt 'Full-look on-model e-commerce photo. Image 1 is the top flat-lay, image 2 is the bottom flat-lay, image 3 is the pose/scene reference, image 4 is the fixed model face. Dress the model in the top from image 1 and the bottom from image 2. Preserve both garments exactly: color, knit/weave texture, print placement, hem and cuff details. Reproduce image 3 for pose, camera angle, crop, lighting and background. Keep the face and body type from image 4 unchanged. Photorealistic catalog shot, no text, no watermark.' \\\n  --images docs/flat-lay/top.jpg docs/flat-lay/bottom.jpg docs/flat-lay/pose-reference.jpg docs/flat-lay/model-face.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --batch 4 --save docs/flat-lay/output-sku001.jpg\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 五、Prompt 模板\n\n把中括号内容替换后填入 `--prompt`。**英文 prompt 对服装保真更稳定**。\n\n```text\nE-commerce on-model product photography.\nImage 1 is the garment flat-lay: [品类 + 颜色 + 面料，例：an olive-green cable-knit crewneck sweater].\nImage 2 is the pose/scene reference.\n\nDress the model from image 2 in the garment from image 1, replacing the garment they are currently wearing.\n\nKeep the garment 100% faithful: identical [颜色], [面料/织法纹理], [版型，例：oversized drop-shoulder fit],\n[领口/袖口/下摆细节], and [印花/logo/吊牌位置].\n\nReproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and background.\n\nPhotorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.\n```\n\n**按生成策略追加的句子**\n\n| 策略 | 追加到 prompt 末尾 |\n| --- | --- |\n| 通用（默认） | 不加 |\n| 颜色饱和度优化 | `Match the garment color to image 1 exactly — same hue, saturation and brightness; do not boost or wash out the color.` |\n| 材质增强 | `Emphasize fabric micro-texture: visible knit loops / weave grain / pile direction, realistic fiber sheen and soft shadow in the folds.` |\n| 崩坏问题优化 | `Anatomy must be correct: five fingers per hand, symmetric shoulders, no extra limbs, no melted collar or warped sleeve seams.` |\n| 精准选区 | `Change only the garment region. Keep the face, hair, hands, lower body, accessories and background pixel-identical to image 2.` |\n\n---\n\n## 六、执行流程\n\n1. **校验输入**：尺寸 / 分辨率 / 格式，剔除遮挡、套装、模糊图（见第二节）。\n2. **判断模式**：单件 → 1 张服装图；整套 → 上装图 + 下装图分开传。\n3. **准备参考图**：选一张商拍图，维度对齐目标人群（性别/年龄/肤色/类目/国内海外/电商种草）。\n4. **可选固定模特**：批量场景务必固定，保证多 SKU 同一张脸。\n5. **写 prompt**：用第五节模板，把服装的颜色、织法、版型、细节写具体——**写得越具体，还原度越高**。\n6. **`--dry-run` 估价**，确认 credits 后去掉该参数真跑。\n7. **`--batch 2~4` 出多张挑图**，落盘到 `docs/flat-lay/`。\n8. **质检**：颜色是否偏、纹理是否糊、印花位置是否移动、手指与领口是否崩坏。不合格 → 按第五节表格追加对应策略句子重跑。\n\n---\n\n## 七、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 颜色偏了 | 平铺图有色偏 / 模型自行调色 | 追加「颜色饱和度优化」句；prompt 里写死具体色名 |\n| 纹理糊成一片 | `--quality medium`，或平铺图分辨率低 | 改 `--quality high`；换更清晰的平铺图 |\n| 印花 / logo 位置移动 | prompt 未描述位置 | 明确写 `logo centered on left chest, 8cm wide` 之类 |\n| 手指、领口崩坏 | 生成随机性 | 追加「崩坏问题优化」句 + `--batch 4` 挑图 |\n| 背景 / 人脸被改动 | 模型重绘了整图 | 追加「精准选区」句 |\n| 只上传套装图，识别不了单件 | 输入违规 | 拆成上装图 + 下装图，走多件上身 |\n| 版型明显不对（宽松变紧身） | 参考图景别与品类不匹配 | 上装选半身参考图，连衣裙选全身参考图 |\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\": \"flat-lay\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1790732815512\n}\n\nFile v1.0.15:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\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\r\n                               (default: \"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\r\n                               use --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\nGuides agents in turning garment flat-lay images and pose references into on-model e-commerce images using a configured image provider.\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 this skill to prepare virtual try-on product imagery from clothing photos and pose or scene references. It provides prompts and commands for generating and reviewing catalog images.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected clothing, reference, and optional face images and prompts are sent to a cloud image provider.\n\nMitigation: Use only images you are comfortable sharing with the configured provider and obtain permission for any person's likeness.\n\nRisk: Image-generation requests may consume paid credits.\n\nMitigation: Use dry-run to review estimated cost before submitting a generation request.\n\nRisk: Provider credentials grant access to external image-generation services.\n\nMitigation: Keep API keys scoped and revocable, and do not disclose them in prompts or shared outputs.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/flat-lay)\n- [Provider and CLI reference](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 shell commands and image-generation prompts]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Executing the commands can save generated image files locally.]\n\n## Skill Version(s):\n\n1.0.15 (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.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, 25546 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (1973b), SKILL.md (11560b), _meta.json (128b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: flat-lay\nversion: 1.0.14\ndescription: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n---\n\n# flat-lay — 服装图一键上身试穿\n\n把一张**服装平铺图**变成**模特上身商拍图**，不用约模特、不用租场地、不用摄影棚。\n\n本技能用 dLazy 的 `gpt-image-2` 实现：以「服装图 + 参考图」双图参考做图像编辑合成，服装保真、姿势场景照抄参考图。\n\n---\n\n## 生成效果示例\n\n| 输入：服装平铺图 | 输入：参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/garment-flatlay.jpg\" width=\"300\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/pose-reference.jpg\" width=\"300\"> |\n| `garment-flatlay.jpg` — 军绿色麻花针织圆领毛衣，800×800 | `pose-reference.jpg` — 男青年正面站姿、浅灰墙棚拍，768×1024 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is the garment flat-lay: an olive-green cable-knit crewneck sweater. Image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1, replacing the grey T-shirt. Keep the garment 100% faithful: identical olive-green color, cable-knit and diamond texture, oversized drop-shoulder fit, ribbed collar and cuffs, and the small woven label on the right cuff. Reproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and the plain light-grey studio wall background. Photorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --save docs/flat-lay/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536，60 credits，约 60s。\n\n麻花织法、菱形提花、落肩版型、袖口罗纹与右袖织标均被保留；姿势、景别、光线与浅灰背景照抄参考图。\n\n---\n\n## 一、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单件上身 | 上传 1 张单件衣服（上装 / 连衣裙 / 连体衣）平铺图或真人上身图 |\n| 多件上身 | 分别上传「上装图」+「下装图」，合成为同一个模特身上的一整套 Look |\n| 参考图 | 决定模特姿势、拍摄角度、景别、场景与光线；可用素材库，也可用自有商拍图 |\n| 指定模特 | 可选。锁定同一张脸，保证同店铺多 SKU 视觉统一；不指定则由参考图中的模特形象决定 |\n| 生成策略 | 通用 / 颜色饱和度优化 / 材质增强 / 崩坏问题优化 / 精准选区 |\n\n**不做**：不改款式、不改颜色、不改印花、不修改吊牌文字；不用于伪造他人肖像的商业代言。\n\n---\n\n## 二、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**推荐的输入类型（✅）**\n\n| 类型 | 说明 |\n| --- | --- |\n| 上装平铺图 | 纯色背景、平铺展开、完整可见 |\n| 连体衣 / 连衣裙平铺图 | 单件整体 |\n| 真人上身图 | 已有的真人商拍图，用于换姿势换场景 |\n\n**会明显拉低效果的输入（❌）**\n\n| 问题 | 说明 |\n| --- | --- |\n| 商品被遮挡 | 模特手臂、包袋、道具压住衣服主体 |\n| 套装商品 | 一张图里上装+下装+鞋子，单件上身识别不了 → 请改用「多件上身」并拆成两张 |\n| 商品不清晰 | 模糊、过曝、低分辨率、强色偏 |\n\n---\n\n## 三、参考图与模特的选择维度\n\n**参考图**（决定姿势与场景，是出图风格的主导变量）\n\n- 维度：`单图 / 套图`\n- 类目：`女装 / 男装 / 童装`（多选）\n- 地区：`国内 / 海外`（多选）\n- 类型：`电商 / 种草`（多选）\n- 筛选：性别 `男 / 女`；年龄 `婴儿 / 小童 / 大童 / 青少年 / 青年人 / 中年人 / 老年人`；肤色 `欧美人 / 非洲人 / 亚洲人 / 其他肤色`\n- 也可直接用自有参考图（支持批量），或按图搜同类姿势\n\n**模特**（可选，锁定人脸）\n\n- 维度：性别 / 年龄 / 肤色 / 身材，或随机指定\n- 指定模特会增加约 1 分钟生成时间\n\n选择建议：\n\n- 想要**款式还原优先** → 参考图选正面站姿、纯色背景、景别与商品一致（上装选半身，连衣裙选全身）。\n- 想要**氛围种草优先** → 参考图选带场景的街拍 / 室内生活场景，接受轻微版型偏差。\n- **多 SKU 批量** → 固定同一张参考图 + 同一个模特，只换服装图。\n\n---\n\n## 四、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（多图参考的图像编辑合成模型，最多 5 张参考图，支持 1024×1536 竖版商拍比例）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task flat-lay \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/flat-lay-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/flat-lay.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[服装图, 参考图]`（多件上身时 `[上装图, 下装图, 参考图]`） | 顺序即 prompt 中的 image 1 / 2 / 3 |\n| `--size` | `1024x1536`（竖版 3:4，商拍主图）；平铺细节图用 `1024x1024` | 电商主图默认竖版 |\n| `--quality` | `high` | 面料纹理与针织结构需要高质量档位 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `2` ~ `4` | 一次多出几张挑图 |\n| `--save` | `docs/flat-lay/output-<sku>.jpg` | 直接落盘，省一步下载 |\n\n### Command Examples\n\n```bash\n# basic call: 单件上身（服装图 + 参考图）\ndlazy gpt-image-2 \\\n  --prompt 'On-model e-commerce photo. Image 1 is the garment flat-lay, image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1. Keep the garment identical in color, texture, print and fit. Copy the reference pose, camera angle, crop, lighting and background.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high\n\n# complex call: 多件上身 + 指定模特 + 一次出 4 张挑图 + 直接落盘\ndlazy gpt-image-2 \\\n  --prompt 'Full-look on-model e-commerce photo. Image 1 is the top flat-lay, image 2 is the bottom flat-lay, image 3 is the pose/scene reference, image 4 is the fixed model face. Dress the model in the top from image 1 and the bottom from image 2. Preserve both garments exactly: color, knit/weave texture, print placement, hem and cuff details. Reproduce image 3 for pose, camera angle, crop, lighting and background. Keep the face and body type from image 4 unchanged. Photorealistic catalog shot, no text, no watermark.' \\\n  --images docs/flat-lay/top.jpg docs/flat-lay/bottom.jpg docs/flat-lay/pose-reference.jpg docs/flat-lay/model-face.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --batch 4 --save docs/flat-lay/output-sku001.jpg\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 五、Prompt 模板\n\n把中括号内容替换后填入 `--prompt`。**英文 prompt 对服装保真更稳定**。\n\n```text\nE-commerce on-model product photography.\nImage 1 is the garment flat-lay: [品类 + 颜色 + 面料，例：an olive-green cable-knit crewneck sweater].\nImage 2 is the pose/scene reference.\n\nDress the model from image 2 in the garment from image 1, replacing the garment they are currently wearing.\n\nKeep the garment 100% faithful: identical [颜色], [面料/织法纹理], [版型，例：oversized drop-shoulder fit],\n[领口/袖口/下摆细节], and [印花/logo/吊牌位置].\n\nReproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and background.\n\nPhotorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.\n```\n\n**按生成策略追加的句子**\n\n| 策略 | 追加到 prompt 末尾 |\n| --- | --- |\n| 通用（默认） | 不加 |\n| 颜色饱和度优化 | `Match the garment color to image 1 exactly — same hue, saturation and brightness; do not boost or wash out the color.` |\n| 材质增强 | `Emphasize fabric micro-texture: visible knit loops / weave grain / pile direction, realistic fiber sheen and soft shadow in the folds.` |\n| 崩坏问题优化 | `Anatomy must be correct: five fingers per hand, symmetric shoulders, no extra limbs, no melted collar or warped sleeve seams.` |\n| 精准选区 | `Change only the garment region. Keep the face, hair, hands, lower body, accessories and background pixel-identical to image 2.` |\n\n---\n\n## 六、执行流程\n\n1. **校验输入**：尺寸 / 分辨率 / 格式，剔除遮挡、套装、模糊图（见第二节）。\n2. **判断模式**：单件 → 1 张服装图；整套 → 上装图 + 下装图分开传。\n3. **准备参考图**：选一张商拍图，维度对齐目标人群（性别/年龄/肤色/类目/国内海外/电商种草）。\n4. **可选固定模特**：批量场景务必固定，保证多 SKU 同一张脸。\n5. **写 prompt**：用第五节模板，把服装的颜色、织法、版型、细节写具体——**写得越具体，还原度越高**。\n6. **`--dry-run` 估价**，确认 credits 后去掉该参数真跑。\n7. **`--batch 2~4` 出多张挑图**，落盘到 `docs/flat-lay/`。\n8. **质检**：颜色是否偏、纹理是否糊、印花位置是否移动、手指与领口是否崩坏。不合格 → 按第五节表格追加对应策略句子重跑。\n\n---\n\n## 七、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 颜色偏了 | 平铺图有色偏 / 模型自行调色 | 追加「颜色饱和度优化」句；prompt 里写死具体色名 |\n| 纹理糊成一片 | `--quality medium`，或平铺图分辨率低 | 改 `--quality high`；换更清晰的平铺图 |\n| 印花 / logo 位置移动 | prompt 未描述位置 | 明确写 `logo centered on left chest, 8cm wide` 之类 |\n| 手指、领口崩坏 | 生成随机性 | 追加「崩坏问题优化」句 + `--batch 4` 挑图 |\n| 背景 / 人脸被改动 | 模型重绘了整图 | 追加「精准选区」句 |\n| 只上传套装图，识别不了单件 | 输入违规 | 拆成上装图 + 下装图，走多件上身 |\n| 版型明显不对（宽松变紧身） | 参考图景别与品类不匹配 | 上装选半身参考图，连衣裙选全身参考图 |\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\": \"flat-lay\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790562983651\n}\n\nFile v1.0.14:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\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\r\n                               (default: \"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\r\n                               use --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\nTurns garment flat-lay and pose-reference images into on-model e-commerce photos using an image-generation provider.\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 use this skill to create on-model catalog imagery from garment photos and pose references, including coordinated outfits and repeatable model styling.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected images and prompts are sent to the chosen image-generation provider.\n\nMitigation: Choose the provider deliberately, preview with dry-run, and only supply images you are comfortable uploading; exclude private photos, internal URLs, and unrelated local files.\n\nRisk: Generated photos may alter garment details or model features.\n\nMitigation: Review color, texture, print placement, fit, face, and anatomy before using the results in a listing.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/flat-lay)\n- [Image model options](artifact/references/model-flags.md)\n- [Provider setup and outputs](artifact/references/provider-cli.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Image files]\n\n**Output Format:** [Markdown instructions and CLI examples; generated JPEG images when executed]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Supports single garments or outfits, pose references, optional fixed model images, and batch generation; review generated images for garment accuracy.]\n\n## Skill Version(s):\n\n1.0.14 (source: SKILL.md frontmatter and server 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.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, 25712 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (2332b), SKILL.md (11560b), _meta.json (128b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: flat-lay\nversion: 1.0.13\ndescription: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n---\n\n# flat-lay — 服装图一键上身试穿\n\n把一张**服装平铺图**变成**模特上身商拍图**，不用约模特、不用租场地、不用摄影棚。\n\n本技能用 dLazy 的 `gpt-image-2` 实现：以「服装图 + 参考图」双图参考做图像编辑合成，服装保真、姿势场景照抄参考图。\n\n---\n\n## 生成效果示例\n\n| 输入：服装平铺图 | 输入：参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/garment-flatlay.jpg\" width=\"300\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/pose-reference.jpg\" width=\"300\"> |\n| `garment-flatlay.jpg` — 军绿色麻花针织圆领毛衣，800×800 | `pose-reference.jpg` — 男青年正面站姿、浅灰墙棚拍，768×1024 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is the garment flat-lay: an olive-green cable-knit crewneck sweater. Image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1, replacing the grey T-shirt. Keep the garment 100% faithful: identical olive-green color, cable-knit and diamond texture, oversized drop-shoulder fit, ribbed collar and cuffs, and the small woven label on the right cuff. Reproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and the plain light-grey studio wall background. Photorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --save docs/flat-lay/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536，60 credits，约 60s。\n\n麻花织法、菱形提花、落肩版型、袖口罗纹与右袖织标均被保留；姿势、景别、光线与浅灰背景照抄参考图。\n\n---\n\n## 一、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单件上身 | 上传 1 张单件衣服（上装 / 连衣裙 / 连体衣）平铺图或真人上身图 |\n| 多件上身 | 分别上传「上装图」+「下装图」，合成为同一个模特身上的一整套 Look |\n| 参考图 | 决定模特姿势、拍摄角度、景别、场景与光线；可用素材库，也可用自有商拍图 |\n| 指定模特 | 可选。锁定同一张脸，保证同店铺多 SKU 视觉统一；不指定则由参考图中的模特形象决定 |\n| 生成策略 | 通用 / 颜色饱和度优化 / 材质增强 / 崩坏问题优化 / 精准选区 |\n\n**不做**：不改款式、不改颜色、不改印花、不修改吊牌文字；不用于伪造他人肖像的商业代言。\n\n---\n\n## 二、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**推荐的输入类型（✅）**\n\n| 类型 | 说明 |\n| --- | --- |\n| 上装平铺图 | 纯色背景、平铺展开、完整可见 |\n| 连体衣 / 连衣裙平铺图 | 单件整体 |\n| 真人上身图 | 已有的真人商拍图，用于换姿势换场景 |\n\n**会明显拉低效果的输入（❌）**\n\n| 问题 | 说明 |\n| --- | --- |\n| 商品被遮挡 | 模特手臂、包袋、道具压住衣服主体 |\n| 套装商品 | 一张图里上装+下装+鞋子，单件上身识别不了 → 请改用「多件上身」并拆成两张 |\n| 商品不清晰 | 模糊、过曝、低分辨率、强色偏 |\n\n---\n\n## 三、参考图与模特的选择维度\n\n**参考图**（决定姿势与场景，是出图风格的主导变量）\n\n- 维度：`单图 / 套图`\n- 类目：`女装 / 男装 / 童装`（多选）\n- 地区：`国内 / 海外`（多选）\n- 类型：`电商 / 种草`（多选）\n- 筛选：性别 `男 / 女`；年龄 `婴儿 / 小童 / 大童 / 青少年 / 青年人 / 中年人 / 老年人`；肤色 `欧美人 / 非洲人 / 亚洲人 / 其他肤色`\n- 也可直接用自有参考图（支持批量），或按图搜同类姿势\n\n**模特**（可选，锁定人脸）\n\n- 维度：性别 / 年龄 / 肤色 / 身材，或随机指定\n- 指定模特会增加约 1 分钟生成时间\n\n选择建议：\n\n- 想要**款式还原优先** → 参考图选正面站姿、纯色背景、景别与商品一致（上装选半身，连衣裙选全身）。\n- 想要**氛围种草优先** → 参考图选带场景的街拍 / 室内生活场景，接受轻微版型偏差。\n- **多 SKU 批量** → 固定同一张参考图 + 同一个模特，只换服装图。\n\n---\n\n## 四、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（多图参考的图像编辑合成模型，最多 5 张参考图，支持 1024×1536 竖版商拍比例）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task flat-lay \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/flat-lay-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/flat-lay.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[服装图, 参考图]`（多件上身时 `[上装图, 下装图, 参考图]`） | 顺序即 prompt 中的 image 1 / 2 / 3 |\n| `--size` | `1024x1536`（竖版 3:4，商拍主图）；平铺细节图用 `1024x1024` | 电商主图默认竖版 |\n| `--quality` | `high` | 面料纹理与针织结构需要高质量档位 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `2` ~ `4` | 一次多出几张挑图 |\n| `--save` | `docs/flat-lay/output-<sku>.jpg` | 直接落盘，省一步下载 |\n\n### Command Examples\n\n```bash\n# basic call: 单件上身（服装图 + 参考图）\ndlazy gpt-image-2 \\\n  --prompt 'On-model e-commerce photo. Image 1 is the garment flat-lay, image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1. Keep the garment identical in color, texture, print and fit. Copy the reference pose, camera angle, crop, lighting and background.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high\n\n# complex call: 多件上身 + 指定模特 + 一次出 4 张挑图 + 直接落盘\ndlazy gpt-image-2 \\\n  --prompt 'Full-look on-model e-commerce photo. Image 1 is the top flat-lay, image 2 is the bottom flat-lay, image 3 is the pose/scene reference, image 4 is the fixed model face. Dress the model in the top from image 1 and the bottom from image 2. Preserve both garments exactly: color, knit/weave texture, print placement, hem and cuff details. Reproduce image 3 for pose, camera angle, crop, lighting and background. Keep the face and body type from image 4 unchanged. Photorealistic catalog shot, no text, no watermark.' \\\n  --images docs/flat-lay/top.jpg docs/flat-lay/bottom.jpg docs/flat-lay/pose-reference.jpg docs/flat-lay/model-face.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --batch 4 --save docs/flat-lay/output-sku001.jpg\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 五、Prompt 模板\n\n把中括号内容替换后填入 `--prompt`。**英文 prompt 对服装保真更稳定**。\n\n```text\nE-commerce on-model product photography.\nImage 1 is the garment flat-lay: [品类 + 颜色 + 面料，例：an olive-green cable-knit crewneck sweater].\nImage 2 is the pose/scene reference.\n\nDress the model from image 2 in the garment from image 1, replacing the garment they are currently wearing.\n\nKeep the garment 100% faithful: identical [颜色], [面料/织法纹理], [版型，例：oversized drop-shoulder fit],\n[领口/袖口/下摆细节], and [印花/logo/吊牌位置].\n\nReproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and background.\n\nPhotorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.\n```\n\n**按生成策略追加的句子**\n\n| 策略 | 追加到 prompt 末尾 |\n| --- | --- |\n| 通用（默认） | 不加 |\n| 颜色饱和度优化 | `Match the garment color to image 1 exactly — same hue, saturation and brightness; do not boost or wash out the color.` |\n| 材质增强 | `Emphasize fabric micro-texture: visible knit loops / weave grain / pile direction, realistic fiber sheen and soft shadow in the folds.` |\n| 崩坏问题优化 | `Anatomy must be correct: five fingers per hand, symmetric shoulders, no extra limbs, no melted collar or warped sleeve seams.` |\n| 精准选区 | `Change only the garment region. Keep the face, hair, hands, lower body, accessories and background pixel-identical to image 2.` |\n\n---\n\n## 六、执行流程\n\n1. **校验输入**：尺寸 / 分辨率 / 格式，剔除遮挡、套装、模糊图（见第二节）。\n2. **判断模式**：单件 → 1 张服装图；整套 → 上装图 + 下装图分开传。\n3. **准备参考图**：选一张商拍图，维度对齐目标人群（性别/年龄/肤色/类目/国内海外/电商种草）。\n4. **可选固定模特**：批量场景务必固定，保证多 SKU 同一张脸。\n5. **写 prompt**：用第五节模板，把服装的颜色、织法、版型、细节写具体——**写得越具体，还原度越高**。\n6. **`--dry-run` 估价**，确认 credits 后去掉该参数真跑。\n7. **`--batch 2~4` 出多张挑图**，落盘到 `docs/flat-lay/`。\n8. **质检**：颜色是否偏、纹理是否糊、印花位置是否移动、手指与领口是否崩坏。不合格 → 按第五节表格追加对应策略句子重跑。\n\n---\n\n## 七、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 颜色偏了 | 平铺图有色偏 / 模型自行调色 | 追加「颜色饱和度优化」句；prompt 里写死具体色名 |\n| 纹理糊成一片 | `--quality medium`，或平铺图分辨率低 | 改 `--quality high`；换更清晰的平铺图 |\n| 印花 / logo 位置移动 | prompt 未描述位置 | 明确写 `logo centered on left chest, 8cm wide` 之类 |\n| 手指、领口崩坏 | 生成随机性 | 追加「崩坏问题优化」句 + `--batch 4` 挑图 |\n| 背景 / 人脸被改动 | 模型重绘了整图 | 追加「精准选区」句 |\n| 只上传套装图，识别不了单件 | 输入违规 | 拆成上装图 + 下装图，走多件上身 |\n| 版型明显不对（宽松变紧身） | 参考图景别与品类不匹配 | 上装选半身参考图，连衣裙选全身参考图 |\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\": \"flat-lay\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1790217455430\n}\n\nFile v1.0.13:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\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\r\n                               (default: \"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\r\n                               use --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\nConverts garment flat-lay and pose reference images into on-model ecommerce product photos while preserving garment style, color, weave, and fit.\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\nExternal ecommerce operators, marketers, and developers use this skill to generate catalog-style on-model clothing images from flat-lay garment photos, pose references, and optional fixed model-face references.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Garment photos, reference images, model-face images, prompts, and product context may be sent to dLazy or another configured cloud provider.\n\nMitigation: Use only approved assets and providers, avoid private biometric images or proprietary unreleased catalog assets unless policy and provider terms allow them, and review provider data-handling terms before use.\n\nRisk: Generated virtual try-on images may alter garment color, texture, print placement, fit, anatomy, or background details.\n\nMitigation: Perform manual quality control before publishing outputs, and rerun with the documented color, material, anatomy, or precise-selection prompt constraints when defects appear.\n\n## Reference(s):\n\n- [Provider CLI reference](references/provider-cli.md)\n- [gpt-image-2 model flags](references/model-flags.md)\n- [dLazy](https://dlazy.com)\n- [dLazy CLI source](https://github.com/dlazy-ai/cli)\n- [Skill page](https://clawhub.ai/dlazyai/skills/flat-lay)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration, Files]\n\n**Output Format:** [Markdown guidance with bash commands plus generated JPEG image files or JSON provider responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Default workflow uses cloud image-generation providers, accepts local paths or image URLs, and can save outputs to local files.]\n\n## Skill Version(s):\n\n1.0.13 (source: SKILL.md 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, 25901 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (2478b), SKILL.md (11560b), _meta.json (128b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: flat-lay\nversion: 1.0.12\ndescription: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n---\n\n# flat-lay — 服装图一键上身试穿\n\n把一张**服装平铺图**变成**模特上身商拍图**，不用约模特、不用租场地、不用摄影棚。\n\n本技能用 dLazy 的 `gpt-image-2` 实现：以「服装图 + 参考图」双图参考做图像编辑合成，服装保真、姿势场景照抄参考图。\n\n---\n\n## 生成效果示例\n\n| 输入：服装平铺图 | 输入：参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/garment-flatlay.jpg\" width=\"300\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/pose-reference.jpg\" width=\"300\"> |\n| `garment-flatlay.jpg` — 军绿色麻花针织圆领毛衣，800×800 | `pose-reference.jpg` — 男青年正面站姿、浅灰墙棚拍，768×1024 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is \n\nArchive v1.0.11: 11 files, 26049 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (2759b), SKILL.md (11560b), _meta.json (128b)\n\nArchive v1.0.10: 11 files, 25782 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), 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 (2206b), SKILL.md (11560b), _meta.json (128b)","readmeExcerpt":"Skill: 服装图一键上身 Flat Lay Owner: dlazyai Summary: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:50:30.495Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:43:17.593Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:43:12.267Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:16:03.044Z | user 例行版本更新 2026-10-02","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"dlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is the garment flat-lay: an olive-green cable-knit crewneck sweater. Image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1, replacing the grey T-shirt. Keep the garment 100% faithful: identical olive-green color, cable-knit and diamond texture, oversized drop-shoulder fit, ribbed collar and cuffs, and the small woven label on the right cuff. Reproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and the plain light-grey studio wall background. Photorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --save docs/flat-lay/example-output.jpg"},{"language":"bash","snippet":"# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task flat-lay \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/flat-lay-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/flat-lay.jpg"},{"language":"bash","snippet":"# basic call: 单件上身（服装图 + 参考图）\ndlazy gpt-image-2 \\\n  --prompt 'On-model e-commerce photo. Image 1 is the garment flat-lay, image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1. Keep the garment identical in color, texture, print and fit. Copy the reference pose, camera angle, crop, lighting and background.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high\n\n# complex call: 多件上身 + 指定模特 + 一次出 4 张挑图 + 直接落盘\ndlazy gpt-image-2 \\\n  --prompt 'Full-look on-model e-commerce photo. Image 1 is the top flat-lay, image 2 is the bottom flat-lay, image 3 is the pose/scene reference, image 4 is the fixed model face. Dress the model in the top from image 1 and the bottom from image 2. Preserve both garments exactly: color, knit/weave texture, print placement, hem and cuff details. Reproduce image 3 for pose, camera angle, crop, lighting and background. Keep the face and body type from image 4 unchanged. Photorealistic catalog shot, no text, no watermark.' \\\n  --images docs/flat-lay/top.jpg docs/flat-lay/bottom.jpg docs/flat-lay/pose-reference.jpg docs/flat-lay/model-face.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --batch 4 --save docs/flat-lay/output-sku001.jpg\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536"},{"language":"text","snippet":"E-commerce on-model product photography.\nImage 1 is the garment flat-lay: [品类 + 颜色 + 面料，例：an olive-green cable-knit crewneck sweater].\nImage 2 is the pose/scene reference.\n\nDress the model from image 2 in the garment from image 1, replacing the garment they are currently wearing.\n\nKeep the garment 100% faithful: identical [颜色], [面料/织法纹理], [版型，例：oversized drop-shoulder fit],\n[领口/袖口/下摆细节], and [印花/logo/吊牌位置].\n\nReproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and background.\n\nPhotorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark."},{"language":"bash","snippet":"dlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入"},{"language":"bash","snippet":"node scripts/gen.mjs --doctor     # 看当前哪个后端可用"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: flat-lay\nversion: 1.0.19\ndescription: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。\n---\n\n# flat-lay — 服装图一键上身试穿\n\n把一张**服装平铺图**变成**模特上身商拍图**，不用约模特、不用租场地、不用摄影棚。\n\n本技能用 dLazy 的 `gpt-image-2` 实现：以「服装图 + 参考图」双图参考做图像编辑合成，服装保真、姿势场景照抄参考图。\n\n---\n\n## 生成效果示例\n\n| 输入：服装平铺图 | 输入：参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/garment-flatlay.jpg\" width=\"300\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/pose-reference.jpg\" width=\"300\"> |\n| `garment-flatlay.jpg` — 军绿色麻花针织圆领毛衣，800×800 | `pose-reference.jpg` — 男青年正面站姿、浅灰墙棚拍，768×1024 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce on-model product photography. Image 1 is the garment flat-lay: an olive-green cable-knit crewneck sweater. Image 2 is the pose/scene reference. Dress the model from image 2 in the garment from image 1, replacing the grey T-shirt. Keep the garment 100% faithful: identical olive-green color, cable-knit and diamond texture, oversized drop-shoulder fit, ribbed collar and cuffs, and the small woven label on the right cuff. Reproduce the reference exactly for pose, camera angle, crop, body proportions, lighting and the plain light-grey studio wall background. Photorealistic full-frame catalog shot, sharp fabric detail, natural soft light, no text or watermark.' \\\n  --images docs/flat-lay/garment-flatlay.jpg docs/flat-lay/pose-reference.jpg \\\n  --size 1024x1536 --quality high --imageFormat jpeg \\\n  --save docs/flat-lay/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/flat-lay/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536，60 credits，约 60s。\n\n麻花织法、菱形提花、落肩版型、袖口罗纹与右袖织标均被保留；姿势、景别、光线与浅灰背景照抄参考图。\n\n---\n\n## 一、能力边界\n\n| 能力 | 说明 |\n| --- | --- |\n| 单件上身 | 上传 1 张单件衣服（上装 / 连衣裙 / 连体衣）平铺图或真人上身图 |\n| 多件上身 | 分别上传「上装图」+「下装图」，合成为同一个模特身上的一整套 Look |\n| 参考图 | 决定模特姿势、拍摄角度、景别、场景与光线；可用素材库，也可用自有商拍图 |\n| 指定模特 | 可选。锁定同一张脸，保证同店铺多 SKU 视觉统一；不指定则由参考图中的模特形象决定 |\n| 生成策略 | 通用 / 颜色饱和度优化 / 材质增强 / 崩坏问题优化 / 精准选区 |\n\n**不做**：不改款式、不改颜色、不改印花、不修改吊牌文字；不用于伪造他人肖像的商业代言。\n\n---\n\n## 二、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**推荐的输入类型（✅）**\n\n| 类型 | 说明 |\n| --- | --- |\n| 上装平铺图 | 纯色背景、平铺展开、完整可见 |\n| 连体衣 / 连衣裙平铺图 | 单件整体 |\n| 真人上身图 | 已有的真人商拍图，用于换姿势换场景 |\n\n**会明显拉低效果的输入（❌）**\n\n| 问题 | 说明 |\n| --- | --- |\n| 商品被遮挡 | 模特手臂、包袋、道具压住衣服主体 |\n| 套装商品 | 一张图里上装+下装+鞋子，单件上身识别不了 → 请改用「多件上身」并拆成两张 |\n| 商品不清晰 | 模糊、过曝、低分辨率、强色偏 |\n\n---\n\n## 三、参考图与模特的选择维度\n\n**参考图**（决定姿势与场景，是出图风格的主导变量）\n\n- 维度：`单图 / 套图`\n- 类目：`女装 / 男装 / 童装`（多选）\n- 地区：`国内 / 海外`（多选）\n- 类型：`电商 / 种草`（多选）\n- 筛选：性别 `男 / 女`；年龄 `婴儿 / 小童 / 大童 / 青少年 / 青年人 / 中年人 / 老年人`；肤色 `欧美人 / 非洲人 / 亚洲人 / 其他肤色`\n- 也可直接用自有参考图（支持批量），或按图搜同类姿势\n\n**模特**（可选，锁定人脸）\n\n- 维度：性别 / 年龄 / 肤色 / 身材，或随机指定\n- 指定模特会增加约 1 分钟生成时间\n\n选择建议：\n\n- 想要**款式还原优先** → 参考图选正面站姿、纯色背景、景别与商品一致（上装选半身，连衣裙选全身）。\n- 想要**氛围种草优先** → 参考图选带场景的街拍 / 室内生活场景，接受轻微版型偏差。\n- **多 SKU 批量** → 固定同一张参考图 + 同一个模"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"flat-lay\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1791597030495\n}"},{"path":"references/model-flags.md","content":"# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\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\r\n                               (default: \"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\r\n                               use --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":"服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。 Skill: 服装图一键上身 Flat Lay Owner: dlazyai Summary: 服装平铺图一键上身试穿。服装平铺图 + 姿势参考图 → 模特上身商拍图，款式、颜色、织法、版型保持不变。当用户说「平铺图转模特图」「衣服上身」「虚拟试穿」「AI 试衣」「让模特穿上」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:50:30.495Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:43:17.593Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:43:12.267Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:16:03.044Z | user 例行版本更新 2026-10-02","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":987,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T21:00:05.294Z","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-10T21:00:05.294Z","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-10T23:45:43.400Z","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"}]}}}