# Dxm Listing Workflow

> 店小秘速卖通上品完整工作流——从采集箱到发布的所有模块编排、调用顺序、区域调价、保存发布

- Skill: `southernspark-nfxh/dxm-listing-workflow` (Agent Skill)
- Install (CLI): `npx skillmds@latest add southernspark-nfxh/dxm-listing-workflow`
- Raw SKILL.md: https://api.skillmd.com/api/skills/southernspark-nfxh/dxm-listing-workflow/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: southernspark-nfxh (https://skillmd.com/u/southernspark-nfxh)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/southernspark-nfxh/dxm-listing-workflow

---


# 店小秘速卖通上品完整工作流

> 最后验证：2026-07-19 | 验证产品：折叠喝水神器

## 全流程（5阶段）

```
阶段0: 启动 → dxm-startup | Chrome CDP + Relay + Playwright连接
阶段1: 采集 → dxm-collection | 1688搜索 → 采集到店小秘采集箱
阶段2: 编辑 → dxm-listing-workflow | 采集箱 → 编辑页 → 9模块填表
阶段3: 审核 → dxm-qa-check | QA扫描所有星号字段
阶段4: 发布 → 保存并移入待发布 | 通知用户手动点击
```

## 架构

```
店小秘编辑页（单页面 + anchor滚动导航）
  ├── 0. 启动与登录 (dxm-startup)
  ├── 0.5 1688采集 (dxm-collection)
  ├── 1. 基本信息 (#basicInfo)
  ├── 2. 店小秘信息（只读）
  ├── 3. 属性信息 (#attrInfo)
  ├── 4. 产品信息 (#productProductInfo)
  ├── 5. 区域调价（跳过）
  ├── 6. 描述信息 (#descriptionInfo)
  ├── 7. 包装信息 (#packageInfo)
  ├── 8. 模板信息 (#templateInfo)
  └── 9. 其他信息 (#otherInfo)
```

## 🔴 铁律（最高优先级）

1. **编辑页绝不刷新/重开** — 上架操作期间禁止 browser_navigate
2. **断连后先检查已有标签页** — Target.getTargets → 找到编辑页 → 验证状态 → 关闭空白页 → 激活正确页
3. **所有星号必填** — 少1个都不算完成
4. **有下拉的都选值** — 非星号下拉也要选（除非免疫）
5. **不做无意义的3次以上重试** — 3次失败停手汇报
6. **不要问用户下一步做什么** — skill里全有
7. **不要问用户自己操作** — 能填的全填

## 完整流程（9步）

### Step 1: 基本信息 → `dxm-basic-info`

- 标题纯英文，128字符内
- 分类：点「选择分类」→ 四列树弹窗 → 按标题关键词匹配叶子节点 → 点「选择」确认
- 分类选错会导致SKU属性「已废弃」→ 改分类自动修复

### Step 2: 店小秘信息 → 跳过（只读）

- 来源URL已自动填入，不修改

### Step 3: 属性信息 → `dxm-attributes`

**前置：先开1688新标签页提取参数**

星号字段枚举（必须9/9）：
| 字段 | 来源 | 常用值 |
|------|------|--------|
| 产地 | 固定 | 中国大陆 |
| 品牌 | 固定 | NONE |
| 液晶显示 | 推断 | 无(No) |
| 最大出餐量 | 推断 | 500g（根据产品） |
| 最小出餐量 | 推断 | 100g |
| 材质 | 1688 | 硅胶→Plastic |
| 是否智能 | 推断 | no |
| 高关注化学品 | 固定 | 天然未处理 |
| 是否包含电池 | 推断 | no |

**操作方式：JS强制显示dropdown + click**（首选），Playwright mouse.click坐标法（备选）。

⚠️ 非星号字段（电源/电压/类型/动力）如遇免疫，跳过不纠缠。

操作完删自定义属性。

### Step 4: 产品图片 → `dxm-product-images`

- 主图选6张（白底多角度优先）
- 批量改尺寸800×800
- 图片翻译：页顶「一键翻译」按钮，点两次（选语言→提交）
- 营销图片一键生成
- 颜色SKU改名（用「批量编辑」弹窗）
- SKU图改尺寸+翻译
- 容量：350ml（根据产品推断）

### Step 5: SKU定价 → `dxm-sku-pricing`

| 字段 | 值 | 来源 |
|------|-----|------|
| 零售价 | 公式计算 | =货值 |
| 货值 | 公式计算 | =零售价 |
| 库存 | ≤2000 | 1688原始数据 |
| 重量 | 0.2kg | 1688 (200g÷1000) |
| 是否原箱 | 是(1) | 固定 |
| 物流属性 | 普货 | 无电产品 |
| 商品编码 | 一键生成 | 自动 |

