# Alibaba Product Clone Variation

> 国际站同款商品批量差异化改写。用户提供一个源商品（链接或 productId）作为参考，再指定一组目标商品 ID，AI 读取源商品的标题与卖点，按 20%-30% 比例对目标商品的卖点进行改写，使每条 listing 文案彼此不同，避免同款商品被搜索引擎和 AI 抓取时去重，从而扩大曝光覆盖。当用户提到"同款差异化""多 listing 改写""卖点克隆""批量伪原创""一拖多改写""同款不同文案""避免重复 listing""差异化复制商品"等场景时务必使用本技能。即使用户没有用"克隆"这个词，只要意图是"用一个商品的内容去重写另一批商品"也要触发。

- Skill: `garden-g/alibaba-product-clone-variation` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add garden-g/alibaba-product-clone-variation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/garden-g/alibaba-product-clone-variation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: garden-g (https://skillmd.com/u/garden-g)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/garden-g/alibaba-product-clone-variation

---


# 国际站商品同款差异化改写

把一个源商品的卖点，按 20%-30% 的差异化比例改写后，批量套用到多个目标商品上，让每条 listing 在保持产品事实一致的前提下，文案表述彼此不同。

## 为什么需要这个技能

国际站上同款产品常常需要发多条 listing（不同关键词、不同市场、不同定价梯度）。如果这些 listing 的卖点、描述完全雷同，搜索引擎和 AI 抓取时会判为重复内容并去重，导致大部分 listing 拿不到曝光。

把每条 listing 的描述做 20%-30% 的差异化改写，就能让每条都被独立索引，整体覆盖更多长尾词和买家搜索意图。但人工逐条改写成本极高，本技能用 AI 做这件机械但需要语义控制的工作。

**关键约束**：产品的硬性属性（规格、参数、材质、尺寸、电压等数字与事实）必须**逐字保留**，只改描述方式。否则改出来的 listing 与实物不符，会被买家投诉甚至下架。

## 涉及的 MCP 工具

本技能通过 `accio-mcp-cli` 调用以下三个工具：

| 工具 | 用途 | 关键入参 |
|------|------|----------|
| `list_products` | 查询源商品的标题、卖点、类目 | `queryDTO.productId` |
| `list_risk_brand_name` | 查询该类目下的风控品牌词，避免改写时踩雷 | `catIdList`（叶子类目 ID 数组） |
| `batch_edit_product` | 把改写结果写入目标商品 | `editList`（productId + productTitle + productSellingPoint） |

调用约定：MCP 入参直接以 JSON 对象传入，不需要包 `--json` 包装。

**写入范围说明**：`batch_edit_product` 只支持改写 `productTitle` 和 `productSellingPoint`。FAQ、公司简介这类内容不在本技能写入范围内 — 即使源商品有 FAQ/公司简介，本技能也只读取作为上下文参考，**不写回**目标商品。如果用户问起，向用户说明这一限制。

## 完整流程

按顺序执行，前一步失败就停下来与用户沟通，不要硬往后走。

### 第 1 步：从用户输入解析源商品 productId

用户可能提供以下任一形式：

- **完整链接**，如 `https://www.alibaba.com/product-detail/xxx_1601234567890.html`
  → 取最后一个下划线 `_` 之后、`.html` 之前的数字
- **`itemId=` 参数**，如 `https://post.alibaba.com/product/publish.htm?itemId=1601234567890`
  → 取 `itemId=` 后的数字
- **裸 productId 数字**，直接用

如果都解析不出，**主动询问用户**确认 productId，不要猜。

### 第 2 步：查询源商品信息

调用 `list_products`：

```json
{"queryDTO": {"productId": <源商品productId>}}
```

从返回中提取以下字段供后续使用：

- `data.title.defaultText` — 商品标题
- `data.structuredDescDTO.productSummary.defaultText` — 卖点（核心改写对象）
- `data.categoryQueryResultDTO.leafId` — 叶子类目 ID（下一步查风控词用）
- `data.structuredDescDTO.faq` — FAQ（仅作上下文参考，不写回）
- `data.structuredDescDTO.companyProfile` — 公司简介（仅作上下文参考，不写回）

如果商品查不到（已下架、ID 错误等），告知用户并请其确认，不要继续。

### 第 3 步：展示源商品并索取目标商品 ID

向用户展示源商品的关键信息，用结构化的方式：

```
📦 源商品参考信息
- 商品 ID：{productId}
- 标题：{title}
- 类目 ID：{leafId}
- 卖点：
  1. {sellingPoint1}
  2. {sellingPoint2}
  ...
```

然后询问：

> 请提供需要改写的**目标商品 ID 列表**（用逗号或空格分隔，例如 `1601111, 1601222, 1601333`）。
> 我会为每个目标商品生成与源商品风格一致、但彼此差异 20%-30% 的卖点版本，核心属性保持不变。

等用户给出 ID 列表后再继续。如果用户只给了 1 个目标 ID，提醒一下"差异化的价值主要体现在多条 listing 之间互相不同，单个目标也可以做但收益有限"。

### 第 4 步：查询类目风控词

用第 2 步拿到的 `leafId` 调用 `list_risk_brand_name`：

```json
{"catIdList": [<leafId>]}
```

从 `model.result.content.brand_names` 取出风控词列表，作为下一步改写的禁用词。

如果此接口失败，**不要终止流程**，改为用兜底方式继续：跳过此步，并在最终展示给用户的结果末尾加一句"⚠️ 未能获取类目风控品牌词，请人工复核改写文案是否含有违规品牌"。

### 第 5 步：差异化改写

详细改写规则、禁用词清单、格式要求见 [variation-rules.md](references/variation-rules.md)。在生成前**必须先读取该文件**，否则容易漏掉敏感词、字符数、格式约束。

简要原则：

- **属性逐字保留**：所有数字、单位、材质、规格不能动
- **每个目标商品的改写策略不同**：不要让所有目标商品长得像同一个模板
- **整体差异控制在 20%-30%**：太少没意义，太多会失真
- **避开风控品牌词与敏感词**

为每个目标商品产出独立的改写版本。

### 第 6 步：展示改写结果，等待用户确认

按目标商品逐个展示，标注每条卖点的改写策略，让用户能一眼看出动了什么：

```
🔄 目标商品 1：productId = 1601111

卖点（差异化版本）：
  1. {改写后卖点1}  ←【同义替换】
  2. {改写后卖点2}  ←【句式重构】
  3. {改写后卖点3}  ←【保持原文】
  4. {改写后卖点4}  ←【场景补充】

差异化比例：~25%

🔄 目标商品 2：productId = 1601222
...
```

展示完后明确询问：

> 以上是差异化改写结果，确认无误请回复"确认写入"，需要调整请告诉我具体哪一条怎么改。

**没有得到用户明确确认前，绝对不调用 `batch_edit_product`。** 这是写操作，覆盖用户原有 listing 内容，不可逆。

### 第 7 步：批量写入

用户确认后调用 `batch_edit_product`：

```json
{
  "editList": [
    {
      "productId": <目标商品ID>,
      "productTitle": "<标题，默认与源商品一致>",
      "productSellingPoint": "<改写后卖点，多条用 \\n 分隔>"
    }
  ]
}
```

一次性把所有目标商品打包提交。如果接口对单条返回成功/失败状态，按条记录。

### 第 8 步：展示写入结果

以表格形式展示每条目标商品的写入结果：

| 商品 ID | 差异化比例 | 状态 | 操作链接 |
|---------|-----------|------|----------|
| 1601111 | ~25% | ✅ 成功 | [管理页](https://hz-productposting.alibaba.com/product/products_manage.htm#/product/all) |
| 1601222 | ~22% | ✅ 成功 | [管理页](https://hz-productposting.alibaba.com/product/products_manage.htm#/product/all) |
| 1601333 | ~28% | ❌ {错误信息} | [编辑页](https://post.alibaba.com/product/publish.htm?itemId=1601333) |

写入失败的商品，附上其单独的编辑页链接，方便用户手动处理。

## 错误处理对照表

| 场景 | 处理方式 |
|------|----------|
| URL 无法解析出 productId | 询问用户提供裸 ID |
| 源商品查询失败（已下架/ID 错） | 告知用户原因，不继续 |
| 风控词接口失败 | 跳过，最终结果加风控复核提示 |
| 写入返回 `Param is blank` | 必填项为空，提示用户对应字段 |
| 写入返回 `CheckProductScore fail` | 改写后质量分降低，建议调整文案 |
| 写入返回未知错误 | 原文展示给用户，附编辑页链接由用户处理 |
| MCP 网络错误 | 自动重试一次，仍失败则停下来报告 |

## 不可违反的安全规则

- **写入前必须用户确认**。`batch_edit_product` 是不可逆的覆盖操作。
- **不猜 productId**。无法解析就问，不替用户决定。
- **不动产品事实**。规格、参数、材质、数字单位逐字保留。
- **不写 FAQ / 公司简介**。`batch_edit_product` 不支持，不要承诺给用户。
- **不踩风控词**。改写文案必须避开类目风控品牌词与敏感词清单（见 references）。

