← 返回 Skills 市场
howerlin0329

1688上货助手

作者 howerlin0329 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
39
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install 1688shanghuozhushou
功能描述
商机助理(一键上货)。当用户有以下任何需求时,**必须**使用此技能: - 提到"商机助理"且包含"上货"、"复制"、"发布"关键词时,进行商品一键上货 - 一键上货到商机助理平台 - 查看的商机助理账号 - 保存或修改商机助理授权 自动识别用户输入中的商品链接,调用商品链接识别MCP接口进行处理。 如果用户输入...
使用说明 (SKILL.md)

\r \r

商机助理一键上货\r

\r 识别用户输入中的商品链接,调用 MCP 工具进行一键上货。\r \r

MCP 服务配置\r

\r 本技能依赖以下 MCP 服务,运行时必须先读取 skill-config.json 获取鉴权 Token:\r \r | 配置项 | 说明 |\r |--------|------|\r | 鉴权方式 | HTTP Header 携带 sToken,值取自 skill-config.jsonsToken 字段 |\r \r

配置读取方式\r

\r 约束:调用方 agent 必须在执行任何 MCP 调用前,先读取 skill-config.json 文件获取 sToken\r \r 若 sToken 为空(空字符串或字段不存在),则停止后续流程仅输出以下两行内容给用户:不要输出 --- 分隔符不要添加任何额外的解释、叙述或前言文字(包括"授权 Token 为空"等说明),不要输出多余空行或分割线:\r \r 您尚未授权,请前往 商机助理 复制授权。\r \r MEDIA:\x3CSKILL目录>/images/auth.png\r \r

⚠️ 图片路径自动解析:在输出授权提示前,agent 需读取本 SKILL.md 文件的实际路径,提取其父目录(即技能目录),然后拼接 images/auth.png 得到绝对路径,并将该绝对路径用于下方的 MEDIA: 标签。例如若 SKILL.md 位于 C:\Users\Administrator\.openclaw\workspace\skills\sjzl-ai-okc\SKILL.md,则 MEDIA: 应使用 C:\Users\Administrator\.openclaw\workspace\skills\sjzl-ai-okc\images\auth.png。\r \r 等待用户输入授权 Token,用户输入后进入 sToken 保存流程。\r \r ---\r \r

sToken 保存流程\r

\r 当满足以下任一条件时,触发 sToken 保存流程:\r \r

  • 用户在授权提示后直接输入了 Token\r
  • 用户输入中包含关键词**「保存授权」「修改授权」**,并提供了 Token\r \r

sToken 格式校验\r

\r | 规则 | 说明 |\r |------|------|\r | 前缀 | 必须以 st 开头 |\r | 后续字符 | st 后跟恰好 32 位字母数字字符(a-z、A-Z、0-9) |\r | 总长度 | 34 位 |\r | 正则校验 | ^st[a-zA-Z0-9]{32}$ |\r \r 示例:st66666666666666666666666666666666\r \r

处理步骤\r

\r

  1. 从用户输入中提取符合正则 ^st[a-zA-Z0-9]{32}$ 格式的字符串\r
  2. 校验结果处理:\r \r | 情况 | 处理方式 |\r |------|----------|\r | 格式正确 | 将 skill-config.jsonsToken 字段更新为提取到的值,提示用户:"授权成功!" |\r | 未提取到符合格式的 Token | 提示用户:"授权 Token 格式不正确,请重新输入(格式:st + 32 位字母数字字符)" |\r \r

写入 skill-config.json 时,仅更新 sToken 字段,其他字段(如 mcpServerUrl)保持不变。\r \r ---\r \r

跨平台调用说明\r

\r ⚠️ 重要:call_mcp.py 脚本的 Python 路径\r \r 在 Windows 系统上,python3 命令可能不存在。请使用以下方式之一执行脚本:\r \r

