三剪客 · 电商主图工厂
> ## ⚠️ 先申请你自己的 API Key
>
> 本 Skill 不内嵌任何密钥,也不代付费用。 请到
> 算力集市 api.a7w.cn 注册并创建你自己的 API Key
> (新用户有赠送点数,可以先免费试跑)。
>
> 拿到后填进环境变量 A7W_API_KEY,或直接传给 --key 参数。
> 请勿使用他人提供的 Key —— 用量与费用都记在 Key 所属账号上。
能做什么
给商品信息(标题 / 类目 / 规格 / 卖点 / 实测实物图 URL),批量产出符合电商平台规格的主图与详情图。
它替代的是运营每天最琐碎的那一步:不是「没有图」,而是「五张主图每张该说什么——
第 1 张放什么、第 2 张放什么,资质位拿什么填」。
| 你最关心 | 答案 |
|---|---|
| 多少钱 | 实测 24 点/张(1K)= 0.24 元/张,1 元 = 100 点;images 跑之前会先把总价打出来 |
| 要多久 | 单张实测 5~30 秒完成;轮询有超时上限,不会无限等 |
| 要装什么 | 什么都不用装,只用 Python 标准库 |
| 支持哪些平台 | 淘宝/天猫 800x800(正方白底)、淘宝 3:4 竖版、1688、拼多多、抖音商城 3:4、详情页长图 |
| 主图怎么分 | 五张位:第 1 张利益点 / 第 2 张规格与适用 / 第 3 张细节工艺 / 第 4 张场景人群 / 第 5 张资质售后 |
| 中断了怎么办 | 断点续跑:已出完的直接跳过、已提交未完成的用 task_id 续查,不重复扣费 |
| 会瞎编吗 | 提示词里写死「不编造商品信息里没有的数字、材质、认证、检测、销量、评价」;文案与提示词都过合规闸门 |
| 资质位怎么处理 | 本包不生成资质。第 5 位走 action=edit,把你真实持有的资质图拿来改版式;没有就如实缺位并标红 |
这个包与同族包的区别(不是「换个比例 + 换个提示词」)
| 维度 | 新媒体配图工厂 | 小红书带货作战包 | 本包(电商主图工厂) |
|---|---|---|---|
| 输入 | 一篇文稿 / 一个主题 | 商品名与价格 | 商品信息 + 商品实物图 URL |
| 输出的语义单位 | 文章里的插图角色(封面/内文/步骤/对比/数据/金句/结尾) | 文案(笔记/脚本) | 平台固定的主图位(主图/规格/卖点/场景/资质) |
| 比例表 | 内容平台封面比例(小红书 3:4、公众号 2.35:1) | 笔记封面 3:4 | 电商平台规格(淘宝 800x800 正方白底、1688、拼多多、抖音商城 3:4) |
| 出图能力 | 只用 action=generate |
只给出手工调用的提示 | generate + edit(实物图/资质图改版式) |
| 合规重点 | 广告法违禁词 | 广告法 + 平台规则(只扫文案) | 广告法违禁词 + 不伪造销量/评价/资质/检测报告,且扫文案与出图提示词 |
| 特有闸门 | 比例真伪、成本、违禁词、照抄示例 | 违禁词四级结论 | 上列之外再加 主图位完整性(五张位缺位标红) |
怎么用(命令行)
第 0 步:获取 API Key
到 api.a7w.cn 注册,创建一个 API Key(形如 sk-...)。
第 1 步:装依赖
零依赖。 不需要 pip install 任何东西,只要机器上有 Python 3.7+:
python3 --version
scripts/a7w.py 是零依赖客户端(只用 urllib / json / mimetypes),
scripts/imgprobe.py 是图片头探针(只用 struct / zlib),scripts/run.py 同样只用标准库。
PIL 不是必需的——它的存在只会让 --snap 支持更多图片格式。
> 约定:scripts/a7w.py 是所有 Skill 包共用的零依赖客户端,我们靠
> 「包内副本 SHA256 == 规范版」(16797 B)批量校验各包的客户端有没有被意外改坏。
> 所以本包没有为了自己的业务去改它——需要读图片像素就独立出 imgprobe.py,
> 需要应用专属接口就写在 run.py 里。
第 2 步:填 Key
# Linux / macOS
export A7W_API_KEY=sk-你的key
# Windows PowerShell
$env:A7W_API_KEY="sk-你的key"
也可以存进配置文件反复用(推荐):
python3 scripts/a7w.py login --key sk-你的key
第 3 步:先认规格(免费,不花点数、不联网)
python3 scripts/run.py specs
specs 会列出每个平台的主图像素与设计比例、五张主图位的语义、以及上游 1K 档实测像素表
(含每种比例的真实偏差)。这一步零网络、零成本,先看清楚再花钱。
出图模型的可选值可以现查:
python3 scripts/a7w.py schema nano_banana
第 4 步:提炼卖点并按主图位分配(只花文本钱)
python3 scripts/run.py sellpoints \
--product "便携榨汁杯 600ml" --platform taobao \
--specs "容量600ml,杯身Tritan,刀头304不锈钢可拆洗,USB-C充电" \
--usp "一杯一袋、单手开盖、可整杯冲洗" \
--audience "通勤上班族、健身人群" \
--evidence "自有实拍图与拆解视频" \
--out plan.json
想先看不花钱的提示词:
python3 scripts/run.py sellpoints --product "便携榨汁杯 600ml" --dry-run
第 5 步:先算钱(不出图)
python3 scripts/run.py cost --count 5
# 预估成本:5 张 × 24 点 = 120 点 = 1.20 元
python3 scripts/run.py cost --count 5 --budget 100
# 超预算 → 打印结论并返回退出码 3
第 6 步:出图(真花钱)
# 先不带 --yes 跑一次:只报价,不提交任何任务
python3 scripts/run.py images --plan plan.json --outdir ./out
# 确认了再加 --yes
python3 scripts/run.py images --plan plan.json --outdir ./out --yes --snap --report evidence.json
图片一定要输出到包外(比如 ./out、%TEMP%\...)。Skill 包的上传白名单只收
.md .py .txt .json .sh .js .yaml .yml .csv,图片会让上传 400;脚本也会拒绝把 --outdir
指到包内(退出码 2)。
中断了就原样重跑,提示词与分辨率没变就不会重复扣费:
python3 scripts/run.py images --plan plan.json --outdir ./out --yes
# [1/2] #1 已完成,跳过(上次扣费 24.0 点,不再重复扣)
# [2/2] #4 发现未完成的 task_id=task_xxx,续查而不重新提交
第 7 步:发布前做合规自检(零成本、纯本地)
python3 scripts/run.py compliance --text "全网最低价,销量第一,好评率100%"
python3 scripts/run.py compliance --file plan.json --strict
完整工作流
# 0) 认规格(零成本)
python3 scripts/run.py specs
# 1) 出方案(只花文本钱)
python3 scripts/run.py sellpoints --product "便携榨汁杯 600ml" --platform taobao \
--specs "容量600ml,刀头可拆洗" --evidence "自有实拍图" --out plan.json --json
# 2) 算钱 + 设预算
python3 scripts/run.py cost --count 5
python3 scripts/run.py cost --count 5 --budget 200
# 3) 真出图(报价 → 确认)
python3 scripts/run.py images --plan plan.json --outdir ./out
python3 scripts/run.py images --plan plan.json --outdir ./out --yes --snap \
--budget 200 --report evidence.json
# 4) 合规自检
python3 scripts/run.py compliance --file plan.json --strict
直接用 curl 调(不依赖本包脚本)
本包底层就是算力集市 api.a7w.cn 的标准两步异步任务。提交(注意没有 /generate
这个端点,「文生图」是 submit 的 action=generate 参数):
# 算力集市 api.a7w.cn · nano_banana 提交出图(真花钱,1K 约 24 点/张)
curl -sS -X POST "https://api.a7w.cn/api/v1/apps/nano_banana/submit" \
-H "Authorization: Bearer $A7W_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "纯白背景,一只透明便携榨汁杯放正中央,柔光棚拍,正面平视,浅景深,无文字",
"action": "generate",
"model": "nano-banana",
"resolution": "1K",
"aspect_ratio": "1:1"
}'
拿 data.task_id 去轮询:
curl -sS "https://api.a7w.cn/api/v1/tasks/task_xxxxxxxxxxxx" \
-H "Authorization: Bearer $A7W_API_KEY"
出方案那一步走的是 OpenAI 兼容的 POST /api/v1/chat/completions。
参数说明
全局
| 参数 | 说明 |
|---|---|
--key |
临时指定 Key;优先级最高。别把它写进脚本或文档 |
--json |
以 JSON 输出,写在子命令前面或后面都可以;JSON 模式下 stdout 只有一个完整 JSON,报价与进度走 stderr |
specs —— 列平台规格与主图位(零网络、零成本)
| 参数 | 说明 |
|---|---|
--platform |
只看某平台,可重复:taobao / taobao34 / 1688 / pinduoduo / douyin / detail |
sellpoints —— 提炼卖点并按主图位分配
| 参数 | 说明 |
|---|---|
--product |
必填。商品标题 |
--platform |
目标平台,可重复,默认 taobao |
--specs |
规格参数(尺寸/容量/材质/型号) |
--usp |
运营提供的已知卖点 |
--audience |
目标人群 |
--evidence |
可出示的证据(检测报告/资质/专利)。不填就按「无证据」处理,卖点只能写看得见的外观与规格 |
--price |
售价(写进方案上下文,不上图) |
--product-image |
商品实物图 URL;资质位走 action=edit 时用 |
--no-edit |
禁止 action=edit,全部用 generate |
--resolution |
出图分辨率,默认 1K |
--out |
把方案写成 JSON,images 要用它 |
--dry-run |
只打印将发送的提示词,不调模型、不花钱 |
images —— 批量出图
| 参数 | 说明 |
|---|---|
--plan |
sellpoints 产出的方案 JSON;不给就用 --product 现出方案 |
--slot |
只出某几个图位,可重复:main / spec / selling / scene / qualification |
--platform |
只出指定平台,可重复 |
--count |
最多出几张 |
--resolution |
覆盖分辨率;写进断点 key(1K/2K/4K 是三个不同的断点) |
--image-model |
出图模型,默认 nano-banana(也写进断点 key) |
--outdir |
图片输出目录,默认 %TEMP%\ecom-image-out;不可是包内目录 |
--budget |
成本上限(点)。预估超了直接停;跑的过程中每次提交前还会再核一次 |
--yes |
确认真的花钱。不加就只报价、一个任务都不提交 |
--snap |
出图后按比例精确裁剪(上游按 32 对齐,3:4 实得 864x1184,偏差 2.70%) |
--snap-on-design |
按平台设计比例裁(--snap 时默认就按设计比例) |
--ratio-tolerance |
比例容差,默认 0.03(实测最大偏差 2.70%);有 0.0025 的量化地板 |
--poll-timeout |
单张轮询超时秒数,默认 600(上限,不是期望时长;实测 5~30 秒完成) |
--max-seconds |
整批最长耗时,到点中断(退出码 5),已完成的都在断点文件里,重跑可续 |
--state |
断点文件路径,默认 <outdir>/ecom-image-state.json |
--force |
忽略断点全部重出(会重复扣费,只在确实要重画时用) |
--allow-prompt-hits |
即使文案命中闸门也出图(默认拦截) |
--allow-missing-slots |
主图位不齐也照出(默认拦截) |
--stop-on-error |
一张失败就整体停 |
--report |
把本次证据(请求参数 / 任务原文 / 真实像素)写成 JSON,便于对账 |
compliance —— 合规自检(零成本)
| 参数 | 说明 |
|---|---|
--text |
待检文案,可重复 |
--file |
待检文案文件 |
--strict |
非 pass 结论一律退出码 1(CI 卡门禁) |
cost —— 只算钱不出图
| 参数 | 说明 |
|---|---|
--count |
必填。要出几张 |
--resolution |
1K(默认)/ 2K / 4K |
--points-per-image |
覆盖单张单价(点)。2K/4K 必须给,见下 |
--budget |
预算上限(点),超了退出码 3 |
平台 preset(--platform)
| preset | 平台 | 主图像素 | 设计比例 | 生成用的 aspect_ratio | 第 1 张白底 |
|---|---|---|---|---|---|
taobao |
淘宝 / 天猫 | 800x800 | 1:1 | 1:1 |
是 |
taobao34 |
淘宝 3:4 竖版 | 750x1000 | 3:4 | 3:4 |
否 |
1688 |
1688 | 800x800 | 1:1 | 1:1 |
是 |
pinduoduo |
拼多多 | 800x800 | 1:1 | 1:1 |
是 |
douyin |
抖音商城 | 1200x1600 | 3:4 | 3:4 |
否 |
detail |
详情页长图 | 750x不限 | 1:3(单屏口径) | 3:4 |
否 |
详情页是长图:上游单张出不了长图,所以本包按屏出图(单屏 3:4),拼接在本地做。
六道本地硬闸门
闸门都是拦截 + 标红 + stderr 汇总 + 非 0 退出码,不是「提示一下」。
因为出图是按次扣费的,事后发现问题的代价是真金白银。
1. 电商合规(本包的重点)
三道判据,命中即拦:
- 广告法绝对化用语:
国家级|世界级|最高级|最佳|最优|最强|最好|第一品牌|全国第一|排名第一|销量第一、
最X、100%、根治|治愈|包治|特效、稳赚|保本|零风险等。 - 不伪造销量:
销量第一|月销\s*\d+|已售\s*\d+|\d+万\+?\s*(人|用户|买家)\s*(已购|在用|选择)——
销量必须来自平台后台真实数据。 - 不伪造评价:
好评率100%|零差评|好评如潮|全部五星|真实评价\s*\d+条。 - 不伪造资质与检测报告:
权威检测报告|质检合格|SGS|CMA|CNAS|专利技术|独家配方|特供|专供——
必须真实存在且能出示证书编号与颁发机构。本包不生成资质,也不替你编结论。
「最X」有可枚举的上下文豁免 + 句首不豁免(照同族口径,这是为什么):
电商文案里「最好」「最强」是绝对化用语,照拦没错;但中文里「最大」也大量出现在
普通比较句里:「和同类产品最大的区别是……」「这个价位里最省事的做法是……」。
一刀切拦下来,运营会成天在改根本不违规的句子,闸门变成噪音——闸门一旦变成噪音,
人就会加 --allow-prompt-hits 把它关掉,那时真正该拦的也拦不住了。
所以两条条件都满足才豁免:
| 条件 | 说明 |
|---|---|
| 后文落在可枚举的豁免表里 | 不同/区别/差异/共同/相同/相似/常见/容易/重要/关键/主要/先/后/基本/简单/难/麻烦/省事/常用/合适/适合/…,以及纯程度词 |
| 不在句首 | 句首的「最大区别是…」经常正是标题式的最高级宣称,照拦 |
⚠️ 豁免只允许一个「的」/「了」,逗号顿号不开豁免。所以
「找出占比最高、且最容易改的那一个环节」会被拦下——属已知的保守行为,
靠改文案解决(把「最高」换成「比较高」),不靠放松规则解决。
2. 占位符残留
{} / {{标题}}、[待填] / [待补充]、XXX、待补充 / TODO / TBD。
这些字符串会进提示词,然后被画到图上(AI 出图的文字基本是错的,画出来就是乱码)。
[1](引用序号)、[图 2](配图位)是正常写法,不会误判。
3. prompt_echo —— 照抄提示词示例
这条是从标题工坊的事故来的:提示词里写过的示例,哪怕明确标着「这是错的写法」,
模型照样照抄——公众号那一轮最高分 89.0 的标题一字不差就是提示词里的示例,
最高分变成「抄标准答案」,排序就废了。
出图场景更隐蔽:你不会一眼看出这张主图和示例长得一样,而是「看起来挺正常」,
直到发现五张主图是同一个模子。
判定:去标点后相等 → 拦;字符二元组 Jaccard ≥ 0.75 → 拦;示例的二元组
覆盖度 ≥ 0.60 → 拦。
第三条是补漏:出图提示词动辄 60~120 字而示例只有 25 字,Jaccard 的分母是两份二元组的
并集,示例那一侧被长提示词摊薄得极狠——示例原样嵌进去也照样放行。实测:
| 输入 | Jaccard | 覆盖度 | 结果 |
|---|---|---|---|
| 示例原样嵌入 + 补 9 个字(34 字) | 0.727 | 1.000 | 旧口径放行 ❌ → 新口径拦 ✓ |
| 示例原样嵌进 102 字的六段结构提示词 | 0.245 | 1.000 | 旧口径放行 ❌ → 新口径拦 ✓ |
覆盖度只看「示例被抄了多少」,不看提示词有多长,所以摊薄对它无效。
长度守卫(本包与同族的口径差异,是刻意的):同族的守卫是 max(6, len(示例)//2)
(示例 25 字 → 门槛 12),因为内容平台的出图提示词本来就是 60~120 字。
但电商主图的出图提示词惯常只有 30~50 字,沿用门槛 12 会漏掉「示例原样当作整条提示词」
这一最直接的照抄。所以本包的守卫收紧成 min(20, max(6, len(示例)//4))(示例 25 字 → 门槛 6)。
⚠️ 只改门槛,三条判据的阈值一个都没动(去标点相等 / 0.75 / 0.60),
且「去标点后完全相同」这条不受长度门槛约束。
4. 出图比例真伪 —— 读回真实像素,不信自报字段
不信接口返回里的任何比例字段,把图下载回来读文件头,用真实宽高算比例。
为什么必须这样:标题工坊上一版只信模型自报的 formula 字段做模板污染判定,
结果那个真该被判命的标题恰好漏判——闸门是假绿的。同一个错误在出图场景的形态是:
自报 aspect_ratio=1:1,真实像素却是 864x1184。
实测到的上游特性:上游不是按比例给像素,而是先定总像素、再把每边向下对齐到 32 的倍数。
所以 10 种比例里有 5 种拿不到像素级精确比例:
| 请求 | 实测像素 | 实际比例 | 偏差 |
|---|---|---|---|
| 1:1 | 1024x1024 | 1.0000 | 0.00% |
| 3:4 | 864x1184 | 0.7297(27:37) | 2.70% |
| 16:9 | 1344x768 | 1.7500 | 1.56% |
| 9:16 | 768x1344 | 0.5714 | 1.59% |
| 4:5 | 896x1152 | 0.7778 | 2.78% |
| 5:4 | 1152x896 | 1.2857 | 2.86% |
| 4:3 / 21:9 / 2:3 / 3:2 | 见 specs |
精确 | 0% |
所以默认容差是 3%(容差内不算「假」,但真实像素与偏差照样打印出来,不藏)。
要拿到像素级精确比例就加 --snap:按请求比例居中裁剪,裁完再读一次文件头复核,
只会把真正裁准的记成合格。优先用 PIL;没有 PIL 时回落到内置的 8 位 PNG 裁剪器
(只用 zlib + struct),两条路都走不通时如实报告「没能裁」,不假装成功。
读像素这件事由独立模块 scripts/imgprobe.py 负责(PNG / JPEG / GIF / WebP 四种文件头解析,
只读、纯标准库)。
5. 主图位完整性
五张主图位(主图/规格/卖点/场景/资质)缺位 → 标红,images 默认拦截(退出码 3),
只想出已有图位才加 --allow-missing-slots。
为什么缺位要拦而不是「提示一下」:电商主图位是平台语义槽。买家划到第 2 张想看规格、
第 5 张找资质与售后;缺第 5 位意味着买家在决策最后一刻找不到资质依据,直接影响转化;
缺第 1 位则连入池机会都没有。
⚠️ 第 5 位资质图本包不生成。没有真实资质图时,images 会改走 generate 并明确警告
这一次产出的是示意版式、不是资质本身,不许当作资质材料上架——
真机实测踩到过:模型会给第 5 位写一条「自有实拍图与拆解视频」当依据,
然后照样画一张看起来像资质的图出来。
6. 成本上限
- 提交任何任务之前先算总价;超
--budget直接停,一个任务都不提交 - 每张提交前再核一次:前面真实扣费可能比预估高,超了就就地停
2K/4K没有实测单价 → 拒绝估算,退出码 3。宁可拒绝也不编一个数
(想估就给--points-per-image)- 产出图不许进包:
--outdir在包内 → 退出码 2
排错
| 现象 / 报错 | 原因 | 怎么办 |
|---|---|---|
鉴权失败(401) |
Key 无效、过期或写错 | 到 https://api.a7w.cn/ 重新领取;确认没把 Bearer 重复写进环境变量 |
| 点数不足(HTTP 402) | 账号点数用完 | 到 https://api.a7w.cn/ 充值后重试 |
code: 0 但 HTTP 是 200 |
网关信封里 code == 1 才是成功,不是 0 |
看 body 里的 msg;脚本已按这个口径判断,别改成 code == 0 |
| 读状态一直读不到、轮询到超时 | 平台文档写的是 data.result.status,实测 status 在 data 顶层 |
本包已按实测结构取;照文档写会永远读不到状态 |
当前请求未命中可用计费规格 |
model 与 resolution 组合不支持(如普通模型传 2K) |
普通 nano-banana 只支持 1K;要高清档换 nano-banana-2:official 之类 |
上游 502 / upstream timeout / Remote end closed |
网关到上游的瞬时抖动,实测很频繁(真机 2 张里遇到 1 次) | 脚本已内置退避重试(4 次)。连续失败就换模型或降低批次 |
轮询一直 processing |
任务卡住了 | 已设 --poll-timeout(默认 600 秒)上限;超时会报出来并保留 task_id,可 python3 scripts/a7w.py task <task_id> 续查 |
| 图片真实像素和请求比例对不上(差 1%~3%) | 上游按 32 对齐,不是 bug | 加 --snap 精确裁;或把 --ratio-tolerance 放宽 |
读不出真实像素 |
下载被截断,或不是图片 | 删掉那条断点记录重出(--force),或检查网络 |
预估 N 点超过预算上限 |
超了 --budget |
提高预算、减少张数,或先 cost 试算 |
2K 档没有实测单价,拒绝凭猜估算 |
我们没有 2K/4K 的实测价 | 给 --points-per-image 指定单价,或先用 1K 出 |
输出目录 ... 在 Skill 包内 |
--outdir 指到了包里的目录 |
换到包外(./out、%TEMP%\...)。包内放图片会让上传 400 |
主图位缺位 ... |
方案少了必填图位 | 补位后重跑;只想出已有图位就加 --allow-missing-slots |
文案命中闸门 ... 已拦截,未提交任何任务 |
违禁词 / 占位符 / 照抄示例 | 改文案后重跑;确实要带违禁词才加 --allow-prompt-hits |
| 重跑又扣了一次钱 | 提示词/分辨率/模型/比例/参考图改了 → 断点 key 变了 | 这是设计如此(改了就该重画,否则会静默复用旧图)。想省钱就别改,直接重跑即可跳过 |
改了 --resolution 却像没生效 |
历史版本的坑:参数被解析了却写死 1K |
本包建 item 时就用传入的分辨率,且 resolution 进了断点 key,两处同一个数 |
没有找到 API Key |
三种方式都没配 | --key / A7W_API_KEY / python3 scripts/a7w.py login --key sk-xxx |
| Windows 下中文乱码 | 控制台代码页不是 UTF-8 | 先 chcp 65001,或设 PYTHONIOENCODING=utf-8 |
收集排错信息时请附上:完整命令、--report 产出的证据 JSON、原始报错文本。
不要在报错信息或截图里带上你的 API Key。
退出码(可直接用于流水线)
| 退出码 | 含义 |
|---|---|
0 |
全部成功且闸门全绿 |
1 |
合规自检未通过(compliance 的 blocked,或 --strict 下非 pass) |
2 |
调用失败(网络 / 鉴权 / 点数 / 模型名 / 输出目录不合法 / 方案文件读不动) |
3 |
闸门拦下:比例不符、超预算、违禁词、占位符、照抄示例、主图位缺位、无实测单价 |
4 |
需要 --yes 确认(还没花钱,也没提交) |
5 |
达到 --max-seconds 上限中断(可续跑) |
130 |
用户中断(Ctrl+C) |
--json 输出契约(给流水线与 agent 消费,只在 --json 下生效):
- 成功:结果对象里多一个
"ok": true;顶层是数组时包成{"ok": true, "data": [...]} - 失败:stdout 输出一个 JSON 信封,形如
{"ok": false, "exit": 3, "error": {"kind": "gate", "message": "…"}}(exit就是本次真实退出码),
kind取gate/usage/budget/call/interrupt/internal。 internal是没预料到的异常(代码 bug)的兜底:此时 stdout 给信封、
完整 traceback 原样打到 stderr、退出码固定 1 —— 报 bug,不藏 bug。- 只有在本次还没吐过任何 JSON 结果时才补信封;已经吐过结果时
(例如compliance判出blocked、cost估不出价),ok就写在那个结果里 - 人读文案照旧走 stderr;退出码语义一个都不变;非
--json模式输出与同族一致 --json写在子命令前面或后面都可以
成本口径
| 项 | 实测 |
|---|---|
nano_banana 1K 出图 |
24 点/张 = 0.24 元 |
| 充值比例 | 1 元 = 100 点 |
| 提交时冻结 | 实测 frozen_points = 31.2(预冻结,不是最终扣费) |
| 完成后结算 | usage.points_cost = 24 |
| 失败 | 全额退回 |
sellpoints 出方案 |
纯文本钱,实测一次 1824 tokens(可忽略) |
只信 usage.points_cost。 平台的 pricing_matrix / tenant_* 字段我们验证过半数不可信:
image_human 字段写 1.5/2/4/8 点/秒、实测 2/3/6/12;voice_tts/stt 字段写 30、实扣 40。
那些字段只能当参考,不能当结算价写进文档。
frozen_points 也不是最终扣费:实测冻结 31.2、实扣 24,差 30%。
文件结构
sanjianke-ecom-image/
├── SKILL.md 本文件
├── README.md 给人看的说明
├── LICENSE.md MIT,署名三剪客
├── references/
│ ├── ecom-image-method.md 电商主图方法论:白底图、五张位分配、详情页分屏
│ ├── platform-specs.md 各平台主图规格、安全区与详情页拼接
│ └── compliance-and-gates.md 电商合规红线与六道闸门口径
└── scripts/
├── a7w.py api.a7w.cn 零依赖客户端(**逐字节等于规范版,本包不改它**)
├── imgprobe.py 图片头探针:读真实像素 PNG/JPEG/GIF/WebP(只读,纯标准库)
└── run.py specs / sellpoints / images / compliance / all / cost / models
端点速查
算力集市(api.a7w.cn)的出图是两步异步任务(下面每一行的域名都来自算力集市 api.a7w.cn):
| 用途 | 方法与路径 |
|---|---|
| 提交出图任务(算力集市 api.a7w.cn) | POST https://api.a7w.cn/api/v1/apps/nano_banana/submit |
| 查任务结果(本包用它) | GET https://api.a7w.cn/api/v1/tasks/<task_id> |
| 查任务结果(应用级,备用;同属算力集市 nano_banana) | POST https://api.a7w.cn/api/v1/apps/nano_banana/query |
| 看某应用的接口与参数 | GET https://api.a7w.cn/api/v1/apps/nano_banana |
| 在架应用清单 | GET https://api.a7w.cn/api/v1/apps |
| 在架模型清单 | GET https://api.a7w.cn/api/v1/models |
| 出方案用的大模型 | POST https://api.a7w.cn/api/v1/chat/completions |
没有 /generate 这个端点。 「文生图」是 submit 的 action=generate 参数,
不是独立的 api 路径——同族曾经凭记忆写错过,被实测纠正,这里留个记号。
submit 的参数名(用 python3 scripts/a7w.py schema nano_banana 实查,别猜):
prompt / action(generate|edit) / resolution(1K|2K|4K) / aspect_ratio / image_urls / model / callback_url
已知边界(不藏)
- 白底图的「纯白」是设计要求,不是自动判定。本包会把「纯白背景」写进提示词、
并在白底位缺这句时自动补上,但不会去检测产出图的背景像素是否真的纯白。
背景干净度仍需人工看一眼——这一条写在references/ecom-image-method.md里。 - 详情页长图不直接生成。上游单张出不了长图,本包按屏出图,拼接在本地做,
拼接命令见references/platform-specs.md。 - 不生成资质。第 5 位只改你真实持有材料的版式。
- AI 出图的文字基本都是错的,所以本包一律要求「不要在图上生成文字」,
压图文字后期自己加。 - 合规闸门是启发式自检工具,按子串/正则匹配,不理解语义、不看图片、不做谐音识别。
免责声明
内置违禁词表与判定口径是启发式自检工具,来自公开经验整理,不构成法律意见,
也不代表任何平台的官方审核标准。商品图片与文案的合规责任由使用者承担;
食品、保健品、医疗器械、母婴、化妆品、3C 认证等高风险类目必须人工复核。
图片版权的额外提示:AI 生成图可能涉及第三方商标、真人肖像、知名角色形象等权利。
提示词里不要要求生成具体品牌 logo、真实人物姓名或受保护的角色形象;
生成后如用于商业投放,请自行完成商标与肖像权排查。
费用提示:出图按次扣费,--report 产出的证据文件里逐张记了真实扣费
(usage.points_cost),请以它为准对账。本包不做代付,也不内嵌任何密钥。
联系我们
- 技术微信:9872659 —— 加好友时说一下是从哪个 Skill 找过来的,直接给你配套的 API Key 与能跑的示例。
- 要算力 / 要 API Key:算力集市 · 注册领 API Key —— 一个 Key 调用全部 AI 算力,注册、充值、创建 Key 都在这里。
- 更多 AI 插件与接口:AI 插件市场。
相关链接
- 算力集市 api.a7w.cn(注册领 Key):https://api.a7w.cn/
- 电商主图方法论:
references/ecom-image-method.md - 各平台主图规格与安全区:
references/platform-specs.md - 电商合规红线与闸门口径:
references/compliance-and-gates.md