Skill: howerlin0329/aicraft-skill (version 1.0.3)

--- name: aicraft-skill description: > 爱创AI平台（www.51aic.com）电商AI内容创作助手。当用户有以下任何需求时，**必须**使用此技能： - 电商作图、商品图生成、主图套图、详情图制作 - AI生成图片、AI绘画、AI作图、Agent模式智能生成 - AI试衣、AI试鞋、AI试戴、虚拟试穿 - 商品精修、去水印、商品换色、服装去皱 - 图片翻译、商品替换背景、商品平铺图 - 换姿势、换表情、去牛皮癣/去除杂物 - AI视频生成、商品讲解视频、带货视频、短视频制作 - AI详情图生成、商品详情页、详情页规划 - 风格复刻、风格迁移、参考图风格生成 - 资产管理、素材管理、历史作品查看/下载/删除 - 提到"爱创"、"51aic"、"aicraft"、"大泽AI" - 任何需要上传图片进行AI处理/编辑/生成的电商场景 此技能帮助用户通过爱创AI平台的API完成图片生成、视频生成、图片编辑、详情图生成、风格复刻、资产管理等任务。 支持18种图片生成模式、AI视频生成、AI详情图生成、风格复刻和资产管理。 --- # 爱创AI平台技能 ## 概述 爱创AI平台（https://www.51aic.com?source=agents）是面向电商商家的AI内容创作平台，提供AI图片生成、AI视频生成、AI详情图生成、风格复刻、商品精修、虚拟试穿等全场景AI作图功能。 本技能允许用户在 AI 对话中直接调用爱创AI平台的服务，无需手动访问网页。 ## 认证流程 **所有 API 调用都需要用户的 token。** 如果用户没有提供过 token，按以下步骤引导用户获取： 1. 请用户打开浏览器访问 https://www.51aic.com?source=agents 2. 点击右上角登录（支持手机号验证码或微信扫码） 3. 登录成功后，按 `F12` 打开浏览器开发者工具 4. 切换到 **Application**（Chrome）或 **Storage**（Firefox）标签页 5. 在左侧导航找到 **Cookies** → `https://www.51aic.com` 6. 在 Cookie 列表中找到名为 `token` 的字段 7. 复制该字段的值（通常是一串较长的字符串） 8. 将复制的 token 粘贴到对话中 > **安全提示**：token 是用户的登录凭证，请勿在公共对话中分享。对话中的 token 仅在当前会话有效。 获取到 token 后，保存到上下文中，后续所有 API 调用自动使用。 ## API 基础配置 ``` 主 API 地址: https://aicraft.51aic.com 文件上传地址: https://api.fzputi.com/ossmanager/api/Oss/UploadFileV2 图片 CDN: https://oss.fzputi.com/ ``` 所有请求需要在 HTTP Header 中携带：`[REDACTED_SECRET]` ## 核心能力 ### 1. 图片上传 如果用户提供了本地图片文件，需要先上传到平台 OSS。 **上传逻辑：** 1. 读取图片文件，转为 base64 编码 2. 拼接成 `data:image/jpeg;base64,...` 格式 3. 生成 OSS 路径：`tools/aiCraft/1m/YYYYMMDD/<uuid>.<ext>` 4. POST 到上传接口 **macOS/Linux：** ```bash FILE_PATH="<图片路径>" B64=$(openssl base64 -in "$FILE_PATH" | tr -d '\n') EXT="${FILE_PATH##*.}" [ "$EXT" = "jpeg" ] && EXT="jpg" UUID=$(uuidgen | tr '[:upper:]' '[:lower:]' | tr -d '-') DATE=$(date +%Y%m%d) MIME="image/$EXT" [ "$EXT" = "jpg" ] && MIME="image/jpeg" curl -s -X POST "https://api.fzputi.com/ossmanager/api/Oss/UploadFileV2" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d "{\"ossFilePath\":\"tools/aiCraft/1m/$DATE/$UUID.$EXT\",\"fileBase64\":\"data:$MIME;base64,$B64\"}" ``` **Windows：** ```powershell $FilePath = "<图片路径>" $B64 = [Convert]::ToBase64String([IO.File]::ReadAllBytes($FilePath)) $Ext = [System.IO.Path]::GetExtension($FilePath).TrimStart('.') if ($Ext -eq "jpeg") { $Ext = "jpg" } $UUID = [Guid]::NewGuid().ToString().Replace("-", "").ToLower() $Date = Get-Date -Format "yyyyMMdd" $MIME = "image/$Ext" if ($Ext -eq "jpg") { $MIME = "image/jpeg" } $Body = @{ ossFilePath = "tools/aiCraft/1m/$Date/$UUID.$Ext" fileBase64 = "data:$MIME;base64,$B64" } | ConvertTo-Json $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://api.fzputi.com/ossmanager/api/Oss/UploadFileV2" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` 上传成功后会返回 `https://oss.fzputi.com/...` 的 URL，用于后续生成请求。 ### 2. 图片生成（18种模式） 支持18种图片生成模式，详见 [references/image-modes.md](references/image-modes.md)。 **Agent模式**（首选推荐）：AI智能体辅助生成，上传参考图后AI自主分析意图、制定方案并生成优化图片。这是平台前端的默认首屏模式，交互最自然、智能程度最高。 当用户没有明确指定具体功能模式时（如AI试衣、去水印等），**优先引导用户使用 Agent 模式**：上传参考图 → 描述需求 → AI 分析生成。 Agent 模式与自由创作模式的 API 等价：两者都是通过上传参考图 + 自定义 prompt 生成图片。Agent 模式的前端使用 SSE 流式接口展示思考过程，通过 API 调用时等效于自由创作模式（`sceneMode: free_creation`）。 其他常用模式： - **自由创作**：通用图片生成，上传参考图并描述需求即可 API 端点：`POST https://aicraft.51aic.com/api/v1/Task/Publish` > **业务规则（重要）**：提交生成任务时，必须先查询并复用现有的 `conversationId`，**一律不创建新的 conversation（批次）**。这样能保证所有记录在同一个会话下，查询历史时不会断档。 > > 查询方式：`POST /api/v1/Conversation/Search`（projectType: IMAGE/VIDEO，按 lastMessageAt 倒序取第一条） > **prompt 字段规则（重要）**： > - **Agent模式 / 自由创作**：prompt 由用户自定义，是核心必填参数，描述想要什么图片 > - **其他16种模式**（如AI试衣、去水印等）：有**固定的默认 prompt**（详见 [references/image-modes.md](references/image-modes.md)），不可为空，否则任务发布会失败（code: 999） > - 部分模式（如换色、翻译、换表情）的 prompt 包含动态参数（颜色、语言、表情等），需要根据用户选择填充 请求体示例（自由创作）： ```json { "conversationId": "", "projectType": "IMAGE", "mode": 1, "type": 2, "payload": { "aspectRatio": "auto", "count": 1, "prompt": "一件红色连衣裙，白色背景，电商商品图", "sceneMode": "free_creation", "referenceImages": [ { "key": "images", "index": 0, "url": "https://oss.fzputi.com/...", "description": "" } ] } } ``` ### 3. AI详情图生成 上传产品图，AI自动分析并生成完整的电商商品详情页（含多张详情图）。 **流程：** 1. 创建批次 → AI分析产品并生成详情页规划方案 2. 用户确认/编辑规划方案（可选） 3. 生成详情图 → 按模块逐张生成 4. 查询结果和下载 **核心 API：** - `POST /api/v1/DetailImage/CreateBatch` — 创建详情图批次，AI生成规划方案 - `POST /api/v1/DetailImage/GenerateBatchImages` — 确认规划后，生成详情图 - `POST /api/v1/DetailImage/GetBatchDetail` — 查询批次详情和规划方案 - `POST /api/v1/DetailImage/GetBatchTaskResults` — 查询生成结果 - `POST /api/v1/DetailImage/GetImageTasksProgress` — 查询任务进度 - `POST /api/v1/DetailImage/RemakeImage` — 重新生成单张图 **CreateBatch 参数：** ```json { "batchId": "", // 首次创建为空，复刻时传入旧batchId "productInfo": "无线智能洗地机，集吸尘拖地自清洁于一体...", // 产品信息描述 "productImageUrls": ["https://oss.fzputi.com/..."], // 产品图，1-6张 "language": "简体中文", // 语言：简体中文/繁体中文/英语/日语/韩语/德语/法语/阿拉伯语/俄语/泰语/印尼语/越南语/马来语/西班牙语/葡萄牙语/巴西葡萄牙语 "aspectRatio": "3:4", // 尺寸比例 "moduleKeys": ["header", "product_showcase", "selling_points"] // 选择的详情页模块 } ``` **可用尺寸比例：** `1:1`, `2:3`, `3:2`, `3:4`（默认）, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` **可用语言：** 简体中文、繁体中文、英语、日语、韩语、德语、法语、阿拉伯语、俄语、泰语、印尼语、越南语、马来语、西班牙语、葡萄牙语、巴西葡萄牙语 **模块列表**（通过 `GET /api/v1/Template/GetDetailImageModules` 获取，各模块有名称、描述、示例图）： - 模块是详情页的标准组成部分（如首图、产品展示、卖点、参数、使用场景等） - 每个模块有 `key`、`displayName`、`description`、`sampleImageUrls` - 部分模块默认选中 - 用户多选，至少保留1个模块 **积分消耗：** 每张详情图 **15 积分**，总积分 = 选中模块数量 × 15 **状态流转：** - `plan_pending` → `planning`（AI生成规划中） → `plan_completed`（规划完成，待生成） → `image_generating`（生成中） → `completed` / `failed` / `partial_completed` ### 4. 风格复刻 上传参考设计图和产品图，AI学习参考图的风格并应用到产品上，生成风格一致的新图片。 **核心 API：** - `POST /api/v1/StyleReplication/CreateBatch` — 创建风格复刻批次 - `POST /api/v1/StyleReplication/RetryImage` — 重新生成单张图 - `POST /api/v1/DetailImage/GetBatchProgress` — 查询批次进度 - `POST /api/v1/DetailImage/GetBatchTaskResults` — 查询批次结果 - `POST /api/v1/DetailImage/GetImageTasksProgress` — 查询图片任务进度 **CreateBatch 参数：** ```json { "batchId": "", // 首次创建为空 "styleReferenceImageUrls": ["https://oss.fzputi.com/..."], // 参考设计图（风格来源），最多16张 "productImageUrls": ["https://oss.fzputi.com/..."], // 产品素材图，最多6张 "aspectRatio": "1:1", // 尺寸比例 "generateCount": 1, // 生成组数：1-3 "detailRequirements": "添加新品上市文字，使用金色渐变风格..." // 补充要求（prompt，可为null） } ``` **可用尺寸比例：** `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` **积分消耗：** 每张图 **15 积分**，总积分 = 参考图数量 × 组数 × 15 **状态流转：** - `plan_pending` → `planning` → `plan_completed` → `image_generating` → `completed` / `failed` / `partial_completed` ### 5. 视频生成 支持商品讲解视频、带货视频、促销视频等多种类型。 API 端点：`POST https://aicraft.51aic.com/api/v1/Task/Publish` 配置参数详见 [references/video-config.md](references/video-config.md)。 请求体示例（新手模式）： ```json { "conversationId": "", "projectType": "VIDEO", "mode": 1, "type": 1, "payload": { "prompt": "介绍这款红色连衣裙的优点", "duration": 10, "orientation": "9:16", "size": "large", "language": "0", "videoType": "2", "videoChannel": "stable", "images": ["https://oss.fzputi.com/..."] } } ``` ### 6. 资产管理 查询和管理用户的历史生成作品（图片、视频、详情图、风格复刻）。 **核心 API：** - `POST /api/v1/Asset/Search` — 查询资产列表 - `POST /api/v1/Asset/BatchDelete` — 批量删除资产 **资产类型 (assetType)：** | 类型值 | 说明 | |--------|------| | `IMAGE` | AI作图（单图生成） | | `VIDEO` | AI视频 | | `DETAILIMAGE` | AI详情图 | | `StyleReplication` | 风格复刻 | **Search 参数：** ```json { "pageIndex": 1, "pageSize": 40, "assetType": "IMAGE", "sortField": "createTime", "sortType": "desc", "startTime": "2024-01-01", // 可选 "endTime": "2024-01-02" // 可选 } ``` **返回字段：** ```json { "assetId": "xxx", "fileUrl": "https://oss.fzputi.com/...", "thumbnailUrl": "https://oss.fzputi.com/...?x-oss-process=image/resize,w_530", "width": 1024, "height": 1024, "createdAt": "2024-01-01T12:00:00", "extra": { "referenceImages": [...], "prompt": "...", "sceneMode": "...", "aspectRatio": "..." } } ``` ### 7. 查询任务状态 生成任务提交后，返回 `taskJobId` 和 `conversationId`。可通过以下接口查询任务进度： - **任务进度**: `POST /api/v1/Task/GetProgress`（支持批量查询，见下方 API 调用参考） - **详情图/风格复刻进度**: `POST /api/v1/DetailImage/GetImageTasksProgress` ### 8. 查询积分 积分查询需要**两步认证**： 1. **获取支付认证 token**：用用户 token 调用 `/api/v1/PayPackage/GetToken`（body: `{"appType": 6}`），返回 `authorization` 2. **查询积分**：用 `authorization` 作为 `Authorization` header，访问支付 API `https://api.fzputi.com/payment/api/v1/Vas/GetQuantityByPackageType` 返回用户的剩余积分（会员积分 + 套餐积分）。 > **authorization 缓存**：有效期约 2 小时。在同一次对话中获取后**可复用**，不需要每次查积分都重新调用 GetToken。如后续调用返回 401，再重新获取。 > > 注意：支付 API 与主 API 使用不同的认证机制。如果用户未主动要求查积分，可跳过此步骤，直接引用下方的积分消耗参考表告知用户大致消耗。 ## 使用流程 ### 图片生成流程 1. 确认用户已提供 token（如未提供，引导获取） 2. **默认推荐 Agent 模式**：询问用户想要生成什么图片，引导上传参考图并描述需求 - 如用户只是泛化描述（"帮我做张商品图"、"生成海报"），按 Agent 模式处理：收集参考图 + 需求描述 - 如用户明确指定了具体功能模式（如AI试衣、去水印、换色等），切换到对应模式并使用其默认 prompt 3. **确认 prompt**： - Agent/自由创作：由用户描述需求生成 prompt（核心必填参数） - 其他16种模式：使用对应模式的**默认 prompt**（见 [references/image-modes.md](references/image-modes.md)），如用户有特殊需求可在此基础上调整 - 部分模式（换色/翻译/换表情等）需要额外确认动态参数（颜色/语言/表情等） 4. 询问参考图片 5. 如有本地图片，先调用上传接口 6. 构建并发送 Publish 请求 7. 返回任务提交结果，告知用户可在 https://www.51aic.com/image/history?source=agents 查看 ### 视频生成流程 1. 确认用户已提供 token 2. 询问视频类型（商品讲解/带货/促销等） 3. 询问参考图片和提示词 4. 确认视频配置（通道/比例/清晰度/时长/语言） 5. 如有本地图片，先调用上传接口 6. 构建并发送 Publish 请求 7. 返回任务提交结果 ### AI详情图生成流程 1. 确认用户已提供 token 2. 请用户上传产品图（1-6张） 3. 询问产品信息描述（可选，也可使用AI帮写自动生成） 4. 确认语言和尺寸比例（默认：简体中文 + 3:4） 5. 获取模块列表，让用户选择需要的详情页模块 6. 告知积分消耗：模块数量 × 15 积分 7. 调用 `DetailImage/CreateBatch` 创建批次 8. AI生成规划方案（约需几十秒），轮询 `GetBatchDetail` 等待 `plan_completed` 9. 规划完成后，向用户展示方案（模块列表和整体设计规范） 10. 用户确认后，调用 `DetailImage/GenerateBatchImages` 生成详情图 11. 轮询 `GetImageTasksProgress` 查询进度，完成后展示结果 ### 风格复刻流程 1. 确认用户已提供 token 2. 请用户上传参考设计图（风格来源，最多16张） 3. 请用户上传产品素材图（最多6张） 4. 确认尺寸比例和生成组数（1-3组，默认1组） 5. 询问补充要求（prompt，可选） 6. 告知积分消耗：参考图数量 × 组数 × 15 积分 7. 调用 `StyleReplication/CreateBatch` 创建批次 8. 轮询 `DetailImage/GetBatchProgress` 查询进度 9. 完成后展示结果 ### 资产管理流程 1. 确认用户已提供 token 2. 询问要查询的资产类型（图片/视频/详情图/风格复刻） 3. 可选：确认日期范围、排序方式 4. 调用 `Asset/Search` 查询 5. 展示资产列表，支持告知下载链接 6. 如用户要求删除，调用 `Asset/BatchDelete` ## 积分消耗参考 | 功能 | 积分消耗 | |------|----------| | 图片生成（自由创作等大多数模式） | 5积分/张 | | 主图套图 | 25积分/套（5张） | | AI详情图 | 15积分/张（按模块数量计） | | 风格复刻 | 15积分/张（参考图数量 × 组数） | | 视频生成（stable 10秒） | 150积分 | | 视频生成（stable 15秒） | 200积分 | | 视频生成（新手模式额外） | +2积分 | | 产品分析（AI帮写） | 1积分 | 在提交生成任务前，可引用上表告知用户所需积分。如用户明确要求查当前余额，再执行积分查询（需要两步认证，见"查询积分"部分）。如积分不足，告知用户需要充值。 ## 错误处理 常见错误及处理方式： | 错误码 | 含义 | 处理方式 | |--------|------|----------| | 401 | Token 无效或过期 | 引导用户重新获取 token | | 999 | 任务发布失败 | 常见原因：① prompt 为空或不符合模式要求（非Agent/自由创作模式必须使用默认 prompt）；② 参数格式错误。检查 prompt 和各字段值 | | 积分不足 | 积分不够生成 | 告知用户当前积分和所需积分 | | 上传失败 | 图片格式/大小不符 | 检查图片格式(jpg/png/webp)和大小(≤10MB) | ## API 调用参考 以下是用 exec 工具直接调用 API 的示例。**macOS/Linux 用 `curl`，Windows 用 PowerShell `Invoke-RestMethod`**。 调用前需确保已在 Header 中携带 `[REDACTED_SECRET]`。 ### 查询积分（两步认证，authorization 可复用约 2 小时） **Step 1 — 获取支付认证 token：** **macOS/Linux：** ```bash AUTH=$(curl -s -X POST "https://aicraft.51aic.com/api/v1/PayPackage/GetToken" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{"appType": 6}' | grep -o '"result":"[^"]*"' | sed 's/"result":"//;s/"$//') ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = '{"appType": 6}' $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) $AuthRes = Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/PayPackage/GetToken" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes $AUTH = $AuthRes.result ``` **Step 2 — 查询积分余额：** **macOS/Linux：** ```bash curl -s -X POST "https://api.fzputi.com/payment/api/v1/Vas/GetQuantityByPackageType" \ -H "Content-Type: application/json; charset=utf-8" \ -H "Authorization: $AUTH" \ -d '{"ValueAddedServicesType": 4}' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = '{"ValueAddedServicesType": 4}' $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://api.fzputi.com/payment/api/v1/Vas/GetQuantityByPackageType" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Authorization"=$AUTH} -Body $BodyBytes ``` ### 查询会话ID（复用现有批次） **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/Conversation/Search" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{"projectType": "IMAGE", "pageIndex": 1, "pageSize": 1, "sortField": "lastMessageAt", "sortType": "desc"}' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = '{"projectType": "IMAGE", "pageIndex": 1, "pageSize": 1, "sortField": "lastMessageAt", "sortType": "desc"}' $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/Conversation/Search" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### 发布图片生成任务 **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/Task/Publish" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{ "conversationId": "<会话ID>", "projectType": "IMAGE", "mode": 1, "type": 2, "payload": { "aspectRatio": "auto", "count": 1, "prompt": "一件红色连衣裙，白色背景，电商商品图", "sceneMode": "free_creation", "referenceImages": [] } }' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = @{ conversationId = "<会话ID>" projectType = "IMAGE" mode = 1 type = 2 payload = @{ aspectRatio = "auto" count = 1 prompt = "一件红色连衣裙，白色背景，电商商品图" sceneMode = "free_creation" referenceImages = @() } } | ConvertTo-Json -Depth 5 $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/Task/Publish" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### 发布视频生成任务 **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/Task/Publish" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{ "conversationId": "<会话ID>", "projectType": "VIDEO", "mode": 1, "type": 1, "payload": { "prompt": "介绍这款红色连衣裙的优点", "duration": 10, "orientation": "9:16", "size": "large", "language": "0", "videoType": "2", "videoChannel": "stable", "images": ["https://oss.fzputi.com/..."] } }' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = @{ conversationId = "<会话ID>" projectType = "VIDEO" mode = 1 type = 1 payload = @{ prompt = "介绍这款红色连衣裙的优点" duration = 10 orientation = "9:16" size = "large" language = "0" videoType = "2" videoChannel = "stable" images = @("https://oss.fzputi.com/...") } } | ConvertTo-Json -Depth 5 $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/Task/Publish" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### 查询任务进度 提交任务后返回 `taskJobId`。可通过 `Task/GetProgress` 查询任务状态，支持一次查多个。 - 图片任务 `taskType`: `2` - 视频任务 `taskType`: `1` **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/Task/GetProgress" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{"conditions":[{"taskJobId":"<任务ID>","taskType":2}]}' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = '{"conditions":[{"taskJobId":"<任务ID>","taskType":2}]}' $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/Task/GetProgress" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### AI详情图 — 创建批次 **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/DetailImage/CreateBatch" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{ "batchId": "", "productInfo": "无线智能洗地机，集吸尘拖地自清洁于一体", "productImageUrls": ["https://oss.fzputi.com/..."], "language": "简体中文", "aspectRatio": "3:4", "moduleKeys": ["header", "product_showcase", "selling_points"] }' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = @{ batchId = "" productInfo = "无线智能洗地机，集吸尘拖地自清洁于一体" productImageUrls = @("https://oss.fzputi.com/...") language = "简体中文" aspectRatio = "3:4" moduleKeys = @("header", "product_showcase", "selling_points") } | ConvertTo-Json $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/DetailImage/CreateBatch" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### AI详情图 — 生成图片 规划方案确认后调用： **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/DetailImage/GenerateBatchImages" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{"batchid": "<batchId>"}' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = '{"batchid": "<batchId>"}' $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/DetailImage/GenerateBatchImages" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### AI详情图 — 查询批次详情 **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/DetailImage/GetBatchDetail" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{"batchId": "<batchId>"}' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = '{"batchId": "<batchId>"}' $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/DetailImage/GetBatchDetail" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### AI详情图 — 查询任务进度 **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/DetailImage/GetImageTasksProgress" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{"type": 1, "taskIds": ["<taskId1>", "<taskId2>"]}' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = '{"type": 1, "taskIds": ["<taskId1>", "<taskId2>"]}' $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/DetailImage/GetImageTasksProgress" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### 风格复刻 — 创建批次 **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/StyleReplication/CreateBatch" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{ "batchId": "", "styleReferenceImageUrls": ["https://oss.fzputi.com/ref1.jpg"], "productImageUrls": ["https://oss.fzputi.com/prod1.jpg"], "aspectRatio": "1:1", "generateCount": 1, "detailRequirements": "使用金色渐变风格，添加促销标签" }' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = @{ batchId = "" styleReferenceImageUrls = @("https://oss.fzputi.com/ref1.jpg") productImageUrls = @("https://oss.fzputi.com/prod1.jpg") aspectRatio = "1:1" generateCount = 1 detailRequirements = "使用金色渐变风格，添加促销标签" } | ConvertTo-Json $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/StyleReplication/CreateBatch" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### 风格复刻 — 查询批次进度 **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/DetailImage/GetBatchProgress" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{"batchIds": ["<batchId>"]}' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = '{"batchIds": ["<batchId>"]}' $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/DetailImage/GetBatchProgress" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### 资产管理 — 查询资产 **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/Asset/Search" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{ "pageIndex": 1, "pageSize": 40, "assetType": "IMAGE", "sortField": "createTime", "sortType": "desc" }' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = @{ pageIndex = 1 pageSize = 40 assetType = "IMAGE" sortField = "createTime" sortType = "desc" } | ConvertTo-Json $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/Asset/Search" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ``` ### 资产管理 — 批量删除 **macOS/Linux：** ```bash curl -s -X POST "https://aicraft.51aic.com/api/v1/Asset/BatchDelete" \ -H "Content-Type: application/json; charset=utf-8" \ -H "[REDACTED_SECRET]" \ -d '{"assetIds": ["<assetId1>", "<assetId2>"]}' ``` **Windows：** ```powershell [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $Body = '{"assetIds": ["<assetId1>", "<assetId2>"]}' $BodyBytes = [System.Text.Encoding]::UTF8.GetBytes($Body) Invoke-RestMethod -Uri "https://aicraft.51aic.com/api/v1/Asset/BatchDelete" -Method POST -Headers @{"Content-Type"="application/json; charset=utf-8"; "Token"="<token>"} -Body $BodyBytes ```

