{"id":"d4d3929d-165f-4109-acff-454fcb234dd9","entityType":"agent","slug":"clawhub-dlazyai-fission-pattern","name":"一图裂变套图 Fission Pattern","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dlazyai-fission-pattern","canonicalPath":"/agent/clawhub-dlazyai-fission-pattern","generatedAt":"2026-10-11T00:32:18.103Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T21:58:29.274Z","emptyReason":null},"description":"一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。 Skill: 一图裂变套图 Fission Pattern Owner: dlazyai Summary: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:50:02.488Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:42:57.721Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:42:51.312Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:15:47.941Z | user 例行版本更新 2026-10-02 v1.0.15 | 2026","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:fission-pattern","sourceUrl":"https://clawhub.ai/dlazyai/fission-pattern","homepage":"https://clawhub.ai/dlazyai/skills/fission-pattern","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dlazyai/fission-pattern","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dlazyai/skills/fission-pattern","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。 Skill: 一图裂变套图 Fission Pattern Owner: dlazyai Summary: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:58:29.274Z","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:58:29.274Z","emptyReason":null},"stars":null,"forks":null,"downloads":1248,"packageName":null,"latestVersion":"1.0.19","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:58:29.211Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T21:58:29.274Z","lastCrawledAt":"2026-10-10T21:58:29.211Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T21:58:29.211Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.19","createdAt":"2026-10-10T01:50:02.488Z","changelog":"例行版本更新 2026-10-10","fileCount":11,"zipByteSize":26206},{"version":"1.0.18","createdAt":"2026-10-08T01:42:57.721Z","changelog":"例行版本更新 2026-10-08","fileCount":11,"zipByteSize":26425},{"version":"1.0.17","createdAt":"2026-10-04T01:42:51.312Z","changelog":"例行版本更新 2026-10-04","fileCount":11,"zipByteSize":26249},{"version":"1.0.16","createdAt":"2026-10-02T05:15:47.941Z","changelog":"例行版本更新 2026-10-02","fileCount":11,"zipByteSize":26366},{"version":"1.0.15","createdAt":"2026-09-30T01:46:02.311Z","changelog":"例行版本更新 2026-09-30","fileCount":11,"zipByteSize":26362},{"version":"1.0.14","createdAt":"2026-09-28T02:36:07.544Z","changelog":"例行版本更新 2026-09-28","fileCount":11,"zipByteSize":26426},{"version":"1.0.13","createdAt":"2026-09-24T02:37:19.185Z","changelog":"例行版本更新 2026-09-24","fileCount":11,"zipByteSize":26556},{"version":"1.0.12","createdAt":"2026-09-22T01:40:52.014Z","changelog":"例行版本更新 2026-09-22","fileCount":11,"zipByteSize":26416}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:fission-pattern","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-fission-pattern/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-fission-pattern/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-fission-pattern/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-fission-pattern/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-fission-pattern/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-fission-pattern/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-11T00:32:18.098Z"}},"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-fission-pattern/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-fission-pattern/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-fission-pattern/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-fission-pattern/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:58:29.274Z","emptyReason":null},"readme":"Skill: 一图裂变套图 Fission Pattern\n\nOwner: dlazyai\n\nSummary: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。\n\nTags: latest:1.0.19\n\nVersion history:\n\nv1.0.19 | 2026-10-10T01:50:02.488Z | user\n\n例行版本更新 2026-10-10\n\nv1.0.18 | 2026-10-08T01:42:57.721Z | user\n\n例行版本更新 2026-10-08\n\nv1.0.17 | 2026-10-04T01:42:51.312Z | user\n\n例行版本更新 2026-10-04\n\nv1.0.16 | 2026-10-02T05:15:47.941Z | user\n\n例行版本更新 2026-10-02\n\nv1.0.15 | 2026-09-30T01:46:02.311Z | user\n\n例行版本更新 2026-09-30\n\nv1.0.14 | 2026-09-28T02:36:07.544Z | user\n\n例行版本更新 2026-09-28\n\nv1.0.13 | 2026-09-24T02:37:19.185Z | user\n\n例行版本更新 2026-09-24\n\nv1.0.12 | 2026-09-22T01:40:52.014Z | user\n\n例行版本更新 2026-09-22\n\nv1.0.11 | 2026-09-20T01:49:55.630Z | user\n\n例行版本更新 2026-09-20\n\nv1.0.10 | 2026-09-18T02:11:10.354Z | user\n\n例行版本更新 2026-09-18\n\nv1.0.9 | 2026-09-14T01:40:49.366Z | user\n\n例行版本更新 2026-09-14\n\nv1.0.8 | 2026-09-10T01:34:30.315Z | user\n\n例行版本更新 2026-09-10\n\nv1.0.7 | 2026-09-08T01:41:14.134Z | user\n\n例行版本更新 2026-09-08\n\nv1.0.6 | 2026-09-07T01:49:07.616Z | user\n\n例行版本更新 2026-09-07\n\nv1.0.5 | 2026-09-04T01:42:16.501Z | user\n\n例行版本更新 2026-09-04\n\nv1.0.4 | 2026-09-02T01:37:51.928Z | user\n\n例行版本更新 2026-09-02\n\nv1.0.3 | 2026-08-31T07:04:30.874Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.2 | 2026-08-31T05:25:25.142Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.1 | 2026-08-29T04:03:16.923Z | user\n\nSync from GitHub\n\nv1.0.0 | 2026-08-18T04:39:56.589Z | user\n\nSync from GitHub\n\nArchive index:\n\nArchive v1.0.19: 11 files, 26206 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 (1788b), SKILL.md (13429b), _meta.json (135b)\n\nFile v1.0.19:SKILL.md\n\n---\nname: fission-pattern\nversion: 1.0.19\ndescription: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。\n---\n\n# fission-pattern — 一张图裂变完整套图\n\n一张商品图 → **一整套**不同角度 / 场景 / 构图的商拍图。\n\n电商主图位通常要 5 张，详情页要十几张。本技能解决的是「只有一张图，要凑满一屏」的问题：**同一件商品，多个机位与场景，视觉识别保持一致**。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/product-watch.jpg\" width=\"280\"> |\n| `product-watch.jpg` — 黑色鳄鱼纹皮带钢壳银色太阳纹表盘手表 |\n\n实际执行的命令（套图第 2 张，其余两张只换第三段镜位）：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 2 of 3 — in-use lifestyle shot. The subject is the watch from the reference image: a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap. Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching — it must be recognisably the identical watch as the reference. Show it worn on a man wrist resting on a wooden cafe table beside a white coffee cup, dark suit sleeve and white shirt cuff visible, warm window light, shallow depth of field with a blurred cafe background. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/fission-pattern/example-output-2.jpg\n```\n\n**输出：一套三张**\n\n| 1 · 正面主图 | 2 · 场景使用图 | 3 · 细节微距图 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-1.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-2.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-3.jpg\" width=\"230\"> |\n| 蓝图纸 + 黄铜直尺，冷调侧光 | 手腕佩戴 + 咖啡桌，暖色窗光 | 表盘/刻度/表冠微距，硬光勾边 |\n\n三张的商品保真段逐字相同，只有镜位段在变。\n\n---\n\n## 1、能力边界\n\n| 模式 | 说明 |\n| --- | --- |\n| 商品套图 | 同一商品 → 正面主图 / 45 度图 / 场景使用图 / 细节微距图 / 尺寸对比图 |\n| 姿势套图 | 同一模特同一穿搭 → 正面 / 侧面 / 背面 / 走动 / 坐姿 |\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张，主视角最佳 |\n| 商品名称 | 例：`撞色长款风衣` |\n| 商品卖点 | 例：`100% 纯棉，轻盈舒适透气，法式复古撞色元素`（用于决定场景与氛围） |\n\n**不做**：不改商品的外形、颜色、材质与结构；不编造商品没有的功能卖点；不生成虚假促销信息。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 主视角 + 纯净背景 | 越干净，整套图的商品一致性越高 |\n| ✅ 卖点写具体 | `防水防汗` 会带出运动场景，`法式复古` 会带出咖啡馆场景 |\n| ✅ 商品结构完整可见 | 套图里的细节图要靠这张图推断结构 |\n| ❌ 已经带营销文字的图 | 文字会被复制到每张套图里，先用 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md) 洗干净 |\n| ❌ 商品被手/道具遮挡 | 遮住的部分在每张套图里都会不一样 |\n\n---\n\n## 3、套图配方：5 张主图位怎么排\n\n把「一套图」拆成固定的镜位清单，每张一条 prompt，**商品描述段完全复用，只换镜位段**：\n\n| # | 镜位 | 作用 | 镜位段示例 |\n| --- | --- | --- | --- |\n| 1 | 正面主图 | 搜索列表首图，要最清楚 | `straight-on hero shot filling the frame, clean seamless background, even studio light` |\n| 2 | 45 度立体图 | 交代体积与厚度 | `45-degree three-quarter angle showing depth and side profile, soft gradient background` |\n| 3 | 场景使用图 | 建立使用联想 | `in-use lifestyle shot: [场景 + 人物动作], warm window light, shallow depth of field` |\n| 4 | 细节微距图 | 证明材质与工艺 | `macro close-up of [关键工艺部位] filling the frame, hard rim light, extreme detail` |\n| 5 | 对比 / 内构图 | 交代尺寸或内部 | `[尺寸对比物 / 内部结构] shown alongside the product, top-down layout, neutral background` |\n\n**一致性的关键**：三段结构里，第一段（商品保真描述）在 5 条 prompt 里**逐字相同**，只有第三段（镜位）在变。\n\n```text\n[段1 商品保真：不变]  +  [段2 卖点氛围：不变]  +  [段3 镜位：每张不同]\n```\n\n---\n\n## 4、卖点 → 场景的映射\n\n卖点决定第 3 张场景图长什么样，别让模型自由发挥：\n\n| 卖点类型 | 场景写法 |\n| --- | --- |\n| 保暖 / 加厚 | `snowy outdoor street, breath visible, cold blue ambient with warm rim light` |\n| 透气 / 速干 | `gym or running track, dynamic mid-motion, bright daylight` |\n| 防水 / 三防 | `rainy pavement with water droplets beading on the surface, overcast light` |\n| 通勤 / 商务 | `office lobby or subway station, dark suit context, cool neutral light` |\n| 法式 / 复古 | `French cafe interior, marble table, warm window light, film colour grading` |\n| 亲肤 / 婴童 | `soft nursery bedding, pastel palette, very soft diffused light` |\n| 精密 / 工艺 | `dark navy blueprint paper with a brass ruler, cool directional side light` |\n\n**姿势套图**用的是另一组：正面站姿 / 侧身转头 / 背面回头 / 自然行走 / 坐姿——每条只换姿势段，模特与穿搭段逐字不变（写法可直接复用 [creative-scene](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/creative-scene/skill.md) 的改姿势句式）。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（套图的核心指标是**整套图里的商品是同一件**，需要最强的参考图保真；实测低价模型在多场景切换时会漂移出另一款商品）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task fission-pattern \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/fission-pattern-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/fission-pattern.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`（全套 N 条命令都传同一张） | 保证整套图的商品同源 |\n| `--size` | `1024x1536` 竖版套图；`1024x1024` 方图主图位 | 跟随平台主图规范 |\n| `--quality` | `medium` 场景图；`high` 细节微距图 | 微距图靠纹理说话 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `1`（套图靠多条 prompt，不靠 batch） | batch 只会给同一镜位多个版本 |\n| `--save` | `docs/fission-pattern/output-<sku>-<序号>.jpg` | 按套编号归档 |\n\n> **成本提示**：想压成本可换 `dlazy seedream-5.0`（单张约 1/6 价）。代价是商品保真度下降——实测在场景切换时会漂移成另一款商品，只适合对商品一致性不敏感的氛围图。\n\n### Command Examples\n\n```bash\n# basic call: 套图第 1 张（正面主图）\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 1 of 5 — hero front shot. The subject is the product in the reference image. Keep it 100% faithful: same shape, colour, material texture and structural details. Straight-on hero shot filling the frame, clean seamless background, even studio light. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 用 shell 循环一次跑完整套 5 张\nPRODUCT='a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap'\nKEEP=\"Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching.\"\ni=0\nfor SHOT in \\\n  'straight-on hero shot filling the frame, clean seamless background, even studio light' \\\n  '45-degree three-quarter angle showing depth and side profile, soft gradient background' \\\n  'in-use lifestyle shot: worn on a man wrist beside a coffee cup on a wooden cafe table, warm window light, shallow depth of field' \\\n  'macro close-up of the dial edge, applied markers and knurled crown filling the frame, hard rim light, extreme detail' \\\n  'top-down flat layout beside a brass ruler for scale, dark navy blueprint paper, cool side light'\ndo\n  i=$((i+1))\n  dlazy gpt-image-2 \\\n    --prompt \"E-commerce product photography, set image $i of 5. The subject is $PRODUCT from the reference image. $KEEP $SHOT. Photorealistic commercial product photography, no text, no watermark.\" \\\n    --images docs/fission-pattern/product-watch.jpg \\\n    --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --save docs/fission-pattern/output-sku001-$i.jpg\ndone\n\n# 先估价不真跑（乘以套图张数就是总价）\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.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## 6、Prompt 模板\n\n三段结构，前两段整套复用，第三段每张不同：\n\n```text\nE-commerce product photography, set image [N] of [总数].\n\n【段1 · 商品保真，整套逐字相同】\nThe subject is [商品名称 + 颜色 + 材质] from the reference image.\nKeep the product 100% faithful: same [外形], same [颜色], same [材质纹理],\nsame [结构细节：五金/缝线/图案/logo 位置] — it must be recognisably the identical product\nacross the whole set.\n\n【段2 · 卖点氛围，整套逐字相同】\n[从第四节表格取对应的氛围与色调描述]\n\n【段3 · 镜位，每张不同】\n[从第三节表格取镜位描述]\n\nPhotorealistic commercial product photography, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 套图里像两件不同商品 | `Cross-check against the reference image: [关键识别特征] must match exactly. Any deviation is a failure.` |\n| 场景抢了商品的戏 | `The product must occupy at least 40% of the frame and be the sharpest element; keep the environment subordinate and softly defocused.` |\n| 整套色调不统一 | `Grade the whole set consistently: [色温 + 对比度描述].` |\n| 细节图糊 | 改 `--quality high`，并追加 `resolve individual [纹理单位：yarn plies / gear teeth / leather pores]` |\n\n---\n\n## 7、执行流程\n\n1. **洗干净输入**：商品图上如有营销文字，先走 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)。\n2. **写商品保真段**：把商品的关键识别特征列全（外形 / 颜色 / 材质 / 五金 / 缝线 / logo 位置）——这段整套复用。\n3. **卖点 → 氛围段**：查第四节表格，把卖点翻译成场景与色调，整套复用。\n4. **列镜位清单**：查第三节，按平台主图位数量取 5 条（或详情页取 8~12 条）。\n5. **循环跑**：用第四节的 shell 循环，每条只换镜位段。\n6. **质检整套**：把 N 张图并排看——商品是不是同一件？色调是否统一？有没有哪张场景抢戏？\n7. **不合格的单张重跑**，不用整套重来。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 套图里的商品明显不是同一件 | 商品保真段太笼统，或用了低保真模型 | 列全关键识别特征；换 `gpt-image-2` |\n| 每张色调都不一样 | 未统一氛围段 | 氛围段整套逐字相同，并追加统一调色句 |\n| 场景太满，商品变小 | 场景描述比商品描述更长 | 追加 40% 画面占比约束句 |\n| 细节图看不出材质 | `--quality medium` | 改 `high` 并写明要解析到的纹理单位 |\n| 套图里出现了营销文字 | 输入图自带文字 | 先洗图；prompt 末尾保留 `no text, no watermark` |\n| 想出 12 张但成本太高 | 张数 × 单价 | 主图位 5 张用 `gpt-image-2`，详情页氛围图用 `seedream-5.0` 补量 |\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\": \"fission-pattern\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1791597002488\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\nTurns one product photo and its selling points into a coordinated set of ecommerce product images across angles and scenes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nEcommerce sellers and creative teams use the skill to plan and generate consistent product-image sets from a reference photo for listings and detail pages.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product photos and prompts are uploaded to the selected cloud image provider.\n\nMitigation: Avoid confidential unreleased products or personal images unless the provider is approved by your organization.\n\nRisk: Cloud image-generation requests may incur charges and require provider API keys.\n\nMitigation: Use --dry-run to review requests and estimated costs; keep API keys scoped and revocable.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/dlazyai/skills/fission-pattern)\n- [Model flags](references/model-flags.md)\n- [Provider CLI reference](references/provider-cli.md)\n- [dLazy CLI source](https://github.com/dlazy-ai/cli)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands]\n\n**Output Format:** [Markdown with inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Executed commands can save generated product-image files.]\n\n## Skill Version(s):\n\n1.0.19 (source: frontmatter and ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.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, 26425 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 (2294b), SKILL.md (13429b), _meta.json (135b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: fission-pattern\nversion: 1.0.18\ndescription: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。\n---\n\n# fission-pattern — 一张图裂变完整套图\n\n一张商品图 → **一整套**不同角度 / 场景 / 构图的商拍图。\n\n电商主图位通常要 5 张，详情页要十几张。本技能解决的是「只有一张图，要凑满一屏」的问题：**同一件商品，多个机位与场景，视觉识别保持一致**。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/product-watch.jpg\" width=\"280\"> |\n| `product-watch.jpg` — 黑色鳄鱼纹皮带钢壳银色太阳纹表盘手表 |\n\n实际执行的命令（套图第 2 张，其余两张只换第三段镜位）：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 2 of 3 — in-use lifestyle shot. The subject is the watch from the reference image: a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap. Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching — it must be recognisably the identical watch as the reference. Show it worn on a man wrist resting on a wooden cafe table beside a white coffee cup, dark suit sleeve and white shirt cuff visible, warm window light, shallow depth of field with a blurred cafe background. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/fission-pattern/example-output-2.jpg\n```\n\n**输出：一套三张**\n\n| 1 · 正面主图 | 2 · 场景使用图 | 3 · 细节微距图 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-1.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-2.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-3.jpg\" width=\"230\"> |\n| 蓝图纸 + 黄铜直尺，冷调侧光 | 手腕佩戴 + 咖啡桌，暖色窗光 | 表盘/刻度/表冠微距，硬光勾边 |\n\n三张的商品保真段逐字相同，只有镜位段在变。\n\n---\n\n## 1、能力边界\n\n| 模式 | 说明 |\n| --- | --- |\n| 商品套图 | 同一商品 → 正面主图 / 45 度图 / 场景使用图 / 细节微距图 / 尺寸对比图 |\n| 姿势套图 | 同一模特同一穿搭 → 正面 / 侧面 / 背面 / 走动 / 坐姿 |\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张，主视角最佳 |\n| 商品名称 | 例：`撞色长款风衣` |\n| 商品卖点 | 例：`100% 纯棉，轻盈舒适透气，法式复古撞色元素`（用于决定场景与氛围） |\n\n**不做**：不改商品的外形、颜色、材质与结构；不编造商品没有的功能卖点；不生成虚假促销信息。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 主视角 + 纯净背景 | 越干净，整套图的商品一致性越高 |\n| ✅ 卖点写具体 | `防水防汗` 会带出运动场景，`法式复古` 会带出咖啡馆场景 |\n| ✅ 商品结构完整可见 | 套图里的细节图要靠这张图推断结构 |\n| ❌ 已经带营销文字的图 | 文字会被复制到每张套图里，先用 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md) 洗干净 |\n| ❌ 商品被手/道具遮挡 | 遮住的部分在每张套图里都会不一样 |\n\n---\n\n## 3、套图配方：5 张主图位怎么排\n\n把「一套图」拆成固定的镜位清单，每张一条 prompt，**商品描述段完全复用，只换镜位段**：\n\n| # | 镜位 | 作用 | 镜位段示例 |\n| --- | --- | --- | --- |\n| 1 | 正面主图 | 搜索列表首图，要最清楚 | `straight-on hero shot filling the frame, clean seamless background, even studio light` |\n| 2 | 45 度立体图 | 交代体积与厚度 | `45-degree three-quarter angle showing depth and side profile, soft gradient background` |\n| 3 | 场景使用图 | 建立使用联想 | `in-use lifestyle shot: [场景 + 人物动作], warm window light, shallow depth of field` |\n| 4 | 细节微距图 | 证明材质与工艺 | `macro close-up of [关键工艺部位] filling the frame, hard rim light, extreme detail` |\n| 5 | 对比 / 内构图 | 交代尺寸或内部 | `[尺寸对比物 / 内部结构] shown alongside the product, top-down layout, neutral background` |\n\n**一致性的关键**：三段结构里，第一段（商品保真描述）在 5 条 prompt 里**逐字相同**，只有第三段（镜位）在变。\n\n```text\n[段1 商品保真：不变]  +  [段2 卖点氛围：不变]  +  [段3 镜位：每张不同]\n```\n\n---\n\n## 4、卖点 → 场景的映射\n\n卖点决定第 3 张场景图长什么样，别让模型自由发挥：\n\n| 卖点类型 | 场景写法 |\n| --- | --- |\n| 保暖 / 加厚 | `snowy outdoor street, breath visible, cold blue ambient with warm rim light` |\n| 透气 / 速干 | `gym or running track, dynamic mid-motion, bright daylight` |\n| 防水 / 三防 | `rainy pavement with water droplets beading on the surface, overcast light` |\n| 通勤 / 商务 | `office lobby or subway station, dark suit context, cool neutral light` |\n| 法式 / 复古 | `French cafe interior, marble table, warm window light, film colour grading` |\n| 亲肤 / 婴童 | `soft nursery bedding, pastel palette, very soft diffused light` |\n| 精密 / 工艺 | `dark navy blueprint paper with a brass ruler, cool directional side light` |\n\n**姿势套图**用的是另一组：正面站姿 / 侧身转头 / 背面回头 / 自然行走 / 坐姿——每条只换姿势段，模特与穿搭段逐字不变（写法可直接复用 [creative-scene](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/creative-scene/skill.md) 的改姿势句式）。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（套图的核心指标是**整套图里的商品是同一件**，需要最强的参考图保真；实测低价模型在多场景切换时会漂移出另一款商品）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task fission-pattern \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/fission-pattern-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/fission-pattern.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`（全套 N 条命令都传同一张） | 保证整套图的商品同源 |\n| `--size` | `1024x1536` 竖版套图；`1024x1024` 方图主图位 | 跟随平台主图规范 |\n| `--quality` | `medium` 场景图；`high` 细节微距图 | 微距图靠纹理说话 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `1`（套图靠多条 prompt，不靠 batch） | batch 只会给同一镜位多个版本 |\n| `--save` | `docs/fission-pattern/output-<sku>-<序号>.jpg` | 按套编号归档 |\n\n> **成本提示**：想压成本可换 `dlazy seedream-5.0`（单张约 1/6 价）。代价是商品保真度下降——实测在场景切换时会漂移成另一款商品，只适合对商品一致性不敏感的氛围图。\n\n### Command Examples\n\n```bash\n# basic call: 套图第 1 张（正面主图）\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 1 of 5 — hero front shot. The subject is the product in the reference image. Keep it 100% faithful: same shape, colour, material texture and structural details. Straight-on hero shot filling the frame, clean seamless background, even studio light. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 用 shell 循环一次跑完整套 5 张\nPRODUCT='a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap'\nKEEP=\"Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching.\"\ni=0\nfor SHOT in \\\n  'straight-on hero shot filling the frame, clean seamless background, even studio light' \\\n  '45-degree three-quarter angle showing depth and side profile, soft gradient background' \\\n  'in-use lifestyle shot: worn on a man wrist beside a coffee cup on a wooden cafe table, warm window light, shallow depth of field' \\\n  'macro close-up of the dial edge, applied markers and knurled crown filling the frame, hard rim light, extreme detail' \\\n  'top-down flat layout beside a brass ruler for scale, dark navy blueprint paper, cool side light'\ndo\n  i=$((i+1))\n  dlazy gpt-image-2 \\\n    --prompt \"E-commerce product photography, set image $i of 5. The subject is $PRODUCT from the reference image. $KEEP $SHOT. Photorealistic commercial product photography, no text, no watermark.\" \\\n    --images docs/fission-pattern/product-watch.jpg \\\n    --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --save docs/fission-pattern/output-sku001-$i.jpg\ndone\n\n# 先估价不真跑（乘以套图张数就是总价）\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.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## 6、Prompt 模板\n\n三段结构，前两段整套复用，第三段每张不同：\n\n```text\nE-commerce product photography, set image [N] of [总数].\n\n【段1 · 商品保真，整套逐字相同】\nThe subject is [商品名称 + 颜色 + 材质] from the reference image.\nKeep the product 100% faithful: same [外形], same [颜色], same [材质纹理],\nsame [结构细节：五金/缝线/图案/logo 位置] — it must be recognisably the identical product\nacross the whole set.\n\n【段2 · 卖点氛围，整套逐字相同】\n[从第四节表格取对应的氛围与色调描述]\n\n【段3 · 镜位，每张不同】\n[从第三节表格取镜位描述]\n\nPhotorealistic commercial product photography, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 套图里像两件不同商品 | `Cross-check against the reference image: [关键识别特征] must match exactly. Any deviation is a failure.` |\n| 场景抢了商品的戏 | `The product must occupy at least 40% of the frame and be the sharpest element; keep the environment subordinate and softly defocused.` |\n| 整套色调不统一 | `Grade the whole set consistently: [色温 + 对比度描述].` |\n| 细节图糊 | 改 `--quality high`，并追加 `resolve individual [纹理单位：yarn plies / gear teeth / leather pores]` |\n\n---\n\n## 7、执行流程\n\n1. **洗干净输入**：商品图上如有营销文字，先走 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)。\n2. **写商品保真段**：把商品的关键识别特征列全（外形 / 颜色 / 材质 / 五金 / 缝线 / logo 位置）——这段整套复用。\n3. **卖点 → 氛围段**：查第四节表格，把卖点翻译成场景与色调，整套复用。\n4. **列镜位清单**：查第三节，按平台主图位数量取 5 条（或详情页取 8~12 条）。\n5. **循环跑**：用第四节的 shell 循环，每条只换镜位段。\n6. **质检整套**：把 N 张图并排看——商品是不是同一件？色调是否统一？有没有哪张场景抢戏？\n7. **不合格的单张重跑**，不用整套重来。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 套图里的商品明显不是同一件 | 商品保真段太笼统，或用了低保真模型 | 列全关键识别特征；换 `gpt-image-2` |\n| 每张色调都不一样 | 未统一氛围段 | 氛围段整套逐字相同，并追加统一调色句 |\n| 场景太满，商品变小 | 场景描述比商品描述更长 | 追加 40% 画面占比约束句 |\n| 细节图看不出材质 | `--quality medium` | 改 `high` 并写明要解析到的纹理单位 |\n| 套图里出现了营销文字 | 输入图自带文字 | 先洗图；prompt 末尾保留 `no text, no watermark` |\n| 想出 12 张但成本太高 | 张数 × 单价 | 主图位 5 张用 `gpt-image-2`，详情页氛围图用 `seedream-5.0` 补量 |\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\": \"fission-pattern\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791423777721\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 one product reference image and its selling points into a coordinated set of e-commerce images with varied angles and scenes.\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 a single product photo and stated selling points to plan and generate coordinated hero, lifestyle, detail, and comparison images for listings or product pages.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product prompts and reference images are sent to the selected external image provider or dLazy.\n\nMitigation: Use only images you are comfortable sharing with that provider and check its data handling before running.\n\nRisk: Generating multiple images may incur unexpected request costs or overwrite assets at chosen paths.\n\nMitigation: Run dry-run to review requests and estimated cost, then choose explicit output paths.\n\nRisk: Generated images may drift from the original product or imply unsupported claims; watermark-removal guidance can affect rights-managed content.\n\nMitigation: Review the complete set against the source product and claims, and edit watermarks only on content you own or have permission to modify.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/fission-pattern)\n- [Image model options](references/model-flags.md)\n- [Provider setup and data flow](references/provider-cli.md)\n- [dLazy CLI source](https://github.com/dlazy-ai/cli)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Image files]\n\n**Output Format:** [Markdown guidance and commands; generated images saved as JPEG files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generates a coordinated multi-image set, typically five listing images; image generation uses a selected external provider.]\n\n## Skill Version(s):\n\n1.0.18 (source: release evidence and skill 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, 26249 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 (1917b), SKILL.md (13429b), _meta.json (135b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: fission-pattern\nversion: 1.0.17\ndescription: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。\n---\n\n# fission-pattern — 一张图裂变完整套图\n\n一张商品图 → **一整套**不同角度 / 场景 / 构图的商拍图。\n\n电商主图位通常要 5 张，详情页要十几张。本技能解决的是「只有一张图，要凑满一屏」的问题：**同一件商品，多个机位与场景，视觉识别保持一致**。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/product-watch.jpg\" width=\"280\"> |\n| `product-watch.jpg` — 黑色鳄鱼纹皮带钢壳银色太阳纹表盘手表 |\n\n实际执行的命令（套图第 2 张，其余两张只换第三段镜位）：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 2 of 3 — in-use lifestyle shot. The subject is the watch from the reference image: a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap. Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching — it must be recognisably the identical watch as the reference. Show it worn on a man wrist resting on a wooden cafe table beside a white coffee cup, dark suit sleeve and white shirt cuff visible, warm window light, shallow depth of field with a blurred cafe background. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/fission-pattern/example-output-2.jpg\n```\n\n**输出：一套三张**\n\n| 1 · 正面主图 | 2 · 场景使用图 | 3 · 细节微距图 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-1.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-2.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-3.jpg\" width=\"230\"> |\n| 蓝图纸 + 黄铜直尺，冷调侧光 | 手腕佩戴 + 咖啡桌，暖色窗光 | 表盘/刻度/表冠微距，硬光勾边 |\n\n三张的商品保真段逐字相同，只有镜位段在变。\n\n---\n\n## 1、能力边界\n\n| 模式 | 说明 |\n| --- | --- |\n| 商品套图 | 同一商品 → 正面主图 / 45 度图 / 场景使用图 / 细节微距图 / 尺寸对比图 |\n| 姿势套图 | 同一模特同一穿搭 → 正面 / 侧面 / 背面 / 走动 / 坐姿 |\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张，主视角最佳 |\n| 商品名称 | 例：`撞色长款风衣` |\n| 商品卖点 | 例：`100% 纯棉，轻盈舒适透气，法式复古撞色元素`（用于决定场景与氛围） |\n\n**不做**：不改商品的外形、颜色、材质与结构；不编造商品没有的功能卖点；不生成虚假促销信息。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 主视角 + 纯净背景 | 越干净，整套图的商品一致性越高 |\n| ✅ 卖点写具体 | `防水防汗` 会带出运动场景，`法式复古` 会带出咖啡馆场景 |\n| ✅ 商品结构完整可见 | 套图里的细节图要靠这张图推断结构 |\n| ❌ 已经带营销文字的图 | 文字会被复制到每张套图里，先用 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md) 洗干净 |\n| ❌ 商品被手/道具遮挡 | 遮住的部分在每张套图里都会不一样 |\n\n---\n\n## 3、套图配方：5 张主图位怎么排\n\n把「一套图」拆成固定的镜位清单，每张一条 prompt，**商品描述段完全复用，只换镜位段**：\n\n| # | 镜位 | 作用 | 镜位段示例 |\n| --- | --- | --- | --- |\n| 1 | 正面主图 | 搜索列表首图，要最清楚 | `straight-on hero shot filling the frame, clean seamless background, even studio light` |\n| 2 | 45 度立体图 | 交代体积与厚度 | `45-degree three-quarter angle showing depth and side profile, soft gradient background` |\n| 3 | 场景使用图 | 建立使用联想 | `in-use lifestyle shot: [场景 + 人物动作], warm window light, shallow depth of field` |\n| 4 | 细节微距图 | 证明材质与工艺 | `macro close-up of [关键工艺部位] filling the frame, hard rim light, extreme detail` |\n| 5 | 对比 / 内构图 | 交代尺寸或内部 | `[尺寸对比物 / 内部结构] shown alongside the product, top-down layout, neutral background` |\n\n**一致性的关键**：三段结构里，第一段（商品保真描述）在 5 条 prompt 里**逐字相同**，只有第三段（镜位）在变。\n\n```text\n[段1 商品保真：不变]  +  [段2 卖点氛围：不变]  +  [段3 镜位：每张不同]\n```\n\n---\n\n## 4、卖点 → 场景的映射\n\n卖点决定第 3 张场景图长什么样，别让模型自由发挥：\n\n| 卖点类型 | 场景写法 |\n| --- | --- |\n| 保暖 / 加厚 | `snowy outdoor street, breath visible, cold blue ambient with warm rim light` |\n| 透气 / 速干 | `gym or running track, dynamic mid-motion, bright daylight` |\n| 防水 / 三防 | `rainy pavement with water droplets beading on the surface, overcast light` |\n| 通勤 / 商务 | `office lobby or subway station, dark suit context, cool neutral light` |\n| 法式 / 复古 | `French cafe interior, marble table, warm window light, film colour grading` |\n| 亲肤 / 婴童 | `soft nursery bedding, pastel palette, very soft diffused light` |\n| 精密 / 工艺 | `dark navy blueprint paper with a brass ruler, cool directional side light` |\n\n**姿势套图**用的是另一组：正面站姿 / 侧身转头 / 背面回头 / 自然行走 / 坐姿——每条只换姿势段，模特与穿搭段逐字不变（写法可直接复用 [creative-scene](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/creative-scene/skill.md) 的改姿势句式）。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（套图的核心指标是**整套图里的商品是同一件**，需要最强的参考图保真；实测低价模型在多场景切换时会漂移出另一款商品）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task fission-pattern \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/fission-pattern-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/fission-pattern.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`（全套 N 条命令都传同一张） | 保证整套图的商品同源 |\n| `--size` | `1024x1536` 竖版套图；`1024x1024` 方图主图位 | 跟随平台主图规范 |\n| `--quality` | `medium` 场景图；`high` 细节微距图 | 微距图靠纹理说话 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `1`（套图靠多条 prompt，不靠 batch） | batch 只会给同一镜位多个版本 |\n| `--save` | `docs/fission-pattern/output-<sku>-<序号>.jpg` | 按套编号归档 |\n\n> **成本提示**：想压成本可换 `dlazy seedream-5.0`（单张约 1/6 价）。代价是商品保真度下降——实测在场景切换时会漂移成另一款商品，只适合对商品一致性不敏感的氛围图。\n\n### Command Examples\n\n```bash\n# basic call: 套图第 1 张（正面主图）\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 1 of 5 — hero front shot. The subject is the product in the reference image. Keep it 100% faithful: same shape, colour, material texture and structural details. Straight-on hero shot filling the frame, clean seamless background, even studio light. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 用 shell 循环一次跑完整套 5 张\nPRODUCT='a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap'\nKEEP=\"Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching.\"\ni=0\nfor SHOT in \\\n  'straight-on hero shot filling the frame, clean seamless background, even studio light' \\\n  '45-degree three-quarter angle showing depth and side profile, soft gradient background' \\\n  'in-use lifestyle shot: worn on a man wrist beside a coffee cup on a wooden cafe table, warm window light, shallow depth of field' \\\n  'macro close-up of the dial edge, applied markers and knurled crown filling the frame, hard rim light, extreme detail' \\\n  'top-down flat layout beside a brass ruler for scale, dark navy blueprint paper, cool side light'\ndo\n  i=$((i+1))\n  dlazy gpt-image-2 \\\n    --prompt \"E-commerce product photography, set image $i of 5. The subject is $PRODUCT from the reference image. $KEEP $SHOT. Photorealistic commercial product photography, no text, no watermark.\" \\\n    --images docs/fission-pattern/product-watch.jpg \\\n    --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --save docs/fission-pattern/output-sku001-$i.jpg\ndone\n\n# 先估价不真跑（乘以套图张数就是总价）\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.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## 6、Prompt 模板\n\n三段结构，前两段整套复用，第三段每张不同：\n\n```text\nE-commerce product photography, set image [N] of [总数].\n\n【段1 · 商品保真，整套逐字相同】\nThe subject is [商品名称 + 颜色 + 材质] from the reference image.\nKeep the product 100% faithful: same [外形], same [颜色], same [材质纹理],\nsame [结构细节：五金/缝线/图案/logo 位置] — it must be recognisably the identical product\nacross the whole set.\n\n【段2 · 卖点氛围，整套逐字相同】\n[从第四节表格取对应的氛围与色调描述]\n\n【段3 · 镜位，每张不同】\n[从第三节表格取镜位描述]\n\nPhotorealistic commercial product photography, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 套图里像两件不同商品 | `Cross-check against the reference image: [关键识别特征] must match exactly. Any deviation is a failure.` |\n| 场景抢了商品的戏 | `The product must occupy at least 40% of the frame and be the sharpest element; keep the environment subordinate and softly defocused.` |\n| 整套色调不统一 | `Grade the whole set consistently: [色温 + 对比度描述].` |\n| 细节图糊 | 改 `--quality high`，并追加 `resolve individual [纹理单位：yarn plies / gear teeth / leather pores]` |\n\n---\n\n## 7、执行流程\n\n1. **洗干净输入**：商品图上如有营销文字，先走 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)。\n2. **写商品保真段**：把商品的关键识别特征列全（外形 / 颜色 / 材质 / 五金 / 缝线 / logo 位置）——这段整套复用。\n3. **卖点 → 氛围段**：查第四节表格，把卖点翻译成场景与色调，整套复用。\n4. **列镜位清单**：查第三节，按平台主图位数量取 5 条（或详情页取 8~12 条）。\n5. **循环跑**：用第四节的 shell 循环，每条只换镜位段。\n6. **质检整套**：把 N 张图并排看——商品是不是同一件？色调是否统一？有没有哪张场景抢戏？\n7. **不合格的单张重跑**，不用整套重来。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 套图里的商品明显不是同一件 | 商品保真段太笼统，或用了低保真模型 | 列全关键识别特征；换 `gpt-image-2` |\n| 每张色调都不一样 | 未统一氛围段 | 氛围段整套逐字相同，并追加统一调色句 |\n| 场景太满，商品变小 | 场景描述比商品描述更长 | 追加 40% 画面占比约束句 |\n| 细节图看不出材质 | `--quality medium` | 改 `high` 并写明要解析到的纹理单位 |\n| 套图里出现了营销文字 | 输入图自带文字 | 先洗图；prompt 末尾保留 `no text, no watermark` |\n| 想出 12 张但成本太高 | 张数 × 单价 | 主图位 5 张用 `gpt-image-2`，详情页氛围图用 `seedream-5.0` 补量 |\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\": \"fission-pattern\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1791078171312\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 a product photo and selling points into a coordinated set of e-commerce images from multiple angles and scenes.\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 this skill to turn one product photo into a consistent set of listing and detail-page images with varied angles, settings, and close-ups.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product prompts and reference images are sent to the selected cloud image provider.\n\nMitigation: Use only an approved provider for confidential or customer-identifying images; otherwise avoid submitting sensitive images.\n\nRisk: Image generation may incur charges, and results may misrepresent product details.\n\nMitigation: Check the destination and estimated cost with dry-run before generating, then review the images against the original product before publication.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/fission-pattern)\n- [Image model options](artifact/references/model-flags.md)\n- [Provider and CLI guide](artifact/references/provider-cli.md)\n\n## Skill Output:\n\n**Output Type(s):** [Images, Text, Shell commands]\n\n**Output Format:** [JPEG image files with prompt and command guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces a coordinated series of product views; users can review and regenerate individual images.]\n\n## Skill Version(s):\n\n1.0.17 (source: skill frontmatter and ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.17:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.16: 11 files, 26366 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 (2263b), SKILL.md (13429b), _meta.json (135b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: fission-pattern\nversion: 1.0.16\ndescription: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。\n---\n\n# fission-pattern — 一张图裂变完整套图\n\n一张商品图 → **一整套**不同角度 / 场景 / 构图的商拍图。\n\n电商主图位通常要 5 张，详情页要十几张。本技能解决的是「只有一张图，要凑满一屏」的问题：**同一件商品，多个机位与场景，视觉识别保持一致**。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/product-watch.jpg\" width=\"280\"> |\n| `product-watch.jpg` — 黑色鳄鱼纹皮带钢壳银色太阳纹表盘手表 |\n\n实际执行的命令（套图第 2 张，其余两张只换第三段镜位）：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 2 of 3 — in-use lifestyle shot. The subject is the watch from the reference image: a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap. Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching — it must be recognisably the identical watch as the reference. Show it worn on a man wrist resting on a wooden cafe table beside a white coffee cup, dark suit sleeve and white shirt cuff visible, warm window light, shallow depth of field with a blurred cafe background. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/fission-pattern/example-output-2.jpg\n```\n\n**输出：一套三张**\n\n| 1 · 正面主图 | 2 · 场景使用图 | 3 · 细节微距图 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-1.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-2.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-3.jpg\" width=\"230\"> |\n| 蓝图纸 + 黄铜直尺，冷调侧光 | 手腕佩戴 + 咖啡桌，暖色窗光 | 表盘/刻度/表冠微距，硬光勾边 |\n\n三张的商品保真段逐字相同，只有镜位段在变。\n\n---\n\n## 1、能力边界\n\n| 模式 | 说明 |\n| --- | --- |\n| 商品套图 | 同一商品 → 正面主图 / 45 度图 / 场景使用图 / 细节微距图 / 尺寸对比图 |\n| 姿势套图 | 同一模特同一穿搭 → 正面 / 侧面 / 背面 / 走动 / 坐姿 |\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张，主视角最佳 |\n| 商品名称 | 例：`撞色长款风衣` |\n| 商品卖点 | 例：`100% 纯棉，轻盈舒适透气，法式复古撞色元素`（用于决定场景与氛围） |\n\n**不做**：不改商品的外形、颜色、材质与结构；不编造商品没有的功能卖点；不生成虚假促销信息。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 主视角 + 纯净背景 | 越干净，整套图的商品一致性越高 |\n| ✅ 卖点写具体 | `防水防汗` 会带出运动场景，`法式复古` 会带出咖啡馆场景 |\n| ✅ 商品结构完整可见 | 套图里的细节图要靠这张图推断结构 |\n| ❌ 已经带营销文字的图 | 文字会被复制到每张套图里，先用 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md) 洗干净 |\n| ❌ 商品被手/道具遮挡 | 遮住的部分在每张套图里都会不一样 |\n\n---\n\n## 3、套图配方：5 张主图位怎么排\n\n把「一套图」拆成固定的镜位清单，每张一条 prompt，**商品描述段完全复用，只换镜位段**：\n\n| # | 镜位 | 作用 | 镜位段示例 |\n| --- | --- | --- | --- |\n| 1 | 正面主图 | 搜索列表首图，要最清楚 | `straight-on hero shot filling the frame, clean seamless background, even studio light` |\n| 2 | 45 度立体图 | 交代体积与厚度 | `45-degree three-quarter angle showing depth and side profile, soft gradient background` |\n| 3 | 场景使用图 | 建立使用联想 | `in-use lifestyle shot: [场景 + 人物动作], warm window light, shallow depth of field` |\n| 4 | 细节微距图 | 证明材质与工艺 | `macro close-up of [关键工艺部位] filling the frame, hard rim light, extreme detail` |\n| 5 | 对比 / 内构图 | 交代尺寸或内部 | `[尺寸对比物 / 内部结构] shown alongside the product, top-down layout, neutral background` |\n\n**一致性的关键**：三段结构里，第一段（商品保真描述）在 5 条 prompt 里**逐字相同**，只有第三段（镜位）在变。\n\n```text\n[段1 商品保真：不变]  +  [段2 卖点氛围：不变]  +  [段3 镜位：每张不同]\n```\n\n---\n\n## 4、卖点 → 场景的映射\n\n卖点决定第 3 张场景图长什么样，别让模型自由发挥：\n\n| 卖点类型 | 场景写法 |\n| --- | --- |\n| 保暖 / 加厚 | `snowy outdoor street, breath visible, cold blue ambient with warm rim light` |\n| 透气 / 速干 | `gym or running track, dynamic mid-motion, bright daylight` |\n| 防水 / 三防 | `rainy pavement with water droplets beading on the surface, overcast light` |\n| 通勤 / 商务 | `office lobby or subway station, dark suit context, cool neutral light` |\n| 法式 / 复古 | `French cafe interior, marble table, warm window light, film colour grading` |\n| 亲肤 / 婴童 | `soft nursery bedding, pastel palette, very soft diffused light` |\n| 精密 / 工艺 | `dark navy blueprint paper with a brass ruler, cool directional side light` |\n\n**姿势套图**用的是另一组：正面站姿 / 侧身转头 / 背面回头 / 自然行走 / 坐姿——每条只换姿势段，模特与穿搭段逐字不变（写法可直接复用 [creative-scene](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/creative-scene/skill.md) 的改姿势句式）。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（套图的核心指标是**整套图里的商品是同一件**，需要最强的参考图保真；实测低价模型在多场景切换时会漂移出另一款商品）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task fission-pattern \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/fission-pattern-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/fission-pattern.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`（全套 N 条命令都传同一张） | 保证整套图的商品同源 |\n| `--size` | `1024x1536` 竖版套图；`1024x1024` 方图主图位 | 跟随平台主图规范 |\n| `--quality` | `medium` 场景图；`high` 细节微距图 | 微距图靠纹理说话 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `1`（套图靠多条 prompt，不靠 batch） | batch 只会给同一镜位多个版本 |\n| `--save` | `docs/fission-pattern/output-<sku>-<序号>.jpg` | 按套编号归档 |\n\n> **成本提示**：想压成本可换 `dlazy seedream-5.0`（单张约 1/6 价）。代价是商品保真度下降——实测在场景切换时会漂移成另一款商品，只适合对商品一致性不敏感的氛围图。\n\n### Command Examples\n\n```bash\n# basic call: 套图第 1 张（正面主图）\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 1 of 5 — hero front shot. The subject is the product in the reference image. Keep it 100% faithful: same shape, colour, material texture and structural details. Straight-on hero shot filling the frame, clean seamless background, even studio light. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 用 shell 循环一次跑完整套 5 张\nPRODUCT='a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap'\nKEEP=\"Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching.\"\ni=0\nfor SHOT in \\\n  'straight-on hero shot filling the frame, clean seamless background, even studio light' \\\n  '45-degree three-quarter angle showing depth and side profile, soft gradient background' \\\n  'in-use lifestyle shot: worn on a man wrist beside a coffee cup on a wooden cafe table, warm window light, shallow depth of field' \\\n  'macro close-up of the dial edge, applied markers and knurled crown filling the frame, hard rim light, extreme detail' \\\n  'top-down flat layout beside a brass ruler for scale, dark navy blueprint paper, cool side light'\ndo\n  i=$((i+1))\n  dlazy gpt-image-2 \\\n    --prompt \"E-commerce product photography, set image $i of 5. The subject is $PRODUCT from the reference image. $KEEP $SHOT. Photorealistic commercial product photography, no text, no watermark.\" \\\n    --images docs/fission-pattern/product-watch.jpg \\\n    --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --save docs/fission-pattern/output-sku001-$i.jpg\ndone\n\n# 先估价不真跑（乘以套图张数就是总价）\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.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## 6、Prompt 模板\n\n三段结构，前两段整套复用，第三段每张不同：\n\n```text\nE-commerce product photography, set image [N] of [总数].\n\n【段1 · 商品保真，整套逐字相同】\nThe subject is [商品名称 + 颜色 + 材质] from the reference image.\nKeep the product 100% faithful: same [外形], same [颜色], same [材质纹理],\nsame [结构细节：五金/缝线/图案/logo 位置] — it must be recognisably the identical product\nacross the whole set.\n\n【段2 · 卖点氛围，整套逐字相同】\n[从第四节表格取对应的氛围与色调描述]\n\n【段3 · 镜位，每张不同】\n[从第三节表格取镜位描述]\n\nPhotorealistic commercial product photography, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 套图里像两件不同商品 | `Cross-check against the reference image: [关键识别特征] must match exactly. Any deviation is a failure.` |\n| 场景抢了商品的戏 | `The product must occupy at least 40% of the frame and be the sharpest element; keep the environment subordinate and softly defocused.` |\n| 整套色调不统一 | `Grade the whole set consistently: [色温 + 对比度描述].` |\n| 细节图糊 | 改 `--quality high`，并追加 `resolve individual [纹理单位：yarn plies / gear teeth / leather pores]` |\n\n---\n\n## 7、执行流程\n\n1. **洗干净输入**：商品图上如有营销文字，先走 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)。\n2. **写商品保真段**：把商品的关键识别特征列全（外形 / 颜色 / 材质 / 五金 / 缝线 / logo 位置）——这段整套复用。\n3. **卖点 → 氛围段**：查第四节表格，把卖点翻译成场景与色调，整套复用。\n4. **列镜位清单**：查第三节，按平台主图位数量取 5 条（或详情页取 8~12 条）。\n5. **循环跑**：用第四节的 shell 循环，每条只换镜位段。\n6. **质检整套**：把 N 张图并排看——商品是不是同一件？色调是否统一？有没有哪张场景抢戏？\n7. **不合格的单张重跑**，不用整套重来。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 套图里的商品明显不是同一件 | 商品保真段太笼统，或用了低保真模型 | 列全关键识别特征；换 `gpt-image-2` |\n| 每张色调都不一样 | 未统一氛围段 | 氛围段整套逐字相同，并追加统一调色句 |\n| 场景太满，商品变小 | 场景描述比商品描述更长 | 追加 40% 画面占比约束句 |\n| 细节图看不出材质 | `--quality medium` | 改 `high` 并写明要解析到的纹理单位 |\n| 套图里出现了营销文字 | 输入图自带文字 | 先洗图；prompt 末尾保留 `no text, no watermark` |\n| 想出 12 张但成本太高 | 张数 × 单价 | 主图位 5 张用 `gpt-image-2`，详情页氛围图用 `seedream-5.0` 补量 |\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\": \"fission-pattern\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1790918147941\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 a reference product image and selling points into prompts and commands for a consistent set of e-commerce product images.\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 content creators use the skill to plan and generate multiple product views and lifestyle scenes from a reference image while keeping product details consistent.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts and selected product or reference images are sent to the configured image provider.\n\nMitigation: Use an approved provider and avoid private or sensitive images unless that provider is authorized to process them.\n\nRisk: Generating a multi-image set can incur repeated provider charges.\n\nMitigation: Use dry-run to review requests and estimated costs before generating the set.\n\nRisk: Generated views may misrepresent product details or introduce unsupported claims.\n\nMitigation: Compare each generated image against the reference and supplied selling points before publication; regenerate inaccurate images.\n\nRisk: Provider API keys grant access to paid image-generation services.\n\nMitigation: Keep keys scoped and revocable, and do not include them in prompts or shared files.\n\n## Reference(s):\n\n- [Fission Pattern release](https://clawhub.ai/dlazyai/skills/fission-pattern)\n- [Provider CLI reference](references/provider-cli.md)\n- [Image model flags](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with image-generation prompts and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Commands can save generated product images locally; image format, dimensions and quality are configurable.]\n\n## Skill Version(s):\n\n1.0.16 (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.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, 26362 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 (1911b), SKILL.md (13429b), _meta.json (135b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: fission-pattern\nversion: 1.0.15\ndescription: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。\n---\n\n# fission-pattern — 一张图裂变完整套图\n\n一张商品图 → **一整套**不同角度 / 场景 / 构图的商拍图。\n\n电商主图位通常要 5 张，详情页要十几张。本技能解决的是「只有一张图，要凑满一屏」的问题：**同一件商品，多个机位与场景，视觉识别保持一致**。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/product-watch.jpg\" width=\"280\"> |\n| `product-watch.jpg` — 黑色鳄鱼纹皮带钢壳银色太阳纹表盘手表 |\n\n实际执行的命令（套图第 2 张，其余两张只换第三段镜位）：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 2 of 3 — in-use lifestyle shot. The subject is the watch from the reference image: a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap. Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching — it must be recognisably the identical watch as the reference. Show it worn on a man wrist resting on a wooden cafe table beside a white coffee cup, dark suit sleeve and white shirt cuff visible, warm window light, shallow depth of field with a blurred cafe background. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/fission-pattern/example-output-2.jpg\n```\n\n**输出：一套三张**\n\n| 1 · 正面主图 | 2 · 场景使用图 | 3 · 细节微距图 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-1.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-2.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-3.jpg\" width=\"230\"> |\n| 蓝图纸 + 黄铜直尺，冷调侧光 | 手腕佩戴 + 咖啡桌，暖色窗光 | 表盘/刻度/表冠微距，硬光勾边 |\n\n三张的商品保真段逐字相同，只有镜位段在变。\n\n---\n\n## 1、能力边界\n\n| 模式 | 说明 |\n| --- | --- |\n| 商品套图 | 同一商品 → 正面主图 / 45 度图 / 场景使用图 / 细节微距图 / 尺寸对比图 |\n| 姿势套图 | 同一模特同一穿搭 → 正面 / 侧面 / 背面 / 走动 / 坐姿 |\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张，主视角最佳 |\n| 商品名称 | 例：`撞色长款风衣` |\n| 商品卖点 | 例：`100% 纯棉，轻盈舒适透气，法式复古撞色元素`（用于决定场景与氛围） |\n\n**不做**：不改商品的外形、颜色、材质与结构；不编造商品没有的功能卖点；不生成虚假促销信息。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 主视角 + 纯净背景 | 越干净，整套图的商品一致性越高 |\n| ✅ 卖点写具体 | `防水防汗` 会带出运动场景，`法式复古` 会带出咖啡馆场景 |\n| ✅ 商品结构完整可见 | 套图里的细节图要靠这张图推断结构 |\n| ❌ 已经带营销文字的图 | 文字会被复制到每张套图里，先用 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md) 洗干净 |\n| ❌ 商品被手/道具遮挡 | 遮住的部分在每张套图里都会不一样 |\n\n---\n\n## 3、套图配方：5 张主图位怎么排\n\n把「一套图」拆成固定的镜位清单，每张一条 prompt，**商品描述段完全复用，只换镜位段**：\n\n| # | 镜位 | 作用 | 镜位段示例 |\n| --- | --- | --- | --- |\n| 1 | 正面主图 | 搜索列表首图，要最清楚 | `straight-on hero shot filling the frame, clean seamless background, even studio light` |\n| 2 | 45 度立体图 | 交代体积与厚度 | `45-degree three-quarter angle showing depth and side profile, soft gradient background` |\n| 3 | 场景使用图 | 建立使用联想 | `in-use lifestyle shot: [场景 + 人物动作], warm window light, shallow depth of field` |\n| 4 | 细节微距图 | 证明材质与工艺 | `macro close-up of [关键工艺部位] filling the frame, hard rim light, extreme detail` |\n| 5 | 对比 / 内构图 | 交代尺寸或内部 | `[尺寸对比物 / 内部结构] shown alongside the product, top-down layout, neutral background` |\n\n**一致性的关键**：三段结构里，第一段（商品保真描述）在 5 条 prompt 里**逐字相同**，只有第三段（镜位）在变。\n\n```text\n[段1 商品保真：不变]  +  [段2 卖点氛围：不变]  +  [段3 镜位：每张不同]\n```\n\n---\n\n## 4、卖点 → 场景的映射\n\n卖点决定第 3 张场景图长什么样，别让模型自由发挥：\n\n| 卖点类型 | 场景写法 |\n| --- | --- |\n| 保暖 / 加厚 | `snowy outdoor street, breath visible, cold blue ambient with warm rim light` |\n| 透气 / 速干 | `gym or running track, dynamic mid-motion, bright daylight` |\n| 防水 / 三防 | `rainy pavement with water droplets beading on the surface, overcast light` |\n| 通勤 / 商务 | `office lobby or subway station, dark suit context, cool neutral light` |\n| 法式 / 复古 | `French cafe interior, marble table, warm window light, film colour grading` |\n| 亲肤 / 婴童 | `soft nursery bedding, pastel palette, very soft diffused light` |\n| 精密 / 工艺 | `dark navy blueprint paper with a brass ruler, cool directional side light` |\n\n**姿势套图**用的是另一组：正面站姿 / 侧身转头 / 背面回头 / 自然行走 / 坐姿——每条只换姿势段，模特与穿搭段逐字不变（写法可直接复用 [creative-scene](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/creative-scene/skill.md) 的改姿势句式）。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（套图的核心指标是**整套图里的商品是同一件**，需要最强的参考图保真；实测低价模型在多场景切换时会漂移出另一款商品）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task fission-pattern \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/fission-pattern-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/fission-pattern.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`（全套 N 条命令都传同一张） | 保证整套图的商品同源 |\n| `--size` | `1024x1536` 竖版套图；`1024x1024` 方图主图位 | 跟随平台主图规范 |\n| `--quality` | `medium` 场景图；`high` 细节微距图 | 微距图靠纹理说话 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `1`（套图靠多条 prompt，不靠 batch） | batch 只会给同一镜位多个版本 |\n| `--save` | `docs/fission-pattern/output-<sku>-<序号>.jpg` | 按套编号归档 |\n\n> **成本提示**：想压成本可换 `dlazy seedream-5.0`（单张约 1/6 价）。代价是商品保真度下降——实测在场景切换时会漂移成另一款商品，只适合对商品一致性不敏感的氛围图。\n\n### Command Examples\n\n```bash\n# basic call: 套图第 1 张（正面主图）\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 1 of 5 — hero front shot. The subject is the product in the reference image. Keep it 100% faithful: same shape, colour, material texture and structural details. Straight-on hero shot filling the frame, clean seamless background, even studio light. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 用 shell 循环一次跑完整套 5 张\nPRODUCT='a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap'\nKEEP=\"Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching.\"\ni=0\nfor SHOT in \\\n  'straight-on hero shot filling the frame, clean seamless background, even studio light' \\\n  '45-degree three-quarter angle showing depth and side profile, soft gradient background' \\\n  'in-use lifestyle shot: worn on a man wrist beside a coffee cup on a wooden cafe table, warm window light, shallow depth of field' \\\n  'macro close-up of the dial edge, applied markers and knurled crown filling the frame, hard rim light, extreme detail' \\\n  'top-down flat layout beside a brass ruler for scale, dark navy blueprint paper, cool side light'\ndo\n  i=$((i+1))\n  dlazy gpt-image-2 \\\n    --prompt \"E-commerce product photography, set image $i of 5. The subject is $PRODUCT from the reference image. $KEEP $SHOT. Photorealistic commercial product photography, no text, no watermark.\" \\\n    --images docs/fission-pattern/product-watch.jpg \\\n    --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --save docs/fission-pattern/output-sku001-$i.jpg\ndone\n\n# 先估价不真跑（乘以套图张数就是总价）\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.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## 6、Prompt 模板\n\n三段结构，前两段整套复用，第三段每张不同：\n\n```text\nE-commerce product photography, set image [N] of [总数].\n\n【段1 · 商品保真，整套逐字相同】\nThe subject is [商品名称 + 颜色 + 材质] from the reference image.\nKeep the product 100% faithful: same [外形], same [颜色], same [材质纹理],\nsame [结构细节：五金/缝线/图案/logo 位置] — it must be recognisably the identical product\nacross the whole set.\n\n【段2 · 卖点氛围，整套逐字相同】\n[从第四节表格取对应的氛围与色调描述]\n\n【段3 · 镜位，每张不同】\n[从第三节表格取镜位描述]\n\nPhotorealistic commercial product photography, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 套图里像两件不同商品 | `Cross-check against the reference image: [关键识别特征] must match exactly. Any deviation is a failure.` |\n| 场景抢了商品的戏 | `The product must occupy at least 40% of the frame and be the sharpest element; keep the environment subordinate and softly defocused.` |\n| 整套色调不统一 | `Grade the whole set consistently: [色温 + 对比度描述].` |\n| 细节图糊 | 改 `--quality high`，并追加 `resolve individual [纹理单位：yarn plies / gear teeth / leather pores]` |\n\n---\n\n## 7、执行流程\n\n1. **洗干净输入**：商品图上如有营销文字，先走 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)。\n2. **写商品保真段**：把商品的关键识别特征列全（外形 / 颜色 / 材质 / 五金 / 缝线 / logo 位置）——这段整套复用。\n3. **卖点 → 氛围段**：查第四节表格，把卖点翻译成场景与色调，整套复用。\n4. **列镜位清单**：查第三节，按平台主图位数量取 5 条（或详情页取 8~12 条）。\n5. **循环跑**：用第四节的 shell 循环，每条只换镜位段。\n6. **质检整套**：把 N 张图并排看——商品是不是同一件？色调是否统一？有没有哪张场景抢戏？\n7. **不合格的单张重跑**，不用整套重来。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 套图里的商品明显不是同一件 | 商品保真段太笼统，或用了低保真模型 | 列全关键识别特征；换 `gpt-image-2` |\n| 每张色调都不一样 | 未统一氛围段 | 氛围段整套逐字相同，并追加统一调色句 |\n| 场景太满，商品变小 | 场景描述比商品描述更长 | 追加 40% 画面占比约束句 |\n| 细节图看不出材质 | `--quality medium` | 改 `high` 并写明要解析到的纹理单位 |\n| 套图里出现了营销文字 | 输入图自带文字 | 先洗图；prompt 末尾保留 `no text, no watermark` |\n| 想出 12 张但成本太高 | 张数 × 单价 | 主图位 5 张用 `gpt-image-2`，详情页氛围图用 `seedream-5.0` 补量 |\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\": \"fission-pattern\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1790732762311\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\n将一张商品参考图和卖点扩展为多角度、多场景的电商商品套图。\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\n面向电商卖家及内容制作人员，根据商品参考图和卖点制作同一商品的主图、场景图及细节图。\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected product images, prompts, and provider credentials are sent to the configured image-generation service.\n\nMitigation: Use only a provider you trust and submit only images, prompts, and credentials you are comfortable sharing.\n\nRisk: Using unlicensed images or removing watermarks may infringe others' rights.\n\nMitigation: Use assets you own or are licensed to modify, particularly before removing a watermark.\n\nRisk: Generated files may overwrite existing outputs if paths conflict.\n\nMitigation: Choose distinct output paths for each generated image.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/fission-pattern)\n- [Provider CLI reference](references/provider-cli.md)\n- [Model options reference](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Image files]\n\n**Output Format:** [Markdown with shell examples; generated JPEG images when commands are run]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Creates a coordinated set of product views at user-selected output paths.]\n\n## Skill Version(s):\n\n1.0.15 (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.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, 26426 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 (2018b), SKILL.md (13429b), _meta.json (135b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: fission-pattern\nversion: 1.0.14\ndescription: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。\n---\n\n# fission-pattern — 一张图裂变完整套图\n\n一张商品图 → **一整套**不同角度 / 场景 / 构图的商拍图。\n\n电商主图位通常要 5 张，详情页要十几张。本技能解决的是「只有一张图，要凑满一屏」的问题：**同一件商品，多个机位与场景，视觉识别保持一致**。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/product-watch.jpg\" width=\"280\"> |\n| `product-watch.jpg` — 黑色鳄鱼纹皮带钢壳银色太阳纹表盘手表 |\n\n实际执行的命令（套图第 2 张，其余两张只换第三段镜位）：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 2 of 3 — in-use lifestyle shot. The subject is the watch from the reference image: a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap. Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching — it must be recognisably the identical watch as the reference. Show it worn on a man wrist resting on a wooden cafe table beside a white coffee cup, dark suit sleeve and white shirt cuff visible, warm window light, shallow depth of field with a blurred cafe background. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/fission-pattern/example-output-2.jpg\n```\n\n**输出：一套三张**\n\n| 1 · 正面主图 | 2 · 场景使用图 | 3 · 细节微距图 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-1.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-2.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-3.jpg\" width=\"230\"> |\n| 蓝图纸 + 黄铜直尺，冷调侧光 | 手腕佩戴 + 咖啡桌，暖色窗光 | 表盘/刻度/表冠微距，硬光勾边 |\n\n三张的商品保真段逐字相同，只有镜位段在变。\n\n---\n\n## 1、能力边界\n\n| 模式 | 说明 |\n| --- | --- |\n| 商品套图 | 同一商品 → 正面主图 / 45 度图 / 场景使用图 / 细节微距图 / 尺寸对比图 |\n| 姿势套图 | 同一模特同一穿搭 → 正面 / 侧面 / 背面 / 走动 / 坐姿 |\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张，主视角最佳 |\n| 商品名称 | 例：`撞色长款风衣` |\n| 商品卖点 | 例：`100% 纯棉，轻盈舒适透气，法式复古撞色元素`（用于决定场景与氛围） |\n\n**不做**：不改商品的外形、颜色、材质与结构；不编造商品没有的功能卖点；不生成虚假促销信息。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 主视角 + 纯净背景 | 越干净，整套图的商品一致性越高 |\n| ✅ 卖点写具体 | `防水防汗` 会带出运动场景，`法式复古` 会带出咖啡馆场景 |\n| ✅ 商品结构完整可见 | 套图里的细节图要靠这张图推断结构 |\n| ❌ 已经带营销文字的图 | 文字会被复制到每张套图里，先用 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md) 洗干净 |\n| ❌ 商品被手/道具遮挡 | 遮住的部分在每张套图里都会不一样 |\n\n---\n\n## 3、套图配方：5 张主图位怎么排\n\n把「一套图」拆成固定的镜位清单，每张一条 prompt，**商品描述段完全复用，只换镜位段**：\n\n| # | 镜位 | 作用 | 镜位段示例 |\n| --- | --- | --- | --- |\n| 1 | 正面主图 | 搜索列表首图，要最清楚 | `straight-on hero shot filling the frame, clean seamless background, even studio light` |\n| 2 | 45 度立体图 | 交代体积与厚度 | `45-degree three-quarter angle showing depth and side profile, soft gradient background` |\n| 3 | 场景使用图 | 建立使用联想 | `in-use lifestyle shot: [场景 + 人物动作], warm window light, shallow depth of field` |\n| 4 | 细节微距图 | 证明材质与工艺 | `macro close-up of [关键工艺部位] filling the frame, hard rim light, extreme detail` |\n| 5 | 对比 / 内构图 | 交代尺寸或内部 | `[尺寸对比物 / 内部结构] shown alongside the product, top-down layout, neutral background` |\n\n**一致性的关键**：三段结构里，第一段（商品保真描述）在 5 条 prompt 里**逐字相同**，只有第三段（镜位）在变。\n\n```text\n[段1 商品保真：不变]  +  [段2 卖点氛围：不变]  +  [段3 镜位：每张不同]\n```\n\n---\n\n## 4、卖点 → 场景的映射\n\n卖点决定第 3 张场景图长什么样，别让模型自由发挥：\n\n| 卖点类型 | 场景写法 |\n| --- | --- |\n| 保暖 / 加厚 | `snowy outdoor street, breath visible, cold blue ambient with warm rim light` |\n| 透气 / 速干 | `gym or running track, dynamic mid-motion, bright daylight` |\n| 防水 / 三防 | `rainy pavement with water droplets beading on the surface, overcast light` |\n| 通勤 / 商务 | `office lobby or subway station, dark suit context, cool neutral light` |\n| 法式 / 复古 | `French cafe interior, marble table, warm window light, film colour grading` |\n| 亲肤 / 婴童 | `soft nursery bedding, pastel palette, very soft diffused light` |\n| 精密 / 工艺 | `dark navy blueprint paper with a brass ruler, cool directional side light` |\n\n**姿势套图**用的是另一组：正面站姿 / 侧身转头 / 背面回头 / 自然行走 / 坐姿——每条只换姿势段，模特与穿搭段逐字不变（写法可直接复用 [creative-scene](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/creative-scene/skill.md) 的改姿势句式）。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（套图的核心指标是**整套图里的商品是同一件**，需要最强的参考图保真；实测低价模型在多场景切换时会漂移出另一款商品）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task fission-pattern \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/fission-pattern-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/fission-pattern.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`（全套 N 条命令都传同一张） | 保证整套图的商品同源 |\n| `--size` | `1024x1536` 竖版套图；`1024x1024` 方图主图位 | 跟随平台主图规范 |\n| `--quality` | `medium` 场景图；`high` 细节微距图 | 微距图靠纹理说话 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `1`（套图靠多条 prompt，不靠 batch） | batch 只会给同一镜位多个版本 |\n| `--save` | `docs/fission-pattern/output-<sku>-<序号>.jpg` | 按套编号归档 |\n\n> **成本提示**：想压成本可换 `dlazy seedream-5.0`（单张约 1/6 价）。代价是商品保真度下降——实测在场景切换时会漂移成另一款商品，只适合对商品一致性不敏感的氛围图。\n\n### Command Examples\n\n```bash\n# basic call: 套图第 1 张（正面主图）\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 1 of 5 — hero front shot. The subject is the product in the reference image. Keep it 100% faithful: same shape, colour, material texture and structural details. Straight-on hero shot filling the frame, clean seamless background, even studio light. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 用 shell 循环一次跑完整套 5 张\nPRODUCT='a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap'\nKEEP=\"Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching.\"\ni=0\nfor SHOT in \\\n  'straight-on hero shot filling the frame, clean seamless background, even studio light' \\\n  '45-degree three-quarter angle showing depth and side profile, soft gradient background' \\\n  'in-use lifestyle shot: worn on a man wrist beside a coffee cup on a wooden cafe table, warm window light, shallow depth of field' \\\n  'macro close-up of the dial edge, applied markers and knurled crown filling the frame, hard rim light, extreme detail' \\\n  'top-down flat layout beside a brass ruler for scale, dark navy blueprint paper, cool side light'\ndo\n  i=$((i+1))\n  dlazy gpt-image-2 \\\n    --prompt \"E-commerce product photography, set image $i of 5. The subject is $PRODUCT from the reference image. $KEEP $SHOT. Photorealistic commercial product photography, no text, no watermark.\" \\\n    --images docs/fission-pattern/product-watch.jpg \\\n    --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --save docs/fission-pattern/output-sku001-$i.jpg\ndone\n\n# 先估价不真跑（乘以套图张数就是总价）\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.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## 6、Prompt 模板\n\n三段结构，前两段整套复用，第三段每张不同：\n\n```text\nE-commerce product photography, set image [N] of [总数].\n\n【段1 · 商品保真，整套逐字相同】\nThe subject is [商品名称 + 颜色 + 材质] from the reference image.\nKeep the product 100% faithful: same [外形], same [颜色], same [材质纹理],\nsame [结构细节：五金/缝线/图案/logo 位置] — it must be recognisably the identical product\nacross the whole set.\n\n【段2 · 卖点氛围，整套逐字相同】\n[从第四节表格取对应的氛围与色调描述]\n\n【段3 · 镜位，每张不同】\n[从第三节表格取镜位描述]\n\nPhotorealistic commercial product photography, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 套图里像两件不同商品 | `Cross-check against the reference image: [关键识别特征] must match exactly. Any deviation is a failure.` |\n| 场景抢了商品的戏 | `The product must occupy at least 40% of the frame and be the sharpest element; keep the environment subordinate and softly defocused.` |\n| 整套色调不统一 | `Grade the whole set consistently: [色温 + 对比度描述].` |\n| 细节图糊 | 改 `--quality high`，并追加 `resolve individual [纹理单位：yarn plies / gear teeth / leather pores]` |\n\n---\n\n## 7、执行流程\n\n1. **洗干净输入**：商品图上如有营销文字，先走 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)。\n2. **写商品保真段**：把商品的关键识别特征列全（外形 / 颜色 / 材质 / 五金 / 缝线 / logo 位置）——这段整套复用。\n3. **卖点 → 氛围段**：查第四节表格，把卖点翻译成场景与色调，整套复用。\n4. **列镜位清单**：查第三节，按平台主图位数量取 5 条（或详情页取 8~12 条）。\n5. **循环跑**：用第四节的 shell 循环，每条只换镜位段。\n6. **质检整套**：把 N 张图并排看——商品是不是同一件？色调是否统一？有没有哪张场景抢戏？\n7. **不合格的单张重跑**，不用整套重来。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 套图里的商品明显不是同一件 | 商品保真段太笼统，或用了低保真模型 | 列全关键识别特征；换 `gpt-image-2` |\n| 每张色调都不一样 | 未统一氛围段 | 氛围段整套逐字相同，并追加统一调色句 |\n| 场景太满，商品变小 | 场景描述比商品描述更长 | 追加 40% 画面占比约束句 |\n| 细节图看不出材质 | `--quality medium` | 改 `high` 并写明要解析到的纹理单位 |\n| 套图里出现了营销文字 | 输入图自带文字 | 先洗图；prompt 末尾保留 `no text, no watermark` |\n| 想出 12 张但成本太高 | 张数 × 单价 | 主图位 5 张用 `gpt-image-2`，详情页氛围图用 `seedream-5.0` 补量 |\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\": \"fission-pattern\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790562967544\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\n根据一张商品参考图和卖点，生成多角度、多场景的电商商品套图。\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\n电商卖家和设计人员可将单张商品图与产品卖点扩展为统一风格的主图、场景图和细节图。\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Chosen product images, prompts, and optional brand references are sent to the selected cloud image provider.\n\nMitigation: Use only images and brand materials you are comfortable sharing with that provider.\n\nRisk: Available provider credentials may determine which service receives generation requests.\n\nMitigation: Review configured credentials and use --dry-run to inspect the request before generation.\n\nRisk: Generated images may be saved to unintended locations or differ from the reference product.\n\nMitigation: Choose --save paths deliberately and review the complete image set for product accuracy before publishing.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/fission-pattern)\n- [Provider CLI and data flow](references/provider-cli.md)\n- [Image model parameters](references/model-flags.md)\n- [dLazy CLI documentation](https://github.com/dlazy-ai/cli)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Image files]\n\n**Output Format:** [Markdown guidance and shell commands; generated JPEG images]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Typically a coordinated set of five product images saved to user-chosen paths.]\n\n## Skill Version(s):\n\n1.0.14 (source: frontmatter, ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.14:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.13: 11 files, 26556 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 (2588b), SKILL.md (13429b), _meta.json (135b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: fission-pattern\nversion: 1.0.13\ndescription: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。\n---\n\n# fission-pattern — 一张图裂变完整套图\n\n一张商品图 → **一整套**不同角度 / 场景 / 构图的商拍图。\n\n电商主图位通常要 5 张，详情页要十几张。本技能解决的是「只有一张图，要凑满一屏」的问题：**同一件商品，多个机位与场景，视觉识别保持一致**。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/product-watch.jpg\" width=\"280\"> |\n| `product-watch.jpg` — 黑色鳄鱼纹皮带钢壳银色太阳纹表盘手表 |\n\n实际执行的命令（套图第 2 张，其余两张只换第三段镜位）：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 2 of 3 — in-use lifestyle shot. The subject is the watch from the reference image: a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap. Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching — it must be recognisably the identical watch as the reference. Show it worn on a man wrist resting on a wooden cafe table beside a white coffee cup, dark suit sleeve and white shirt cuff visible, warm window light, shallow depth of field with a blurred cafe background. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/fission-pattern/example-output-2.jpg\n```\n\n**输出：一套三张**\n\n| 1 · 正面主图 | 2 · 场景使用图 | 3 · 细节微距图 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-1.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-2.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-3.jpg\" width=\"230\"> |\n| 蓝图纸 + 黄铜直尺，冷调侧光 | 手腕佩戴 + 咖啡桌，暖色窗光 | 表盘/刻度/表冠微距，硬光勾边 |\n\n三张的商品保真段逐字相同，只有镜位段在变。\n\n---\n\n## 1、能力边界\n\n| 模式 | 说明 |\n| --- | --- |\n| 商品套图 | 同一商品 → 正面主图 / 45 度图 / 场景使用图 / 细节微距图 / 尺寸对比图 |\n| 姿势套图 | 同一模特同一穿搭 → 正面 / 侧面 / 背面 / 走动 / 坐姿 |\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张，主视角最佳 |\n| 商品名称 | 例：`撞色长款风衣` |\n| 商品卖点 | 例：`100% 纯棉，轻盈舒适透气，法式复古撞色元素`（用于决定场景与氛围） |\n\n**不做**：不改商品的外形、颜色、材质与结构；不编造商品没有的功能卖点；不生成虚假促销信息。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 主视角 + 纯净背景 | 越干净，整套图的商品一致性越高 |\n| ✅ 卖点写具体 | `防水防汗` 会带出运动场景，`法式复古` 会带出咖啡馆场景 |\n| ✅ 商品结构完整可见 | 套图里的细节图要靠这张图推断结构 |\n| ❌ 已经带营销文字的图 | 文字会被复制到每张套图里，先用 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md) 洗干净 |\n| ❌ 商品被手/道具遮挡 | 遮住的部分在每张套图里都会不一样 |\n\n---\n\n## 3、套图配方：5 张主图位怎么排\n\n把「一套图」拆成固定的镜位清单，每张一条 prompt，**商品描述段完全复用，只换镜位段**：\n\n| # | 镜位 | 作用 | 镜位段示例 |\n| --- | --- | --- | --- |\n| 1 | 正面主图 | 搜索列表首图，要最清楚 | `straight-on hero shot filling the frame, clean seamless background, even studio light` |\n| 2 | 45 度立体图 | 交代体积与厚度 | `45-degree three-quarter angle showing depth and side profile, soft gradient background` |\n| 3 | 场景使用图 | 建立使用联想 | `in-use lifestyle shot: [场景 + 人物动作], warm window light, shallow depth of field` |\n| 4 | 细节微距图 | 证明材质与工艺 | `macro close-up of [关键工艺部位] filling the frame, hard rim light, extreme detail` |\n| 5 | 对比 / 内构图 | 交代尺寸或内部 | `[尺寸对比物 / 内部结构] shown alongside the product, top-down layout, neutral background` |\n\n**一致性的关键**：三段结构里，第一段（商品保真描述）在 5 条 prompt 里**逐字相同**，只有第三段（镜位）在变。\n\n```text\n[段1 商品保真：不变]  +  [段2 卖点氛围：不变]  +  [段3 镜位：每张不同]\n```\n\n---\n\n## 4、卖点 → 场景的映射\n\n卖点决定第 3 张场景图长什么样，别让模型自由发挥：\n\n| 卖点类型 | 场景写法 |\n| --- | --- |\n| 保暖 / 加厚 | `snowy outdoor street, breath visible, cold blue ambient with warm rim light` |\n| 透气 / 速干 | `gym or running track, dynamic mid-motion, bright daylight` |\n| 防水 / 三防 | `rainy pavement with water droplets beading on the surface, overcast light` |\n| 通勤 / 商务 | `office lobby or subway station, dark suit context, cool neutral light` |\n| 法式 / 复古 | `French cafe interior, marble table, warm window light, film colour grading` |\n| 亲肤 / 婴童 | `soft nursery bedding, pastel palette, very soft diffused light` |\n| 精密 / 工艺 | `dark navy blueprint paper with a brass ruler, cool directional side light` |\n\n**姿势套图**用的是另一组：正面站姿 / 侧身转头 / 背面回头 / 自然行走 / 坐姿——每条只换姿势段，模特与穿搭段逐字不变（写法可直接复用 [creative-scene](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/creative-scene/skill.md) 的改姿势句式）。\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（套图的核心指标是**整套图里的商品是同一件**，需要最强的参考图保真；实测低价模型在多场景切换时会漂移出另一款商品）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task fission-pattern \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/fission-pattern-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/fission-pattern.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`（全套 N 条命令都传同一张） | 保证整套图的商品同源 |\n| `--size` | `1024x1536` 竖版套图；`1024x1024` 方图主图位 | 跟随平台主图规范 |\n| `--quality` | `medium` 场景图；`high` 细节微距图 | 微距图靠纹理说话 |\n| `--imageFormat` | `jpeg` | 电商上架通用格式 |\n| `--batch` | `1`（套图靠多条 prompt，不靠 batch） | batch 只会给同一镜位多个版本 |\n| `--save` | `docs/fission-pattern/output-<sku>-<序号>.jpg` | 按套编号归档 |\n\n> **成本提示**：想压成本可换 `dlazy seedream-5.0`（单张约 1/6 价）。代价是商品保真度下降——实测在场景切换时会漂移成另一款商品，只适合对商品一致性不敏感的氛围图。\n\n### Command Examples\n\n```bash\n# basic call: 套图第 1 张（正面主图）\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 1 of 5 — hero front shot. The subject is the product in the reference image. Keep it 100% faithful: same shape, colour, material texture and structural details. Straight-on hero shot filling the frame, clean seamless background, even studio light. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 用 shell 循环一次跑完整套 5 张\nPRODUCT='a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap'\nKEEP=\"Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching.\"\ni=0\nfor SHOT in \\\n  'straight-on hero shot filling the frame, clean seamless background, even studio light' \\\n  '45-degree three-quarter angle showing depth and side profile, soft gradient background' \\\n  'in-use lifestyle shot: worn on a man wrist beside a coffee cup on a wooden cafe table, warm window light, shallow depth of field' \\\n  'macro close-up of the dial edge, applied markers and knurled crown filling the frame, hard rim light, extreme detail' \\\n  'top-down flat layout beside a brass ruler for scale, dark navy blueprint paper, cool side light'\ndo\n  i=$((i+1))\n  dlazy gpt-image-2 \\\n    --prompt \"E-commerce product photography, set image $i of 5. The subject is $PRODUCT from the reference image. $KEEP $SHOT. Photorealistic commercial product photography, no text, no watermark.\" \\\n    --images docs/fission-pattern/product-watch.jpg \\\n    --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --save docs/fission-pattern/output-sku001-$i.jpg\ndone\n\n# 先估价不真跑（乘以套图张数就是总价）\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.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## 6、Prompt 模板\n\n三段结构，前两段整套复用，第三段每张不同：\n\n```text\nE-commerce product photography, set image [N] of [总数].\n\n【段1 · 商品保真，整套逐字相同】\nThe subject is [商品名称 + 颜色 + 材质] from the reference image.\nKeep the product 100% faithful: same [外形], same [颜色], same [材质纹理],\nsame [结构细节：五金/缝线/图案/logo 位置] — it must be recognisably the identical product\nacross the whole set.\n\n【段2 · 卖点氛围，整套逐字相同】\n[从第四节表格取对应的氛围与色调描述]\n\n【段3 · 镜位，每张不同】\n[从第三节表格取镜位描述]\n\nPhotorealistic commercial product photography, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 套图里像两件不同商品 | `Cross-check against the reference image: [关键识别特征] must match exactly. Any deviation is a failure.` |\n| 场景抢了商品的戏 | `The product must occupy at least 40% of the frame and be the sharpest element; keep the environment subordinate and softly defocused.` |\n| 整套色调不统一 | `Grade the whole set consistently: [色温 + 对比度描述].` |\n| 细节图糊 | 改 `--quality high`，并追加 `resolve individual [纹理单位：yarn plies / gear teeth / leather pores]` |\n\n---\n\n## 7、执行流程\n\n1. **洗干净输入**：商品图上如有营销文字，先走 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)。\n2. **写商品保真段**：把商品的关键识别特征列全（外形 / 颜色 / 材质 / 五金 / 缝线 / logo 位置）——这段整套复用。\n3. **卖点 → 氛围段**：查第四节表格，把卖点翻译成场景与色调，整套复用。\n4. **列镜位清单**：查第三节，按平台主图位数量取 5 条（或详情页取 8~12 条）。\n5. **循环跑**：用第四节的 shell 循环，每条只换镜位段。\n6. **质检整套**：把 N 张图并排看——商品是不是同一件？色调是否统一？有没有哪张场景抢戏？\n7. **不合格的单张重跑**，不用整套重来。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 套图里的商品明显不是同一件 | 商品保真段太笼统，或用了低保真模型 | 列全关键识别特征；换 `gpt-image-2` |\n| 每张色调都不一样 | 未统一氛围段 | 氛围段整套逐字相同，并追加统一调色句 |\n| 场景太满，商品变小 | 场景描述比商品描述更长 | 追加 40% 画面占比约束句 |\n| 细节图看不出材质 | `--quality medium` | 改 `high` 并写明要解析到的纹理单位 |\n| 套图里出现了营销文字 | 输入图自带文字 | 先洗图；prompt 末尾保留 `no text, no watermark` |\n| 想出 12 张但成本太高 | 张数 × 单价 | 主图位 5 张用 `gpt-image-2`，详情页氛围图用 `seedream-5.0` 补量 |\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\": \"fission-pattern\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1790217439185\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\")\n\nArchive v1.0.12: 11 files, 26416 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 (2314b), SKILL.md (13429b), _meta.json (135b)\n\nArchive v1.0.11: 11 files, 26570 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 (2387b), SKILL.md (13429b), _meta.json (135b)\n\nArchive v1.0.10: 11 files, 26427 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 (2357b), SKILL.md (13429b), _meta.json (135b)","readmeExcerpt":"Skill: 一图裂变套图 Fission Pattern Owner: dlazyai Summary: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:50:02.488Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:42:57.721Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:42:51.312Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:15:47.941Z | user 例行版本更新 2026-10-02 v1.0.15 | 2026","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"dlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 2 of 3 — in-use lifestyle shot. The subject is the watch from the reference image: a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap. Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching — it must be recognisably the identical watch as the reference. Show it worn on a man wrist resting on a wooden cafe table beside a white coffee cup, dark suit sleeve and white shirt cuff visible, warm window light, shallow depth of field with a blurred cafe background. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/fission-pattern/example-output-2.jpg"},{"language":"text","snippet":"[段1 商品保真：不变]  +  [段2 卖点氛围：不变]  +  [段3 镜位：每张不同]"},{"language":"bash","snippet":"# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task fission-pattern \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/fission-pattern-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/fission-pattern.jpg"},{"language":"bash","snippet":"# basic call: 套图第 1 张（正面主图）\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 1 of 5 — hero front shot. The subject is the product in the reference image. Keep it 100% faithful: same shape, colour, material texture and structural details. Straight-on hero shot filling the frame, clean seamless background, even studio light. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 用 shell 循环一次跑完整套 5 张\nPRODUCT='a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap'\nKEEP=\"Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching.\"\ni=0\nfor SHOT in \\\n  'straight-on hero shot filling the frame, clean seamless background, even studio light' \\\n  '45-degree three-quarter angle showing depth and side profile, soft gradient background' \\\n  'in-use lifestyle shot: worn on a man wrist beside a coffee cup on a wooden cafe table, warm window light, shallow depth of field' \\\n  'macro close-up of the dial edge, applied markers and knurled crown filling the frame, hard rim light, extreme detail' \\\n  'top-down flat layout beside a brass ruler for scale, dark navy blueprint paper, cool side light'\ndo\n  i=$((i+1))\n  dlazy gpt-image-2 \\\n    --prompt \"E-commerce product photography, set image $i of 5. The subject is $PRODUCT from the reference image. $KEEP $SHOT. Photorealistic commercial product photography, no text, no watermark.\" \\\n    --images docs/fission-pattern/product-watch.jpg \\\n    --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --save docs/fission-pattern/output-sku001-$i.jpg\ndone\n\n# 先估价不真跑（乘以套图张数就是总价）\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg --size 1024x1536"},{"language":"text","snippet":"E-commerce product photography, set image [N] of [总数].\n\n【段1 · 商品保真，整套逐字相同】\nThe subject is [商品名称 + 颜色 + 材质] from the reference image.\nKeep the product 100% faithful: same [外形], same [颜色], same [材质纹理],\nsame [结构细节：五金/缝线/图案/logo 位置] — it must be recognisably the identical product\nacross the whole set.\n\n【段2 · 卖点氛围，整套逐字相同】\n[从第四节表格取对应的氛围与色调描述]\n\n【段3 · 镜位，每张不同】\n[从第三节表格取镜位描述]\n\nPhotorealistic commercial product photography, no text, no watermark."},{"language":"bash","snippet":"dlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: fission-pattern\nversion: 1.0.19\ndescription: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。\n---\n\n# fission-pattern — 一张图裂变完整套图\n\n一张商品图 → **一整套**不同角度 / 场景 / 构图的商拍图。\n\n电商主图位通常要 5 张，详情页要十几张。本技能解决的是「只有一张图，要凑满一屏」的问题：**同一件商品，多个机位与场景，视觉识别保持一致**。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/product-watch.jpg\" width=\"280\"> |\n| `product-watch.jpg` — 黑色鳄鱼纹皮带钢壳银色太阳纹表盘手表 |\n\n实际执行的命令（套图第 2 张，其余两张只换第三段镜位）：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'E-commerce product photography, set image 2 of 3 — in-use lifestyle shot. The subject is the watch from the reference image: a polished stainless-steel watch with a silver sunburst dial, applied baton markers and a black crocodile-embossed leather strap. Keep the product 100% faithful: same case shape and polish, same dial colour and marker layout, same hand shapes, same crown, same strap embossing and stitching — it must be recognisably the identical watch as the reference. Show it worn on a man wrist resting on a wooden cafe table beside a white coffee cup, dark suit sleeve and white shirt cuff visible, warm window light, shallow depth of field with a blurred cafe background. Photorealistic, no text, no watermark.' \\\n  --images docs/fission-pattern/product-watch.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/fission-pattern/example-output-2.jpg\n```\n\n**输出：一套三张**\n\n| 1 · 正面主图 | 2 · 场景使用图 | 3 · 细节微距图 |\n| --- | --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-1.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-2.jpg\" width=\"230\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/fission-pattern/example-output-3.jpg\" width=\"230\"> |\n| 蓝图纸 + 黄铜直尺，冷调侧光 | 手腕佩戴 + 咖啡桌，暖色窗光 | 表盘/刻度/表冠微距，硬光勾边 |\n\n三张的商品保真段逐字相同，只有镜位段在变。\n\n---\n\n## 1、能力边界\n\n| 模式 | 说明 |\n| --- | --- |\n| 商品套图 | 同一商品 → 正面主图 / 45 度图 / 场景使用图 / 细节微距图 / 尺寸对比图 |\n| 姿势套图 | 同一模特同一穿搭 → 正面 / 侧面 / 背面 / 走动 / 坐姿 |\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张，主视角最佳 |\n| 商品名称 | 例：`撞色长款风衣` |\n| 商品卖点 | 例：`100% 纯棉，轻盈舒适透气，法式复古撞色元素`（用于决定场景与氛围） |\n\n**不做**：不改商品的外形、颜色、材质与结构；不编造商品没有的功能卖点；不生成虚假促销信息。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 主视角 + 纯净背景 | 越干净，整套图的商品一致性越高 |\n| ✅ 卖点写具体 | `防水防汗` 会带出运动场景，`法式复古` 会带出咖啡馆场景 |\n| ✅ 商品结构完整可见 | 套图里的细节图要靠这张图推断结构 |\n| ❌ 已经带营销文字的图 | 文字会被复制到每张套图里，先用 [remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md) 洗干净 |\n| ❌ 商品被手/道具遮挡 | 遮住的部分在每张套图里都会不一样 |\n\n---\n\n## 3、套图配方：5 张主图位怎么排\n\n把「一套图」拆成固定的镜位清单，每张一条 prompt，**商品描述段完全复用，只换镜位段**：\n\n| # | 镜位 | 作用 | 镜位段示例 |\n| --- | --- | --- | --- |\n| 1 | 正面主图 | 搜索列表首图，要最清楚 | `straight-on hero shot filling the frame, clean seamless background, even studio light` |"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"fission-pattern\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1791597002488\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":"一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。 Skill: 一图裂变套图 Fission Pattern Owner: dlazyai Summary: 一张商品图裂变成整套素材。商品图 + 卖点 → 多角度多场景成套图，够铺满一屏。当用户说「裂变套图」「一张变一屏」「凑够详情页」「出一套图」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:50:02.488Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:42:57.721Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:42:51.312Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:15:47.941Z | user 例行版本更新 2026-10-02 v1.0.15 | 2026","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1003,"uniquenessScore":49,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T21:58:29.274Z","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:58:29.274Z","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-11T00:32:18.103Z","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"}]}}}