ozon主图套图、详情图套图批量生成
传一张商品图,一次性产一整套 Ozon listing 图片 —— 主图套图(纯白底/场景/卖点/细节/对比)与详情图套图(俄语卖点长图)成套出齐,且符合 Ozon 的白底与尺寸规范。
本技能走 qhkit,覆盖三条批量路线:
| 想要什么 | 走哪条路 | 命令 | 一次出几张 |
|---|---|---|---|
| 主图套图(纯白底主图/场景/卖点/细节/对比) | 套图模式(platform=Ozon) |
qhkit image generate |
6/7/8/9/10 张 |
| 详情图套图(俄语卖点长图 / 详情整段铺图) | 电商详情图 |
qhkit image generate |
6/7/8/9/10 张 |
| 多商品 / 多素材 / 多个 SKU 批量 | image-batch 六种模式 |
qhkit image-batch generate |
由提示词/图片/动作数决定 |
对外文案里的 GPT Image 2 / Nano Banana 2 / Seedream 5.0 / Grok Image 只是检索名,真正提交的 modelLabel 必须来自 options。
何时触发
- 「做Ozon的主图套图 / 详情图套图 / 成套商品图」
- 「一批商品图要出Ozon套图」「多款商品一起生成主图套图 + 详情图套图」
- 「把中文主图上的文案翻成俄语」
- 用户明确要适配 Ozon 的尺寸(1500×1500)、白底合规要求或俄文文案
Ozon 合规红线(最重要,先看这段)
Ozon 对主图的限制接近亚马逊,出图前先讲清楚,否则图做出来上不了架:
- 主图(主图/首图):必须纯白底 #FFFFFF(RGB 255,255,255);商品主体占画面 85% 以上;禁止阴影、边框、水印、文字、logo、促销标签(如「Sale」「Бесплатная доставка」)。
- 尺寸与比例:最小 1000×1000,推荐 1500×1500(支持缩放功能);比例必须 1:1,不接受长图或拼接图。
- 辅图 / 场景图:可以放场景、卖点、细节、尺寸标注、多角度 —— 促销信息与俄文卖点放这里,不要放主图。
- 服装类目:允许真人模特或挂拍/平铺,但必须白底,不可用街拍或场景图当主图;每个颜色单独一张主图,禁止多色合集当主图。
- 俄文文案:卖点图、详情图上的文案建议用俄语(
languageLabel传 俄语),不要直接上中文或英文。 - 单图文件建议 300KB–2MB,Ozon 上限 5MB。
> 生成主图时,prompt / customCopy 里不要写促销语,否则出的图带上文字就得重做。要促销素材请走辅图/详情图路线。
一句话选路线
要「一组Ozon主图(含纯白底主图+辅图)」 → 套图模式(platform 传 Ozon)
要「俄语卖点长图 / 详情整段铺图」 → 电商详情图(配 themeLabel 主题色)
要「多款商品 / 多个素材一起出」 → image-batch
要「把已有图批量改纯白底 / 批量翻成俄语」 → image-batch
路线 A:主图套图(套图模式)
把商品图变成 6-10 张成套图片:纯白底主图、场景图、卖点图、细节图、对比图一次出齐。
# 先查候选:platform / sizePreset / imageCount
qhkit image options '{"queryParams":["platform","sizePreset","imageCount"],"modelLabel":"套图模式"}'
# 报价(必做)
qhkit image estimate '{"modelLabel":"套图模式","uploadedImages":["./商品图.jpg"],"platform":"Ozon","imageCount":9,"sizePreset":"1:1 商品主图 · Ozon(1500×1500)","languageLabel":"俄语"}'
# 出图
qhkit image generate '{"modelLabel":"套图模式","uploadedImages":["./商品图.jpg"],"platform":"Ozon","imageCount":9,"sizePreset":"1:1 商品主图 · Ozon(1500×1500)","languageLabel":"俄语"}'
Ozon 要点:
platform必须逐字传Ozon(options 候选里的写法,不是「奥松」,也不要写ozon)。imageCount可选 1 / 6 / 7 / 8 / 9 / 10 —— 传 2、3、4、5 会被服务端驳回(不支持的出图数量)。1 张等于单图,不叫套图;要成套至少 6 张。- 尺寸档用 Ozon 专档
1:1 商品主图 · Ozon(1500×1500)。不传就落到默认 1024×1024,达不到 Ozon 推荐的 1500 缩放要求。 - 参考图与
customCopy(≤500 字)至少填一个。做纯白底主图时建议只传参考图、不传 customCopy,避免模型往图上渲染文字。 - 想表达「这组图要哪几张」(主图/场景/细节/对比),把意图写进
prompt或customCopy—— 但记住主图那几张不能有字。
路线 B:详情图套图(电商详情图)
一次产出整套俄语卖点长图 / 详情页短图。
qhkit image options '{"queryParams":["themeLabel","languageLabel","imageCount"],"modelLabel":"电商详情图"}'
qhkit image estimate '{"modelLabel":"电商详情图","uploadedImages":["./商品图.jpg"],"themeLabel":"海洋蓝","imageCount":9,"languageLabel":"俄语"}'
qhkit image generate '{"modelLabel":"电商详情图","uploadedImages":["./商品图.jpg"],"themeLabel":"海洋蓝","imageCount":9,"languageLabel":"俄语"}'
themeLabel主题色 9 档:默认 / 经典黑白 / 海洋蓝 / 夕阳橙 / 森林绿 / 薰衣草紫 / 玫瑰粉 / 奢华金 / 午夜蓝。imageCount同样只能 1 / 6 / 7 / 8 / 9 / 10。- 参考图必填;风格由
themeLabel控制,prompt不是主入口。 - 俄罗斯市场偏沉稳实用,建议用 经典黑白 / 午夜蓝 / 森林绿 这类克制配色,避开过于花哨的配色。
- 该模型不可编辑、产出多张短图、图像质量高 —— 适合详情页从首屏到结尾整段铺图。
路线 C:多商品 / 多素材批量(image-batch)
六种模式,覆盖「不是一张图出成套、而是很多活一起干」的场景。
# 先看全部模式与参数说明
qhkit image-batch options '{}'
| mode | 用途 | 张数由什么决定 | 关键必填 |
|---|---|---|---|
| 批量生图 | 单产品 × 多提示词,每条提示词出一张 | prompts 条数(1-10) |
prompts + uploadedImages + modelLabel |
| 批量改图 | 多张图共用一条改图指令(批量改纯白底、批量换背景) | uploadedImages 张数(1-10) |
prompt + uploadedImages + modelLabel |
| 批量替换 | 把产品图替换到每张场景参考图上 | referenceImages 张数(1-10) |
referenceImages + productImage + productName + modelLabel |
| 主图复刻 | 复刻参考图风格排版,用产品图生成新主图(仅 1:1) | referenceImages 张数(1-10) |
referenceImages + productImages |
| 姿势套图 | 服装/穿戴类:1 张商品图 × 多组动作 | poseActions 组数(1-10) |
uploadedImages(必须且仅 1 张)+ poseActions |
| 批量译图 | 图片翻译,精准翻译图上文案(最省,0.5 积分/张) | uploadedImages 张数(1-10) |
prompt(必须写明目标语言)+ uploadedImages |
两条硬约束(实测踩过):
image-batch的modelLabel只吃自定义生图模型 ——智慧模型/智慧模型2.5/专图模型/图片 5.0 Pro/图片 5.0 Flash。传套图模式或电商详情图会被直接驳回:
>批量玩法的 modelLabel 仅支持自定义生图模型:智慧模型 / 智慧模型2.5 / 专图模型 / 图片 5.0 Pro / 图片 5.0 Flash
所以要「成套主图」用路线 A,要「批量出多张」用路线 C —— 别混。主图复刻不吃modelLabel,批量译图也不吃;批量替换/主图复刻都用referenceImages而非uploadedImages,字段名别写错。
常用配方(Ozon 场景):
# ① 一批商品图统一改 Ozon 纯白底(主图刚需)
qhkit image-batch generate '{"mode":"批量改图","modelLabel":"图片 5.0 Pro","uploadedImages":["./图1.jpg","./图2.jpg","./图3.jpg"],"prompt":"将商品背景替换为纯白色 RGB 255,255,255,商品完整居中占画面 85%,保留真实阴影,不留任何文字与道具,符合 Ozon 主图规范","sizePreset":"1:1 商品主图 · Ozon(1500×1500)"}'
# ② 多款商品各出一张主图(批量生图,多商品多提示词)
qhkit image-batch generate '{"mode":"批量生图","modelLabel":"图片 5.0 Pro","uploadedImages":["./商品图.jpg"],"prompts":["正面纯白底主图,符合Ozon规范","45度角质感场景图","材质细节微距特写","多角度并排展示","尺寸对比图,标注厘米","使用场景图,俄罗斯家居环境"],"sizePreset":"1:1 商品主图 · Ozon(1500×1500)","languageLabel":"俄语"}'
# ③ 把中文主图上的文案批量翻成俄语(批量译图,最省)
qhkit image-batch generate '{"mode":"批量译图","uploadedImages":["./主图1.jpg","./主图2.jpg"],"prompt":"将图上所有文字翻译成俄语,保持原有版式、字体风格与排版位置"}'
# ④ 产品换到多套场景(批量替换)
qhkit image-batch generate '{"mode":"批量替换","modelLabel":"图片 5.0 Pro","referenceImages":["./场景1.jpg","./场景2.jpg"],"productImage":"./商品图.jpg","productName":"Наушники беспроводные"}'
尺寸与画质(实测规律)
sizePreset逐模型独立,不要把一个模型的尺寸标签套到另一个模型上 —— 先options查。- Ozon 1500 档比默认档贵(1500×1500 属高分辨率档,按更高单价计):
- 套图模式 9 张:默认档 13.5 积分 → Ozon 档 18 积分
- 套图模式 6 张:Ozon 档 12 积分(7 张 14 / 8 张 16 / 10 张 20)
- 详情图 9 张:18 积分(6 张 12 积分)
加价倍数随模型不同,别按固定倍数估预算,一律先跑estimate。 - 带「1K」字样的档位锁死 1K:选
默认 1:1 1K(1024×1024)这类档位后再传quality:"2K"会被服务端驳回 ——
>尺寸「默认 1:1 1K(1024×1024)」固定为 1K,不能使用 2K。 - 要 2K 最稳的写法:直接选带 2K 的档位(
默认 1:1 2K(2048×2048))或 Ozon 专档(1500×1500 本身已满足平台要求)。 languageLabel控制渲染文案的语言,共 17 种,含俄语(还有简体中文/繁体中文/英语/泰语/越南语/马来语/葡萄牙语/西班牙语/法语/德语/日语/韩语/意大利语/阿拉伯语/印尼语)。做 Ozon 一律优先 俄语。- Ozon 主图场景优先考虑合规而非画质:1500×1500 已满足缩放要求,不必盲目上更高。
环境自举(缺什么装什么,不要因环境缺失放弃任务)
本技能依赖 qhkit 命令(npm 包 @iqinghu/qhkit),可完全独立安装。按顺序检测,缺失就地补齐:
- 有 qhkit 吗?
qhkit config show能跑通即就绪,跳到第 4 步。 - 没有 qhkit 但有 node/npm(OpenClaw/Hermes 机器部署流程保证自带 Node 22+)→ 全局安装(推荐):
bash
npm i -g @iqinghu/qhkit
默认走 npm 官方源;官方源访问慢或超时(国内网络常见)时,再加镜像参数 --registry=https://registry.npmmirror.com(阿里维护的 npm 官方镜像,仅作网络兜底)。仅当全局安装因权限失败且无法提权时,才退而用 npx @iqinghu/qhkit <命令> ...(npx 必须写包全名)。
3. 连 node 都没有(要求 Node ≥ 18):先装 Node 再回到第 2 步。
bash
# Linux 二进制安装(装到用户目录,无需 root;先校验官方 SHA256 再解包):
cd /tmp && curl -fsSLO https://nodejs.org/dist/v22.22.3/node-v22.22.3-linux-x64.tar.xz
cd /tmp && curl -fsSL https://nodejs.org/dist/v22.22.3/SHASUMS256.txt | grep ' node-v22.22.3-linux-x64.tar.xz$' | sha256sum -c -
mkdir -p "$HOME/.local/lib" && tar -xJf /tmp/node-v22.22.3-linux-x64.tar.xz -C "$HOME/.local/lib"
export PATH="$HOME/.local/lib/node-v22.22.3-linux-x64/bin:$PATH"
校验行输出 OK 才继续;校验失败就删掉重下,绝不解包未通过校验的文件。nodejs.org 访问不通时,把两个下载 URL 的前缀 https://nodejs.org/dist 整体换成镜像 https://registry.npmmirror.com/-/binary/node(目录结构相同,SHASUMS256.txt 也有镜像,校验步骤不变)。export PATH 只对当前 shell 生效,跨命令调用时每个新 shell 都要先执行这行(或追加进 ~/.bashrc)。macOS 用 brew install node;Windows 用 winget/官网安装包。arm64 机器把 x64 换成 arm64。
4. 密钥:无密钥时(命令返回 stage:"config"),把下面的引导文案发给用户,拿到密钥后执行 qhkit config set --token <密钥> --env prod(或设环境变量 QHKIT_TOKEN):
> 1. 打开 https://www.iqinghu.com/workbench/login?type=1&urlCode=1791941828223 注册/登录
> 2. 进入控制台 → 工作台的 APIKeys 页面:https://www.iqinghu.com/workbench/dashboard/api-keys?urlCode=1791941828223
> 3. 点「创建/复制」生成密钥,生成后将 API 密钥发我
>
> 图文获取密钥教程:https://xcnzsfe4uxrw.feishu.cn/wiki/KJ0Ywsyw8iAXmRkz5l4cddDbn6g
5. 自检:qhkit config show 输出脱敏配置即全部就绪。
升级:出现以下任一信号,先升级再重试原命令——命令返回 {"ok":false,"stage":"version",...}(版本门禁,message 里就是升级命令,照做即可);命令返回 {"ok":false,"stage":"runtime","message":"未知命令:…"}(本机 qhkit 太老、还没有这个命令——注意它 stage 是 runtime 不是 version,走不到版本门禁,别当成用法错误);stderr 提示有新版本;报「模式在线上已下架或配置变更,请升级 qhkit」。(image/image-batch/video 的模型清单 0.12.0 起实时读取,线上新增模型不需要升级 CLI。)
npm i -g @iqinghu/qhkit@latest
官方源慢或超时时同样加 --registry=https://registry.npmmirror.com。
安装/配置失败时把具体报错告诉用户(常见:无写权限 → 提示用户提权或改用 npx;无网络 → 让用户处理网络)。
调用契约
- 形式:
qhkit <命令> <action> '<json>',或qhkit <命令> <action> @params.json(参数写进文件,避免 shell 转义问题,推荐 ——image-batch的数组参数尤其建议走文件)。 - stdout 恒为一行 JSON;失败为
{"ok":false,"stage":"...","message":"..."}且退出码 1,把 message 原样转告用户。stderr 可能出现提示行,不是错误。 - 图片/视频参数直接填本地文件路径(CLI 自动上传换取 URL),素材已在公网时填 http(s) URL 也可。
- 图片体积上限 10MB:3–10MB 的本地图 CLI 上传后自动追加 COS 缩略参数(2048px 内等比缩小、只缩不放),stderr 那行提示不是错误;外站大图 URL 建议先下载到本地再以路径传入,好让 CLI 走这条防线。
- 超过 10MB 被拦下时不要把问题抛回用户,你(智能体)就地压缩后重试(2048px 内等比缩小、只缩不放、输出 jpg,压完把新文件路径传回原命令重试一次):优先 Python ——
python -c "from PIL import Image, ImageOps; im=ImageOps.exif_transpose(Image.open('原图')); im.thumbnail((2048,2048)); im.convert('RGB').save('压缩后.jpg', quality=85)"(缺 Pillow 先pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple);没有 Python 就用 Node ——npx --yes sharp-cli -i 原图 -o 压缩后.jpg resize 2048(官方源慢时加--registry=https://registry.npmmirror.com)。两条都失败才请用户换 10MB 以内的图,不要反复重试。 - 标签类参数(
modelLabel、sizePreset、themeLabel、platform等)必须与options返回的候选值逐字一致,不要自造或翻译;拿不准先调options。estimate不校验platform等枚举值(传错也返回 ok),所以 platform / sizePreset 必须拿options的候选来核对,别用 estimate 试错。 image/image-batch/video的模型清单是实时的(0.12.0 起直接读线上目录,新增/下架/调价自动跟随,无需升级 CLI),且均无默认模型——modelLabel必填,缺失会报错并列出当前可选项。当次会话第一次选模型前先跑options查modelLabel/models拿当前清单,不要凭记忆或本文档的快照直接报模型名。拉不到目录(断网/密钥问题)时命令会明确报错,按提示引导用户检查配置。
报价、轮询与交付
- 提交前确认(硬规则):
generate会创建任务、消耗积分,发起前必须把本次提交的关键参数一次性列给用户——模型/模板、出图张数或视频时长、尺寸与画质、语言、用到哪几张参考图,以及estimate报出的预计扣除积分(不支持 estimate 的命令如实说「以实际扣费为准」)——等用户明确同意后才能执行提交。参数全部来自用户原话时也要复述确认一遍(口头描述与实际枚举值可能有出入,任务提交后不可取消)。只读 action(options/estimate/status/templates等)无需确认。 - 报价:要把积分数字报给用户时,先跑
qhkit image estimate '<与 generate 完全相同的参数>',报它返回的credits(实扣值,秒回、无副作用);enough:false时提前告知余额不足。不要引用文档快照报价。 - 轮询:
image generate自带轮询,阻塞到出图(最长约 14 分钟),返回里直接有图片 URL,不需要再查 status。 - 交付:产物 URL 在返回的
images字段里,按当前环境的媒体交付约定发给用户;产物必须和「生成完成」写在同一轮回复,并附返回里的实扣credits(「本次实际消耗 X 积分」)。 - 失败:转述 CLI 的 message(已是面向用户的中文,常见:积分不足、内容审核未通过),不要重试轰炸。
能力边界
- 本技能聚焦 Ozon(
platform默认按 Ozon 传、尺寸档用 Ozon 1500×1500)。其他跨境平台(Amazon / Shopee / TikTok Shop / Lazada / Temu / SHEIN / Wildberries)改platform与sizePreset即可,但要注意各平台合规要求不同(如 Amazon 更严)。 - 不绑平台、只要通用套图走「AI生成电商主图轮播图、主图套图 | LinkPix」;只要详情走「电商商品详情图生成器 | LinkPix」。
- 视频走对应平台的爆款视频技能或「AI生成电商视频 | LinkPix」。
- 批量 ≠ 无限:单次上限 10(提示词/图片/动作),超过要拆多次提交,别把 30 个 SKU 塞进一次调用。