path: references/image-modes.md
content: # 图片生成模式详解

爱创AI平台支持18种图片生成模式，每种模式对应不同的 `sceneMode` 值和参数要求。

## 重要提示

### prompt 字段规则

大多数模式**必须有 prompt**，且不同模式有固定的默认 prompt。如果 prompt 为空或不符合模式要求，任务会发布失败（code: 999）。

- **Agent模式 / 自由创作**: prompt 由用户自定义描述，是核心参数
- **其他16种模式**: 有预设的默认 prompt（见各模式说明），通常不需要用户额外输入
- 部分模式的 prompt 中包含动态参数（如颜色、语言、表情等），需要根据实际情况填充

## 模式列表

### 1. Agent模式 (agent) ⭐ 首选推荐
- **sceneMode**: `agent_image`
- **说明**: AI智能体辅助图片生成，上传参考图后由AI自主分析意图、制定方案并生成优化后的图片。支持流式进度反馈（思考中→分析意图→制定方案→生成中）。**平台默认首屏模式**，当用户没有明确指定具体功能模式时，优先推荐使用此模式。
- **参考图**: 最多10张（建议至少上传1张让AI分析）
- **参数**: `prompt`（用户自定义需求描述）
- **积分**: 5积分/张
- **API 说明**: 前端使用 SSE 流式接口 `Task/GenerateAgentImageStream` 提供实时进度反馈。通过 API 调用时，使用**自由创作**模式（`sceneMode: free_creation`）可获得等效效果——两者都是上传参考图 + 自定义 prompt 生成。