# 方式 1:使用 python(Windows 推荐)\r
python scripts/call_mcp.py ...\r
\r
# 方式 2:使用完整路径(如果 python 也不在 PATH 中)\r
C:\ProgramData\anaconda3\python.exe scripts/call_mcp.py ...\r
\r
# 方式 3:在 exec 中先 cd 再用 & 符号调用(PowerShell)\r
Set-Location "技能目录" ; & "python" scripts/call_mcp.py ...\r
```\r
\r
**⚠️ 重要:PowerShell 下 JSON 参数传递问题**\r
\r
PowerShell 对引号和花括号有特殊处理,导致 `--params` 传入的 JSON 字符串被破坏。**在 PowerShell 环境下,必须使用以下方式传递 JSON 参数**:\r
\r
```bash\r
# ✅ 推荐方式 1:使用 --params-file 从文件读取参数\r
# 先将参数写入 JSON 文件,再通过 --params-file 指定\r
python scripts/call_mcp.py call get_copy_rule_config --params-file params.json\r
\r
# ✅ 推荐方式 2:使用 --params @file.json 语法\r
python scripts/call_mcp.py call get_copy_rule_config --params @params.json\r
\r
# ❌ 避免方式:直接在 PowerShell 中传递 JSON 字符串(引号会被破坏)\r
python scripts/call_mcp.py call get_copy_rule_config --params '{"rule":{...}}'  # 不可靠\r
```\r
\r
参数文件的写入方式:agent 应先将 JSON 参数写入一个临时文件(如 `_mcp_params.json`),再通过 `--params-file` 或 `--params @文件路径` 引用。\r
\r
**⚠️ 重要:MCP 接口参数格式**\r
\r
所有 MCP 工具调用的参数必须通过 `--params` 传入,格式为 JSON 字符串。注意以下工具的参数结构:\r
\r
- `get_copy_rule_config` 需要传入 `{"rule":{"mergeDefaultConfig":true,"copyConfigType":2}}`\r
- `save_copy_rule_config` 需要传入 `{"rule":{"copyConfigType":2,"copyWay":...,"status":...,"sendGoodsAddressId":...,"freightTemplateId":...,"productSingerPriceType":...}}`\r
- `copy_by_agent` 需要传入 `{"rule":{"copyConfigType":2,"copyProductInfos":[...]}}`\r
- `url_identify` 需要传入 `{"rule":{"productUrls":["..."]}}`\r
- `get_send_goods_addresses`、`get_skill_login_info` 无需参数\r
- `get_freight_templates` 需要传入 `{"rule":{"addressId":"\x3C发货地址id>"}}`\r
\r
---\r
\r
## 触发条件\r
\r
### 场景一:一键上货\r
\r
用户输入文本**同时满足**以下两个条件时触发一键上货流程:\r
\r
1. 包含关键词之一:`复制`、`上货`、`发布`\r
2. 包含关键词:`商机助理`\r
\r
**示例触发语句**:\r
- "用商机助理上货这个链接"\r
- "商机助理复制这些商品"\r
- "用商机助理发布一下"\r
\r
### 场景二:查看商机助理账号\r
\r
用户输入文本包含关键词**「查看商机助理账号」**时,触发查看登录信息流程。\r
\r
### 场景三:授权 / 修改授权\r
\r
用户输入文本满足以下**任一**条件时,触发「sToken 保存流程」:\r
\r
1. 包含关键词:`修改授权`\r
2. 包含关键词:`修改账号`\r
\r
---\r
\r
## 工作流程\r
\r
### 场景:查看商机助理账号\r
\r
将参数写入临时文件(如 `_mcp_params.json`),然后调用 MCP 工具 `get_skill_login_info`(无需参数):\r
\r
```bash\r
python scripts/call_mcp.py call get_skill_login_info\r
```\r
\r
#### MCP 接口返回结果格式\r
\r
```json\r
{\r
  "code": 200,\r
  "msg": "",\r
  "result": {\r
    "userId": "",\r
    "userName": ""\r
  }\r
}\r
```\r
\r
| 情况 | 处理方式 |\r
|------|----------|\r
| `code == 200` | 展示:`商机助理账号:\x3Cresult.userName>` |\r
| `code != 200` | 将 `msg` 作为错误信息提示用户,**终止流程** |\r
\r
---\r
\r
### 第一步:识别用户输入中的链接\r
\r
收到用户消息后:\r
\r
1. 使用正则表达式从用户输入文本中提取所有 URL 链接\r
2. 判断是否提取到链接:\r
\r
| 情况 | 处理方式 |\r
|------|----------|\r
| 提取到一个或多个链接 | 进入第二步,调用 MCP 接口 |\r
| 未提取到任何链接 | 提示用户:"请提供需要上货的商品链接,支持同时输入多个链接。" |\r
\r
**链接匹配规则**:匹配 `http://` 或 `https://` 开头的完整 URL。\r
\r
### 第二步:调用商品链接识别 MCP 接口\r
\r
将参数写入临时文件 `_mcp_params.json`:\r
```json\r
{"rule":{"productUrls":["\x3CURL1>","\x3CURL2>"]}}\r
```\r
\r
然后调用 MCP 工具 `url_identify`:\r
\r
```bash\r
python scripts/call_mcp.py call url_identify --params-file _mcp_params.json\r
```\r
\r
#### MCP 接口返回结果格式\r
\r
```json\r
{\r
  "Code": 200,\r
  "Msg": "",\r
  "Result": {\r
    "SuccessProductInfos": [\r
      {\r
        "Url": "",\r
        "ProductId": "",\r
        "OfferSource": 0,\r
        "CopyProductParam": null\r
      }\r
    ],\r
    "FailProductUrls": [\r
      ""\r
    ]\r
  }\r
}\r
```\r
\r
#### 接口调用状态判断\r
\r
首先根据返回的 `Code` 字段判断接口是否调用成功:\r
\r
| 情况 | 处理方式 |\r
|------|----------|\r
| `Code == 200` | 调用成功,进入下方「结果展示与分支处理」 |\r
| `Code != 200` | 调用失败,直接将 `Msg` 字段作为错误信息提示用户,**终止流程** |\r
\r
#### 结果展示与分支处理\r
\r
解析 `Result` 后,按以下规则展示并决定后续流程:\r
\r
1. 提取 `Result.SuccessProductInfos[*].Url` 作为**正确链接**列表\r
2. 提取 `Result.FailProductUrls` 作为**错误链接**列表\r
3. 按以下格式展示给用户(任一列表为空时仍需展示对应标题,下方留空或注明无):\r
\r
```\r
正确链接:\r
\x3CSuccessProductInfos[0].Url>\r
\x3CSuccessProductInfos[1].Url>\r
...\r
\r
错误链接:\r
\x3CFailProductUrls[0]>\r
\x3CFailProductUrls[1]>\r
...\r
```\r
\r
4. 分支判断:\r
\r
| 情况 | 处理方式 |\r
|------|----------|\r
| `SuccessProductInfos` 为空(无任何成功链接) | 在展示结果后,提示用户:"未识别到有效的商品链接,请重新输入正确的商品链接。"。**等待用户重新输入后,从「第一步:识别用户输入中的链接」开始重新执行整个流程** |\r
| `SuccessProductInfos` 不为空(存在至少一个成功链接) | 展示结果后,进入「第三步:获取上货设置」 |\r
\r
### 第三步:获取上货设置\r
\r
仅当第二步中 `SuccessProductInfos` 不为空时才执行本步。将参数写入临时文件 `_mcp_params.json`:\r
```json\r
{"rule":{"mergeDefaultConfig":true,"copyConfigType":2}}\r
```\r
\r
然后调用 MCP 工具 `get_copy_rule_config`:\r
\r
```bash\r
python scripts/call_mcp.py call get_copy_rule_config --params-file _mcp_params.json\r
```\r
\r
#### MCP 接口返回结果格式\r
\r
```json\r
{\r
    "code": 200,\r
    "msg": "",\r
    "result": {\r
        "产品类型": {\r
            "name": ""\r
        },\r
        "上架设置": {\r
            "name": ""\r
        },\r
        "发货地址": {\r
            "id": "",\r
            "name": ""\r
        },\r
        "运费设置": {\r
            "id": "",\r
            "name": "",\r
            "Type": ""\r
        },\r
        "价格类型": {\r
            "name": ""\r
        }\r
    }\r
}\r
```\r
\r
> 各设置项均为对象格式,展示时仅展示 `name` 字段的值,`id` 和 `Type` 等字段用于内部逻辑判断。\r
\r
#### 接口调用状态判断\r
\r
| 情况 | 处理方式 |\r
|------|----------|\r
| `code == 200` | 调用成功,进入下方「设置展示与空值检测」 |\r
| `code != 200` | 调用失败,直接将 `msg` 字段作为错误信息提示用户,**终止流程** |\r
\r
#### 设置展示与空值检测\r
\r
`result` 包含 5 个固定设置项:`产品类型`、`上架设置`、`发货地址`、`运费设置`、`价格类型`,每项均为对象格式。\r
\r
展示当前设置给用户(仅展示 `name` 字段):\r
\r
```\r
当前上货模板设置:\r
- 产品类型:\x3Cresult.产品类型.name 或"未设置">\r
- 上架设置:\x3Cresult.上架设置.name 或"未设置">\r
- 发货地址:\x3Cresult.发货地址.name 或"未设置">\r
- 运费设置:\x3Cresult.运费设置.name 或"未设置">\r
- 价格类型:\x3Cresult.价格类型.name 或"未设置">\r
```\r
\r
检测各项是否为空(对象的 `name` 字段为空字符串、`null` 或对象本身为 `null` / 不存在视为空值):\r
\r
| 情况 | 处理方式 |\r
|------|----------|\r
| 所有 5 项均不为空 | 展示设置后,向用户询问:"以上为当前上货模板设置,是否使用以上设置进行一键上货?(是 / 否)",等待用户确认。用户回复**「是」/「确认」/「确定」/「yes」**等肯定语义时,进入「第六步:执行一键上货」;用户回复**「否」/「取消」/「no」**等否定语义时,提示:"已取消一键上货,您可前往 [商机助理](https://sjzl.fjdaze.com/) 修改上货模板设置后重试。",**终止流程** |\r
| 存在至少一项为空 | 进入「第四步:补充空值设置」,逐项引导用户填写 |\r
\r
---\r
\r
### 第四步:补充空值设置\r
\r
仅对 `result` 中**值为空**的设置项依次提示用户选择,顺序固定为:产品类型 → 上架设置 → 发货地址 → 运费设置 → 价格类型。\r
\r
记录用户每一步的选择,等待用户**全部空值项**都填写完毕后,进入「第五步:保存上货设置」。\r
\r
#### 产品类型(仅当值为空时提示)\r
\r
提示用户选择:\r
\r
```\r
请选择产品类型:\r
1. 发布为现货品\r
2. 发布为工厂品\r
```\r
\r
| 选择 | 保存参数 |\r
|------|----------|\r
| 发布为现货品 | `copyWay = 0` |\r
| 发布为工厂品 | `copyWay = 1` |\r
\r
#### 上架设置(仅当值为空时提示)\r
\r
提示用户选择:\r
\r
```\r
请选择上架设置:\r
1. 销售中\r
2. 草稿箱\r
3. 待上架\r
```\r
\r
| 选择 | 保存参数 |\r
|------|----------|\r
| 销售中 | `status = 2` |\r
| 草稿箱 | `status = 13` |\r
| 待上架 | `status = 7` |\r
\r
#### 发货地址(仅当值为空时提示)\r
\r
调用 MCP 工具 `get_send_goods_addresses` 获取发货地址列表(无需参数):\r
\r
```bash\r
python scripts/call_mcp.py call get_send_goods_addresses\r
```\r
\r
返回结果格式:\r
\r
```json\r
{\r
    "code": 200,\r
    "msg": "",\r
    "result": [\r
        {\r
            "id": 0,\r
            "fullAddress": ""\r
        }\r
    ]\r
}\r
```\r
\r
| 情况 | 处理方式 |\r
|------|----------|\r
| `code == 200` | 展示所有 `fullAddress` 供用户选择 |\r
| `code != 200` | 将 `msg` 作为错误信息提示用户,**终止流程** |\r
\r
展示格式:\r
\r
```\r
请选择发货地址:\r
1. \x3CfullAddress[0]>\r
2. \x3CfullAddress[1]>\r
...\r
```\r
\r
保存参数:`sendGoodsAddressId` = 用户所选 `fullAddress` 对应的 `id`\r
\r
> **⚠️ 发货地址变更与运费指导模板联动**:当用户变更了发货地址(即新选择的地址 `id` 与 `get_copy_rule_config` 返回的 `result.发货地址.id` 不同),且当前运费设置为指导模板类型(`result.运费设置.Type == "3"`),则提示用户:"发货地址已变更,当前运费指导模板可能不再适用,请重新选择运费模板。",然后重新进入运费设置流程(需使用新的发货地址 `id` 调用 `get_freight_templates`)。\r
\r
#### 运费设置(仅当值为空时提示)\r
\r
> ⚠️ **前置条件**:选择运费模板类选项前,必须已有发货地址(`result.发货地址.id` 不为空)。若发货地址 `id` 为空,提示用户:"请先选择发货地址后再设置运费。",跳过运费设置,等待用户完成发货地址选择后再回到运费设置。\r
\r
将参数写入临时文件 `_mcp_params.json`:\r
```json\r
{"rule":{"addressId":"\x3C发货地址id>"}}\r
```\r
\r
然后调用 MCP 工具 `get_freight_templates`:\r
\r
```bash\r
python scripts/call_mcp.py call get_freight_templates --params-file _mcp_params.json\r
```\r
\r
返回结果格式:\r
\r
```json\r
{\r
    "code": 200,\r
    "msg": "",\r
    "result": {\r
        "freightTemplates": [\r
            {\r
                "id": 0,\r
                "name": "",\r
                "type": ""\r
            }\r
        ],\r
        "isGuideFreightTemplates": true\r
    }\r
}\r
```\r
\r
| 情况 | 处理方式 |\r
|------|----------|\r
| `code == 200` | 根据 `isGuideFreightTemplates` 决定运费设置选项(见下方) |\r
| `code != 200` | 将 `msg` 作为错误信息提示用户,**终止流程** |\r
\r
根据 `result.isGuideFreightTemplates` 的值决定运费设置选项:\r
\r
**当 `isGuideFreightTemplates == true` 时**,提示用户选择:\r
\r
```\r
请选择运费设置:\r
1. 运费指导模板\r
2. 使用运费模板\r
3. 使用运费说明\r
4. 卖家承担运费\r
```\r
\r
| 选择 | 处理方式 |\r
|------|----------|\r
| 运费指导模板 | 从 `freightTemplates` 中筛选 `type == "3"` 的数据展示供用户选择(见下方「运费模板选择流程」) |\r
| 使用运费模板 | 从 `freightTemplates` 中筛选 `type == "2"` 的数据展示供用户选择(见下方「运费模板选择流程」) |\r
| 使用运费说明 | `freightTemplateId = -1001` |\r
| 卖家承担运费 | `freightTemplateId = 1` |\r
\r
**当 `isGuideFreightTemplates == false` 时**,提示用户选择:\r
\r
```\r
请选择运费设置:\r
1. 使用运费模板\r
2. 使用运费说明\r
3. 卖家承担运费\r
```\r
\r
| 选择 | 处理方式 |\r
|------|----------|\r
| 使用运费模板 | 从 `freightTemplates` 中筛选 `type == "2"` 的数据展示供用户选择(见下方「运费模板选择流程」) |\r
| 使用运费说明 | `freightTemplateId = -1001` |\r
| 卖家承担运费 | `freightTemplateId = 1` |\r
\r
##### 运费模板选择流程\r
\r
当用户选择「运费指导模板」或「使用运费模板」时,根据选择类型从 `freightTemplates` 中筛选对应 `type` 的数据:\r
\r
| 用户选择 | 筛选条件 |\r
|----------|----------|\r
| 运费指导模板 | `freightTemplates` 中 `type == "3"` 的项 |\r
| 使用运费模板 | `freightTemplates` 中 `type == "2"` 的项 |\r
\r
若筛选后无数据,提示用户:"当前没有可用的运费模板,请选择其他运费设置方式。",重新展示运费设置选项。\r
\r
若筛选后有数据,展示格式:\r
\r
```\r
请选择运费模板:\r
1. \x3C筛选后freightTemplates[0].name>\r
2. \x3C筛选后freightTemplates[1].name>\r
...\r
```\r
\r
保存参数:`freightTemplateId` = 用户所选 `name` 对应的 `id`\r
\r
> **记录用户选择的运费模板类型**:当用户选择「运费指导模板」时,标记当前运费设置为指导模板类型(`type == "3"`),用于后续发货地址变更时的判断。\r
\r
#### 价格类型(仅当值为空时提示)\r
\r
提示用户选择:\r
\r
```\r
请选择价格类型:\r
1. 原价\r
2. 促销价\r
```\r
\r
| 选择 | 保存参数 |\r
|------|----------|\r
| 原价 | `productSingerPriceType = 1` |\r
| 促销价 | `productSingerPriceType = 2` |\r
\r
---\r
\r
### 第五步:保存上货设置\r
\r
等用户完成所有空值项的选择后,将参数写入临时文件 `_mcp_params.json`:\r
```json\r
{"rule":{"copyConfigType":2,"copyWay":0,"status":2,"sendGoodsAddressId":123,"freightTemplateId":456,"productSingerPriceType":1}}\r
```\r
\r
然后调用 MCP 工具 `save_copy_rule_config`:\r
\r
```bash\r
python scripts/call_mcp.py call save_copy_rule_config --params-file _mcp_params.json\r
```\r
\r
| 参数 | 说明 | 传入条件 |\r
|------|------|----------|\r
| `copyConfigType` | 配置类型,固定值 `2` | 始终传入 |\r
| `copyWay` | 产品类型 | 用户在第四步选择了产品类型时传入 |\r
| `status` | 上架设置 | 用户在第四步选择了上架设置时传入 |\r
| `sendGoodsAddressId` | 发货地址 ID | 用户在第四步选择了发货地址时传入 |\r
| `freightTemplateId` | 运费模板 ID | 用户在第四步选择了运费设置时传入 |\r
| `productSingerPriceType` | 价格类型 | 用户在第四步选择了价格类型时传入 |\r
\r
返回结果格式:\r
\r
```json\r
{\r
    "code": 200,\r
    "msg": "",\r
    "result": null\r
}\r
```\r
\r
| 情况 | 处理方式 |\r
|------|----------|\r
| `code == 200` | 保存成功,**重新执行「第三步:获取上货设置」** |\r
| `code != 200` | 保存失败,将 `msg` 作为错误信息提示用户,**终止流程** |\r
\r
---\r
\r
### 第六步:执行一键上货\r
\r
仅当第三步中所有 5 项设置均不为空,且用户在第三步确认环节回复**「是」**之后才执行本步。将参数写入临时文件 `_mcp_params.json`:\r
```json\r
{"rule":{"copyConfigType":2,"copyProductInfos":[{"productId":"\x3CProductId>","offerSource":\x3COfferSource>,"copyProductParam":\x3CCopyProductParam>}]}}\r
```\r
\r
然后调用 MCP 工具 `copy_by_agent`:\r
\r
```bash\r
python scripts/call_mcp.py call copy_by_agent --params-file _mcp_params.json\r
```\r
\r
参数从第二步返回的 `Result.SuccessProductInfos` 中逐项取値,构建 `copyProductInfos` 数组:\r
\r
| 参数 | 来源字段 |\r
|------|----------|\r
| `copyConfigType` | 配置类型,固定值 `2` |\r
| `productId` | `SuccessProductInfos[*].ProductId` |\r
| `offerSource` | `SuccessProductInfos[*].OfferSource` |\r
| `copyProductParam` | `SuccessProductInfos[*].CopyProductParam`(为 `null` 时传 `{}`) |\r
\r
#### 接口返回结果格式\r
\r
```json\r
{\r
    "code": 200,\r
    "msg": "",\r
    "result": ""\r
}\r
```\r
\r
`result` 为任务 ID。\r
\r
| 情况 | 处理方式 |\r
|------|-----------|\r
| `code == 200` | 调用 MCP 工具 `get_skill_login_info` 获取 `result.copyRecordUrl`,提示用户:"一键上货任务已提交,可打开 [上货记录](copyRecordUrl) 进行查看进度";若 `get_skill_login_info` 调用失败或 `copyRecordUrl` 为空,则仅提示:"一键上货任务已提交。" |\r
| `code != 200` | 将 `msg` 作为错误信息提示用户,**终止流程** |\r
\r
---\r
\r
## 输出格式\r
\r
### 未检测到链接时\r
\r
```\r
未检测到商品链接,请提供上货的商品链接,支持同时输入多个链接。\r
```\r
\r
### 检测到链接并调用成功时\r
\r
```\r
## 商机助理一键上货\r
\r
**识别到 X 个商品链接:**\r
1. \x3CURL1>\r
2. \x3CURL2>\r
...\r
\r
**处理结果:**\r
\r
正确链接:\r
\x3CSuccessProductInfos[*].Url>\r
\r
错误链接:\r
\x3CFailProductUrls[*]>\r
```\r
\r
### 全部链接识别失败时\r
\r
```\r
错误链接:\r
\x3CFailProductUrls[*]>\r
\r
未识别到有效的商品链接,请重新输入正确的商品链接。\r
```\r
\r
### 设置含空值时(第四步逐项提示示例)\r
\r
```\r
当前上货模板设置:\r
- 产品类型:未设置\r
- 上架设置:销售中\r
- 发货地址:未设置\r
- 运费设置:未设置\r
- 价格类型:未设置\r
\r
检测到以下设置项未设置,请依次完成填写:\r
\r
请选择产品类型:\r
1. 发布为现货品\r
2. 发布为工厂品\r
```\r
\r
### 一键上货任务下发成功时\r
\r
```\r
一键上货任务已提交,可打开 [上货记录](copyRecordUrl) 进行查看进度\r
```\r
\r
### 查看商机助理账号成功时\r
\r
```\r
商机助理账号:\x3Cresult.userName>\r
```\r
\r
### MCP 接口调用失败时(`Code != 200` 或 `code != 200`)\r
\r
```\r
\x3C返回的 Msg / msg 内容>\r
```\r
\r
---\r
\r
## 注意事项\r
\r
- 查看商机助理账号场景:用户输入包含「查看商机助理账号」时,调用 `get_skill_login_info` 获取登录信息,`code == 200` 时展示 `商机助理账号:userName`,否则展示 `msg` 错误信息\r
- 一键上货场景:必须同时满足两个关键词条件(包含"复制/上货/发布"且包含"商机助理")才触发\r
- 授权场景:用户输入包含「保存授权」或「修改授权」时,触发 sToken 保存流程\r
- sToken 格式校验:必须符合正则 `^st[a-zA-Z0-9]{32}$`(st 开头 + 32 位字母数字),格式错误时提示用户重新输入\r
- 保存 sToken 时仅更新 `skill-config.json` 的 `sToken` 字段,其他字段保持不变\r
- 用户输入中可能包含多个链接,需全部提取\r
- 调用 MCP 接口前必须从 `skill-config.json` 读取 `sToken`\r
- 所有 MCP 接口均需先校验 `Code` / `code` 字段:等于 `200` 才继续后续流程,否则将 `Msg` / `msg` 作为错误信息提示用户并终止\r
- 仅当 `SuccessProductInfos` 中存在至少一个成功链接时,才进入第三步;否则提示用户重新输入,并在用户重新输入后**从第一步重新执行**\r
- `get_copy_rule_config` 返回的 `result` 为包含 5 个固定键的字典:`产品类型`、`上架设置`、`发货地址`、`运费设置`、`价格类型`,每项均为对象格式,展示时仅展示 `name` 字段\r
- `get_copy_rule_config` 返回的 `运费设置` 对象包含 `Type` 字段,`Type == "3"` 表示运费指导模板,`Type == "2"` 表示普通运费模板\r
- `get_copy_rule_config` 返回的 `发货地址` 对象包含 `id` 字段,用于调用 `get_freight_templates` 时传入 `addressId` 参数\r
- 空值检测后,仅对值为空的设置项依次提示用户选择,非空项保持原值不变\r
- `save_copy_rule_config` 参数为增量传入,仅传入用户实际选择的项;保存成功后重新执行第三步(获取上货设置)\r
- 第三步所有设置项均不为空时,必须向用户展示当前上货模板设置并询问"是否使用以上设置进行一键上货?(是 / 否)",仅在用户回复"是"等肯定语义后才进入第六步执行一键上货;用户回复"否"等否定语义时,提示已取消并引导前往商机助理修改设置,终止流程\r
- `copy_by_agent` 的 `copyProductInfos` 数组由第二步 `SuccessProductInfos` 逐项映射,`CopyProductParam` 为 `null` 时传 `{}`\r
- 一键上货成功后(`code == 200`),调用 `get_skill_login_info` 获取 `result.copyRecordUrl`,展示提示"一键上货任务已提交,可打开 [上货记录](copyRecordUrl) 进行查看进度";若获取失败或字段为空则仅提示"一键上货任务已提交。";失败则展示 `msg` 错误信息\r
- 发货地址通过 `get_send_goods_addresses` 获取,展示 `fullAddress`,保存对应 `id`\r
- 选择「运费指导模板」或「使用运费模板」时需调用 `get_freight_templates`,根据 `isGuideFreightTemplates` 决定是否展示「运费指导模板」选项\r
- `get_freight_templates` 返回的 `freightTemplates` 中每项包含 `type` 字段:`type == "3"` 为运费指导模板,`type == "2"` 为普通运费模板;选择「运费指导模板」时仅展示 `type == "3"` 的数据,选择「使用运费模板」时仅展示 `type == "2"` 的数据\r
- 选择运费模板类选项前,发货地址 `id` 不能为空,否则提示用户先选择发货地址\r
- 选择「使用运费说明」时 `freightTemplateId = -1001`,「卖家承担运费」时 `freightTemplateId = 1`\r
- **发货地址变更联动**:当发货地址变更(新 `id` 与原 `id` 不同)且当前运费设置为指导模板类型(`result.运费设置.Type == "3"`)时,提示用户重新选择运费模板\r
安全使用建议
Install only if you are comfortable storing your 商机助理 sToken in the skill's config file and letting the bundled Python script contact the configured MCP service. Avoid using --server-url with any untrusted host, review product-upload confirmations carefully, and rotate the token if you think the config or command history may have been exposed.
能力评估
Purpose & Capability
The stated purpose is one-click product upload and account/authorization management for 商机助理, and the documented workflow mostly fits that purpose. The concern is that scripts/call_mcp.py is a generic MCP client with arbitrary tool listing/calling and a server override, which is broader than the upload workflow.
Instruction Scope
The upload flow requires user confirmation before final submission, which is a useful control. However, trigger phrases are broad and the credential-update flow can be activated by weakly scoped phrases such as 修改账号, with no separate confirmation before overwriting the stored token.
Install Mechanism
The package is small and has no dependency installer, but it ships an executable Python script and a skill-config.json file. Metadata marks an API key as required, while capability tags do not reflect credential handling.
Credentials
Reading skill-config.json and calling the configured MCP endpoint are expected for this skill, but the script sends sToken on requests and accepts --server-url, which could redirect authenticated traffic to an untrusted endpoint if misused.
Persistence & Privilege
The skill persists sToken in skill-config.json and also stores a local .mcp_session_id under scripts. This is not automatically malicious, but persistent credential/session material needs tighter scoping and clearer user control.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install 1688shanghuozhushou
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /1688shanghuozhushou 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release of the 商机助理(一键上货)skill. - Enables one-click product upload to the 商机助理 platform by parsing product links in user input and invoking MCP services. - Provides guided authentication flow; prompts for and saves sToken authorization. - Supports account viewing and authorization management, with clear prompts for missing, invalid, or successful token actions. - Handles robust, step-by-step workflows: link extraction, product validation, MCP API calls, template setting review/editing, and result feedback. - Includes detailed instructions and error handling for Windows/Powershell compatibility with the supporting Python scripts. - Offers interactive template setup and prompt-based user guidance for any missing upload parameters.
元数据
Slug 1688shanghuozhushou
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

1688上货助手 是什么?

商机助理(一键上货)。当用户有以下任何需求时,**必须**使用此技能: - 提到"商机助理"且包含"上货"、"复制"、"发布"关键词时,进行商品一键上货 - 一键上货到商机助理平台 - 查看的商机助理账号 - 保存或修改商机助理授权 自动识别用户输入中的商品链接,调用商品链接识别MCP接口进行处理。 如果用户输入... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 39 次。

如何安装 1688上货助手?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install 1688shanghuozhushou」即可一键安装,无需额外配置。

1688上货助手 是免费的吗?

是的,1688上货助手 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

1688上货助手 支持哪些平台?

1688上货助手 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 1688上货助手?

由 howerlin0329(@howerlin0329)开发并维护,当前版本 v1.0.0。

💬 留言讨论