{"id":"144273be-2473-4bce-82dd-85ea8aa31ff8","entityType":"agent","slug":"clawhub-dlazyai-item-selling-point","name":"卖点主图生成 Item Selling Point","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dlazyai-item-selling-point","canonicalPath":"/agent/clawhub-dlazyai-item-selling-point","generatedAt":"2026-10-10T23:48:07.824Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T19:55:33.510Z","emptyReason":null},"description":"商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。 Skill: 卖点主图生成 Item Selling Point Owner: dlazyai Summary: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:52:46.587Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:44:52.649Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:44:52.636Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:17:18.125Z | user 例行版本更新 2026-10-02 v1.0.15 | 20","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:item-selling-point","sourceUrl":"https://clawhub.ai/dlazyai/item-selling-point","homepage":"https://clawhub.ai/dlazyai/skills/item-selling-point","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dlazyai/item-selling-point","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dlazyai/skills/item-selling-point","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。 Skill: 卖点主图生成 Item Selling Point Owner: dlazyai Summary: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T19:55:33.510Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T19:55:33.510Z","emptyReason":null},"stars":null,"forks":null,"downloads":1274,"packageName":null,"latestVersion":"1.0.19","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T19:55:33.509Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T19:55:33.510Z","lastCrawledAt":"2026-10-10T19:55:33.509Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T19:55:33.509Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.19","createdAt":"2026-10-10T01:52:46.587Z","changelog":"例行版本更新 2026-10-10","fileCount":11,"zipByteSize":25237},{"version":"1.0.18","createdAt":"2026-10-08T01:44:52.649Z","changelog":"例行版本更新 2026-10-08","fileCount":11,"zipByteSize":25048},{"version":"1.0.17","createdAt":"2026-10-04T01:44:52.636Z","changelog":"例行版本更新 2026-10-04","fileCount":11,"zipByteSize":25126},{"version":"1.0.16","createdAt":"2026-10-02T05:17:18.125Z","changelog":"例行版本更新 2026-10-02","fileCount":11,"zipByteSize":25060},{"version":"1.0.15","createdAt":"2026-09-30T01:49:14.791Z","changelog":"例行版本更新 2026-09-30","fileCount":11,"zipByteSize":25148},{"version":"1.0.14","createdAt":"2026-09-28T02:37:50.363Z","changelog":"例行版本更新 2026-09-28","fileCount":11,"zipByteSize":25046},{"version":"1.0.13","createdAt":"2026-09-24T02:39:21.335Z","changelog":"例行版本更新 2026-09-24","fileCount":11,"zipByteSize":25247},{"version":"1.0.12","createdAt":"2026-09-22T01:42:29.514Z","changelog":"例行版本更新 2026-09-22","fileCount":11,"zipByteSize":25380}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:item-selling-point","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-item-selling-point/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-item-selling-point/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-item-selling-point/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-item-selling-point/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-item-selling-point/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-item-selling-point/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T23:48:07.821Z"}},"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-item-selling-point/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-item-selling-point/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-item-selling-point/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-item-selling-point/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T19:55:33.510Z","emptyReason":null},"readme":"Skill: 卖点主图生成 Item Selling Point\n\nOwner: dlazyai\n\nSummary: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n\nTags: latest:1.0.19\n\nVersion history:\n\nv1.0.19 | 2026-10-10T01:52:46.587Z | user\n\n例行版本更新 2026-10-10\n\nv1.0.18 | 2026-10-08T01:44:52.649Z | user\n\n例行版本更新 2026-10-08\n\nv1.0.17 | 2026-10-04T01:44:52.636Z | user\n\n例行版本更新 2026-10-04\n\nv1.0.16 | 2026-10-02T05:17:18.125Z | user\n\n例行版本更新 2026-10-02\n\nv1.0.15 | 2026-09-30T01:49:14.791Z | user\n\n例行版本更新 2026-09-30\n\nv1.0.14 | 2026-09-28T02:37:50.363Z | user\n\n例行版本更新 2026-09-28\n\nv1.0.13 | 2026-09-24T02:39:21.335Z | user\n\n例行版本更新 2026-09-24\n\nv1.0.12 | 2026-09-22T01:42:29.514Z | user\n\n例行版本更新 2026-09-22\n\nv1.0.11 | 2026-09-20T01:52:13.755Z | user\n\n例行版本更新 2026-09-20\n\nv1.0.10 | 2026-09-18T02:12:42.014Z | user\n\n例行版本更新 2026-09-18\n\nv1.0.9 | 2026-09-14T01:43:05.388Z | user\n\n例行版本更新 2026-09-14\n\nv1.0.8 | 2026-09-10T01:36:25.684Z | user\n\n例行版本更新 2026-09-10\n\nv1.0.7 | 2026-09-08T01:43:23.216Z | user\n\n例行版本更新 2026-09-08\n\nv1.0.6 | 2026-09-07T01:50:58.155Z | user\n\n例行版本更新 2026-09-07\n\nv1.0.5 | 2026-09-04T01:44:00.110Z | user\n\n例行版本更新 2026-09-04\n\nv1.0.4 | 2026-09-02T01:39:46.557Z | user\n\n例行版本更新 2026-09-02\n\nv1.0.3 | 2026-08-31T07:06:32.578Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.2 | 2026-08-31T05:27:30.138Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.1 | 2026-08-29T04:09:14.965Z | user\n\nSync from GitHub\n\nv1.0.0 | 2026-08-18T04:43:01.239Z | user\n\nSync from GitHub\n\nArchive index:\n\nArchive v1.0.19: 11 files, 25237 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (1971b), SKILL.md (11740b), _meta.json (138b)\n\nFile v1.0.19:SKILL.md\n\n---\nname: item-selling-point\nversion: 1.0.19\ndescription: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n---\n\n# item-selling-point — 商品图生成电商主图\n\n商品图 + 卖点文案 → **带排版的转化型电商主图**。\n\n和 [item-detail](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-detail/skill.md) 的分工：item-detail 出**详情页长图的各个模块**（信息量大、多模块），本技能出**主图位的单张方图**（信息密度低、要在缩略图尺寸下也能看清）。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/product-shoes.jpg\" width=\"280\"> |\n| `product-shoes.jpg` — 黑色鳄鱼纹亮面皮革布洛克德比鞋，白底，800×800 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1:1 / 2048×2048，5 credits。鞋的鳄鱼纹压花、雕花孔、鞋带与厚齿底保持一致，去底后居中偏左带柔和投影；右侧主标题「真皮软底 通勤久站不累」与两行小字卖点字形正确、层级分明；左上红色圆形角标「满300减30」；深灰渐变背景。\n\n---\n\n## 1、能力边界\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张 |\n| 去除商品图背景 | 开关；开启后商品去底再合成 |\n| 商品类目 | 决定背景与配色基调 |\n| 参考图 | 可选，决定版式与配色 |\n| **商品功能点** | ≤100 字，多个用 `/` 分隔，例：`持久续航/防水防汗` |\n| **营销利益点** | ≤100 字，多个用 `/` 分隔，例：`年货狂欢节/满300-30` |\n\n**功能点和利益点要分开**：功能点是产品能力（排在主标题/副标题），利益点是促销信息（排在角标/腰带）。混在一起排版会乱。\n\n**不做**：不编造商品没有的功能；不生成虚假促销（不存在的活动、虚假折扣、虚假原价）；不使用绝对化用语（最、第一、国家级）；不改商品外形与颜色。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 白底或纯色底商品图 | 去底最干净 |\n| ✅ 文案精简 | 主图在列表页只有 200px 左右，长句根本看不见 |\n| ✅ 主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字 | 缩略图可读性的经验值 |\n| ❌ 塞五条卖点 | 主图最多承载 1 个主标题 + 2 行小字 + 1 个角标 |\n| ❌ 未经核实的功效/促销 | 平台合规风险 |\n\n---\n\n## 3、主图版式的三个区\n\n把方图切成三个区，每个区只放一种信息：\n\n```text\n┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘\n```\n\n写进 prompt：\n\n```text\n商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。\n```\n\n**缩略图检查**：把输出缩到 200×200 看一眼——主标题还认得出来吗？认不出就再缩短文案或加大字号层级。\n\n---\n\n## 4、类目 → 背景与配色\n\n| 类目 | 背景 | 文字色 | 角标色 |\n| --- | --- | --- | --- |\n| 服饰 | 米灰 / 燕麦色渐变 | 深灰 | 砖红 |\n| 箱包 / 鞋品 | 深灰到浅灰渐变 | 黑 | 正红 |\n| 婴童 / 宠物 | 奶油 / 浅粉 | 暖棕 | 珊瑚粉 |\n| 美妆 | 大理石 / 丝绒 | 黑金 | 酒红 |\n| 3C / 电器 | 深色科技渐变 | 白 | 荧光蓝 |\n| 家居 / 家具灯饰 | 实景房间浅景深 | 深棕 | 橄榄绿 |\n| 食品厨具 | 木质台面暖调 | 深棕 | 橙红 |\n| 珠宝饰品 | 深色绒布聚光 | 白金 | 深红 |\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0-pro`**（专业档图像模型，中文字形与版面控制最稳；主图上的文案必须一眼可读、零乱码，字形正确率是首要指标）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-selling-point \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/item-selling-point-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0-pro --prompt '...' --images ... --save output/item-selling-point.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`；带版式参考时 `[商品图, 参考图]` | 顺序即 prompt 中的 图1 / 图2 |\n| `--size` | `1:1`（主图位标准方图）/ `3:4`（部分平台竖版主图） | 跟随平台主图规范 |\n| `--resolution` | `2k` | 主图通常 800~1200px |\n| `--batch` | `3` | 中文排版随机性，挑字形正确的 |\n| `--save` | `docs/item-selling-point/output-<sku>-<活动>.jpg` | 按活动归档，大促换角标只需重跑 |\n\n### Command Examples\n\n```bash\n# basic call\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 商品，鞋型与材质必须与图1完全一致，去底后放在画面中央偏左，下方带柔和投影。背景深灰到浅灰渐变。右侧竖排中文卖点：主标题大字「真皮软底 通勤久站不累」，下方两行小字「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角红色圆形角标写「满300减30」。无衬线黑体，排版整齐，中文字清晰正确无乱码。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1\n\n# complex call: 一个 SKU 铺多个大促角标版本（文案区不变，只换角标）\nSRC=docs/item-selling-point/product-shoes.jpg\nBODY='主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。'\nSTYLE='无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。'\nfor A in daily d11 newyear; do\n  case $A in\n    daily)   BADGE='左上角一枚红色圆形促销角标写「满300减30」' ;;\n    d11)     BADGE='左上角一枚红色圆形促销角标写「双11 5折起」' ;;\n    newyear) BADGE='左上角一枚红色圆形促销角标写「年货节 直降100」' ;;\n  esac\n  dlazy seedream-5.0-pro \\\n    --prompt \"电商正方形主图。${BODY}${BADGE}。${STYLE}\" \\\n    --images \"$SRC\" --size 1:1 --resolution 2k \\\n    --batch 3 --save \"docs/item-selling-point/output-sku001-$A.jpg\"\ndone\n\n# 先估价不真跑\ndlazy seedream-5.0-pro --dry-run --prompt '...' --images a.jpg --size 1:1\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0-pro` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商正方形主图。\n\n主体是图1 中的[商品品类 + 颜色 + 材质]，[外形/工艺/结构]必须与图1完全一致，\n商品去底后放在画面中央偏左，下方带柔和投影。\n\n背景为[类目对应背景，见第四节]。\n\n右侧竖排中文卖点文案：\n  主标题大字「[功能点主标题 ≤10 字]」，\n  下方两行小字卖点「[≤12 字]」「[≤12 字]」。\n\n左上角一枚[形状]促销角标写「[营销利益点 ≤8 字]」。\n\n无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 中文乱码 | `所有中文必须是清晰可读的简体汉字，不得变形、缺笔或臆造字。` + 缩短文案 |\n| 缩略图看不清主标题 | `主标题字号必须至少为画面高度的 8%，与其他文字形成明显层级差。` |\n| 文字压在商品上 | `商品区与文字区不得重叠：商品占左侧 55%，文字占右侧 40%，中间留 5% 间距。` |\n| 商品被重绘 | `商品必须与图1完全一致，不得改变外形、颜色、材质或 logo。` |\n| 角标喧宾夺主 | `角标直径不超过画面宽度的 18%，不得遮挡商品主体。` |\n| 出现了没给的文案 | `画面中只能出现上述指定的中文，不得添加任何其他文字。` |\n\n---\n\n## 7、执行流程\n\n1. **拆文案**：功能点（进主标题/小字）和营销利益点（进角标）分开，别混。\n2. **压字数**：主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字。\n3. **定类目 → 背景与配色**（第四节表格）。\n4. **按三个区写 prompt**（第三节），商品保真句必写。\n5. **`--batch 3`** 挑字形正确的一张，落盘到 `docs/item-selling-point/`。\n6. **缩到 200×200 检查可读性**——主图在列表页就是这个尺寸。\n7. **合规检查**：功能点是否有依据、促销是否真实存在、有无绝对化用语。\n8. **大促换角标**：文案区保持不变，只改角标那一句重跑（第四节循环）。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 中文乱码 | 文案太长 / 缺约束 | 缩短文案 + 追加字形约束句 |\n| 缩略图看不清 | 主标题字号不够 | 追加主标题占画面高度 8% 句 |\n| 文字盖在商品上 | 未划分区域 | 追加区域占比句 |\n| 角标太大抢戏 | 未限制尺寸 | 追加角标直径 ≤18% 句 |\n| 出现了没给的文案 | 模型自行补文案 | 追加只允许指定中文句 |\n| 商品外形被改 | 未写保真句 | 追加商品保真句 |\n| 功能点和促销挤在一起 | 两类文案没分区 | 功能点进文案区，利益点只进角标 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.19:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"item-selling-point\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1791597166587\n}\n\nFile v1.0.19:references/model-flags.md\n\n# `seedream-5.0-pro` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0-pro` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0-pro -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.19:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.19:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.19:skill-card.md\n\n## Description:\n\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: Product images, prompts and selected brand assets may be sent to an external image provider.\n\nMitigation: Use a dry run to check the provider and credentials; do not submit confidential images without confirming the provider's data policy.\n\nRisk: Batch image generation may incur provider charges.\n\nMitigation: Confirm estimated costs before generating batches.\n\nRisk: Generated text or imagery may misstate product features, promotions or appearance.\n\nMitigation: Verify claims and discounts against product details and inspect the final image at thumbnail size before publishing.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/dlazyai/skills/item-selling-point)\n- [Provider CLI reference](artifact/references/provider-cli.md)\n- [Image model options](artifact/references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Image files, Shell commands, Guidance]\n\n**Output Format:** [Square ecommerce image files with optional Markdown guidance and JSON execution status]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Chinese selling-point copy and promotional badge; local output file for review.]\n\n## Skill Version(s):\n\n1.0.19 (source: skill frontmatter and server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.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, 25048 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (1875b), SKILL.md (11740b), _meta.json (138b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: item-selling-point\nversion: 1.0.18\ndescription: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n---\n\n# item-selling-point — 商品图生成电商主图\n\n商品图 + 卖点文案 → **带排版的转化型电商主图**。\n\n和 [item-detail](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-detail/skill.md) 的分工：item-detail 出**详情页长图的各个模块**（信息量大、多模块），本技能出**主图位的单张方图**（信息密度低、要在缩略图尺寸下也能看清）。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/product-shoes.jpg\" width=\"280\"> |\n| `product-shoes.jpg` — 黑色鳄鱼纹亮面皮革布洛克德比鞋，白底，800×800 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1:1 / 2048×2048，5 credits。鞋的鳄鱼纹压花、雕花孔、鞋带与厚齿底保持一致，去底后居中偏左带柔和投影；右侧主标题「真皮软底 通勤久站不累」与两行小字卖点字形正确、层级分明；左上红色圆形角标「满300减30」；深灰渐变背景。\n\n---\n\n## 1、能力边界\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张 |\n| 去除商品图背景 | 开关；开启后商品去底再合成 |\n| 商品类目 | 决定背景与配色基调 |\n| 参考图 | 可选，决定版式与配色 |\n| **商品功能点** | ≤100 字，多个用 `/` 分隔，例：`持久续航/防水防汗` |\n| **营销利益点** | ≤100 字，多个用 `/` 分隔，例：`年货狂欢节/满300-30` |\n\n**功能点和利益点要分开**：功能点是产品能力（排在主标题/副标题），利益点是促销信息（排在角标/腰带）。混在一起排版会乱。\n\n**不做**：不编造商品没有的功能；不生成虚假促销（不存在的活动、虚假折扣、虚假原价）；不使用绝对化用语（最、第一、国家级）；不改商品外形与颜色。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 白底或纯色底商品图 | 去底最干净 |\n| ✅ 文案精简 | 主图在列表页只有 200px 左右，长句根本看不见 |\n| ✅ 主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字 | 缩略图可读性的经验值 |\n| ❌ 塞五条卖点 | 主图最多承载 1 个主标题 + 2 行小字 + 1 个角标 |\n| ❌ 未经核实的功效/促销 | 平台合规风险 |\n\n---\n\n## 3、主图版式的三个区\n\n把方图切成三个区，每个区只放一种信息：\n\n```text\n┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘\n```\n\n写进 prompt：\n\n```text\n商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。\n```\n\n**缩略图检查**：把输出缩到 200×200 看一眼——主标题还认得出来吗？认不出就再缩短文案或加大字号层级。\n\n---\n\n## 4、类目 → 背景与配色\n\n| 类目 | 背景 | 文字色 | 角标色 |\n| --- | --- | --- | --- |\n| 服饰 | 米灰 / 燕麦色渐变 | 深灰 | 砖红 |\n| 箱包 / 鞋品 | 深灰到浅灰渐变 | 黑 | 正红 |\n| 婴童 / 宠物 | 奶油 / 浅粉 | 暖棕 | 珊瑚粉 |\n| 美妆 | 大理石 / 丝绒 | 黑金 | 酒红 |\n| 3C / 电器 | 深色科技渐变 | 白 | 荧光蓝 |\n| 家居 / 家具灯饰 | 实景房间浅景深 | 深棕 | 橄榄绿 |\n| 食品厨具 | 木质台面暖调 | 深棕 | 橙红 |\n| 珠宝饰品 | 深色绒布聚光 | 白金 | 深红 |\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0-pro`**（专业档图像模型，中文字形与版面控制最稳；主图上的文案必须一眼可读、零乱码，字形正确率是首要指标）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-selling-point \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/item-selling-point-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0-pro --prompt '...' --images ... --save output/item-selling-point.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`；带版式参考时 `[商品图, 参考图]` | 顺序即 prompt 中的 图1 / 图2 |\n| `--size` | `1:1`（主图位标准方图）/ `3:4`（部分平台竖版主图） | 跟随平台主图规范 |\n| `--resolution` | `2k` | 主图通常 800~1200px |\n| `--batch` | `3` | 中文排版随机性，挑字形正确的 |\n| `--save` | `docs/item-selling-point/output-<sku>-<活动>.jpg` | 按活动归档，大促换角标只需重跑 |\n\n### Command Examples\n\n```bash\n# basic call\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 商品，鞋型与材质必须与图1完全一致，去底后放在画面中央偏左，下方带柔和投影。背景深灰到浅灰渐变。右侧竖排中文卖点：主标题大字「真皮软底 通勤久站不累」，下方两行小字「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角红色圆形角标写「满300减30」。无衬线黑体，排版整齐，中文字清晰正确无乱码。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1\n\n# complex call: 一个 SKU 铺多个大促角标版本（文案区不变，只换角标）\nSRC=docs/item-selling-point/product-shoes.jpg\nBODY='主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。'\nSTYLE='无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。'\nfor A in daily d11 newyear; do\n  case $A in\n    daily)   BADGE='左上角一枚红色圆形促销角标写「满300减30」' ;;\n    d11)     BADGE='左上角一枚红色圆形促销角标写「双11 5折起」' ;;\n    newyear) BADGE='左上角一枚红色圆形促销角标写「年货节 直降100」' ;;\n  esac\n  dlazy seedream-5.0-pro \\\n    --prompt \"电商正方形主图。${BODY}${BADGE}。${STYLE}\" \\\n    --images \"$SRC\" --size 1:1 --resolution 2k \\\n    --batch 3 --save \"docs/item-selling-point/output-sku001-$A.jpg\"\ndone\n\n# 先估价不真跑\ndlazy seedream-5.0-pro --dry-run --prompt '...' --images a.jpg --size 1:1\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0-pro` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商正方形主图。\n\n主体是图1 中的[商品品类 + 颜色 + 材质]，[外形/工艺/结构]必须与图1完全一致，\n商品去底后放在画面中央偏左，下方带柔和投影。\n\n背景为[类目对应背景，见第四节]。\n\n右侧竖排中文卖点文案：\n  主标题大字「[功能点主标题 ≤10 字]」，\n  下方两行小字卖点「[≤12 字]」「[≤12 字]」。\n\n左上角一枚[形状]促销角标写「[营销利益点 ≤8 字]」。\n\n无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 中文乱码 | `所有中文必须是清晰可读的简体汉字，不得变形、缺笔或臆造字。` + 缩短文案 |\n| 缩略图看不清主标题 | `主标题字号必须至少为画面高度的 8%，与其他文字形成明显层级差。` |\n| 文字压在商品上 | `商品区与文字区不得重叠：商品占左侧 55%，文字占右侧 40%，中间留 5% 间距。` |\n| 商品被重绘 | `商品必须与图1完全一致，不得改变外形、颜色、材质或 logo。` |\n| 角标喧宾夺主 | `角标直径不超过画面宽度的 18%，不得遮挡商品主体。` |\n| 出现了没给的文案 | `画面中只能出现上述指定的中文，不得添加任何其他文字。` |\n\n---\n\n## 7、执行流程\n\n1. **拆文案**：功能点（进主标题/小字）和营销利益点（进角标）分开，别混。\n2. **压字数**：主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字。\n3. **定类目 → 背景与配色**（第四节表格）。\n4. **按三个区写 prompt**（第三节），商品保真句必写。\n5. **`--batch 3`** 挑字形正确的一张，落盘到 `docs/item-selling-point/`。\n6. **缩到 200×200 检查可读性**——主图在列表页就是这个尺寸。\n7. **合规检查**：功能点是否有依据、促销是否真实存在、有无绝对化用语。\n8. **大促换角标**：文案区保持不变，只改角标那一句重跑（第四节循环）。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 中文乱码 | 文案太长 / 缺约束 | 缩短文案 + 追加字形约束句 |\n| 缩略图看不清 | 主标题字号不够 | 追加主标题占画面高度 8% 句 |\n| 文字盖在商品上 | 未划分区域 | 追加区域占比句 |\n| 角标太大抢戏 | 未限制尺寸 | 追加角标直径 ≤18% 句 |\n| 出现了没给的文案 | 模型自行补文案 | 追加只允许指定中文句 |\n| 商品外形被改 | 未写保真句 | 追加商品保真句 |\n| 功能点和促销挤在一起 | 两类文案没分区 | 功能点进文案区，利益点只进角标 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.18:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"item-selling-point\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791423892649\n}\n\nFile v1.0.18:references/model-flags.md\n\n# `seedream-5.0-pro` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0-pro` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0-pro -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.18:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.18:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.18:skill-card.md\n\n## Description:\n\nCreates Chinese-language e-commerce product images with concise selling points and promotional copy arranged for a storefront main image.\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 a product photo and verified selling points into a promotional main image with readable Chinese copy.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product photos and prompts are sent to the configured cloud image provider.\n\nMitigation: Use approved credentials and review the provider's data handling before submitting confidential product material.\n\nRisk: Generated Chinese text, product details, or promotional claims may be inaccurate.\n\nMitigation: Check copy legibility, product fidelity, and the truth of claims and discounts before publishing.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/item-selling-point)\n- [Provider setup and data flow](references/provider-cli.md)\n- [Image model options](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Image files, Guidance, Shell commands]\n\n**Output Format:** [JPEG product images with Chinese copy; Markdown guidance and command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Square 1:1 by default, with an optional 3:4 layout; inspect text and product fidelity before use.]\n\n## Skill Version(s):\n\n1.0.18 (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.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, 25126 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (2123b), SKILL.md (11740b), _meta.json (138b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: item-selling-point\nversion: 1.0.17\ndescription: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n---\n\n# item-selling-point — 商品图生成电商主图\n\n商品图 + 卖点文案 → **带排版的转化型电商主图**。\n\n和 [item-detail](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-detail/skill.md) 的分工：item-detail 出**详情页长图的各个模块**（信息量大、多模块），本技能出**主图位的单张方图**（信息密度低、要在缩略图尺寸下也能看清）。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/product-shoes.jpg\" width=\"280\"> |\n| `product-shoes.jpg` — 黑色鳄鱼纹亮面皮革布洛克德比鞋，白底，800×800 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1:1 / 2048×2048，5 credits。鞋的鳄鱼纹压花、雕花孔、鞋带与厚齿底保持一致，去底后居中偏左带柔和投影；右侧主标题「真皮软底 通勤久站不累」与两行小字卖点字形正确、层级分明；左上红色圆形角标「满300减30」；深灰渐变背景。\n\n---\n\n## 1、能力边界\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张 |\n| 去除商品图背景 | 开关；开启后商品去底再合成 |\n| 商品类目 | 决定背景与配色基调 |\n| 参考图 | 可选，决定版式与配色 |\n| **商品功能点** | ≤100 字，多个用 `/` 分隔，例：`持久续航/防水防汗` |\n| **营销利益点** | ≤100 字，多个用 `/` 分隔，例：`年货狂欢节/满300-30` |\n\n**功能点和利益点要分开**：功能点是产品能力（排在主标题/副标题），利益点是促销信息（排在角标/腰带）。混在一起排版会乱。\n\n**不做**：不编造商品没有的功能；不生成虚假促销（不存在的活动、虚假折扣、虚假原价）；不使用绝对化用语（最、第一、国家级）；不改商品外形与颜色。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 白底或纯色底商品图 | 去底最干净 |\n| ✅ 文案精简 | 主图在列表页只有 200px 左右，长句根本看不见 |\n| ✅ 主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字 | 缩略图可读性的经验值 |\n| ❌ 塞五条卖点 | 主图最多承载 1 个主标题 + 2 行小字 + 1 个角标 |\n| ❌ 未经核实的功效/促销 | 平台合规风险 |\n\n---\n\n## 3、主图版式的三个区\n\n把方图切成三个区，每个区只放一种信息：\n\n```text\n┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘\n```\n\n写进 prompt：\n\n```text\n商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。\n```\n\n**缩略图检查**：把输出缩到 200×200 看一眼——主标题还认得出来吗？认不出就再缩短文案或加大字号层级。\n\n---\n\n## 4、类目 → 背景与配色\n\n| 类目 | 背景 | 文字色 | 角标色 |\n| --- | --- | --- | --- |\n| 服饰 | 米灰 / 燕麦色渐变 | 深灰 | 砖红 |\n| 箱包 / 鞋品 | 深灰到浅灰渐变 | 黑 | 正红 |\n| 婴童 / 宠物 | 奶油 / 浅粉 | 暖棕 | 珊瑚粉 |\n| 美妆 | 大理石 / 丝绒 | 黑金 | 酒红 |\n| 3C / 电器 | 深色科技渐变 | 白 | 荧光蓝 |\n| 家居 / 家具灯饰 | 实景房间浅景深 | 深棕 | 橄榄绿 |\n| 食品厨具 | 木质台面暖调 | 深棕 | 橙红 |\n| 珠宝饰品 | 深色绒布聚光 | 白金 | 深红 |\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0-pro`**（专业档图像模型，中文字形与版面控制最稳；主图上的文案必须一眼可读、零乱码，字形正确率是首要指标）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-selling-point \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/item-selling-point-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0-pro --prompt '...' --images ... --save output/item-selling-point.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`；带版式参考时 `[商品图, 参考图]` | 顺序即 prompt 中的 图1 / 图2 |\n| `--size` | `1:1`（主图位标准方图）/ `3:4`（部分平台竖版主图） | 跟随平台主图规范 |\n| `--resolution` | `2k` | 主图通常 800~1200px |\n| `--batch` | `3` | 中文排版随机性，挑字形正确的 |\n| `--save` | `docs/item-selling-point/output-<sku>-<活动>.jpg` | 按活动归档，大促换角标只需重跑 |\n\n### Command Examples\n\n```bash\n# basic call\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 商品，鞋型与材质必须与图1完全一致，去底后放在画面中央偏左，下方带柔和投影。背景深灰到浅灰渐变。右侧竖排中文卖点：主标题大字「真皮软底 通勤久站不累」，下方两行小字「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角红色圆形角标写「满300减30」。无衬线黑体，排版整齐，中文字清晰正确无乱码。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1\n\n# complex call: 一个 SKU 铺多个大促角标版本（文案区不变，只换角标）\nSRC=docs/item-selling-point/product-shoes.jpg\nBODY='主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。'\nSTYLE='无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。'\nfor A in daily d11 newyear; do\n  case $A in\n    daily)   BADGE='左上角一枚红色圆形促销角标写「满300减30」' ;;\n    d11)     BADGE='左上角一枚红色圆形促销角标写「双11 5折起」' ;;\n    newyear) BADGE='左上角一枚红色圆形促销角标写「年货节 直降100」' ;;\n  esac\n  dlazy seedream-5.0-pro \\\n    --prompt \"电商正方形主图。${BODY}${BADGE}。${STYLE}\" \\\n    --images \"$SRC\" --size 1:1 --resolution 2k \\\n    --batch 3 --save \"docs/item-selling-point/output-sku001-$A.jpg\"\ndone\n\n# 先估价不真跑\ndlazy seedream-5.0-pro --dry-run --prompt '...' --images a.jpg --size 1:1\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0-pro` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商正方形主图。\n\n主体是图1 中的[商品品类 + 颜色 + 材质]，[外形/工艺/结构]必须与图1完全一致，\n商品去底后放在画面中央偏左，下方带柔和投影。\n\n背景为[类目对应背景，见第四节]。\n\n右侧竖排中文卖点文案：\n  主标题大字「[功能点主标题 ≤10 字]」，\n  下方两行小字卖点「[≤12 字]」「[≤12 字]」。\n\n左上角一枚[形状]促销角标写「[营销利益点 ≤8 字]」。\n\n无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 中文乱码 | `所有中文必须是清晰可读的简体汉字，不得变形、缺笔或臆造字。` + 缩短文案 |\n| 缩略图看不清主标题 | `主标题字号必须至少为画面高度的 8%，与其他文字形成明显层级差。` |\n| 文字压在商品上 | `商品区与文字区不得重叠：商品占左侧 55%，文字占右侧 40%，中间留 5% 间距。` |\n| 商品被重绘 | `商品必须与图1完全一致，不得改变外形、颜色、材质或 logo。` |\n| 角标喧宾夺主 | `角标直径不超过画面宽度的 18%，不得遮挡商品主体。` |\n| 出现了没给的文案 | `画面中只能出现上述指定的中文，不得添加任何其他文字。` |\n\n---\n\n## 7、执行流程\n\n1. **拆文案**：功能点（进主标题/小字）和营销利益点（进角标）分开，别混。\n2. **压字数**：主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字。\n3. **定类目 → 背景与配色**（第四节表格）。\n4. **按三个区写 prompt**（第三节），商品保真句必写。\n5. **`--batch 3`** 挑字形正确的一张，落盘到 `docs/item-selling-point/`。\n6. **缩到 200×200 检查可读性**——主图在列表页就是这个尺寸。\n7. **合规检查**：功能点是否有依据、促销是否真实存在、有无绝对化用语。\n8. **大促换角标**：文案区保持不变，只改角标那一句重跑（第四节循环）。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 中文乱码 | 文案太长 / 缺约束 | 缩短文案 + 追加字形约束句 |\n| 缩略图看不清 | 主标题字号不够 | 追加主标题占画面高度 8% 句 |\n| 文字盖在商品上 | 未划分区域 | 追加区域占比句 |\n| 角标太大抢戏 | 未限制尺寸 | 追加角标直径 ≤18% 句 |\n| 出现了没给的文案 | 模型自行补文案 | 追加只允许指定中文句 |\n| 商品外形被改 | 未写保真句 | 追加商品保真句 |\n| 功能点和促销挤在一起 | 两类文案没分区 | 功能点进文案区，利益点只进角标 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.17:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"item-selling-point\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1791078292636\n}\n\nFile v1.0.17:references/model-flags.md\n\n# `seedream-5.0-pro` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0-pro` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0-pro -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.17:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.17:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.17:skill-card.md\n\n## Description:\n\nTurns a product photo and verified selling points into an ecommerce hero image with Chinese marketing copy.\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 marketing teams use this skill to create square product hero images with readable Chinese selling points and promotional badges from supplied product photos and approved copy.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product images, prompts, and campaign copy are sent to the selected image provider.\n\nMitigation: Confirm the chosen provider and credentials before sending sensitive material; inspect the request with dry-run first.\n\nRisk: Generated text or product details may be inaccurate or make unsupported promotional claims.\n\nMitigation: Verify product appearance, Chinese text, selling points, and promotions against approved source material before publication.\n\nRisk: The sample brand configuration may not match the intended store or market.\n\nMitigation: Review and edit the example brand settings before reuse.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/item-selling-point)\n- [Image provider and CLI reference](references/provider-cli.md)\n- [Image model flags](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Images, Guidance, Shell commands]\n\n**Output Format:** [Product hero image files with Chinese copy; generation and review guidance in Markdown]\n\n**Output Parameters:** [2D image, normally square; optional 3:4 layout]\n\n**Other Properties Related to Output:** [Product appearance, Chinese text legibility, and promotional claims require human review.]\n\n## Skill Version(s):\n\n1.0.17 (source: release metadata 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.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, 25060 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (1933b), SKILL.md (11740b), _meta.json (138b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: item-selling-point\nversion: 1.0.16\ndescription: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n---\n\n# item-selling-point — 商品图生成电商主图\n\n商品图 + 卖点文案 → **带排版的转化型电商主图**。\n\n和 [item-detail](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-detail/skill.md) 的分工：item-detail 出**详情页长图的各个模块**（信息量大、多模块），本技能出**主图位的单张方图**（信息密度低、要在缩略图尺寸下也能看清）。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/product-shoes.jpg\" width=\"280\"> |\n| `product-shoes.jpg` — 黑色鳄鱼纹亮面皮革布洛克德比鞋，白底，800×800 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1:1 / 2048×2048，5 credits。鞋的鳄鱼纹压花、雕花孔、鞋带与厚齿底保持一致，去底后居中偏左带柔和投影；右侧主标题「真皮软底 通勤久站不累」与两行小字卖点字形正确、层级分明；左上红色圆形角标「满300减30」；深灰渐变背景。\n\n---\n\n## 1、能力边界\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张 |\n| 去除商品图背景 | 开关；开启后商品去底再合成 |\n| 商品类目 | 决定背景与配色基调 |\n| 参考图 | 可选，决定版式与配色 |\n| **商品功能点** | ≤100 字，多个用 `/` 分隔，例：`持久续航/防水防汗` |\n| **营销利益点** | ≤100 字，多个用 `/` 分隔，例：`年货狂欢节/满300-30` |\n\n**功能点和利益点要分开**：功能点是产品能力（排在主标题/副标题），利益点是促销信息（排在角标/腰带）。混在一起排版会乱。\n\n**不做**：不编造商品没有的功能；不生成虚假促销（不存在的活动、虚假折扣、虚假原价）；不使用绝对化用语（最、第一、国家级）；不改商品外形与颜色。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 白底或纯色底商品图 | 去底最干净 |\n| ✅ 文案精简 | 主图在列表页只有 200px 左右，长句根本看不见 |\n| ✅ 主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字 | 缩略图可读性的经验值 |\n| ❌ 塞五条卖点 | 主图最多承载 1 个主标题 + 2 行小字 + 1 个角标 |\n| ❌ 未经核实的功效/促销 | 平台合规风险 |\n\n---\n\n## 3、主图版式的三个区\n\n把方图切成三个区，每个区只放一种信息：\n\n```text\n┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘\n```\n\n写进 prompt：\n\n```text\n商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。\n```\n\n**缩略图检查**：把输出缩到 200×200 看一眼——主标题还认得出来吗？认不出就再缩短文案或加大字号层级。\n\n---\n\n## 4、类目 → 背景与配色\n\n| 类目 | 背景 | 文字色 | 角标色 |\n| --- | --- | --- | --- |\n| 服饰 | 米灰 / 燕麦色渐变 | 深灰 | 砖红 |\n| 箱包 / 鞋品 | 深灰到浅灰渐变 | 黑 | 正红 |\n| 婴童 / 宠物 | 奶油 / 浅粉 | 暖棕 | 珊瑚粉 |\n| 美妆 | 大理石 / 丝绒 | 黑金 | 酒红 |\n| 3C / 电器 | 深色科技渐变 | 白 | 荧光蓝 |\n| 家居 / 家具灯饰 | 实景房间浅景深 | 深棕 | 橄榄绿 |\n| 食品厨具 | 木质台面暖调 | 深棕 | 橙红 |\n| 珠宝饰品 | 深色绒布聚光 | 白金 | 深红 |\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0-pro`**（专业档图像模型，中文字形与版面控制最稳；主图上的文案必须一眼可读、零乱码，字形正确率是首要指标）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-selling-point \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/item-selling-point-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0-pro --prompt '...' --images ... --save output/item-selling-point.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`；带版式参考时 `[商品图, 参考图]` | 顺序即 prompt 中的 图1 / 图2 |\n| `--size` | `1:1`（主图位标准方图）/ `3:4`（部分平台竖版主图） | 跟随平台主图规范 |\n| `--resolution` | `2k` | 主图通常 800~1200px |\n| `--batch` | `3` | 中文排版随机性，挑字形正确的 |\n| `--save` | `docs/item-selling-point/output-<sku>-<活动>.jpg` | 按活动归档，大促换角标只需重跑 |\n\n### Command Examples\n\n```bash\n# basic call\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 商品，鞋型与材质必须与图1完全一致，去底后放在画面中央偏左，下方带柔和投影。背景深灰到浅灰渐变。右侧竖排中文卖点：主标题大字「真皮软底 通勤久站不累」，下方两行小字「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角红色圆形角标写「满300减30」。无衬线黑体，排版整齐，中文字清晰正确无乱码。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1\n\n# complex call: 一个 SKU 铺多个大促角标版本（文案区不变，只换角标）\nSRC=docs/item-selling-point/product-shoes.jpg\nBODY='主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。'\nSTYLE='无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。'\nfor A in daily d11 newyear; do\n  case $A in\n    daily)   BADGE='左上角一枚红色圆形促销角标写「满300减30」' ;;\n    d11)     BADGE='左上角一枚红色圆形促销角标写「双11 5折起」' ;;\n    newyear) BADGE='左上角一枚红色圆形促销角标写「年货节 直降100」' ;;\n  esac\n  dlazy seedream-5.0-pro \\\n    --prompt \"电商正方形主图。${BODY}${BADGE}。${STYLE}\" \\\n    --images \"$SRC\" --size 1:1 --resolution 2k \\\n    --batch 3 --save \"docs/item-selling-point/output-sku001-$A.jpg\"\ndone\n\n# 先估价不真跑\ndlazy seedream-5.0-pro --dry-run --prompt '...' --images a.jpg --size 1:1\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0-pro` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商正方形主图。\n\n主体是图1 中的[商品品类 + 颜色 + 材质]，[外形/工艺/结构]必须与图1完全一致，\n商品去底后放在画面中央偏左，下方带柔和投影。\n\n背景为[类目对应背景，见第四节]。\n\n右侧竖排中文卖点文案：\n  主标题大字「[功能点主标题 ≤10 字]」，\n  下方两行小字卖点「[≤12 字]」「[≤12 字]」。\n\n左上角一枚[形状]促销角标写「[营销利益点 ≤8 字]」。\n\n无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 中文乱码 | `所有中文必须是清晰可读的简体汉字，不得变形、缺笔或臆造字。` + 缩短文案 |\n| 缩略图看不清主标题 | `主标题字号必须至少为画面高度的 8%，与其他文字形成明显层级差。` |\n| 文字压在商品上 | `商品区与文字区不得重叠：商品占左侧 55%，文字占右侧 40%，中间留 5% 间距。` |\n| 商品被重绘 | `商品必须与图1完全一致，不得改变外形、颜色、材质或 logo。` |\n| 角标喧宾夺主 | `角标直径不超过画面宽度的 18%，不得遮挡商品主体。` |\n| 出现了没给的文案 | `画面中只能出现上述指定的中文，不得添加任何其他文字。` |\n\n---\n\n## 7、执行流程\n\n1. **拆文案**：功能点（进主标题/小字）和营销利益点（进角标）分开，别混。\n2. **压字数**：主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字。\n3. **定类目 → 背景与配色**（第四节表格）。\n4. **按三个区写 prompt**（第三节），商品保真句必写。\n5. **`--batch 3`** 挑字形正确的一张，落盘到 `docs/item-selling-point/`。\n6. **缩到 200×200 检查可读性**——主图在列表页就是这个尺寸。\n7. **合规检查**：功能点是否有依据、促销是否真实存在、有无绝对化用语。\n8. **大促换角标**：文案区保持不变，只改角标那一句重跑（第四节循环）。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 中文乱码 | 文案太长 / 缺约束 | 缩短文案 + 追加字形约束句 |\n| 缩略图看不清 | 主标题字号不够 | 追加主标题占画面高度 8% 句 |\n| 文字盖在商品上 | 未划分区域 | 追加区域占比句 |\n| 角标太大抢戏 | 未限制尺寸 | 追加角标直径 ≤18% 句 |\n| 出现了没给的文案 | 模型自行补文案 | 追加只允许指定中文句 |\n| 商品外形被改 | 未写保真句 | 追加商品保真句 |\n| 功能点和促销挤在一起 | 两类文案没分区 | 功能点进文案区，利益点只进角标 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.16:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"item-selling-point\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1790918238125\n}\n\nFile v1.0.16:references/model-flags.md\n\n# `seedream-5.0-pro` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0-pro` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0-pro -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.16:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.16:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.16:skill-card.md\n\n## Description:\n\nGuides an agent to turn product photos and verified selling points into e-commerce hero images with legible Chinese copy and promotional badges.\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 prepare product hero images with short Chinese selling points and verified promotional offers.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product images and prompts are sent to the configured image-generation provider.\n\nMitigation: Check which provider credentials are configured, use trusted local files or HTTPS image URLs, and avoid private or sensitive photos.\n\nRisk: Generated Chinese copy or promotional claims may be inaccurate or hard to read.\n\nMitigation: Review the generated image at thumbnail size and verify all product claims, prices, and promotions before publishing.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/dlazyai/skills/item-selling-point)\n- [Image model parameters](references/model-flags.md)\n- [Image provider and data-flow guidance](references/provider-cli.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Image files]\n\n**Output Format:** [Markdown guidance and commands for generating JPEG or PNG product images]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Typically square product images with Chinese selling-point text and an optional promotion badge.]\n\n## Skill Version(s):\n\n1.0.16 (source: skill frontmatter and server-resolved release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.16:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.15: 11 files, 25148 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (2140b), SKILL.md (11740b), _meta.json (138b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: item-selling-point\nversion: 1.0.15\ndescription: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n---\n\n# item-selling-point — 商品图生成电商主图\n\n商品图 + 卖点文案 → **带排版的转化型电商主图**。\n\n和 [item-detail](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-detail/skill.md) 的分工：item-detail 出**详情页长图的各个模块**（信息量大、多模块），本技能出**主图位的单张方图**（信息密度低、要在缩略图尺寸下也能看清）。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/product-shoes.jpg\" width=\"280\"> |\n| `product-shoes.jpg` — 黑色鳄鱼纹亮面皮革布洛克德比鞋，白底，800×800 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1:1 / 2048×2048，5 credits。鞋的鳄鱼纹压花、雕花孔、鞋带与厚齿底保持一致，去底后居中偏左带柔和投影；右侧主标题「真皮软底 通勤久站不累」与两行小字卖点字形正确、层级分明；左上红色圆形角标「满300减30」；深灰渐变背景。\n\n---\n\n## 1、能力边界\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张 |\n| 去除商品图背景 | 开关；开启后商品去底再合成 |\n| 商品类目 | 决定背景与配色基调 |\n| 参考图 | 可选，决定版式与配色 |\n| **商品功能点** | ≤100 字，多个用 `/` 分隔，例：`持久续航/防水防汗` |\n| **营销利益点** | ≤100 字，多个用 `/` 分隔，例：`年货狂欢节/满300-30` |\n\n**功能点和利益点要分开**：功能点是产品能力（排在主标题/副标题），利益点是促销信息（排在角标/腰带）。混在一起排版会乱。\n\n**不做**：不编造商品没有的功能；不生成虚假促销（不存在的活动、虚假折扣、虚假原价）；不使用绝对化用语（最、第一、国家级）；不改商品外形与颜色。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 白底或纯色底商品图 | 去底最干净 |\n| ✅ 文案精简 | 主图在列表页只有 200px 左右，长句根本看不见 |\n| ✅ 主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字 | 缩略图可读性的经验值 |\n| ❌ 塞五条卖点 | 主图最多承载 1 个主标题 + 2 行小字 + 1 个角标 |\n| ❌ 未经核实的功效/促销 | 平台合规风险 |\n\n---\n\n## 3、主图版式的三个区\n\n把方图切成三个区，每个区只放一种信息：\n\n```text\n┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘\n```\n\n写进 prompt：\n\n```text\n商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。\n```\n\n**缩略图检查**：把输出缩到 200×200 看一眼——主标题还认得出来吗？认不出就再缩短文案或加大字号层级。\n\n---\n\n## 4、类目 → 背景与配色\n\n| 类目 | 背景 | 文字色 | 角标色 |\n| --- | --- | --- | --- |\n| 服饰 | 米灰 / 燕麦色渐变 | 深灰 | 砖红 |\n| 箱包 / 鞋品 | 深灰到浅灰渐变 | 黑 | 正红 |\n| 婴童 / 宠物 | 奶油 / 浅粉 | 暖棕 | 珊瑚粉 |\n| 美妆 | 大理石 / 丝绒 | 黑金 | 酒红 |\n| 3C / 电器 | 深色科技渐变 | 白 | 荧光蓝 |\n| 家居 / 家具灯饰 | 实景房间浅景深 | 深棕 | 橄榄绿 |\n| 食品厨具 | 木质台面暖调 | 深棕 | 橙红 |\n| 珠宝饰品 | 深色绒布聚光 | 白金 | 深红 |\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0-pro`**（专业档图像模型，中文字形与版面控制最稳；主图上的文案必须一眼可读、零乱码，字形正确率是首要指标）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-selling-point \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/item-selling-point-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0-pro --prompt '...' --images ... --save output/item-selling-point.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`；带版式参考时 `[商品图, 参考图]` | 顺序即 prompt 中的 图1 / 图2 |\n| `--size` | `1:1`（主图位标准方图）/ `3:4`（部分平台竖版主图） | 跟随平台主图规范 |\n| `--resolution` | `2k` | 主图通常 800~1200px |\n| `--batch` | `3` | 中文排版随机性，挑字形正确的 |\n| `--save` | `docs/item-selling-point/output-<sku>-<活动>.jpg` | 按活动归档，大促换角标只需重跑 |\n\n### Command Examples\n\n```bash\n# basic call\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 商品，鞋型与材质必须与图1完全一致，去底后放在画面中央偏左，下方带柔和投影。背景深灰到浅灰渐变。右侧竖排中文卖点：主标题大字「真皮软底 通勤久站不累」，下方两行小字「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角红色圆形角标写「满300减30」。无衬线黑体，排版整齐，中文字清晰正确无乱码。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1\n\n# complex call: 一个 SKU 铺多个大促角标版本（文案区不变，只换角标）\nSRC=docs/item-selling-point/product-shoes.jpg\nBODY='主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。'\nSTYLE='无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。'\nfor A in daily d11 newyear; do\n  case $A in\n    daily)   BADGE='左上角一枚红色圆形促销角标写「满300减30」' ;;\n    d11)     BADGE='左上角一枚红色圆形促销角标写「双11 5折起」' ;;\n    newyear) BADGE='左上角一枚红色圆形促销角标写「年货节 直降100」' ;;\n  esac\n  dlazy seedream-5.0-pro \\\n    --prompt \"电商正方形主图。${BODY}${BADGE}。${STYLE}\" \\\n    --images \"$SRC\" --size 1:1 --resolution 2k \\\n    --batch 3 --save \"docs/item-selling-point/output-sku001-$A.jpg\"\ndone\n\n# 先估价不真跑\ndlazy seedream-5.0-pro --dry-run --prompt '...' --images a.jpg --size 1:1\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0-pro` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商正方形主图。\n\n主体是图1 中的[商品品类 + 颜色 + 材质]，[外形/工艺/结构]必须与图1完全一致，\n商品去底后放在画面中央偏左，下方带柔和投影。\n\n背景为[类目对应背景，见第四节]。\n\n右侧竖排中文卖点文案：\n  主标题大字「[功能点主标题 ≤10 字]」，\n  下方两行小字卖点「[≤12 字]」「[≤12 字]」。\n\n左上角一枚[形状]促销角标写「[营销利益点 ≤8 字]」。\n\n无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 中文乱码 | `所有中文必须是清晰可读的简体汉字，不得变形、缺笔或臆造字。` + 缩短文案 |\n| 缩略图看不清主标题 | `主标题字号必须至少为画面高度的 8%，与其他文字形成明显层级差。` |\n| 文字压在商品上 | `商品区与文字区不得重叠：商品占左侧 55%，文字占右侧 40%，中间留 5% 间距。` |\n| 商品被重绘 | `商品必须与图1完全一致，不得改变外形、颜色、材质或 logo。` |\n| 角标喧宾夺主 | `角标直径不超过画面宽度的 18%，不得遮挡商品主体。` |\n| 出现了没给的文案 | `画面中只能出现上述指定的中文，不得添加任何其他文字。` |\n\n---\n\n## 7、执行流程\n\n1. **拆文案**：功能点（进主标题/小字）和营销利益点（进角标）分开，别混。\n2. **压字数**：主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字。\n3. **定类目 → 背景与配色**（第四节表格）。\n4. **按三个区写 prompt**（第三节），商品保真句必写。\n5. **`--batch 3`** 挑字形正确的一张，落盘到 `docs/item-selling-point/`。\n6. **缩到 200×200 检查可读性**——主图在列表页就是这个尺寸。\n7. **合规检查**：功能点是否有依据、促销是否真实存在、有无绝对化用语。\n8. **大促换角标**：文案区保持不变，只改角标那一句重跑（第四节循环）。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 中文乱码 | 文案太长 / 缺约束 | 缩短文案 + 追加字形约束句 |\n| 缩略图看不清 | 主标题字号不够 | 追加主标题占画面高度 8% 句 |\n| 文字盖在商品上 | 未划分区域 | 追加区域占比句 |\n| 角标太大抢戏 | 未限制尺寸 | 追加角标直径 ≤18% 句 |\n| 出现了没给的文案 | 模型自行补文案 | 追加只允许指定中文句 |\n| 商品外形被改 | 未写保真句 | 追加商品保真句 |\n| 功能点和促销挤在一起 | 两类文案没分区 | 功能点进文案区，利益点只进角标 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.15:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"item-selling-point\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1790732954791\n}\n\nFile v1.0.15:references/model-flags.md\n\n# `seedream-5.0-pro` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0-pro` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0-pro -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.15:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.15:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.15:skill-card.md\n\n## Description:\n\nCreates Chinese e-commerce product hero images with laid-out selling points and promotional copy from a product photo.\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 a product photo and verified Chinese selling points into a promotional main image with readable copy and a campaign badge.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product images, prompts, and campaign copy are sent to the selected cloud image provider.\n\nMitigation: Use a trusted provider and credentials; avoid uploading sensitive unreleased assets unless its policy permits it.\n\nRisk: An untrusted executable selected through DLAZY_BIN could run locally.\n\nMitigation: Do not set DLAZY_BIN to an untrusted executable.\n\nRisk: Generated text or product appearance may be inaccurate, and promotional claims may be misleading.\n\nMitigation: Check image fidelity, Chinese text, and the factual basis for product benefits and promotions before publishing.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/item-selling-point)\n- [Provider setup and output reference](artifact/references/provider-cli.md)\n- [Image model options](artifact/references/model-flags.md)\n- [dLazy CLI source](https://github.com/dlazy-ai/cli)\n\n## Skill Output:\n\n**Output Type(s):** [Files, Shell commands, Guidance]\n\n**Output Format:** [JPEG product images, with Markdown guidance and optional JSON run status]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Typically a square main image; review Chinese text, product fidelity, and promotion claims before publication.]\n\n## Skill Version(s):\n\n1.0.15 (source: skill frontmatter and 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.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, 25046 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (1897b), SKILL.md (11740b), _meta.json (138b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: item-selling-point\nversion: 1.0.14\ndescription: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n---\n\n# item-selling-point — 商品图生成电商主图\n\n商品图 + 卖点文案 → **带排版的转化型电商主图**。\n\n和 [item-detail](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-detail/skill.md) 的分工：item-detail 出**详情页长图的各个模块**（信息量大、多模块），本技能出**主图位的单张方图**（信息密度低、要在缩略图尺寸下也能看清）。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/product-shoes.jpg\" width=\"280\"> |\n| `product-shoes.jpg` — 黑色鳄鱼纹亮面皮革布洛克德比鞋，白底，800×800 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1:1 / 2048×2048，5 credits。鞋的鳄鱼纹压花、雕花孔、鞋带与厚齿底保持一致，去底后居中偏左带柔和投影；右侧主标题「真皮软底 通勤久站不累」与两行小字卖点字形正确、层级分明；左上红色圆形角标「满300减30」；深灰渐变背景。\n\n---\n\n## 1、能力边界\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张 |\n| 去除商品图背景 | 开关；开启后商品去底再合成 |\n| 商品类目 | 决定背景与配色基调 |\n| 参考图 | 可选，决定版式与配色 |\n| **商品功能点** | ≤100 字，多个用 `/` 分隔，例：`持久续航/防水防汗` |\n| **营销利益点** | ≤100 字，多个用 `/` 分隔，例：`年货狂欢节/满300-30` |\n\n**功能点和利益点要分开**：功能点是产品能力（排在主标题/副标题），利益点是促销信息（排在角标/腰带）。混在一起排版会乱。\n\n**不做**：不编造商品没有的功能；不生成虚假促销（不存在的活动、虚假折扣、虚假原价）；不使用绝对化用语（最、第一、国家级）；不改商品外形与颜色。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 白底或纯色底商品图 | 去底最干净 |\n| ✅ 文案精简 | 主图在列表页只有 200px 左右，长句根本看不见 |\n| ✅ 主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字 | 缩略图可读性的经验值 |\n| ❌ 塞五条卖点 | 主图最多承载 1 个主标题 + 2 行小字 + 1 个角标 |\n| ❌ 未经核实的功效/促销 | 平台合规风险 |\n\n---\n\n## 3、主图版式的三个区\n\n把方图切成三个区，每个区只放一种信息：\n\n```text\n┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘\n```\n\n写进 prompt：\n\n```text\n商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。\n```\n\n**缩略图检查**：把输出缩到 200×200 看一眼——主标题还认得出来吗？认不出就再缩短文案或加大字号层级。\n\n---\n\n## 4、类目 → 背景与配色\n\n| 类目 | 背景 | 文字色 | 角标色 |\n| --- | --- | --- | --- |\n| 服饰 | 米灰 / 燕麦色渐变 | 深灰 | 砖红 |\n| 箱包 / 鞋品 | 深灰到浅灰渐变 | 黑 | 正红 |\n| 婴童 / 宠物 | 奶油 / 浅粉 | 暖棕 | 珊瑚粉 |\n| 美妆 | 大理石 / 丝绒 | 黑金 | 酒红 |\n| 3C / 电器 | 深色科技渐变 | 白 | 荧光蓝 |\n| 家居 / 家具灯饰 | 实景房间浅景深 | 深棕 | 橄榄绿 |\n| 食品厨具 | 木质台面暖调 | 深棕 | 橙红 |\n| 珠宝饰品 | 深色绒布聚光 | 白金 | 深红 |\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0-pro`**（专业档图像模型，中文字形与版面控制最稳；主图上的文案必须一眼可读、零乱码，字形正确率是首要指标）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-selling-point \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/item-selling-point-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0-pro --prompt '...' --images ... --save output/item-selling-point.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`；带版式参考时 `[商品图, 参考图]` | 顺序即 prompt 中的 图1 / 图2 |\n| `--size` | `1:1`（主图位标准方图）/ `3:4`（部分平台竖版主图） | 跟随平台主图规范 |\n| `--resolution` | `2k` | 主图通常 800~1200px |\n| `--batch` | `3` | 中文排版随机性，挑字形正确的 |\n| `--save` | `docs/item-selling-point/output-<sku>-<活动>.jpg` | 按活动归档，大促换角标只需重跑 |\n\n### Command Examples\n\n```bash\n# basic call\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 商品，鞋型与材质必须与图1完全一致，去底后放在画面中央偏左，下方带柔和投影。背景深灰到浅灰渐变。右侧竖排中文卖点：主标题大字「真皮软底 通勤久站不累」，下方两行小字「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角红色圆形角标写「满300减30」。无衬线黑体，排版整齐，中文字清晰正确无乱码。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1\n\n# complex call: 一个 SKU 铺多个大促角标版本（文案区不变，只换角标）\nSRC=docs/item-selling-point/product-shoes.jpg\nBODY='主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。'\nSTYLE='无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。'\nfor A in daily d11 newyear; do\n  case $A in\n    daily)   BADGE='左上角一枚红色圆形促销角标写「满300减30」' ;;\n    d11)     BADGE='左上角一枚红色圆形促销角标写「双11 5折起」' ;;\n    newyear) BADGE='左上角一枚红色圆形促销角标写「年货节 直降100」' ;;\n  esac\n  dlazy seedream-5.0-pro \\\n    --prompt \"电商正方形主图。${BODY}${BADGE}。${STYLE}\" \\\n    --images \"$SRC\" --size 1:1 --resolution 2k \\\n    --batch 3 --save \"docs/item-selling-point/output-sku001-$A.jpg\"\ndone\n\n# 先估价不真跑\ndlazy seedream-5.0-pro --dry-run --prompt '...' --images a.jpg --size 1:1\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0-pro` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商正方形主图。\n\n主体是图1 中的[商品品类 + 颜色 + 材质]，[外形/工艺/结构]必须与图1完全一致，\n商品去底后放在画面中央偏左，下方带柔和投影。\n\n背景为[类目对应背景，见第四节]。\n\n右侧竖排中文卖点文案：\n  主标题大字「[功能点主标题 ≤10 字]」，\n  下方两行小字卖点「[≤12 字]」「[≤12 字]」。\n\n左上角一枚[形状]促销角标写「[营销利益点 ≤8 字]」。\n\n无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 中文乱码 | `所有中文必须是清晰可读的简体汉字，不得变形、缺笔或臆造字。` + 缩短文案 |\n| 缩略图看不清主标题 | `主标题字号必须至少为画面高度的 8%，与其他文字形成明显层级差。` |\n| 文字压在商品上 | `商品区与文字区不得重叠：商品占左侧 55%，文字占右侧 40%，中间留 5% 间距。` |\n| 商品被重绘 | `商品必须与图1完全一致，不得改变外形、颜色、材质或 logo。` |\n| 角标喧宾夺主 | `角标直径不超过画面宽度的 18%，不得遮挡商品主体。` |\n| 出现了没给的文案 | `画面中只能出现上述指定的中文，不得添加任何其他文字。` |\n\n---\n\n## 7、执行流程\n\n1. **拆文案**：功能点（进主标题/小字）和营销利益点（进角标）分开，别混。\n2. **压字数**：主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字。\n3. **定类目 → 背景与配色**（第四节表格）。\n4. **按三个区写 prompt**（第三节），商品保真句必写。\n5. **`--batch 3`** 挑字形正确的一张，落盘到 `docs/item-selling-point/`。\n6. **缩到 200×200 检查可读性**——主图在列表页就是这个尺寸。\n7. **合规检查**：功能点是否有依据、促销是否真实存在、有无绝对化用语。\n8. **大促换角标**：文案区保持不变，只改角标那一句重跑（第四节循环）。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 中文乱码 | 文案太长 / 缺约束 | 缩短文案 + 追加字形约束句 |\n| 缩略图看不清 | 主标题字号不够 | 追加主标题占画面高度 8% 句 |\n| 文字盖在商品上 | 未划分区域 | 追加区域占比句 |\n| 角标太大抢戏 | 未限制尺寸 | 追加角标直径 ≤18% 句 |\n| 出现了没给的文案 | 模型自行补文案 | 追加只允许指定中文句 |\n| 商品外形被改 | 未写保真句 | 追加商品保真句 |\n| 功能点和促销挤在一起 | 两类文案没分区 | 功能点进文案区，利益点只进角标 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"item-selling-point\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790563070363\n}\n\nFile v1.0.14:references/model-flags.md\n\n# `seedream-5.0-pro` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0-pro` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0-pro -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.14:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.14:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nHelps create Chinese-language ecommerce product images with concise selling points and promotional badges from a supplied product photo.\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 designers use this skill to prepare a product hero image with readable Chinese feature text and a verified promotional message.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product photos, selling points and prompts may be sent to a cloud image provider.\n\nMitigation: Choose the provider explicitly, inspect the request with --dry-run, and obtain approval before submitting confidential assets.\n\nRisk: Generated copy or visuals may misstate product features or promotions or render Chinese text incorrectly.\n\nMitigation: Verify feature claims and promotion terms against source information, and inspect the finished image and text before use.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/item-selling-point)\n- [Provider CLI reference](references/provider-cli.md)\n- [Image model options](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Text, Shell commands]\n\n**Output Format:** [Markdown with image prompts and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Running the commands can save generated product images locally; review the image and text before publication.]\n\n## Skill Version(s):\n\n1.0.14 (source: SKILL.md frontmatter and 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, 25247 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (2335b), SKILL.md (11740b), _meta.json (138b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: item-selling-point\nversion: 1.0.13\ndescription: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n---\n\n# item-selling-point — 商品图生成电商主图\n\n商品图 + 卖点文案 → **带排版的转化型电商主图**。\n\n和 [item-detail](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-detail/skill.md) 的分工：item-detail 出**详情页长图的各个模块**（信息量大、多模块），本技能出**主图位的单张方图**（信息密度低、要在缩略图尺寸下也能看清）。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/product-shoes.jpg\" width=\"280\"> |\n| `product-shoes.jpg` — 黑色鳄鱼纹亮面皮革布洛克德比鞋，白底，800×800 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1:1 / 2048×2048，5 credits。鞋的鳄鱼纹压花、雕花孔、鞋带与厚齿底保持一致，去底后居中偏左带柔和投影；右侧主标题「真皮软底 通勤久站不累」与两行小字卖点字形正确、层级分明；左上红色圆形角标「满300减30」；深灰渐变背景。\n\n---\n\n## 1、能力边界\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张 |\n| 去除商品图背景 | 开关；开启后商品去底再合成 |\n| 商品类目 | 决定背景与配色基调 |\n| 参考图 | 可选，决定版式与配色 |\n| **商品功能点** | ≤100 字，多个用 `/` 分隔，例：`持久续航/防水防汗` |\n| **营销利益点** | ≤100 字，多个用 `/` 分隔，例：`年货狂欢节/满300-30` |\n\n**功能点和利益点要分开**：功能点是产品能力（排在主标题/副标题），利益点是促销信息（排在角标/腰带）。混在一起排版会乱。\n\n**不做**：不编造商品没有的功能；不生成虚假促销（不存在的活动、虚假折扣、虚假原价）；不使用绝对化用语（最、第一、国家级）；不改商品外形与颜色。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 白底或纯色底商品图 | 去底最干净 |\n| ✅ 文案精简 | 主图在列表页只有 200px 左右，长句根本看不见 |\n| ✅ 主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字 | 缩略图可读性的经验值 |\n| ❌ 塞五条卖点 | 主图最多承载 1 个主标题 + 2 行小字 + 1 个角标 |\n| ❌ 未经核实的功效/促销 | 平台合规风险 |\n\n---\n\n## 3、主图版式的三个区\n\n把方图切成三个区，每个区只放一种信息：\n\n```text\n┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘\n```\n\n写进 prompt：\n\n```text\n商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。\n```\n\n**缩略图检查**：把输出缩到 200×200 看一眼——主标题还认得出来吗？认不出就再缩短文案或加大字号层级。\n\n---\n\n## 4、类目 → 背景与配色\n\n| 类目 | 背景 | 文字色 | 角标色 |\n| --- | --- | --- | --- |\n| 服饰 | 米灰 / 燕麦色渐变 | 深灰 | 砖红 |\n| 箱包 / 鞋品 | 深灰到浅灰渐变 | 黑 | 正红 |\n| 婴童 / 宠物 | 奶油 / 浅粉 | 暖棕 | 珊瑚粉 |\n| 美妆 | 大理石 / 丝绒 | 黑金 | 酒红 |\n| 3C / 电器 | 深色科技渐变 | 白 | 荧光蓝 |\n| 家居 / 家具灯饰 | 实景房间浅景深 | 深棕 | 橄榄绿 |\n| 食品厨具 | 木质台面暖调 | 深棕 | 橙红 |\n| 珠宝饰品 | 深色绒布聚光 | 白金 | 深红 |\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0-pro`**（专业档图像模型，中文字形与版面控制最稳；主图上的文案必须一眼可读、零乱码，字形正确率是首要指标）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-selling-point \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/item-selling-point-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0-pro --prompt '...' --images ... --save output/item-selling-point.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`；带版式参考时 `[商品图, 参考图]` | 顺序即 prompt 中的 图1 / 图2 |\n| `--size` | `1:1`（主图位标准方图）/ `3:4`（部分平台竖版主图） | 跟随平台主图规范 |\n| `--resolution` | `2k` | 主图通常 800~1200px |\n| `--batch` | `3` | 中文排版随机性，挑字形正确的 |\n| `--save` | `docs/item-selling-point/output-<sku>-<活动>.jpg` | 按活动归档，大促换角标只需重跑 |\n\n### Command Examples\n\n```bash\n# basic call\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 商品，鞋型与材质必须与图1完全一致，去底后放在画面中央偏左，下方带柔和投影。背景深灰到浅灰渐变。右侧竖排中文卖点：主标题大字「真皮软底 通勤久站不累」，下方两行小字「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角红色圆形角标写「满300减30」。无衬线黑体，排版整齐，中文字清晰正确无乱码。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1\n\n# complex call: 一个 SKU 铺多个大促角标版本（文案区不变，只换角标）\nSRC=docs/item-selling-point/product-shoes.jpg\nBODY='主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。'\nSTYLE='无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。'\nfor A in daily d11 newyear; do\n  case $A in\n    daily)   BADGE='左上角一枚红色圆形促销角标写「满300减30」' ;;\n    d11)     BADGE='左上角一枚红色圆形促销角标写「双11 5折起」' ;;\n    newyear) BADGE='左上角一枚红色圆形促销角标写「年货节 直降100」' ;;\n  esac\n  dlazy seedream-5.0-pro \\\n    --prompt \"电商正方形主图。${BODY}${BADGE}。${STYLE}\" \\\n    --images \"$SRC\" --size 1:1 --resolution 2k \\\n    --batch 3 --save \"docs/item-selling-point/output-sku001-$A.jpg\"\ndone\n\n# 先估价不真跑\ndlazy seedream-5.0-pro --dry-run --prompt '...' --images a.jpg --size 1:1\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0-pro` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商正方形主图。\n\n主体是图1 中的[商品品类 + 颜色 + 材质]，[外形/工艺/结构]必须与图1完全一致，\n商品去底后放在画面中央偏左，下方带柔和投影。\n\n背景为[类目对应背景，见第四节]。\n\n右侧竖排中文卖点文案：\n  主标题大字「[功能点主标题 ≤10 字]」，\n  下方两行小字卖点「[≤12 字]」「[≤12 字]」。\n\n左上角一枚[形状]促销角标写「[营销利益点 ≤8 字]」。\n\n无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 中文乱码 | `所有中文必须是清晰可读的简体汉字，不得变形、缺笔或臆造字。` + 缩短文案 |\n| 缩略图看不清主标题 | `主标题字号必须至少为画面高度的 8%，与其他文字形成明显层级差。` |\n| 文字压在商品上 | `商品区与文字区不得重叠：商品占左侧 55%，文字占右侧 40%，中间留 5% 间距。` |\n| 商品被重绘 | `商品必须与图1完全一致，不得改变外形、颜色、材质或 logo。` |\n| 角标喧宾夺主 | `角标直径不超过画面宽度的 18%，不得遮挡商品主体。` |\n| 出现了没给的文案 | `画面中只能出现上述指定的中文，不得添加任何其他文字。` |\n\n---\n\n## 7、执行流程\n\n1. **拆文案**：功能点（进主标题/小字）和营销利益点（进角标）分开，别混。\n2. **压字数**：主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字。\n3. **定类目 → 背景与配色**（第四节表格）。\n4. **按三个区写 prompt**（第三节），商品保真句必写。\n5. **`--batch 3`** 挑字形正确的一张，落盘到 `docs/item-selling-point/`。\n6. **缩到 200×200 检查可读性**——主图在列表页就是这个尺寸。\n7. **合规检查**：功能点是否有依据、促销是否真实存在、有无绝对化用语。\n8. **大促换角标**：文案区保持不变，只改角标那一句重跑（第四节循环）。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 中文乱码 | 文案太长 / 缺约束 | 缩短文案 + 追加字形约束句 |\n| 缩略图看不清 | 主标题字号不够 | 追加主标题占画面高度 8% 句 |\n| 文字盖在商品上 | 未划分区域 | 追加区域占比句 |\n| 角标太大抢戏 | 未限制尺寸 | 追加角标直径 ≤18% 句 |\n| 出现了没给的文案 | 模型自行补文案 | 追加只允许指定中文句 |\n| 商品外形被改 | 未写保真句 | 追加商品保真句 |\n| 功能点和促销挤在一起 | 两类文案没分区 | 功能点进文案区，利益点只进角标 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"item-selling-point\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1790217561335\n}\n\nFile v1.0.13:references/model-flags.md\n\n# `seedream-5.0-pro` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0-pro` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0-pro -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.13:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.13:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nGenerates conversion-oriented e-commerce main product images by combining a product image with Chinese selling-point copy and layout guidance.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal sellers, marketers, and developers use this skill to turn a product image and short selling points into a single e-commerce main image with readable Chinese promotional copy.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product images, prompts, and optional brand assets may be sent to the selected generation provider.\n\nMitigation: Use --dry-run to inspect the request, avoid confidential imagery unless the provider is acceptable, and use trusted CLI installation paths.\n\nRisk: Generated marketing copy or badges could imply unsupported product claims or false promotions.\n\nMitigation: Verify product functions and promotions before generation, and avoid absolute claims or unverified discounts.\n\nRisk: Generated images may alter product appearance or make Chinese text unreadable at marketplace thumbnail sizes.\n\nMitigation: Use the skill's product-fidelity prompt constraints, generate multiple candidates, and inspect the final image at thumbnail size before publishing.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/dlazyai/skills/item-selling-point)\n- [Provider CLI reference](references/provider-cli.md)\n- [seedream-5.0-pro parameter reference](references/model-flags.md)\n- [dLazy CLI source](https://github.com/dlazy-ai/cli)\n\n## Skill Output:\n\n**Output Type(s):** [Files, Shell commands, Configuration instructions, Guidance]\n\n**Output Format:** [Markdown guidance with bash commands and generated image files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Typically saves 1:1 or 3:4 e-commerce image files; batch mode may create multiple candidate outputs.]\n\n## Skill Version(s):\n\n1.0.13 (source: SKILL.md frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.13:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.12: 11 files, 25380 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (2710b), SKILL.md (11740b), _meta.json (138b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: item-selling-point\nversion: 1.0.12\ndescription: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n---\n\n# item-selling-point — 商品图生成电商主图\n\n商品图 + 卖点文案 → **带排版的转化型电商主图**。\n\n和 [item-detail](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-detail/skill.md) 的分工：item-detail 出**详情页长图的各个模块**（信息量大、多模块），本技能出**主图位的单张方图**（信息密度低、要在缩略图尺寸下也能看清）。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/product-shoes.jpg\" width=\"280\"> |\n| `product-shoes.jpg` — 黑色鳄鱼纹亮面皮革布洛克德比鞋，白底，800×800 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1:1 / 2048×2048，5 credits。鞋的鳄鱼纹压花、雕花孔、鞋带与厚齿底保持一致，去底后居中偏左带柔和投影；右侧主标题「真皮软底 通勤久站不累」与两行小字卖点字形正确、层级分明；左上红色圆形角标「满300减30」；深灰渐变背景。\n\n---\n\n## 1、能力边界\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张 |\n| 去除商品图背景 | 开关；开启后商品去底再合成 |\n| 商品类目 | 决定背景与配色基调 |\n| 参考图 | 可选，决定版式与配色 |\n| **商品功能点** | ≤100 字，多个用 `/` 分隔，例：`持久续航/防水防汗` |\n| **营销利益点** | ≤100 字，多个用 `/` 分隔，例：`年货狂欢节/满300-30` |\n\n**功能点和利益点要分开**：功能点是产品能力（排在主标题/副标题），利益点是促销信息（排在角标/腰带）。混在一起排版会乱。\n\n**不做**：不编造商品没有的功能；不生成虚假促销（不存在的活动、虚假折扣、虚假原价）；不使用绝对化用语（最、第一、国家级）；不改商品外形与颜色。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 白底或纯色底商品图 | 去底最干净 |\n| ✅ 文案精简 | 主图在列表页只有 200px 左右，长句根本看不见 |\n| ✅ 主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字 | 缩略图可读性的经验值 |\n| ❌ 塞五条卖点 | 主图最多承载 1 个主标题 + 2 行小字 + 1 个角标 |\n| ❌ 未经核实的功效/促销 | 平台合规风险 |\n\n---\n\n## 3、主图版式的三个区\n\n把方图切成三个区，每个区只放一种信息：\n\n```text\n┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘\n```\n\n写进 prompt：\n\n```text\n商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。\n```\n\n**缩略图检查**：把输出缩到 200×200 看一眼——主标题还认得出来吗？认不出就再缩短文案或加大字号层级。\n\n---\n\n## 4、类目 → 背景与配色\n\n| 类目 | 背景 | 文字色 | 角标色 |\n| --- | --- | --- | --- |\n| 服饰 | 米灰 / 燕麦色渐变 | 深灰 | 砖红 |\n| 箱包 / 鞋品 | 深灰到浅灰渐变 | 黑 | 正红 |\n| 婴童 / 宠物 | 奶油 / 浅粉 | 暖棕 | 珊瑚粉 |\n| 美妆 | 大理石 / 丝绒 | 黑金 | 酒红 |\n| 3C / 电器 | 深色科技渐变 | 白 | 荧光蓝 |\n| 家居 / 家具灯饰 | 实景房间浅景深 | 深棕 | 橄榄绿 |\n| 食品厨具 | 木质台面暖调 | 深棕 | 橙红 |\n| 珠宝饰品 | 深色绒布聚光 | 白金 | 深红 |\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0-pro`**（专业档图像模型，中文字形与版面控制最稳；主图上的文案必须一眼可读、零乱码，字形正确率是首要指标）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-selling-point \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/item-selling-point-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0-pro --prompt '...' --images ... --save output/item-selling-point.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[商品图]`；带版式参考时 `[商品图, 参考图]` | 顺序即 prompt 中的 图1 / 图2 |\n| `--size` | `1:1`（主图位标准方图）/ `3:4`（部分平台竖版主图） | 跟随平台主图规范 |\n| `--resolution` | `2k` | 主图通常 800~1200px |\n| `--batch` | `3` | 中文排版随机性，挑字形正确的 |\n| `--save` | `docs/item-selling-point/output-<sku>-<活动>.jpg` | 按活动归档，大促换角标只需重跑 |\n\n### Command Examples\n\n```bash\n# basic call\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 商品，鞋型与材质必须与图1完全一致，去底后放在画面中央偏左，下方带柔和投影。背景深灰到浅灰渐变。右侧竖排中文卖点：主标题大字「真皮软底 通勤久站不累」，下方两行小字「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角红色圆形角标写「满300减30」。无衬线黑体，排版整齐，中文字清晰正确无乱码。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1\n\n# complex call: 一个 SKU 铺多个大促角标版本（文案区不变，只换角标）\nSRC=docs/item-selling-point/product-shoes.jpg\nBODY='主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。'\nSTYLE='无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。'\nfor A in daily d11 newyear; do\n  case $A in\n    daily)   BADGE='左上角一枚红色圆形促销角标写「满300减30」' ;;\n    d11)     BADGE='左上角一枚红色圆形促销角标写「双11 5折起」' ;;\n    newyear) BADGE='左上角一枚红色圆形促销角标写「年货节 直降100」' ;;\n  esac\n  dlazy seedream-5.0-pro \\\n    --prompt \"电商正方形主图。${BODY}${BADGE}。${STYLE}\" \\\n    --images \"$SRC\" --size 1:1 --resolution 2k \\\n    --batch 3 --save \"docs/item-selling-point/output-sku001-$A.jpg\"\ndone\n\n# 先估价不真跑\ndlazy seedream-5.0-pro --dry-run --prompt '...' --images a.jpg --size 1:1\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `seedream-5.0-pro` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 6、Prompt 模板\n\n```text\n电商正方形主图。\n\n主体是图1 中的[商品品类 + 颜色 + 材质]，[外形/工艺/结构]必须与图1完全一致，\n商品去底后放在画面中央偏左，下方带柔和投影。\n\n背景为[类目对应背景，见第四节]。\n\n右侧竖排中文卖点文案：\n  主标题大字「[功能点主标题 ≤10 字]」，\n  下方两行小字卖点「[≤12 字]」「[≤12 字]」。\n\n左上角一枚[形状]促销角标写「[营销利益点 ≤8 字]」。\n\n无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 中文乱码 | `所有中文必须是清晰可读的简体汉字，不得变形、缺笔或臆造字。` + 缩短文案 |\n| 缩略图看不清主标题 | `主标题字号必须至少为画面高度的 8%，与其他文字形成明显层级差。` |\n| 文字压在商品上 | `商品区与文字区不得重叠：商品占左侧 55%，文字占右侧 40%，中间留 5% 间距。` |\n| 商品被重绘 | `商品必须与图1完全一致，不得改变外形、颜色、材质或 logo。` |\n| 角标喧宾夺主 | `角标直径不超过画面宽度的 18%，不得遮挡商品主体。` |\n| 出现了没给的文案 | `画面中只能出现上述指定的中文，不得添加任何其他文字。` |\n\n---\n\n## 7、执行流程\n\n1. **拆文案**：功能点（进主标题/小字）和营销利益点（进角标）分开，别混。\n2. **压字数**：主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字。\n3. **定类目 → 背景与配色**（第四节表格）。\n4. **按三个区写 prompt**（第三节），商品保真句必写。\n5. **`--batch 3`** 挑字形正确的一张，落盘到 `docs/item-selling-point/`。\n6. **缩到 200×200 检查可读性**——主图在列表页就是这个尺寸。\n7. **合规检查**：功能点是否有依据、促销是否真实存在、有无绝对化用语。\n8. **大促换角标**：文案区保持不变，只改角标那一句重跑（第四节循环）。\n\n---\n\n## 8、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 中文乱码 | 文案太长 / 缺约束 | 缩短文案 + 追加字形约束句 |\n| 缩略图看不清 | 主标题字号不够 | 追加主标题占画面高度 8% 句 |\n| 文字盖在商品上 | 未划分区域 | 追加区域占比句 |\n| 角标太大抢戏 | 未限制尺寸 | 追加角标直径 ≤18% 句 |\n| 出现了没给的文案 | 模型自行补文案 | 追加只允许指定中文句 |\n| 商品外形被改 | 未写保真句 | 追加商品保真句 |\n| 功能点和促销挤在一起 | 两类文案没分区 | 功能点进文案区，利益点只进角标 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"item-selling-point\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1790041349514\n}\n\nFile v1.0.12:references/model-flags.md\n\n# `seedream-5.0-pro` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0-pro` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0-pro -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.12:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\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.12: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\": \"\n\nArchive v1.0.11: 11 files, 25300 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (2261b), SKILL.md (11740b), _meta.json (138b)\n\nArchive v1.0.10: 11 files, 25392 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1874b), 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 (2707b), SKILL.md (11740b), _meta.json (138b)","readmeExcerpt":"Skill: 卖点主图生成 Item Selling Point Owner: dlazyai Summary: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:52:46.587Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:44:52.649Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:44:52.636Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:17:18.125Z | user 例行版本更新 2026-10-02 v1.0.15 | 20","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"dlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg"},{"language":"text","snippet":"┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘"},{"language":"text","snippet":"商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。"},{"language":"bash","snippet":"# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-selling-point \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/item-selling-point-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy seedream-5.0-pro --prompt '...' --images ... --save output/item-selling-point.jpg"},{"language":"bash","snippet":"# basic call\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 商品，鞋型与材质必须与图1完全一致，去底后放在画面中央偏左，下方带柔和投影。背景深灰到浅灰渐变。右侧竖排中文卖点：主标题大字「真皮软底 通勤久站不累」，下方两行小字「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角红色圆形角标写「满300减30」。无衬线黑体，排版整齐，中文字清晰正确无乱码。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1\n\n# complex call: 一个 SKU 铺多个大促角标版本（文案区不变，只换角标）\nSRC=docs/item-selling-point/product-shoes.jpg\nBODY='主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。'\nSTYLE='无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。'\nfor A in daily d11 newyear; do\n  case $A in\n    daily)   BADGE='左上角一枚红色圆形促销角标写「满300减30」' ;;\n    d11)     BADGE='左上角一枚红色圆形促销角标写「双11 5折起」' ;;\n    newyear) BADGE='左上角一枚红色圆形促销角标写「年货节 直降100」' ;;\n  esac\n  dlazy seedream-5.0-pro \\\n    --prompt \"电商正方形主图。${BODY}${BADGE}。${STYLE}\" \\\n    --images \"$SRC\" --size 1:1 --resolution 2k \\\n    --batch 3 --save \"docs/item-selling-point/output-sku001-$A.jpg\"\ndone\n\n# 先估价不真跑\ndlazy seedream-5.0-pro --dry-run --prompt '...' --images a.jpg --size 1:1"},{"language":"text","snippet":"电商正方形主图。\n\n主体是图1 中的[商品品类 + 颜色 + 材质]，[外形/工艺/结构]必须与图1完全一致，\n商品去底后放在画面中央偏左，下方带柔和投影。\n\n背景为[类目对应背景，见第四节]。\n\n右侧竖排中文卖点文案：\n  主标题大字「[功能点主标题 ≤10 字]」，\n  下方两行小字卖点「[≤12 字]」「[≤12 字]」。\n\n左上角一枚[形状]促销角标写「[营销利益点 ≤8 字]」。\n\n无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: item-selling-point\nversion: 1.0.19\ndescription: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。\n---\n\n# item-selling-point — 商品图生成电商主图\n\n商品图 + 卖点文案 → **带排版的转化型电商主图**。\n\n和 [item-detail](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/item-detail/skill.md) 的分工：item-detail 出**详情页长图的各个模块**（信息量大、多模块），本技能出**主图位的单张方图**（信息密度低、要在缩略图尺寸下也能看清）。\n\n---\n\n## 生成效果示例\n\n| 输入：商品图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/product-shoes.jpg\" width=\"280\"> |\n| `product-shoes.jpg` — 黑色鳄鱼纹亮面皮革布洛克德比鞋，白底，800×800 |\n\n实际执行的命令：\n\n```bash\ndlazy seedream-5.0-pro \\\n  --prompt '电商正方形主图。主体是图1 中的黑色亮面皮革布洛克德比鞋，鞋型、雕花孔、鞋带与厚底必须与图1完全一致，商品去底后放在画面中央偏左，下方带柔和投影。背景为深灰到浅灰渐变，右侧竖排中文卖点文案：主标题大字「真皮软底 通勤久站不累」，下方两行小字卖点「牛皮鞋面 · 防滑厚底」「三防涂层 · 雨天不怕」。左上角一枚红色圆形促销角标写「满300减30」。无衬线黑体，字号层级分明，排版整齐，中文字清晰正确无乱码，商业电商主图设计。' \\\n  --images docs/item-selling-point/product-shoes.jpg --size 1:1 \\\n  --save docs/item-selling-point/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/item-selling-point/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1:1 / 2048×2048，5 credits。鞋的鳄鱼纹压花、雕花孔、鞋带与厚齿底保持一致，去底后居中偏左带柔和投影；右侧主标题「真皮软底 通勤久站不累」与两行小字卖点字形正确、层级分明；左上红色圆形角标「满300减30」；深灰渐变背景。\n\n---\n\n## 1、能力边界\n\n| 输入 | 说明 |\n| --- | --- |\n| 商品图 | 1 张 |\n| 去除商品图背景 | 开关；开启后商品去底再合成 |\n| 商品类目 | 决定背景与配色基调 |\n| 参考图 | 可选，决定版式与配色 |\n| **商品功能点** | ≤100 字，多个用 `/` 分隔，例：`持久续航/防水防汗` |\n| **营销利益点** | ≤100 字，多个用 `/` 分隔，例：`年货狂欢节/满300-30` |\n\n**功能点和利益点要分开**：功能点是产品能力（排在主标题/副标题），利益点是促销信息（排在角标/腰带）。混在一起排版会乱。\n\n**不做**：不编造商品没有的功能；不生成虚假促销（不存在的活动、虚假折扣、虚假原价）；不使用绝对化用语（最、第一、国家级）；不改商品外形与颜色。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 白底或纯色底商品图 | 去底最干净 |\n| ✅ 文案精简 | 主图在列表页只有 200px 左右，长句根本看不见 |\n| ✅ 主标题 ≤10 字，小字 ≤12 字/行，角标 ≤8 字 | 缩略图可读性的经验值 |\n| ❌ 塞五条卖点 | 主图最多承载 1 个主标题 + 2 行小字 + 1 个角标 |\n| ❌ 未经核实的功效/促销 | 平台合规风险 |\n\n---\n\n## 3、主图版式的三个区\n\n把方图切成三个区，每个区只放一种信息：\n\n```text\n┌─────────────────────────┐\n│ ⓐ 角标区（左上/右上）      │  ← 营销利益点：「满300减30」\n│                         │\n│      ⓑ 商品区（中央偏左）  │  ← 商品去底 + 投影\n│                         │\n│              ⓒ 文案区（右侧）│  ← 功能点：主标题 + 2 行小字\n└─────────────────────────┘\n```\n\n写进 prompt：\n\n```text\n商品去底后放在画面中央偏左，下方带柔和投影。\n右侧竖排中文卖点文案：主标题大字「[≤10字]」，下方两行小字卖点「[≤12字]」「[≤12字]」。\n左上角一枚[形状]促销角标写「[≤8字]」。\n```\n\n**缩略图检查**：把输出缩到 200×200 看一眼——主标题还认得出来吗？认不出就再缩短文案或加大字号层级。\n\n---\n\n## 4、类目 → 背景与配色\n\n| 类目 | 背景 | 文字色 | 角标色 |\n| --- | --- | --- | --- |\n| 服饰 | 米灰 / 燕麦色渐变 | 深灰 | 砖红 |\n| 箱包 / 鞋品 | 深灰到浅灰渐变 | 黑 | 正红 |\n| 婴童 / 宠物 | 奶油 / 浅粉 | 暖棕 | 珊瑚粉 |\n| 美妆 | 大理石 / 丝绒 | 黑金 | 酒红 |\n| 3C / 电器 | 深色科技渐变 | 白 | 荧光蓝 |\n| 家居 / 家具灯饰 | 实景房间浅景深 | 深棕 | 橄榄绿 |\n| 食品厨具 | 木质台面暖调 | 深棕 | 橙红 |\n| 珠宝饰品 | 深色绒布聚光 | 白金 | 深红 |\n\n---\n\n## 5、工具调用\n\n本技能使用 dLazy 的 **`seedream-5.0-pro`**（专业档图像模型，中文字形与版面控制最稳；主图上的文案必须一眼可读、零乱码，字形正确率是首要指标）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task item-"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"item-selling-point\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1791597166587\n}"},{"path":"references/model-flags.md","content":"# `seedream-5.0-pro` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy seedream-5.0-pro` command to get results.\r\n\r\n```bash\r\ndlazy seedream-5.0-pro -h\r\n\r\nOptions:\r\n  --prompt <prompt>          Prompt\r\n  --images [images...]       Images [image: url or local path] (max 10)\r\n  --resolution <resolution>  Resolution [default: 2k] (choices: \"2k\")\r\n  --size <size>              Size [default: 16:9] (choices: \"1:1\", \"4:3\",\r\n                             \"3:4\", \"16:9\", \"9:16\", \"3:2\", \"2:3\", \"21:9\")\r\n  --dry-run                  Print payload without executing the tool\r\n  --no-wait                  Return generateId immediately for async tasks\r\n  --timeout <seconds>        Max seconds to wait for async completion (default:\r\n                             \"1800\")\r\n  --input <jsonOrFile>       Inline JSON or @path/to/file.json — merged under\r\n                             flag values (flags win)\r\n  --save <path>              Download the result asset to this local path\r\n                             (mkdir + retry handled for you). A destination\r\n                             path — NOT a response format; for stdout shape use\r\n                             --format\r\n  --batch <n>                Fan-out N parallel runs (cloud tools only)\r\n                             (default: \"1\")\r\n  -h, --help                 display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。"},{"path":"references/provider-cli.md","content":"<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTT"},{"path":"scripts/lib/tasks.json","content":"{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。 Skill: 卖点主图生成 Item Selling Point Owner: dlazyai Summary: 商品图生成带文案排版的转化主图。商品图 + 卖点 → 带中文文案的电商主图。当用户说「主图」「加卖点文案」「转化图」「促销图」「主图文案」时使用。 Tags: latest:1.0.19 Version history: v1.0.19 | 2026-10-10T01:52:46.587Z | user 例行版本更新 2026-10-10 v1.0.18 | 2026-10-08T01:44:52.649Z | user 例行版本更新 2026-10-08 v1.0.17 | 2026-10-04T01:44:52.636Z | user 例行版本更新 2026-10-04 v1.0.16 | 2026-10-02T05:17:18.125Z | user 例行版本更新 2026-10-02 v1.0.15 | 20","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1028,"uniquenessScore":48,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T19:55:33.510Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T19:55:33.510Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:48:07.824Z","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"}]}}}