### 2. 自由创作 (freestyle)
- **sceneMode**: `free_creation`
- **说明**: 最通用的图片生成模式，上传参考图并描述需求即可生成
- **参考图**: 最多10张
- **参数**: `prompt`, `referenceImages`
- **默认 prompt**: 用户自定义（必填，描述想要什么图片）
- **积分**: 5积分/张

### 3. 商品图 (product-image)
- **sceneMode**: `product_image`
- **说明**: 专为电商商品展示设计，生成高质量商品图
- **参考图**: 需要上传商品照片
- **参数**: `prompt`, `referenceImages`
- **默认 prompt**: `生成专业商品图。`

### 4. 主图套图 (main-picture)
- **sceneMode**: `main_image_set`
- **说明**: 生成电商主图套图（通常包含5张不同角度/场景的图片）
- **积分**: 25积分/套（5张）
- **参考图**: 需要上传商品照片
- **默认 prompt**: `基于上传参考图，生成一套5张的主图套图`

### 5. AI试衣 (try-clothes)
- **sceneMode**: `ai_try_on_clothes`
- **说明**: 将衣服虚拟穿到模特身上
- **默认 prompt**: `将上传的服饰自然穿在模特身上。`
- **参考图**:
  - 第一组 (`images`): **衣服照片（必填）**，最多2张
  - 第二组 (`images2`): 模特照片（**可选**），最多1张。如不填，平台使用默认模特

