{"id":"e321e9e2-92df-4e5f-aa6c-4dc6c01aba89","entityType":"agent","slug":"clawhub-flyelepai-flyelep-product-replace","name":"product-replace","canonicalUrl":"https://www.xpersona.co/agent/clawhub-flyelepai-flyelep-product-replace","canonicalPath":"/agent/clawhub-flyelepai-flyelep-product-replace","generatedAt":"2026-10-10T21:43:14.694Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T15:53:53.175Z","emptyReason":null},"description":"通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。 当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。 Skill: product-replace Owner: flyelepai Summary: 通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。 当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。 Tags: latest:1.0.4 Version history: v1.0.4 | 2026-08-28T03:16:06.145Z | user - 支持本地图片文件上传，自动换取公网直链，无需用户自行上传图片。 - 接口参数 modelType 更新为仅支持 9（Flyelep Image 2），不再使用 0。 - replaceImageUrl 现最多支持 3 张图片，多角度图用英文逗号分隔，超过 3 张会报错。 - 新增详细的本地文件上传说明，包括支持的图片格式、上传方法、错误处理等。 - 明确了调用流程和参数收集，更加规范高效。 - 移除","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s175rfkzzv81fcfhp65sjggxa984fmry:flyelep-product-replace","sourceUrl":"https://clawhub.ai/flyelepai/flyelep-product-replace","homepage":"https://clawhub.ai/flyelepai/skills/flyelep-product-replace","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/flyelepai/flyelep-product-replace","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/flyelepai/skills/flyelep-product-replace","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。 当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。 Skill: product-replace Owner: flyelepai Summary: 通过 Flyelep AI 工具接口将图片"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T15:53:53.175Z","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-10T15:53:53.175Z","emptyReason":null},"stars":null,"forks":null,"downloads":1350,"packageName":null,"latestVersion":"1.0.4","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T15:53:53.175Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T15:53:53.175Z","lastCrawledAt":"2026-10-10T15:53:53.175Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T15:53:53.175Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.4","createdAt":"2026-08-28T03:16:06.145Z","changelog":"- 支持本地图片文件上传，自动换取公网直链，无需用户自行上传图片。 - 接口参数 `modelType` 更新为仅支持 `9`（Flyelep Image 2），不再使用 `0`。 - `replaceImageUrl` 现最多支持 3 张图片，多角度图用英文逗号分隔，超过 3 张会报错。 - 新增详细的本地文件上传说明，包括支持的图片格式、上传方法、错误处理等。 - 明确了调用流程和参数收集，更加规范高效。 - 移除 skill-card.md 文件，文档内容全面整合至 SKILL.md。","fileCount":3,"zipByteSize":6395},{"version":"1.0.3","createdAt":"2026-08-07T06:15:55.146Z","changelog":"- Removed the file skill-card.md. - Updated required parameters: now agent must prompt user for all required fields and cannot autofill; must show parameter table to user for confirmation. - Changed modelType: only value 0 is supported and must always be used. - Updated guidance for API call: added strict instructions for Windows/PowerShell vs macOS/Linux, with details on handling JSON encoding and temporary file management. - Clarified replaceImageUrl supports only a single image. - Improved documentation throughout for accuracy, invocation steps, and OS-specific caveats.","fileCount":3,"zipByteSize":5341},{"version":"1.0.2","createdAt":"2026-04-27T03:58:42.722Z","changelog":"- No file changes were detected in this version. - No user-facing updates or modifications were made.","fileCount":3,"zipByteSize":4364},{"version":"1.0.1","createdAt":"2026-04-27T01:17:06.802Z","changelog":"- 修正认证方式说明，明确了 secretKey 申请入口（增加了 https://www.flyelep.cn/controlboard 链接） - 其余技能使用说明和参数要求保持不变","fileCount":2,"zipByteSize":2981},{"version":"1.0.0","createdAt":"2026-04-20T09:59:35.475Z","changelog":"Flye 商品替换技能首次发布： - 支持通过 API 替换图片内商品为指定商品图，保留原有背景和光影效果 - 需传入原图 sourceUrl，目标商品 replaceImageUrl，支持自定义 textPrompt - 提供模型选择（gemini-2.5 或 gemini-3-pro） - 需通过 HTTP POST 并在请求头添加 secretKey 认证 - 详细说明参数用法、调用示例、接口响应和常见错误","fileCount":2,"zipByteSize":2967}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s175rfkzzv81fcfhp65sjggxa984fmry:flyelep-product-replace","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","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-flyelepai-flyelep-product-replace/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-flyelepai-flyelep-product-replace/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-flyelepai-flyelep-product-replace/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-flyelepai-flyelep-product-replace/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-flyelepai-flyelep-product-replace/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-flyelepai-flyelep-product-replace/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T21:43:14.694Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-flyelepai-flyelep-product-replace/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-flyelepai-flyelep-product-replace/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-flyelepai-flyelep-product-replace/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-flyelepai-flyelep-product-replace/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-10T15:53:53.175Z","emptyReason":null},"readme":"Skill: product-replace\n\nOwner: flyelepai\n\nSummary: 通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。 当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。\n\nTags: latest:1.0.4\n\nVersion history:\n\nv1.0.4 | 2026-08-28T03:16:06.145Z | user\n\n- 支持本地图片文件上传，自动换取公网直链，无需用户自行上传图片。\n- 接口参数 `modelType` 更新为仅支持 `9`（Flyelep Image 2），不再使用 `0`。\n- `replaceImageUrl` 现最多支持 3 张图片，多角度图用英文逗号分隔，超过 3 张会报错。\n- 新增详细的本地文件上传说明，包括支持的图片格式、上传方法、错误处理等。\n- 明确了调用流程和参数收集，更加规范高效。\n- 移除 skill-card.md 文件，文档内容全面整合至 SKILL.md。\n\nv1.0.3 | 2026-08-07T06:15:55.146Z | user\n\n- Removed the file skill-card.md.\n- Updated required parameters: now agent must prompt user for all required fields and cannot autofill; must show parameter table to user for confirmation.\n- Changed modelType: only value 0 is supported and must always be used.\n- Updated guidance for API call: added strict instructions for Windows/PowerShell vs macOS/Linux, with details on handling JSON encoding and temporary file management.\n- Clarified replaceImageUrl supports only a single image.\n- Improved documentation throughout for accuracy, invocation steps, and OS-specific caveats.\n\nv1.0.2 | 2026-04-27T03:58:42.722Z | user\n\n- No file changes were detected in this version.\n- No user-facing updates or modifications were made.\n\nv1.0.1 | 2026-04-27T01:17:06.802Z | user\n\n- 修正认证方式说明，明确了 secretKey 申请入口（增加了 https://www.flyelep.cn/controlboard 链接）\n- 其余技能使用说明和参数要求保持不变\n\nv1.0.0 | 2026-04-20T09:59:35.475Z | user\n\nFlye 商品替换技能首次发布：\n\n- 支持通过 API 替换图片内商品为指定商品图，保留原有背景和光影效果\n- 需传入原图 sourceUrl，目标商品 replaceImageUrl，支持自定义 textPrompt\n- 提供模型选择（gemini-2.5 或 gemini-3-pro）\n- 需通过 HTTP POST 并在请求头添加 secretKey 认证\n- 详细说明参数用法、调用示例、接口响应和常见错误\n\nArchive index:\n\nArchive v1.0.4: 3 files, 6395 bytes\n\nFiles: skill-card.md (2923b), SKILL.md (11094b), _meta.json (142b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: product-replace\ndescription: >-\n  通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。\n  当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。\n---\n# Flyelep 商品替换\n通过 Flyelep AI Tool API 将图片中的商品替换为目标商品，并返回替换后的新图片 URL。\n\n**重要：这是一个 HTTP API 调用技能。必须通过 HTTP POST 请求调用 API 接口，禁止通过浏览器访问 Flyelep 网站。**\n\n## API 接口信息\n\n- **URL**: `POST https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace`\n- **Content-Type**: `application/json`\n- **认证方式**: 在请求头中传入 `secretKey`（密钥需由用户在 Flyelep 开放平台申请：https://www.flyelep.cn/controlboard）\n- **超时时间**: 建议 120-300 秒\n\n请求头示例：\n\n```http\nContent-Type: application/json\nsecretKey: 用户提供的API密钥\n```\n\n> **安全说明**：不要将真实密钥写入技能文件、示例代码仓库或持久化配置中，应在运行时由用户动态提供。\n\n## 请求 Body\n\n```json\n{\n  \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n  \"replaceImageUrl\": \"https://example.com/new_product.jpg\",\n  \"modelType\": 9,\n  \"textPrompt\": \"保留背景和光影，将主体商品替换为新的白色保温杯\"\n}\n```\n\n## 响应格式\n\n```json\n{\n  \"code\": 200,\n  \"msg\": \"操作成功\",\n  \"data\": \"https://example.com/product_replaced.jpg\"\n}\n```\n\n- `code=200` 表示调用成功\n- `msg` 为接口返回说明\n- `data` 为商品替换后的图片 URL\n\n返回结果应直接展示给用户，不要回读图片内容。\n\n## 参数说明\n\n### 必传参数\n\n> **重要**：以下必传参数必须通过询问用户获取，agent 不可自行填写。调用本技能时，应先向用户列出必传参数与可选参数表格，由用户确认或提供后再执行。\n\n| 字段 | 默认值 | 说明 |\n|------|--------|------|\n| sourceUrl | - | 原图链接，包含原始商品的图片 |\n| replaceImageUrl | - | 目标商品图链接，最多 3 张，多张用英文逗号分隔 |\n| textPrompt | - | 用户提示词 |\n| modelType | 9 | 模型类型：当前仅支持传 `9`（Flyelep Image 2） |\n\n### 参数映射规则\n\n**sourceUrl**：\n- 传入待替换商品的原图公网 URL\n- 必须是图片直链，不要传网页地址\n- 原图中应清楚包含待替换商品和原背景环境\n- 如果用户提供本地文件路径，先按「本地文件上传」章节换取公网直链，再填入此参数\n\n**replaceImageUrl**：\n- 用于提供目标商品图\n- 最多 3 张，多张用英文逗号 `,` 拼接；超过 3 张接口报「产品替换最多只能上传3张图片」\n- 同一商品的多角度图一起传，有助于模型还原商品细节\n- 当用户明确说\"把原商品换成另一件商品\"时，优先传入该字段\n- 如果用户提供本地文件路径，先按「本地文件上传」章节换取公网直链，再填入此参数\n\n**textPrompt**：\n- 用于补充替换要求，例如材质、颜色、角度、尺寸观感、保留方式\n- 可用于强调\"保留原场景、保留光影、保留构图\"\n- 不传时接口会退化为默认提示词「替换商品」，实际调用应始终传入\n\n**modelType**：\n- 当前接口仅支持 `9`（Flyelep Image 2），必传\n- 传其他值会报「无效的模型类型」\n\n推荐写法示例：\n\n- `保留背景和桌面反光，将商品替换为黑色蓝牙耳机`\n- `保持原场景与阴影效果，将主体换成白色保温杯`\n- `保留背景展台不变，将中间产品替换为新的香水瓶，风格保持高级简洁`\n\n> **说明**：场景替换、商品替换、商品换色三个接口共用同一 DTO，由接口内部自动设置 `type` 字段，调用方无需传入 `type`。\n\n## 本地文件上传\n\n用户提供的是本地文件路径而不是公网直链时，先把文件上传换取直链，再调用本接口。已安装 `file-upload` 技能时以该技能为准；未安装时按下面的说明直接调用上传接口。\n\n- **URL**: `POST https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload`\n- **请求方式**: `multipart/form-data`，文件字段名固定为 `file`，单次只能上传一个文件，多个文件并发调用多次\n- **认证方式**: 请求头传 `secretKey`，与本技能使用同一个密钥\n- **超时时间**: 图片建议 60-120 秒\n- **不要手动设置 `Content-Type` 请求头**，让 HTTP 客户端自动生成带 boundary 的值，手写会导致服务端解析失败\n- 图片仅支持 `bmp`、`gif`、`jpg`、`jpeg`、`png`，`webp` 需先转成 `png` 或 `jpg`；文件名必须带正确后缀，服务端靠它判断格式\n- 原文件名不会出现在 URL 里，中文名、空格、特殊字符都能直接上传，不需要提前改名\n- 上传不消耗算力，但服务端不做去重：同一个文件在一次任务里只上传一次，记下 `fullPath` 复用\n\n成功响应取 `data.fullPath` 作为公网直链，永久有效、不带签名：\n\n```json\n{\n  \"code\": 200,\n  \"msg\": null,\n  \"data\": {\n    \"relativePath\": \"cos_ai_agent/2026-08-11/3f2a9c1b7d84e6f5a012.png\",\n    \"fullPath\": \"https://agent-1404002717.cos.ap-guangzhou.myqcloud.com/cos_ai_agent/2026-08-11/3f2a9c1b7d84e6f5a012.png\",\n    \"serviceProvider\": null\n  }\n}\n```\n\n判断成功只看 `code`，业务失败时 HTTP 状态码仍是 200，`code` 为 500 或 9999，原因在 `msg` 里。\n\n```bash\n# Windows/PowerShell（用 curl.exe，PowerShell 里的 curl 是 Invoke-WebRequest 的别名）\ncurl.exe -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload\" -H \"secretKey: 你的密钥\" --max-time 120 -F \"file=@C:/path/to/product.png\"\n\n# macOS/Linux\ncurl -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload\" -H \"secretKey: 你的密钥\" --max-time 120 -F \"file=@./product.png\"\n```\n\n图片入桶前会先过内容审核，审核不通过整个请求失败，需换图重试。拿到 `code=9999`、`msg` 为 `服务繁忙，请稍后再试` 时，先自查三项：是否漏了 `secretKey` 请求头、表单字段名是否为 `file`、文件是否超出服务端体积上限。密钥、格式、审核、体积类错误重试无效，只有网络超时、5xx 和存储类异常值得重试。\n\n## 调用示例\n\n> **跨平台调用说明**：\n> - 请求头必须包含 `Content-Type: application/json; charset=utf-8` 和 `secretKey`\n> - **Windows/PowerShell**：因 GBK 编码问题，必须先将 JSON 写入临时文件 `payload_temp.json`（UTF-8 无 BOM），再用 `curl.exe --% --data-binary @payload_temp.json` 发送请求。使用 Write 工具创建文件，或用 .NET API `[System.IO.File]::WriteAllText(\"payload_temp.json\", $json, [System.Text.UTF8Encoding]::new($false))`。调用后用 `rm payload_temp.json` 清理。\n> - **macOS/Linux**：bash/zsh 默认 UTF-8，可直接内联 JSON：`curl -X POST URL -H \"Content-Type: application/json; charset=utf-8\" -H \"secretKey: 你的密钥\" --data-binary 'JSON单行内容'`\n\n### 示例：结合目标商品图与文本约束替换商品\n\n**前置步骤**：向用户索取原图和目标商品图的路径或 URL。如用户提供本地文件，先按「本地文件上传」章节换取公网直链。\n\n**Windows/PowerShell**：\n\n步骤 1：创建 `payload_temp.json`（两种方式任选其一）：\n\n方式 A（使用 Write 工具）：\n```json\n{\n  \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n  \"replaceImageUrl\": \"https://example.com/new_product_front.jpg,https://example.com/new_product_side.jpg\",\n  \"modelType\": 9,\n  \"textPrompt\": \"将商品替换为我上传的图片，颜色为红色\"\n}\n```\n\n方式 B（无 Write 工具，PowerShell 执行）：\n```powershell\n[System.IO.File]::WriteAllText(\"payload_temp.json\", '{\"sourceUrl\":\"https://example.com/scene_with_old_product.jpg\",\"replaceImageUrl\":\"https://example.com/new_product_front.jpg,https://example.com/new_product_side.jpg\",\"modelType\":9,\"textPrompt\":\"将商品替换为我上传的图片，颜色为红色\"}', [System.Text.UTF8Encoding]::new($false))\n```\n\n步骤 2：执行请求：\n```bash\ncurl.exe --% -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace\" -H \"Content-Type: application/json; charset=utf-8\" -H \"secretKey: 你的密钥\" --max-time 300 --data-binary @payload_temp.json\n```\n\n步骤 3：清理临时文件：\n```bash\nrm payload_temp.json\n```\n\n**macOS/Linux**：\n```bash\ncurl -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace\" -H \"Content-Type: application/json; charset=utf-8\" -H \"secretKey: 你的密钥\" --max-time 300 --data-binary '{\"sourceUrl\":\"https://example.com/scene_with_old_product.jpg\",\"replaceImageUrl\":\"https://example.com/new_product_front.jpg,https://example.com/new_product_side.jpg\",\"modelType\":9,\"textPrompt\":\"将商品替换为我上传的图片，颜色为红色\"}'\n```\n\n## 常见错误及解决方案\n\n| 错误 | 原因与解决 |\n|------|-----------|\n| HTTP 401 / `code` 非 200 | `secretKey` 无效、缺失或已过期，确认请求头是否正确传入 |\n| HTTP 405 Not Allowed | 请求方法错误，必须使用 `POST` |\n| `sourceUrl` 无法访问 | 原图 URL 不是公网直链、已过期，或源站限制访问 |\n| `replaceImageUrl` 无法访问 | 目标商品图 URL 无效、不可公开访问，或链接格式不正确 |\n| `无效的模型类型` | `modelType` 不在支持范围，当前仅支持 `9` |\n| `产品替换最多只能上传3张图片` | `replaceImageUrl` 传了超过 3 张，删减后重试 |\n| 替换结果不像目标商品 | 目标商品图不够清晰或角度不足，可增加参考图（最多 3 张）并补充 `textPrompt` |\n| 商品替换后背景不协调 | 提示词未强调保留原背景和光影，可在 `textPrompt` 中补充说明 |\n| 请求超时 | 原图较大、参考商品图较多或生成复杂时，可适当增大超时时间 |\n\n## 执行流程\n\n1. **向用户询问 `secretKey`**（API 密钥必须由用户提供，agent 不可自行填写）\n2. 收集原图 URL 和目标商品图 URL（如用户提供本地文件，先按「本地文件上传」章节换取公网直链）\n3. 与用户确认替换需求，构造 `textPrompt`，`modelType` 固定填 `9`\n4. 在请求头中传入 `secretKey`，调用接口\n5. 将返回的商品替换结果图片 URL 直接展示给用户\n\n该接口支持 `textPrompt`，但在商品替换场景下，目标商品图通常比纯文字更关键。执行时应遵循：\n\n1. 优先保证 `sourceUrl` 清晰展示原场景和原商品\n2. 优先提供 `replaceImageUrl`，帮助模型准确识别目标商品\n3. 通过 `textPrompt` 强调保留项：背景、光影、角度、构图、摆放位置\n4. 通过 `textPrompt` 补充目标商品要求：颜色、材质、风格、展示方式\n\n当用户真正想改的是\"背景场景\"而不是\"商品主体\"时，应改用场景替换 skill；当用户只是想换颜色而不是换商品，应改用商品换色类 skill。\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7fp1zsg4nwdq826y0awapkks84fkq1\",\n  \"slug\": \"flyelep-product-replace\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1787886966145\n}\n\nFile v1.0.4:skill-card.md\n\n## Description:\n\nUses the Flyelep AI Tool API to replace the product in an image with target product imagery while preserving the original scene, background, lighting, and composition.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[flyelepai](https://clawhub.ai/user/flyelepai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to collect an original product scene, up to three replacement product image URLs, a text prompt, and a Flyelep secretKey, then call Flyelep's product replacement API. The skill returns the generated product-replaced image URL directly to the user.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow sends user images, prompts, and a Flyelep secretKey to Flyelep, and uploaded local images become permanent public URLs.\n\nMitigation: Use only images and keys approved for Flyelep processing, and do not upload confidential, personal, regulated, or unreleased product images unless permanent public URLs are acceptable.\n\nRisk: A Flyelep secretKey can be exposed in chat, logs, shell history, temporary payload files, or tool output.\n\nMitigation: Collect the key at runtime, avoid persisting it in examples or configuration, redact it from outputs, clean temporary files after use, and rotate the key if exposure is suspected.\n\nRisk: The product replacement request can fail or produce poor results when image URLs are not public direct links, replacement images exceed the three-image limit, or source/reference images are unclear.\n\nMitigation: Confirm public direct image URLs before calling the API, limit replacement references to three images, and ask the user for clearer images or a more specific prompt when the expected product or scene preservation is ambiguous.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/flyelepai/skills/flyelep-product-replace)\n- [Flyelep product replacement API endpoint](https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace)\n- [Flyelep file upload API endpoint](https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload)\n- [Flyelep controlboard](https://www.flyelep.cn/controlboard)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with JSON request bodies and shell command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Returns a public URL for the generated product-replaced image; local image uploads may create permanent public image URLs.]\n\n## Skill Version(s):\n\n1.0.4 (source: evidence.release.version)\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\nArchive v1.0.3: 3 files, 5341 bytes\n\nFiles: skill-card.md (2627b), SKILL.md (8554b), _meta.json (142b)\n\nFile v1.0.3:SKILL.md\n\n---\r\nname: product-replace\r\ndescription: >-\r\n  通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。\r\n  当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。\r\n---\r\n# Flyelep 商品替换\r\n通过 Flyelep AI Tool API 将图片中的商品替换为目标商品，并返回替换后的新图片 URL。\r\n\r\n**重要：这是一个 HTTP API 调用技能。必须通过 HTTP POST 请求调用 API 接口，禁止通过浏览器访问 Flyelep 网站。**\r\n\r\n## API 接口信息\r\n- **URL**: `POST https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace`\r\n- **Content-Type**: `application/json`\r\n- **认证方式**: 在请求头中传入 `secretKey`\r\n- **超时时间**: 建议 120-300 秒\r\n\r\n## 认证方式\r\n所有 AI 工具接口均需在请求头中传入 `secretKey`。该密钥需由用户在 Flyelep 开放平台申请获得：https://www.flyelep.cn/controlboard 。\r\n\r\n请求头示例：\r\n\r\n```http\r\nContent-Type: application/json\r\nsecretKey: 用户提供的API密钥\r\n```\r\n\r\n> **安全说明**：`secretKey` 必须放在请求头中，这是 AI 工具接口的统一鉴权要求。不要将真实密钥写入技能文件、示例代码仓库或持久化配置中，应在运行时由用户动态提供。\r\n\r\n## 请求 Body\r\n```json\r\n{\r\n  \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\r\n  \"replaceImageUrl\": \"https://example.com/new_product.jpg\",\r\n  \"modelType\": 0,\r\n  \"textPrompt\": \"保留背景和光影，将主体商品替换为新的白色保温杯\"\r\n}\r\n```\r\n\r\n## 响应格式\r\n统一响应结构：\r\n\r\n```json\r\n{\r\n  \"code\": 200,\r\n  \"msg\": \"操作成功\",\r\n  \"data\": \"https://example.com/product_replaced.jpg\"\r\n}\r\n```\r\n\r\n- `code=200` 表示调用成功\r\n- `msg` 为接口返回说明\r\n- `data` 为商品替换后的图片 URL\r\n\r\n返回结果应直接展示给用户，不要回读图片内容。\r\n\r\n## 参数说明\r\n### 必传参数\r\n\r\n> **重要**：以下必传参数必须通过询问用户获取，agent 不可自行填写。调用本技能时，应先向用户列出必传参数与可选参数表格，由用户确认或提供后再执行。\r\n\r\n| 字段 | 默认值 | 说明 |\r\n|------|--------|------|\r\n| sourceUrl | - | 原图链接，包含原始商品的图片 |\r\n| replaceImageUrl | - | 目标商品图链接，暂时只支持单图 |\r\n| textPrompt | - | 用户提示词 |\r\n| modelType | - | 模型类型：无论任何情况，都默认填 `0` |\r\n\r\n## 参数映射规则\r\n### sourceUrl\r\n- 传入待替换商品的原图公网 URL\r\n- 必须是图片直链，不要传网页地址\r\n- 原图中应清楚包含待替换商品和原背景环境\r\n\r\n### replaceImageUrl\r\n- 用于提供目标商品图\r\n- 暂时只支持单图\r\n- 当用户明确说“把原商品换成另一件商品”时，优先传入该字段\r\n\r\n### textPrompt\r\n- 用于补充替换要求，例如材质、颜色、角度、尺寸观感、保留方式\r\n- 可用于强调“保留原场景、保留光影、保留构图”\r\n- 当用户有明确风格要求时建议一并传入\r\n\r\n推荐写法示例：\r\n\r\n- `保留背景和桌面反光，将商品替换为黑色蓝牙耳机`\r\n- `保持原场景与阴影效果，将主体换成白色保温杯`\r\n- `保留背景展台不变，将中间产品替换为新的香水瓶，风格保持高级简洁`\r\n\r\n> **说明**：场景替换、商品替换、商品换色三个接口共用同一 DTO，由接口内部自动设置 `type` 字段，调用方无需传入 `type`。\r\n\r\n## 调用示例\r\n- **重要**：调用 API 时，必须设置 `Content-Type: application/json; charset=utf-8` 请求头。以下分平台说明：\r\n- **Windows/PowerShell 环境**：\r\n  - 必须采用以下流程：**先将请求体 JSON 写入当前工作目录下的临时文件 `payload_temp.json`，再通过 Shell 工具调用 `curl.exe --data-binary @payload_temp.json` 发送请求**。这是因为 PowerShell 使用 GBK 编码，而服务端使用 UTF-8 解析，直接在命令行中嵌入中文 JSON 会导致乱码。\r\n  - 使用 `curl.exe`（而非 `curl`，后者在 PowerShell 中是 `Invoke-WebRequest` 的别名）。必须在 `curl.exe` 后加 `--%` 停止 PowerShell 解析，否则 `@` 会被误判为 splatting 操作符导致报错。\r\n  - **文件创建方式**：根据可用工具选择其一（均需确保 UTF-8 **无 BOM** 编码，否则服务端 JSON 解析会在 position 0 报错）：\r\n    - **方式 A（有 Write 工具）**：使用 Write 工具创建 `payload_temp.json`\r\n    - **方式 B（无 Write 工具）**：使用 Shell 的 .NET API 创建文件（`Set-Content -Encoding UTF8` 会带 BOM，不可用）\r\n- **macOS/Linux 环境**：\r\n  - bash/zsh 默认使用 UTF-8 编码，可直接内联中文 JSON，无需临时文件。命令中使用 `curl`（无需 `.exe`，无需 `--%`）。\r\n  - 推荐内联写法：`curl -X POST URL -H \"Content-Type: application/json; charset=utf-8\" -H \"secretKey: 你的密钥\" --data-binary 'JSON单行内容'`，一步完成\r\n  - 也可使用临时文件方式：`curl --data-binary @payload_temp.json`\r\n- **清理**：API 返回结果后，务必删除 `payload_temp.json` 临时文件（如使用了临时文件）。\r\n\r\n**示例：结合目标商品图与文本约束替换商品**\r\n\r\n步骤 1：创建 `payload_temp.json`，内容如下：\r\n```json\r\n{\r\n  \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\r\n  \"replaceImageUrl\": \"https://example.com/new_product_front.jpg,https://example.com/new_product_side.jpg\",\r\n  \"modelType\": 0,\r\n  \"textPrompt\": \"将商品替换为我上传的图片，颜色为红色\"\r\n}\r\n```\r\n> 方式 B（无 Write 工具）：\r\n> ```powershell\r\n> $json = '{\"sourceUrl\":\"https://example.com/scene_with_old_product.jpg\",\"replaceImageUrl\":\"https://example.com/new_product_front.jpg,https://example.com/new_product_side.jpg\",\"modelType\":0,\"textPrompt\":\"将商品替换为我上传的图片，颜色为红色\"}'\r\n> [System.IO.File]::WriteAllText(\"payload_temp.json\", $json, [System.Text.UTF8Encoding]::new($false))\r\n> ```\r\n\r\n步骤 2：使用 Shell 工具执行：\r\n```bash\r\ncurl.exe --% -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace\" -H \"Content-Type: application/json; charset=utf-8\" -H \"secretKey: 你的密钥\" --max-time 300 --data-binary @payload_temp.json\r\n```\r\n\r\n> **macOS/Linux 内联写法**（无需临时文件）：\r\n> ```bash\r\n> curl -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace\" -H \"Content-Type: application/json; charset=utf-8\" -H \"secretKey: 你的密钥\" --max-time 300 --data-binary '{\"sourceUrl\":\"https://example.com/scene_with_old_product.jpg\",\"replaceImageUrl\":\"https://example.com/new_product_front.jpg,https://example.com/new_product_side.jpg\",\"modelType\":0,\"textPrompt\":\"将商品替换为我上传的图片，颜色为红色\"}'\r\n> ```\r\n\r\n步骤 3：清理临时文件：\r\n```bash\r\nrm payload_temp.json\r\n```\r\n\r\n## 常见错误及解决方案\r\n| 错误 | 原因与解决 |\r\n|------|-----------|\r\n| HTTP 401 / `code` 非 200 | `secretKey` 无效、缺失或已过期，确认请求头是否正确传入 |\r\n| HTTP 405 Not Allowed | 请求方法错误，必须使用 `POST` |\r\n| `sourceUrl` 无法访问 | 原图 URL 不是公网直链、已过期，或源站限制访问 |\r\n| `replaceImageUrl` 无法访问 | 目标商品图 URL 无效、不可公开访问，或链接格式不正确 |\r\n| `modelType` 非 0 | 模型类型只支持 `0` |\r\n| 替换结果不像目标商品 | 目标商品图不够清晰或角度不足，可增加更多参考图并补充 `textPrompt` |\r\n| 商品替换后背景不协调 | 提示词未强调保留原背景和光影，可在 `textPrompt` 中补充说明 |\r\n| 请求超时 | 原图较大、参考商品图较多或生成复杂时，可适当增大超时时间 |\r\n\r\n## 提示词处理\r\n该接口支持 `textPrompt`，但在商品替换场景下，目标商品图通常比纯文字更关键。\r\n\r\n执行时应遵循：\r\n\r\n1. 优先保证 `sourceUrl` 清晰展示原场景和原商品\r\n2. 优先提供 `replaceImageUrl`，帮助模型准确识别目标商品\r\n3. 通过 `textPrompt` 强调保留项：背景、光影、角度、构图、摆放位置\r\n4. 通过 `textPrompt` 补充目标商品要求：颜色、材质、风格、展示方式\r\n\r\n当用户真正想改的是“背景场景”而不是“商品主体”时，应改用场景替换 skill；当用户只是想换颜色而不是换商品，应改用商品换色类 skill。\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7fp1zsg4nwdq826y0awapkks84fkq1\",\n  \"slug\": \"flyelep-product-replace\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1786083355146\n}\n\nFile v1.0.3:skill-card.md\n\n## Description:\n\nReplaces the product in a source image with a specified product image through the Flyelep AI Tool API while preserving the original background, lighting, and scene.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[flyelepai](https://clawhub.ai/user/flyelepai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and external users use this skill to replace a visible product in an image by collecting required image URLs, prompt constraints, and a Flyelep API key, then calling the Flyelep product replacement endpoint.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Runtime use sends image URLs, prompts, and a Flyelep API key to Flyelep.\n\nMitigation: Confirm the user is comfortable sharing those inputs, treat product images and prompts as potentially sensitive, and request the API key only at runtime.\n\nRisk: Real API keys could be exposed if written into skill files, examples, repositories, or persistent configuration.\n\nMitigation: Keep the Flyelep secretKey in request headers only for the active call and avoid storing it in files or long-lived configuration.\n\nRisk: Temporary payload files used for Windows or PowerShell requests may retain sensitive image URLs, prompts, or credentials after execution.\n\nMitigation: Use UTF-8 no-BOM temporary payload files only when needed and delete them immediately after the API response.\n\nRisk: Documentation is inconsistent about whether replaceImageUrl accepts one image or multiple comma-separated image URLs.\n\nMitigation: Prefer a single replaceImageUrl unless the user confirms multi-image behavior against Flyelep's current API documentation.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/flyelepai/skills/flyelep-product-replace)\n- [Flyelep product replacement API endpoint](https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace)\n- [Flyelep controlboard](https://www.flyelep.cn/controlboard)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, API calls, text]\n\n**Output Format:** [Markdown with JSON and shell command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Returns or presents the product-replaced image URL from the Flyelep API response.]\n\n## Skill Version(s):\n\n1.0.3 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.2: 3 files, 4364 bytes\n\nFiles: skill-card.md (2640b), SKILL.md (5612b), _meta.json (142b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: product-replace\ndescription: >-\n  通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。\n  当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。\n---\n# Flyelep 商品替换\n通过 Flyelep AI Tool API 将图片中的商品替换为目标商品，并返回替换后的新图片 URL。\n\n**重要：这是一个 HTTP API 调用技能。必须通过 HTTP POST 请求调用 API 接口，禁止通过浏览器访问 Flyelep 网站。**\n\n## API 接口信息\n- **URL**: `POST https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace`\n- **Content-Type**: `application/json`\n- **认证方式**: 在请求头中传入 `secretKey`\n- **超时时间**: 建议 120-300 秒\n\n## 认证方式\n所有 AI 工具接口均需在请求头中传入 `secretKey`。该密钥需由用户在 Flyelep 开放平台申请获得：https://www.flyelep.cn/controlboard 。\n\n请求头示例：\n\n```http\nContent-Type: application/json\nsecretKey: 用户提供的API密钥\n```\n\n> **安全说明**：`secretKey` 必须放在请求头中，这是 AI 工具接口的统一鉴权要求。不要将真实密钥写入技能文件、示例代码仓库或持久化配置中，应在运行时由用户动态提供。\n\n## 请求 Body\n```json\n{\n  \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n  \"replaceImageUrl\": \"https://example.com/new_product.jpg\",\n  \"modelType\": 0,\n  \"textPrompt\": \"保留背景和光影，将主体商品替换为新的白色保温杯\"\n}\n```\n\n## 响应格式\n统一响应结构：\n\n```json\n{\n  \"code\": 200,\n  \"msg\": \"操作成功\",\n  \"data\": \"https://example.com/product_replaced.jpg\"\n}\n```\n\n- `code=200` 表示调用成功\n- `msg` 为接口返回说明\n- `data` 为商品替换后的图片 URL\n\n返回结果应直接展示给用户，不要回读图片内容。\n\n## 参数说明\n### 必传参数\n| 字段 | 默认值 | 说明 |\n|------|--------|------|\n| sourceUrl | - | 原图链接，包含原始商品的图片 |\n| modelType | - | 模型类型：`0=gemini-2.5`，`1=gemini-3-pro` |\n\n### 可选参数\n| 字段 | 默认值 | 说明 |\n|------|--------|------|\n| replaceImageUrl | - | 目标商品图链接，多张时用英文逗号分隔 |\n| textPrompt | - | 用户提示词 |\n\n## 参数映射规则\n### sourceUrl\n- 传入待替换商品的原图公网 URL\n- 必须是图片直链，不要传网页地址\n- 原图中应清楚包含待替换商品和原背景环境\n\n### modelType\n- `0`：`gemini-2.5`\n- `1`：`gemini-3-pro`\n\n推荐默认规则：\n\n- 用户未指定模型时，默认传 `0`\n- 若用户追求更好的效果，可先传 `1`\n\n### replaceImageUrl\n- 用于提供目标商品图\n- 暂时只支持单图\n- 当用户明确说“把原商品换成另一件商品”时，优先传入该字段\n\n### textPrompt\n- 用于补充替换要求，例如材质、颜色、角度、尺寸观感、保留方式\n- 可用于强调“保留原场景、保留光影、保留构图”\n- 当用户有明确风格要求时建议一并传入\n\n推荐写法示例：\n\n- `保留背景和桌面反光，将商品替换为黑色蓝牙耳机`\n- `保持原场景与阴影效果，将主体换成白色保温杯`\n- `保留背景展台不变，将中间产品替换为新的香水瓶，风格保持高级简洁`\n\n> **说明**：场景替换、商品替换、商品换色三个接口共用同一 DTO，由接口内部自动设置 `type` 字段，调用方无需传入 `type`。\n\n## 调用示例\n**结合目标商品图与文本约束替换商品：**\n\n```bash\ncurl -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"secretKey: 你的密钥\" \\\n  --max-time 300 \\\n  -d '{\n    \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n    \"replaceImageUrl\": \"https://example.com/new_product_front.jpg,https://example.com/new_product_side.jpg\",\n    \"modelType\": 1,\n    \"textPrompt\": \"将商品替换为我上传的图片，颜色为红色\"\n  }'\n```\n\n## 常见错误及解决方案\n| 错误 | 原因与解决 |\n|------|-----------|\n| HTTP 401 / `code` 非 200 | `secretKey` 无效、缺失或已过期，确认请求头是否正确传入 |\n| HTTP 405 Not Allowed | 请求方法错误，必须使用 `POST` |\n| `sourceUrl` 无法访问 | 原图 URL 不是公网直链、已过期，或源站限制访问 |\n| `replaceImageUrl` 无法访问 | 目标商品图 URL 无效、不可公开访问，或链接格式不正确 |\n| `modelType` 非 0/1 | 模型类型只支持 `0` 或 `1` |\n| 替换结果不像目标商品 | 目标商品图不够清晰或角度不足，可增加更多参考图并补充 `textPrompt` |\n| 商品替换后背景不协调 | 提示词未强调保留原背景和光影，可在 `textPrompt` 中补充说明 |\n| 请求超时 | 原图较大、参考商品图较多或生成复杂时，可适当增大超时时间 |\n\n## 提示词处理\n该接口支持 `textPrompt`，但在商品替换场景下，目标商品图通常比纯文字更关键。\n\n执行时应遵循：\n\n1. 优先保证 `sourceUrl` 清晰展示原场景和原商品\n2. 优先提供 `replaceImageUrl`，帮助模型准确识别目标商品\n3. 通过 `textPrompt` 强调保留项：背景、光影、角度、构图、摆放位置\n4. 通过 `textPrompt` 补充目标商品要求：颜色、材质、风格、展示方式\n\n当用户真正想改的是“背景场景”而不是“商品主体”时，应改用场景替换 skill；当用户只是想换颜色而不是换商品，应改用商品换色类 skill。\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7fp1zsg4nwdq826y0awapkks84fkq1\",\n  \"slug\": \"flyelep-product-replace\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1777262322722\n}\n\nFile v1.0.2:skill-card.md\n\n## Description: <br>\nThis skill helps an agent call Flyelep's product replacement API to replace a product in an image while preserving the original scene, background, lighting, and composition. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[flyelepai](https://clawhub.ai/user/flyelepai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to submit product-image replacement requests to Flyelep with a source image URL, optional replacement product image URL, model choice, and prompt constraints. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The Flyelep secretKey is required for API authentication and could expose account access or billing if stored or shared improperly. <br>\nMitigation: Provide the secretKey only at runtime in the request header, avoid committing it to files or persistent configuration, and rotate it if exposure is suspected. <br>\nRisk: Source and replacement image URLs, plus prompts, are sent to a third-party service. <br>\nMitigation: Confirm trust in Flyelep before use and avoid submitting private or sensitive images unless the user accepts Flyelep's data handling and billing terms. <br>\nRisk: Requests can fail when image URLs are not public direct links, credentials are invalid, the modelType is outside 0 or 1, or long generations time out. <br>\nMitigation: Validate inputs before calling the API, use only public direct image URLs, pass modelType 0 or 1, and allow a 120-300 second timeout for generation. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/flyelepai/flyelep-product-replace) <br>\n- [Flyelep product replacement API endpoint](https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace) <br>\n- [Flyelep control board](https://www.flyelep.cn/controlboard) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, guidance] <br>\n**Output Format:** [Markdown with JSON and bash examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [The downstream API returns a generated image URL; the skill instructs agents to show that URL directly rather than reading back image contents.] <br>\n\n## Skill Version(s): <br>\n1.0.2 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nArchive v1.0.1: 2 files, 2981 bytes\n\nFiles: SKILL.md (5611b), _meta.json (142b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: product-replace\ndescription: >-\n  通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。\n  当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。\n---\n# Flyelep 商品替换\n通过 Flyelep AI Tool API 将图片中的商品替换为目标商品，并返回替换后的新图片 URL。\n\n**重要：这是一个 HTTP API 调用技能。必须通过 HTTP POST 请求调用 API 接口，禁止通过浏览器访问 Flyelep 网站。**\n\n## API 接口信息\n- **URL**: `POST https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace`\n- **Content-Type**: `application/json`\n- **认证方式**: 在请求头中传入 `secretKey`\n- **超时时间**: 建议 120-300 秒\n\n## 认证方式\n所有 AI 工具接口均需在请求头中传入 `secretKey`。该密钥需由用户在 Flyelep 开放平台申请获得：https://www.flyelep.cn/controlboard。\n\n请求头示例：\n\n```http\nContent-Type: application/json\nsecretKey: 用户提供的API密钥\n```\n\n> **安全说明**：`secretKey` 必须放在请求头中，这是 AI 工具接口的统一鉴权要求。不要将真实密钥写入技能文件、示例代码仓库或持久化配置中，应在运行时由用户动态提供。\n\n## 请求 Body\n```json\n{\n  \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n  \"replaceImageUrl\": \"https://example.com/new_product.jpg\",\n  \"modelType\": 0,\n  \"textPrompt\": \"保留背景和光影，将主体商品替换为新的白色保温杯\"\n}\n```\n\n## 响应格式\n统一响应结构：\n\n```json\n{\n  \"code\": 200,\n  \"msg\": \"操作成功\",\n  \"data\": \"https://example.com/product_replaced.jpg\"\n}\n```\n\n- `code=200` 表示调用成功\n- `msg` 为接口返回说明\n- `data` 为商品替换后的图片 URL\n\n返回结果应直接展示给用户，不要回读图片内容。\n\n## 参数说明\n### 必传参数\n| 字段 | 默认值 | 说明 |\n|------|--------|------|\n| sourceUrl | - | 原图链接，包含原始商品的图片 |\n| modelType | - | 模型类型：`0=gemini-2.5`，`1=gemini-3-pro` |\n\n### 可选参数\n| 字段 | 默认值 | 说明 |\n|------|--------|------|\n| replaceImageUrl | - | 目标商品图链接，多张时用英文逗号分隔 |\n| textPrompt | - | 用户提示词 |\n\n## 参数映射规则\n### sourceUrl\n- 传入待替换商品的原图公网 URL\n- 必须是图片直链，不要传网页地址\n- 原图中应清楚包含待替换商品和原背景环境\n\n### modelType\n- `0`：`gemini-2.5`\n- `1`：`gemini-3-pro`\n\n推荐默认规则：\n\n- 用户未指定模型时，默认传 `0`\n- 若用户追求更好的效果，可先传 `1`\n\n### replaceImageUrl\n- 用于提供目标商品图\n- 暂时只支持单图\n- 当用户明确说“把原商品换成另一件商品”时，优先传入该字段\n\n### textPrompt\n- 用于补充替换要求，例如材质、颜色、角度、尺寸观感、保留方式\n- 可用于强调“保留原场景、保留光影、保留构图”\n- 当用户有明确风格要求时建议一并传入\n\n推荐写法示例：\n\n- `保留背景和桌面反光，将商品替换为黑色蓝牙耳机`\n- `保持原场景与阴影效果，将主体换成白色保温杯`\n- `保留背景展台不变，将中间产品替换为新的香水瓶，风格保持高级简洁`\n\n> **说明**：场景替换、商品替换、商品换色三个接口共用同一 DTO，由接口内部自动设置 `type` 字段，调用方无需传入 `type`。\n\n## 调用示例\n**结合目标商品图与文本约束替换商品：**\n\n```bash\ncurl -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"secretKey: 你的密钥\" \\\n  --max-time 300 \\\n  -d '{\n    \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n    \"replaceImageUrl\": \"https://example.com/new_product_front.jpg,https://example.com/new_product_side.jpg\",\n    \"modelType\": 1,\n    \"textPrompt\": \"将商品替换为我上传的图片，颜色为红色\"\n  }'\n```\n\n## 常见错误及解决方案\n| 错误 | 原因与解决 |\n|------|-----------|\n| HTTP 401 / `code` 非 200 | `secretKey` 无效、缺失或已过期，确认请求头是否正确传入 |\n| HTTP 405 Not Allowed | 请求方法错误，必须使用 `POST` |\n| `sourceUrl` 无法访问 | 原图 URL 不是公网直链、已过期，或源站限制访问 |\n| `replaceImageUrl` 无法访问 | 目标商品图 URL 无效、不可公开访问，或链接格式不正确 |\n| `modelType` 非 0/1 | 模型类型只支持 `0` 或 `1` |\n| 替换结果不像目标商品 | 目标商品图不够清晰或角度不足，可增加更多参考图并补充 `textPrompt` |\n| 商品替换后背景不协调 | 提示词未强调保留原背景和光影，可在 `textPrompt` 中补充说明 |\n| 请求超时 | 原图较大、参考商品图较多或生成复杂时，可适当增大超时时间 |\n\n## 提示词处理\n该接口支持 `textPrompt`，但在商品替换场景下，目标商品图通常比纯文字更关键。\n\n执行时应遵循：\n\n1. 优先保证 `sourceUrl` 清晰展示原场景和原商品\n2. 优先提供 `replaceImageUrl`，帮助模型准确识别目标商品\n3. 通过 `textPrompt` 强调保留项：背景、光影、角度、构图、摆放位置\n4. 通过 `textPrompt` 补充目标商品要求：颜色、材质、风格、展示方式\n\n当用户真正想改的是“背景场景”而不是“商品主体”时，应改用场景替换 skill；当用户只是想换颜色而不是换商品，应改用商品换色类 skill。\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7fp1zsg4nwdq826y0awapkks84fkq1\",\n  \"slug\": \"flyelep-product-replace\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1777252626802\n}\n\nArchive v1.0.0: 2 files, 2967 bytes\n\nFiles: SKILL.md (5573b), _meta.json (142b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: product-replace\ndescription: >-\n  通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。\n  当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。\n---\n# Flyelep 商品替换\n通过 Flyelep AI Tool API 将图片中的商品替换为目标商品，并返回替换后的新图片 URL。\n\n**重要：这是一个 HTTP API 调用技能。必须通过 HTTP POST 请求调用 API 接口，禁止通过浏览器访问 Flyelep 网站。**\n\n## API 接口信息\n- **URL**: `POST https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace`\n- **Content-Type**: `application/json`\n- **认证方式**: 在请求头中传入 `secretKey`\n- **超时时间**: 建议 120-300 秒\n\n## 认证方式\n所有 AI 工具接口均需在请求头中传入 `secretKey`。该密钥需由用户在 Flyelep 开放平台申请获得。\n\n请求头示例：\n\n```http\nContent-Type: application/json\nsecretKey: 用户提供的API密钥\n```\n\n> **安全说明**：`secretKey` 必须放在请求头中，这是 AI 工具接口的统一鉴权要求。不要将真实密钥写入技能文件、示例代码仓库或持久化配置中，应在运行时由用户动态提供。\n\n## 请求 Body\n```json\n{\n  \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n  \"replaceImageUrl\": \"https://example.com/new_product.jpg\",\n  \"modelType\": 0,\n  \"textPrompt\": \"保留背景和光影，将主体商品替换为新的白色保温杯\"\n}\n```\n\n## 响应格式\n统一响应结构：\n\n```json\n{\n  \"code\": 200,\n  \"msg\": \"操作成功\",\n  \"data\": \"https://example.com/product_replaced.jpg\"\n}\n```\n\n- `code=200` 表示调用成功\n- `msg` 为接口返回说明\n- `data` 为商品替换后的图片 URL\n\n返回结果应直接展示给用户，不要回读图片内容。\n\n## 参数说明\n### 必传参数\n| 字段 | 默认值 | 说明 |\n|------|--------|------|\n| sourceUrl | - | 原图链接，包含原始商品的图片 |\n| modelType | - | 模型类型：`0=gemini-2.5`，`1=gemini-3-pro` |\n\n### 可选参数\n| 字段 | 默认值 | 说明 |\n|------|--------|------|\n| replaceImageUrl | - | 目标商品图链接，多张时用英文逗号分隔 |\n| textPrompt | - | 用户提示词 |\n\n## 参数映射规则\n### sourceUrl\n- 传入待替换商品的原图公网 URL\n- 必须是图片直链，不要传网页地址\n- 原图中应清楚包含待替换商品和原背景环境\n\n### modelType\n- `0`：`gemini-2.5`\n- `1`：`gemini-3-pro`\n\n推荐默认规则：\n\n- 用户未指定模型时，默认传 `0`\n- 若用户追求更好的效果，可先传 `1`\n\n### replaceImageUrl\n- 用于提供目标商品图\n- 暂时只支持单图\n- 当用户明确说“把原商品换成另一件商品”时，优先传入该字段\n\n### textPrompt\n- 用于补充替换要求，例如材质、颜色、角度、尺寸观感、保留方式\n- 可用于强调“保留原场景、保留光影、保留构图”\n- 当用户有明确风格要求时建议一并传入\n\n推荐写法示例：\n\n- `保留背景和桌面反光，将商品替换为黑色蓝牙耳机`\n- `保持原场景与阴影效果，将主体换成白色保温杯`\n- `保留背景展台不变，将中间产品替换为新的香水瓶，风格保持高级简洁`\n\n> **说明**：场景替换、商品替换、商品换色三个接口共用同一 DTO，由接口内部自动设置 `type` 字段，调用方无需传入 `type`。\n\n## 调用示例\n**结合目标商品图与文本约束替换商品：**\n\n```bash\ncurl -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"secretKey: 你的密钥\" \\\n  --max-time 300 \\\n  -d '{\n    \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n    \"replaceImageUrl\": \"https://example.com/new_product_front.jpg,https://example.com/new_product_side.jpg\",\n    \"modelType\": 1,\n    \"textPrompt\": \"将商品替换为我上传的图片，颜色为红色\"\n  }'\n```\n\n## 常见错误及解决方案\n| 错误 | 原因与解决 |\n|------|-----------|\n| HTTP 401 / `code` 非 200 | `secretKey` 无效、缺失或已过期，确认请求头是否正确传入 |\n| HTTP 405 Not Allowed | 请求方法错误，必须使用 `POST` |\n| `sourceUrl` 无法访问 | 原图 URL 不是公网直链、已过期，或源站限制访问 |\n| `replaceImageUrl` 无法访问 | 目标商品图 URL 无效、不可公开访问，或链接格式不正确 |\n| `modelType` 非 0/1 | 模型类型只支持 `0` 或 `1` |\n| 替换结果不像目标商品 | 目标商品图不够清晰或角度不足，可增加更多参考图并补充 `textPrompt` |\n| 商品替换后背景不协调 | 提示词未强调保留原背景和光影，可在 `textPrompt` 中补充说明 |\n| 请求超时 | 原图较大、参考商品图较多或生成复杂时，可适当增大超时时间 |\n\n## 提示词处理\n该接口支持 `textPrompt`，但在商品替换场景下，目标商品图通常比纯文字更关键。\n\n执行时应遵循：\n\n1. 优先保证 `sourceUrl` 清晰展示原场景和原商品\n2. 优先提供 `replaceImageUrl`，帮助模型准确识别目标商品\n3. 通过 `textPrompt` 强调保留项：背景、光影、角度、构图、摆放位置\n4. 通过 `textPrompt` 补充目标商品要求：颜色、材质、风格、展示方式\n\n当用户真正想改的是“背景场景”而不是“商品主体”时，应改用场景替换 skill；当用户只是想换颜色而不是换商品，应改用商品换色类 skill。\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7fp1zsg4nwdq826y0awapkks84fkq1\",\n  \"slug\": \"flyelep-product-replace\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1776679175475\n}","readmeExcerpt":"Skill: product-replace Owner: flyelepai Summary: 通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。 当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。 Tags: latest:1.0.4 Version history: v1.0.4 | 2026-08-28T03:16:06.145Z | user - 支持本地图片文件上传，自动换取公网直链，无需用户自行上传图片。 - 接口参数 modelType 更新为仅支持 9（Flyelep Image 2），不再使用 0。 - replaceImageUrl 现最多支持 3 张图片，多角度图用英文逗号分隔，超过 3 张会报错。 - 新增详细的本地文件上传说明，包括支持的图片格式、上传方法、错误处理等。 - 明确了调用流程和参数收集，更加规范高效。 - 移除 ","codeSnippets":[],"executableExamples":[{"language":"http","snippet":"Content-Type: application/json\nsecretKey: 用户提供的API密钥"},{"language":"json","snippet":"{\n  \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n  \"replaceImageUrl\": \"https://example.com/new_product.jpg\",\n  \"modelType\": 9,\n  \"textPrompt\": \"保留背景和光影，将主体商品替换为新的白色保温杯\"\n}"},{"language":"json","snippet":"{\n  \"code\": 200,\n  \"msg\": \"操作成功\",\n  \"data\": \"https://example.com/product_replaced.jpg\"\n}"},{"language":"json","snippet":"{\n  \"code\": 200,\n  \"msg\": null,\n  \"data\": {\n    \"relativePath\": \"cos_ai_agent/2026-08-11/3f2a9c1b7d84e6f5a012.png\",\n    \"fullPath\": \"https://agent-1404002717.cos.ap-guangzhou.myqcloud.com/cos_ai_agent/2026-08-11/3f2a9c1b7d84e6f5a012.png\",\n    \"serviceProvider\": null\n  }\n}"},{"language":"bash","snippet":"curl -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload\" -H \"secretKey: 你的密钥\" --max-time 120 -F \"file=@./product.png\""},{"language":"bash","snippet":"# Windows/PowerShell（用 curl.exe，PowerShell 里的 curl 是 Invoke-WebRequest 的别名）\ncurl.exe -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload\" -H \"secretKey: 你的密钥\" --max-time 120 -F \"file=@C:/path/to/product.png\"\n\n# macOS/Linux\ncurl -X POST \"https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload\" -H \"secretKey: 你的密钥\" --max-time 120 -F \"file=@./product.png\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: product-replace\ndescription: >-\n  通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。\n  当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。\n---\n# Flyelep 商品替换\n通过 Flyelep AI Tool API 将图片中的商品替换为目标商品，并返回替换后的新图片 URL。\n\n**重要：这是一个 HTTP API 调用技能。必须通过 HTTP POST 请求调用 API 接口，禁止通过浏览器访问 Flyelep 网站。**\n\n## API 接口信息\n\n- **URL**: `POST https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace`\n- **Content-Type**: `application/json`\n- **认证方式**: 在请求头中传入 `secretKey`（密钥需由用户在 Flyelep 开放平台申请：https://www.flyelep.cn/controlboard）\n- **超时时间**: 建议 120-300 秒\n\n请求头示例：\n\n```http\nContent-Type: application/json\nsecretKey: 用户提供的API密钥\n```\n\n> **安全说明**：不要将真实密钥写入技能文件、示例代码仓库或持久化配置中，应在运行时由用户动态提供。\n\n## 请求 Body\n\n```json\n{\n  \"sourceUrl\": \"https://example.com/scene_with_old_product.jpg\",\n  \"replaceImageUrl\": \"https://example.com/new_product.jpg\",\n  \"modelType\": 9,\n  \"textPrompt\": \"保留背景和光影，将主体商品替换为新的白色保温杯\"\n}\n```\n\n## 响应格式\n\n```json\n{\n  \"code\": 200,\n  \"msg\": \"操作成功\",\n  \"data\": \"https://example.com/product_replaced.jpg\"\n}\n```\n\n- `code=200` 表示调用成功\n- `msg` 为接口返回说明\n- `data` 为商品替换后的图片 URL\n\n返回结果应直接展示给用户，不要回读图片内容。\n\n## 参数说明\n\n### 必传参数\n\n> **重要**：以下必传参数必须通过询问用户获取，agent 不可自行填写。调用本技能时，应先向用户列出必传参数与可选参数表格，由用户确认或提供后再执行。\n\n| 字段 | 默认值 | 说明 |\n|------|--------|------|\n| sourceUrl | - | 原图链接，包含原始商品的图片 |\n| replaceImageUrl | - | 目标商品图链接，最多 3 张，多张用英文逗号分隔 |\n| textPrompt | - | 用户提示词 |\n| modelType | 9 | 模型类型：当前仅支持传 `9`（Flyelep Image 2） |\n\n### 参数映射规则\n\n**sourceUrl**：\n- 传入待替换商品的原图公网 URL\n- 必须是图片直链，不要传网页地址\n- 原图中应清楚包含待替换商品和原背景环境\n- 如果用户提供本地文件路径，先按「本地文件上传」章节换取公网直链，再填入此参数\n\n**replaceImageUrl**：\n- 用于提供目标商品图\n- 最多 3 张，多张用英文逗号 `,` 拼接；超过 3 张接口报「产品替换最多只能上传3张图片」\n- 同一商品的多角度图一起传，有助于模型还原商品细节\n- 当用户明确说\"把原商品换成另一件商品\"时，优先传入该字段\n- 如果用户提供本地文件路径，先按「本地文件上传」章节换取公网直链，再填入此参数\n\n**textPrompt**：\n- 用于补充替换要求，例如材质、颜色、角度、尺寸观感、保留方式\n- 可用于强调\"保留原场景、保留光影、保留构图\"\n- 不传时接口会退化为默认提示词「替换商品」，实际调用应始终传入\n\n**modelType**：\n- 当前接口仅支持 `9`（Flyelep Image 2），必传\n- 传其他值会报「无效的模型类型」\n\n推荐写法示例：\n\n- `保留背景和桌面反光，将商品替换为黑色蓝牙耳机`\n- `保持原场景与阴影效果，将主体换成白色保温杯`\n- `保留背景展台不变，将中间产品替换为新的香水瓶，风格保持高级简洁`\n\n> **说明**：场景替换、商品替换、商品换色三个接口共用同一 DTO，由接口内部自动设置 `type` 字段，调用方无需传入 `type`。\n\n## 本地文件上传\n\n用户提供的是本地文件路径而不是公网直链时，先把文件上传换取直链，再调用本接口。已安装 `file-upload` 技能时以该技能为准；未安装时按下面的说明直接调用上传接口。\n\n- **URL**: `POST https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload`\n- **请求方式**: `multipart/form-data`，文件字段名固定为 `file`，单次只能上传一个文件，多个文件并发调用多次\n- **认证方式**: 请求头传 `secretKey`，与本技能使用同一个密钥\n- **超时时间**: 图片建议 60-120 秒\n- **不要手动设置 `Content-Type` 请求头**，让 HTTP 客户端自动生成带 boundary 的值，手写会导致服务端解析失败\n- 图片仅支持 `bmp`、`gif`、`jpg`、`jpeg`、`png`，`webp` 需先转成 `png` 或 `jpg`；文件名必须带正确后缀，服务端靠它判断格式\n- 原文件名不会出现在 URL 里，中文名、空格、特殊字符都能直接上传，不需要提前改名\n- 上传不消耗算力，但服务端不做去重：同一个文件在一次任务里只上传一次，记下 `fullPath` 复用\n\n成功响应取 `data.fullPath` 作为公网直链，永久有效、不带签名：\n\n```json\n{\n  \"code\": 200,\n  \"msg\": null,\n  \"data\": {\n    \"relativePath\": \"cos_ai_agent/2026-08-11/3f2a9c1b7d84e6f5a012.png\",\n    \"fullPath\": \"https://agent-1404002717.cos.ap-guangzhou.myqcloud.com/cos_ai_agent/2026-08-11/3f2a9c1b7d84e6f5a012.png\",\n    \"serviceProvider\": null\n  }\n}\n```\n\n判断成功只看 `code`，业务失败时 HTTP 状态码仍是 200，"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7fp1zsg4nwdq826y0awapkks84fkq1\",\n  \"slug\": \"flyelep-product-replace\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1787886966145\n}"},{"path":"skill-card.md","content":"## Description:\n\nUses the Flyelep AI Tool API to replace the product in an image with target product imagery while preserving the original scene, background, lighting, and composition.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[flyelepai](https://clawhub.ai/user/flyelepai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to collect an original product scene, up to three replacement product image URLs, a text prompt, and a Flyelep secretKey, then call Flyelep's product replacement API. The skill returns the generated product-replaced image URL directly to the user.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow sends user images, prompts, and a Flyelep secretKey to Flyelep, and uploaded local images become permanent public URLs.\n\nMitigation: Use only images and keys approved for Flyelep processing, and do not upload confidential, personal, regulated, or unreleased product images unless permanent public URLs are acceptable.\n\nRisk: A Flyelep secretKey can be exposed in chat, logs, shell history, temporary payload files, or tool output.\n\nMitigation: Collect the key at runtime, avoid persisting it in examples or configuration, redact it from outputs, clean temporary files after use, and rotate the key if exposure is suspected.\n\nRisk: The product replacement request can fail or produce poor results when image URLs are not public direct links, replacement images exceed the three-image limit, or source/reference images are unclear.\n\nMitigation: Confirm public direct image URLs before calling the API, limit replacement references to three images, and ask the user for clearer images or a more specific prompt when the expected product or scene preservation is ambiguous.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/flyelepai/skills/flyelep-product-replace)\n- [Flyelep product replacement API endpoint](https://www.flyelep.cn/prod-api/poster-design/api/v1/poster/aiTool/productReplace)\n- [Flyelep file upload API endpoint](https://www.flyelep.cn/prod-api/poster-design/api/v1/file/upload)\n- [Flyelep controlboard](https://www.flyelep.cn/controlboard)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with JSON request bodies and shell command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Returns a public URL for the generated product-replaced image; local image uploads may create permanent public image URLs.]\n\n## Skill Version(s):\n\n1.0.4 (source: evidence.release.version)\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."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。 当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。 Skill: product-replace Owner: flyelepai Summary: 通过 Flyelep AI 工具接口将图片中的商品替换为指定商品图，同时保留原图背景及光影效果。 当用户要求替换商品主体、保留原场景换产品、保持背景不变更换展示商品时使用此技能。 Tags: latest:1.0.4 Version history: v1.0.4 | 2026-08-28T03:16:06.145Z | user - 支持本地图片文件上传，自动换取公网直链，无需用户自行上传图片。 - 接口参数 modelType 更新为仅支持 9（Flyelep Image 2），不再使用 0。 - replaceImageUrl 现最多支持 3 张图片，多角度图用英文逗号分隔，超过 3 张会报错。 - 新增详细的本地文件上传说明，包括支持的图片格式、上传方法、错误处理等。 - 明确了调用流程和参数收集，更加规范高效。 - 移除","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":938,"uniquenessScore":54,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T15:53:53.175Z","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-10T15:53:53.175Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:43:14.694Z","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"}]}}}