**定价公式：** `零售价 = (1688成本价 + ¥5) × 1.02 ÷ 0.413`（净利率20%）

⚠️ SKU表每placeholder有3个匹配：nth(0)=SKU1, nth(2)=SKU2, nth(1)=隐藏行跳过

### Step 6: PC端描述 → `dxm-pc-description`

- 引用模板
- 批量改图片尺寸：JS强制显示 `.images-options` → 固定到视口 → 点击下拉 → 选批量改尺寸 → 填800 → 生成JPG
- 图片翻译：同入口 → 图片翻译 → 一键翻译点两次

### Step 7: 包装信息 → `dxm-packaging`

- 包装后重量：0.2kg（1688提取）
- 包装后尺寸：1688无数据跳过

### Step 8: 模板信息 → `dxm-templates`

- 运费模板：根据零售价选对应档位
- 服务模板：Service Template for New Sellers
- 海关监管属性：默认3，不修改

### Step 9: 其他信息 → `dxm-other-info`

| 字段 | 操作 | 方法 |
|------|------|------|
| 半托管服务 | 跳过不碰 | — |
| 报价是否含关税 ⭐ | 点「不含关税报价」 | JS click radio |
| 欧盟责任人 | 选唯一选项 | JS click → select option |
| 品牌制造商 | 选唯一选项 | **keyboard Enter**（JS click无效！） |
| 土耳其责任人/商机品/资质 | 跳过 | — |

### 收尾：保存并移入待发布

所有模块填完 → QA检查通过 → 点「保存」→ **通知用户手动点「保存并移入待发布」**

⚠️ **「保存并移入待发布」按钮对所有automation免疫（已验证：CDP mouse、Playwright mouse、JS click、dispatchEvent、keyboard Enter全无效）。** 自动化只能做到「保存」按钮。用户需手动完成最后一步。

## QA检查清单

- [ ] 标题纯英文无中文字符错误
- [ ] 分类已选（非「请选择」）
- [ ] 所有星号属性 9/9 已填
- [ ] 主图6张已选
- [ ] 图片已改尺寸800×800
- [ ] SKU定价公式正确（零售价=货值）
- [ ] 库存、重量已填
- [ ] 物流属性已选
- [ ] 商品编码已生成
- [ ] PC描述有内容（非空）
- [ ] 包装后重量已填
- [ ] 运费/服务模板已选
- [ ] 报价不含关税已点
- [ ] 欧盟责任人已选
- [ ] 品牌制造商已选
- [ ] **品牌仍为NONE（填完制造商后验证！）**

## 已知全局坑点

1. **🔴 browser_navigate会刷新已有标签页，导致所有未保存数据丢失** → 连接中断后绝对不要用browser_navigate切回编辑页！用Target.activateTarget或Playwright page.bring_to_front()
2. **browser_snapshot截断** → 用 execute_code + websocket CDP全页扫描替代
3. **品牌制造商免疫JS click** → 用 keyboard.press('Enter')
4. **品牌制造商填完后必须验证品牌仍为NONE** → keyboard Enter可能误触品牌字段（高频——已验证至少3次）。Save前必须读回品牌值确认。
5. **电源/电压/动力免疫所有automation** → 跳过不纠缠
6. **ant-modal-wrap拦截** → 部分弹窗按钮用JS element.click()兜底
7. **一键翻译点两次** → 第1次选语言，第2次提交
8. **不要依赖「保存」按钮存草稿** → 一次性填完再保存
9. **🔴 店小秘公告弹窗拦截（2026-07-19）：** 登录后可能弹出全屏公告弹窗（618促销等），拦截所有Playwright locator.click()。**开始编辑前必须先用JS清除：** `document.querySelectorAll('.ant-modal-wrap, .notice-list-modal, .bullet-layer').forEach(m => m.remove())`
10. **🔴 属性下拉共享池乱串（2026-07-19）：** 多个ant-select的dropdown在DOM中共存时，`querySelectorAll('.ant-select-dropdown')` 可能返回错误dropdown。必须**逐字段操作、每次关闭所有dropdown、用`dds[dds.length-1]`取最新**。但即使如此仍有概率失败。属性字段是自动化最脆弱的环节，如连续失败不要死磕——先填其他模块。

---

*作者: 南方星火 SouthernSpark | 小红书 @南方星火 SouthernSpark | AI自动化专家工作流*