### 6. AI试鞋 (try-shoes)
- **sceneMode**: `ai_try_on_shoes`
- **说明**: 将鞋子虚拟穿到模特脚上
- **默认 prompt**: `将鞋子自然穿在脚部姿势上。`
- **参考图**:
  - 第一组 (`images`): **鞋子照片（必填）**
  - 第二组 (`images2`): 试鞋姿势图（**可选**），最多1张

### 7. 商品换色 (product-recolor)
- **sceneMode**: `product_recolor`
- **说明**: 改变商品的颜色
- **默认 prompt**: `将商品主体颜色更改为【{目标颜色}】`
- **参考图**: 商品照片
- **额外参数**: 需要在 prompt 中指定目标颜色，如 `将商品主体颜色更改为【红色】`

### 8. 去除水印 (remove-watermark)
- **sceneMode**: `remove_watermark`
- **说明**: 去除图片中的水印
- **默认 prompt**: `去除图片中的水印。`
- **参考图**: 带水印的图片

### 9. 手持商品 (handheld-product)
- **sceneMode**: `handheld_product`
- **说明**: 生成模特手持商品的图片
- **默认 prompt**: `生成自然的手持商品图。`
- **参考图**: 商品照片 + 可选的手部姿势参考

### 10. AI试戴 (ai-try-on-accessories)
- **sceneMode**: `ai_try_on_accessories`
- **说明**: 虚拟试戴配饰（项链、耳环、眼镜等）
- **默认 prompt**: `一键试戴。`
- **参考图**: 模特照片 + 配饰照片

