4.7 KiB
4.7 KiB
V2.1 采集方案(扩展并入主仓 + 上报开关)
状态:已实施(Phase C 完成) 参考项目:
/Users/joey-xd/sites/seller-store/image-suite-studio(下称 ISS) 架构(方案三,D2 决策修订):ISS 扩展整体并入主仓extensions/collector/,成为唯一采集工具 (extension-v2 原地冻结、不再维护);扩展新增「上报商品」功能,采集后一键入库主仓后台并自动打开商品试算页。 「ISS 独立产品化」远期通过构建/配置裁剪实现(扩展天然独立分发;server 的 suite API 模块不依赖 products), 不在代码层分叉——这是「单仓维护」与「独立产品可能」的折中。
1. 目录与形态
ozon-seller-kit/
├── extensions/ # Chrome 插件集合(复数,容纳未来多个插件)
│ └── collector/ ← ISS 扩展并入版(三平台采集 + 套图生图面板 + 商品上报)
├── extension-v1/ # 冻结(旧 1688/淘宝)
├── extension-v2/ # 冻结(旧 Ozon 采集,被 collector 取代)
├── server/ # 唯一后端(8800)
└── studio/ # 前端(试算页等)
- 构建:
pnpm -C extensions/collector build→.output/chrome-mv3(Chrome 开发者模式加载 unpacked) - 扩展包名:
ozon-collector-extension;manifest 名保留「电商套图工作台」 - host_permissions 已加
127.0.0.1:8800(上报)与8900(试算页)
2. 采集引擎(与 ISS 完全一致,见下表)
| 平台 | 主路径 | 兜底/补充 |
|---|---|---|
| Ozon | ① SSR data-state widget 白名单 |
② JSON-LD ③ 站内 entrypoint-api.bx(两 URL 合并)④ DOM + 模拟滚动 |
| 淘宝/天猫 | ① MAIN world 桥读 __ICE_APP_CONTEXT__(不调 mtop 防风控) |
② DOM(前缀匹配类名、详情图排除评价区;desc 故意不采) |
| 1688 | ① MAIN world 桥读 window.context(deepFind;skuProps 全维展开 + skuMapOriginal + 尺寸重量参数) |
② DOM(#productAttributes cells、#detail) |
采集数据结构 ScanResult:{ platform, itemId, url, texts[], images[], breadcrumbs?, stats, warnings, source }(texts: kind/content/pairs;images: groupKey/groupName/variantName/url/index/type)。
3. 商品上报(v2.1 新增)
快速采集(页内悬浮面板 / Side Panel)
│ scanCurrentPage() → ScanResult(面板内可编辑标题/尺寸/重量/描述)
▼
「上报商品」按钮(01 商品信息区块下方;设置里可开关)
│ POST {reportBaseUrl}/api/materials
│ payload = { source: {platform, itemId, url, collectedAt},
│ texts: editedTexts(), // 编辑后文本
│ images: 全量采集图(groupKey/groupName/variantName/url/index/type),
│ refererOrigin: 源页 origin } // 服务端下载源图带 Referer
▼
响应 { product_id } → chrome.tabs.create 打开 {studioBaseUrl}/trial/{product_id}
要点:
- 契约:主仓
MaterialsRequest(camelCase:source.itemId、groupKey、variantName)与 ISS ImageMaterial 字段同名,直接映射;响应product_id用于打开试算页 - 重复上报:服务端按
platform + itemId复用商品(返回同一 product_id)→ 打开同一试算页 - 鉴权:本地阶段主仓为宽松模式(未带 token 放行匿名),扩展直接裸调;远期收紧时在扩展 settings 加 token 即可
- 设置项(面板「服务端设置」弹窗内新增):启用商品上报开关 / OSK 后台地址(默认
http://127.0.0.1:8800)/ 试算页地址(默认http://localhost:8900) - 手动上传图(ISS 的 upload 组合)本期不上报;试算页内可用「上传图片」补(
/api/materials/bytes)
4. 面板能力(保持 ISS 原样)
快速采集、商品信息编辑、图片勾选/上传/下载、AI 智能规划、风格/生图要求/模型选择、一键生图、生成结果导出——全部保留,仍连 ISS 生图 server(baseUrl,默认 3300)。
后续 Phase B 把生图服务端平移进主仓后,baseUrl 与 reportBaseUrl 可统一指向主仓。
5. 与 ISS 的差异总表
| 维度 | ISS(独立项目) | 本仓 extensions/collector |
|---|---|---|
| 采集引擎 | 三平台完整版 | 相同(整体并入) |
| 生图面板 | 连 ISS server(3300) | 同左(Phase B 后可切主仓) |
| 商品入库 | 无 | 「上报商品」→ 主仓 /api/materials + 自动打开试算页 |
| 鉴权 | 无 | 本地宽松模式(远期收紧) |
| 独立产品化 | 本体 | 远期:构建/配置裁剪出 collector + suite API 即可独立 |