标签:#WorkBuddy #AI生图 #电商运营 #Seedream #火山方舟 分类:人工智能 / 办公工具 适用读者:电商卖家、独立站运营、内容创作者、想用 AI 提效的职场人
我是佛山一个做数码配件的淘宝卖家,主营魔声(Monster)蓝牙耳机和电竞音箱。做过电商的都知道,详情页就是第二张脸——主图不吸睛没点击,场景图没氛围没转化,文案没痛点没下单。
但现实是:
环节 | 传统做法 | 耗时 | 痛点 |
|---|---|---|---|
主图拍摄 | 找摄影师、租棚、修图 | 2-3 天 | 一套图成本 800-2000 元 |
场景图 | 实地布景拍摄 | 半天起 | 换个场景重来一遍 |
详情页文案 | 自己憋或外包 | 1-2 小时 | 外包 200-500 元/款 |
详情页切片 | 手动 PS 切图 | 30-60 分钟 | 尺寸不对反复返工 |
一款新品上架,光视觉素材就要折腾 2-3 天。上 10 款货?半个月没了。
直到我把 WorkBuddy + Seedream 5.0(即梦 AI) 串成一条流水线,情况变成这样:
丢一张手机拍的产品图 → 10 分钟出 3 张主图 + 2 张场景图 + 完整详情文案 → 自动按淘宝规范切片
这篇文章就是这条流水线的完整搭建实录,所有代码可复现。
┌─────────────┐ ┌──────────────────────┐ ┌─────────────────┐
│ 产品实拍图 │ ──▶ │ WorkBuddy + Skill │ ──▶ │ 火山方舟 API │
│ (手机随拍) │ │ seedream-image │ │ Seedream 5.0 │
└─────────────┘ └──────────┬───────────┘ └────────┬────────┘
│ │
▼ ▼
┌──────────────────────┐ ┌─────────────────┐
│ ecommerce_oneclick │ │ AI 生成图片 URL │
│ .py (一键脚本) │ └────────┬────────┘
└──────────┬───────────┘ │
│ ▼
┌──────────┴───────────┐ ┌─────────────────┐
│ │ │ 自动下载到本地 │
▼ ▼ └─────────────────┘
┌──────────────┐ ┌──────────────┐
│ 5 张成品图 │ │ 详情页文案 │
│ 主图×3+场景×2 │ │ (标题+卖点+参数)│
└──────────────┘ └──────────────┘
```bash组件 | 作用 | 来源 |
|---|---|---|
WorkBuddy | 任务编排 + 本地文件操作 + Skill 加载 | 腾讯官方 |
seedream-image Skill | 封装提示词模板 + API 调用逻辑 | 自建 Skill |
Seedream 5.0 API | 字节即梦 AI 图像生成模型 | 火山方舟 |
ecommerce_oneclick.py | 一键出图主脚本 | 自写 |
关键设计:用 Skill 封装,一次配置,反复调用。WorkBuddy 负责理解需求、加载 Skill、执行脚本、整理产物,全程不用手动碰 API。
doubao-seedream-5-0-260128 模型(即梦 5.0)在 WorkBuddy 中加载 Skill(或手动放到 ~/.workbuddy/skills/seedream-image/),目录结构:
seedream-image/
├── SKILL.md # Skill 说明 + 提示词规则
├── generate.py # 通用生图脚本(文生图/图生图)
├── ecommerce_oneclick.py # 电商一键出图脚本
├── reference.md # 官方 API 参数 + 尺寸表
├── examples.md # 示例库
├── requirements.txt # 依赖
└── .env # API Key 配置
```bash.env 内容:
ARK_API_KEY=你的火山方舟API Key
```bashpip install -r requirements.txt
# 核心依赖:requests
```bashecommerce_oneclick.py 是整条流水线的心脏。它的逻辑很直白:读产品图 → 转 Base64 → 按预设 Prompt 逐张调 API → 下载 → 生成文案。
这是整个工具最核心的部分——每张图对应一个拍摄意图,Prompt 经过反复调试:
MODEL_ID = "doubao-seedream-5-0-260128"
API_URL = "https://ark.cn-beijing.volcengine.com/api/v3/images/generations"
SHOT_CONFIGS = [
{
"name": "主图_正面",
"prompt": "【{product}】产品主图,保持产品原有外观设计完全不变,纯白背景,专业摄影棚灯光,正面展示,产品摄影,超高清画质,电商主图标准,商业摄影",
"size": "2048x2048",
"cat": "main",
},
{
"name": "主图_45度",
"prompt": "【{product}】产品展示图,保持产品原有外观设计完全不变,纯白背景,45度角斜侧面展示,专业摄影棚灯光,产品摄影,超高清画质,电商主图",
"size": "2048x2048",
"cat": "main",
},
{
"name": "主图_细节",
"prompt": "【{product}】产品细节特写,保持产品原有外观设计完全不变,聚焦核心功能区域、接口、按键或纹理,纯白背景,微距产品摄影,超高清,电商详情图",
"size": "2048x2048",
"cat": "detail",
},
{
"name": "场景图_桌面",
"prompt": "【{product}】使用场景图,保持产品原有外观设计完全不变,放在现代简约桌面上,搭配相关数码配件,自然光+补光,超高清,电商场景图,生活方式摄影",
"size": "2560x1440",
"cat": "scene",
},
{
"name": "场景图_环境",
"prompt": "【{product}】使用场景图,保持产品原有外观设计完全不变,真实使用环境中展示,柔和自然光线,景深效果,超高清,电商场景图,氛围感摄影",
"size": "2560x1440",
"cat": "scene",
},
]
```bash这是全文最重要的一句话:
电商生图必须用图生图(image-to-image),用卖家提供的产品实拍图作为参考。禁止文生图凭空创造产品外观——否则 AI 生出来的产品和实物对不上,买家收货差评退货,店铺直接废。
所以每个 Prompt 里都强制加了:
保持产品原有外观设计完全不变
```bash这就是给 AI 划的红线:你可以换背景、换光线、换角度,但产品本身的长相、颜色、按键、接口,一个像素都不能动。
火山方舟 API 不接受本地文件路径,只接受 URL 或 Base64。脚本里这段处理本地图:
def image_to_base64(path: str) -> str:
"""Convert local image to data URI base64 string."""
p = Path(path)
ext = p.suffix.lower().lstrip(".")
mime_map = {
"jpg": "jpeg", "jpeg": "jpeg", "png": "png",
"webp": "webp", "bmp": "bmp", "tiff": "tiff", "gif": "gif",
}
mime = mime_map.get(ext, "jpeg")
b64 = base64.b64encode(p.read_bytes()).decode()
return f"data:image/{mime};base64,{b64}"
```bashdef call_api(api_key: str, prompt: str, size: str, ref_b64: str) -> str | None:
payload = {
"model": MODEL_ID,
"prompt": prompt,
"image": ref_b64, # 图生图的关键:传入参考图
"size": size,
"response_format": "url",
"watermark": False, # 电商图不要 AI 水印
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}",
}
r = requests.post(API_URL, headers=headers, json=payload, timeout=180)
r.raise_for_status()
data = r.json()
return data.get("data", [{}])[0].get("url")
```bash脚本还内置了一个详情页文案生成器,按淘宝爆款结构输出:推荐标题×3 → 痛点场景 → 核心卖点 → 参数表 → 品质保障 → 限时福利。这里不贴全部代码,核心是结构化模板:
def generate_copy(product: str, category: str, platform: str = "淘宝") -> str:
# 标题:利益点 + 关键词 + 场景 + 促销词
# 痛点:4 个共鸣问题 → 引出产品
# 卖点:5 条,每条一个【标签】+ 场景化描述
# 参数表:Markdown 表格,适配淘宝详情页
# 信任:退换政策 + 质保 + 客服
# 促销:前 N 名福利 + 包邮 + 优惠券
```bashpython ecommerce_oneclick.py \
--image 产品图.jpg \
--name "魔声蓝牙耳机" \
--category "数码配件"
```bash输出:
📷 参考图: 产品图.jpg (456 KB)
📦 产品: 魔声蓝牙耳机 | 类目: 数码配件
📁 输出: ~/Desktop/魔声蓝牙耳机_20260718_193600_电商素材
🎨 开始生成图片...
[1/5] 主图_正面 ✓ 01_主图_正面.jpg (1240 KB)
[2/5] 主图_45度 ✓ 02_主图_45度.jpg (1180 KB)
[3/5] 主图_细节 ✓ 03_主图_细节.jpg (980 KB)
[4/5] 场景图_桌面 ✓ 04_场景图_桌面.jpg (2100 KB)
[5/5] 场景图_环境 ✓ 05_场景图_环境.jpg (1950 KB)
📝 生成详情页文案...
✓ 魔声蓝牙耳机_详情页文案.txt
✅ 完成!5 张图片 + 1 份文案
```bash光出图还不够,淘宝详情页对图片尺寸有严格要求(手机端为主):
项目 | 规范 | 原因 |
|---|---|---|
宽度 | 750px | 手机端标准宽度 |
单片高度 | ≤1500px | 加载快,不卡顿 |
单片大小 | ≤200KB | 3G/弱网也能看 |
格式 | JPG | 体积最小 |
我在 WorkBuddy 里用一段 Python + Pillow 自动切片:
from PIL import Image
import os
def slice_detail_page(image_path, output_dir="slices", width=750, max_height=1500, max_size_kb=200):
"""
淘宝详情页自动切片
- 宽度统一 750px
- 超长图按 max_height 切段
- 每段压缩到 max_size_kb 以下
"""
img = Image.open(image_path)
# 第一步:打印尺寸,确认源图没问题
print(f"源图: {img.size[0]}x{img.size[1]}, {os.path.getsize(image_path)/1024:.0f}KB")
# 源图异常预警
if img.size[0] < 500:
print(f"⚠ 警告:源图宽度 {img.size[0]}px < 500px,分辨率可能不对!")
# 等比缩放到 750 宽
ratio = width / img.size[0]
new_height = int(img.size[1] * ratio)
img = img.resize((width, new_height), Image.LANCZOS)
# 按高度切段
slices = []
for i, y in enumerate(range(0, new_height, max_height)):
bottom = min(y + max_height, new_height)
piece = img.crop((0, y, width, bottom))
# 压缩到目标大小
quality = 90
while quality > 20:
buf = io.BytesIO()
piece.save(buf, format="JPEG", quality=quality, optimize=True)
if buf.tell() / 1024 <= max_size_kb:
break
quality -= 5
out_path = os.path.join(output_dir, f"slice_{i+1:02d}.jpg")
with open(out_path, "wb") as f:
f.write(buf.getvalue())
slices.append(out_path)
print(f" ✓ slice_{i+1:02d}.jpg ({buf.tell()/1024:.0f}KB)")
return slices
```bash一个血泪教训:收到图第一步永远是 Image.open().size 打印尺寸。我曾经拿到一张 480px 宽的"详情图",硬切出来全是糊的——源图分辨率根本不对。尺寸异常立即提醒,不要硬切。
环节 | 传统流程 | AI 流水线 | 提效 |
|---|---|---|---|
主图×3 | 1-2 天(拍摄+修图) | 3 分钟 | 300 倍 |
场景图×2 | 半天(布景拍摄) | 2 分钟 | 120 倍 |
详情文案 | 1-2 小时 | 30 秒 | 120 倍 |
详情页切片 | 30-60 分钟 | 1 分钟 | 40 倍 |
总计/款 | 2-3 天 | ≈10 分钟 | ≈200 倍 |
项目 | 传统 | AI 流水线 |
|---|---|---|
摄影棚租用 | 300-800 元/次 | 0 |
摄影师 | 500-1500 元/款 | 0 |
场景道具 | 100-500 元 | 0 |
文案外包 | 200-500 元/款 | 0 |
API 调用 | 0 | ≈0.3 元/张 × 5 = 1.5 元/款 |
合计/款 | 1100-2800 元 | 1.5 元 |
一款新品省下 1000+ 元,上 10 款就是一台 iPhone 的钱。
AI 流水线不是完美替代,而是80 分快交付:
策略:日常上新走 AI 流水线快速铺货,重点爆款补一轮实拍,两者结合。
用 WorkBuddy 跑这套流水线,积分消耗主要在三处。下面是我实测的省钱组合拳:
把提示词模板、API 调用逻辑全塞进 Skill。第一次配置花积分,之后每次调用几乎零消耗——WorkBuddy 直接执行脚本,不用重新生成 Prompt。
WorkBuddy 有三种模式,跑这条流水线严格按需选:
模式 | 用途 | 单次消耗 | 本场景用法 |
|---|---|---|---|
Ask | 问答、查资料 | 10-30 积分 | 问 API 文档、查淘宝规范 |
Plan | 方案确认 | ≈50 积分 | 首次搭建时核对流程 |
Craft | 写代码、跑脚本 | 100-200 积分 | 生成/修改脚本时才用 |
铁律:咨询用 Ask、定方案用 Plan、生成代码用 Craft,杜绝全程 Craft。
反例(烧积分):
"帮我写个电商出图脚本" → AI 给一版 → "加个文案生成" → 改一版 → "再加切片" → 又改一版……
正例(省积分):
"用 Python 写电商一键出图工具。入参产品图路径+产品名+类目。输出5张图(主图正面/45度/细节 + 场景图桌面/环境),图生图必须保持产品外观不变,纯白背景主图+生活场景图,调火山方舟Seedream 5.0 API。另生成详情页文案含标题/痛点/卖点/参数表/促销。直接输出完整可运行代码,带注释。"
需求越具体,一轮过,积分省一半。
不要在一个对话里又写脚本又切片又写文案。拆成:
每个对话历史短,Token 消耗低,结果更聚焦。
/clear长对话的历史 Token 会雪球式累积。定期清上下文,历史消耗归零。
.env 文件绝对不要上传到 Git。.gitignore 里加:
.env
output/
```bash手机随拍可以,但至少保证:
参考图质量 = 成品图质量上限。
早期我 Prompt 堆一堆"8K、超高清、极致细节",结果模型注意力分散,出来的图反而虚。后来精简成 "超高清画质" 一个词,质量稳定多了。
Prompt 不是越长越好,是越准越好。
有一次我写场景图 Prompt 忘了加这句,AI 自作主张把耳机的耳挂从橙色改成了黑色——和实物对不上,差点上架翻车。这句话必须加,每次都加。
WorkBuddy 沙箱模式有时网络受限,API 请求超时。解决:
python ecommerce_oneclick.py 跑这套流水线还能往这些方向扩展:
batch.py,读 Excel 进货单,循环调 ecommerce_oneclick,一晚上出 50 款素材--size 1080x1920,出竖版封面图这条流水线的核心价值不是"替代摄影师",而是把视觉素材的交付周期从天级压到分钟级。
电商竞争越来越卷,谁能最快上新、最快测试、最快迭代,谁就赢。AI 出图让小卖家也有了"视觉工业化"的能力——以前这是大品牌的专利。
关键三句话:
所有代码已开源,欢迎 Fork 改造。有问题评论区见。
作者:佛山数码配件卖家,用 WorkBuddy + AI 搞电商自动化 工具:WorkBuddy + Seedream 5.0(火山方舟) + Python 声明:本文为原创实战记录,转载请联系作者
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。