### 11. 服装去皱 (clothes-dewrinkle)
- **sceneMode**: `clothes_dewrinkle`
- **说明**: 自动去除服装照片中的褶皱
- **默认 prompt**: `抚平服装表面褶皱，去皱强度：【{强度}】`
- **参考图**: 有褶皱的服装照片
- **额外参数**: prompt 中需要指定去皱强度，如 `抚平服装表面褶皱，去皱强度：【强】`

### 12. 去牛皮癣/去除杂物 (remove-noise)
- **sceneMode**: `remove_psoriasis`
- **说明**: 去除图片中的杂物、牛皮癣广告等
- **默认 prompt**: `一键清除牛皮癣，还原干净画面。`
- **参考图**: 需要清理的照片

### 13. 图片翻译 (image-translate)
- **sceneMode**: `image_translate`
- **说明**: 翻译图片中的文字内容
- **默认 prompt**: `识别图中文字并翻译成【{目标语言}】。`
- **参考图**: 包含文字的图片
- **额外参数**: prompt 中需要指定目标语言，如 `识别图中文字并翻译成【英语】。`

### 14. 商品替换 (product-replace)
- **sceneMode**: `product_replace`
- **说明**: 将商品放入新的背景/场景中
- **默认 prompt**: `用目标商品替换原图商品。`
- **参考图**: 商品照片 + 可选的场景参考

### 15. 商品平铺图 (product-flat-lay)
- **sceneMode**: `product_flat_lay`
- **说明**: 生成商品的平铺展示图
- **默认 prompt**: `提取图中商品生成平铺图。`
- **参考图**: 商品照片

### 16. 换姿势 (pose-change)
- **sceneMode**: `pose_change`
- **说明**: 改变人物照片中的姿势
- **默认 prompt**: `将人物从原姿势改为新姿势。`
- **参考图**: 人物照片 + 目标姿势参考

### 17. 换表情 (expression-change)
- **sceneMode**: `expression_change`
- **说明**: 改变人物照片中的表情
- **默认 prompt**: `将人物表情自然替换为【{目标表情}】`
- **参考图**: 人物照片
- **额外参数**: prompt 中需要指定目标表情，如 `将人物表情自然替换为【微笑】`

### 18. 商品精修 (product-retouch)
- **sceneMode**: `product_retouch`
- **说明**: 自动精修商品照片（调光、调色、锐化等）
- **默认 prompt**: `精修图片。`
- **参考图**: 商品照片
- **⚠️ 注意**: 当前后端枚举值未完全对接，调用可能报错。建议优先使用其他模式。

## 图片比例选项

所有图片模式支持以下比例：

| 比例 | 说明 |
|------|------|
| `auto` | 智能比例（默认） |
| `1:1` | 正方形 |
| `2:3` | 竖向 portrait |
| `3:2` | 横向 landscape |
| `3:4` | 竖向 portrait |
| `9:16` | 竖向（短视频封面） |
| `16:9` | 横向（横幅） |

## 生成数量

- Agent模式：不支持数量选择（固定1张）
- 自由创作等大多数模式：1-4张
- 主图套图：固定5张

## 参考图数据结构

```json
{
  "referenceImages": [
    {
      "key": "images",
      "index": 0,
      "url": "https://oss.fzputi.com/...",
      "description": ""
    }
  ]
}
```

对于需要两组图片的模式（如AI试衣），使用：
```json
{
  "referenceImages": [
    { "key": "images", "index": 0, "url": "模特照片URL", "description": "" },
    { "key": "images2", "index": 0, "url": "衣服照片URL", "description": "" }
  ]
}
```


path: references/video-config.md
content: # 视频生成配置详解

## 生成模式

### 新手模式 (mode: 1)
- 上传图片后，系统自动识别商品信息并生成脚本
- 适合快速出视频
- 额外消耗：脚本生成 2 积分

### 专业模式 (mode: 2)
- 上传图片后，系统生成多镜头分镜脚本（含镜头、台词、动作）
- 适合精细控制视频内容
- 额外消耗：脚本生成 2 积分

## 视频通道 (videoChannel)

**当前可用通道：**

| 通道 | 值 | 时长选项 | 积分消耗 | 特点 |
|------|-----|----------|----------|------|
| 高稳通道 | `stable` | 10秒 / 15秒 | 150 / 200 | 稳定性极高，画面真实自然，适合电商爆款视频 |

> 标准通道(`standard`)、增强通道(`enhanced`)、极速通道(`fast`) 当前已禁用。

**新手模式总积分示例：**
- stable 10秒 + 新手模式 = 150 + 2 = **152 积分**
- stable 15秒 + 新手模式 = 200 + 2 = **202 积分**

## 视频比例 (orientation)

| 比例 | 值 | 适用平台 |
|------|-----|----------|
| 9:16 竖屏 | `9:16` | 抖音、快手等短视频平台（默认） |
| 16:9 横屏 | `16:9` | B站、YouTube等横屏平台 |

## 视频清晰度 (size)

| 清晰度 | 值 | 说明 |
|--------|-----|------|
| 普清 | `small` | 标清画质，文件较小（默认） |
| 高清 | `large` | 高清画质，推荐使用 |

## 视频时长 (duration)

- **stable 通道**: 10秒 或 15秒

## 视频类型 (videoType)

| 类型 | 值 | 说明 |
|------|-----|------|
| 商品推广 | `0` | 突出商品卖点和优势 |
| 带货视频 | `1` | 直播带货风格 |
| 商品讲解 | `2` | 详细介绍商品特点、功能和使用方法（默认） |
| 商品促销 | `3` | 促销活动宣传 |
| 商品测评 | `4` | 客观测评，优缺点分析 |
| 商品口播 | `5` | 口播介绍类 |

## 视频语言 (language)

| 语言 | 值 |
|------|-----|
| 简体中文 | `0`（默认） |
| 繁体中文 | `1` |
| 英语 | `2` |
| 泰语 | `3` |
| 俄语 | `4` |
| 越南语 | `5` |
| 马来语 | `6` |
| 葡萄牙语 | `7` |
| 西班牙语 | `8` |

## 默认配置推荐

**电商商品讲解视频（新手模式）：**
- mode: 1
- videoChannel: `stable`
- duration: 10
- orientation: `9:16`
- size: `large`
- videoType: `2` (商品讲解)
- language: `0` (简体中文)
- 总积分：**152 积分**

**电商商品讲解视频（专业模式）：**
- mode: 2
- videoChannel: `stable`
- duration: 10
- orientation: `9:16`
- size: `large`
- videoType: `2` (商品讲解)
- language: `0` (简体中文)
- 总积分：**150 积分**

## API 请求示例

```json
{
  "conversationId": "",
  "projectType": "VIDEO",
  "mode": 1,
  "type": 1,
  "payload": {
    "prompt": "介绍这款商品的优点和使用场景",
    "duration": 10,
    "orientation": "9:16",
    "size": "large",
    "language": "0",
    "videoType": "2",
    "videoChannel": "stable",
    "images": ["https://oss.fzputi.com/..."]
  }
}
```

## 响应示例

```json
{
  "code": 200,
  "result": {
    "conversationId": "xxx",
    "taskJobId": "xxx"
  }
}
```

任务提交后，用户可以在 https://www.51aic.com/video/history?source=agents 查看生成进度和结果。


path: evals/evals.json
content: {
  "skill_name": "aicraft-skill",
  "evals": [
    {
      "id": 1,
      "prompt": "我是做电商的，想给我的连衣裙商品生成几张展示图，背景要白色，请问有什么推荐的工具？",
      "expected_output": "应该识别出电商作图需求，推荐使用爱创AI平台，解释可用的图片生成功能（如商品图、自由创作等），并引导获取token",
      "files": []
    },
    {
      "id": 2,
      "prompt": "我想给我的T恤商品做一个15秒的抖音带货视频，需要怎么操作？",
      "expected_output": "应该识别出视频生成需求，推荐使用爱创AI的视频生成功能，解释视频配置选项（通道/比例/时长/类型等），并引导获取token",
      "files": []
    },
    {
      "id": 3,
      "prompt": "我已经有爱创的token了，帮我查一下还剩多少积分",
      "expected_output": "应该调用积分查询API，返回用户的剩余积分信息",
      "files": []
    },
    {
      "id": 4,
      "prompt": "我有一张模特照片和一件新衣服的图片，想看一下模特穿这件衣服的效果",
      "expected_output": "应该识别出AI试衣需求，推荐使用AI试衣功能，解释需要上传两张图片（模特+衣服），并引导获取token",
      "files": []
    },
    {
      "id": 5,
      "prompt": "我想给我的无线洗地机产品生成一套电商详情页，需要什么流程？",
      "expected_output": "应该识别出AI详情图生成需求，推荐使用爱创AI的详情图功能，解释流程：上传产品图→选择模块→AI生成规划→确认生成→下载详情图，并告知积分消耗（15积分/张）",
      "files": []
    },
    {
      "id": 6,
      "prompt": "我有一批参考设计图，想让AI按照这些风格给我的新产品生成图片",
      "expected_output": "应该识别出风格复刻需求，推荐使用爱创AI的风格复刻功能，解释需要上传参考设计图和产品图，选择比例和组数，并告知积分消耗（参考图数量×组数×15积分）",
      "files": []
    },
    {
      "id": 7,
      "prompt": "我想查看我之前在爱创AI上生成的所有图片",
      "expected_output": "应该识别出资产管理需求，推荐使用爱创AI的资产管理功能，调用Asset/Search查询assetType为IMAGE的资产列表",
      "files": []
    },
    {
      "id": 8,
      "prompt": "帮我删除爱创AI上那些失败的风格复刻作品",
      "expected_output": "应该识别出资产删除需求，先调用Asset/Search查询StyleReplication类型的资产，筛选状态为失败的，再调用Asset/BatchDelete批量删除",
      "files": []
    }
  ]
}


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal:  | SkillSpector: suspicious (HIGH)