@round2ai/r2-cli 1.0.16 → 1.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -35
- package/dist/pages/{xianyu-auth.html → third-auth.html} +29 -14
- package/dist/r2-cli.js +71 -39
- package/package.json +7 -6
- package/scripts/install.js +111 -0
- package/skills/r2-goods/SKILL.md +80 -26
- package/skills/r2-goods/references/r2-goods-alzc.md +285 -0
- package/skills/r2-goods/references/r2-goods-hangup.md +7 -6
- package/skills/r2-goods/references/r2-goods-listing.md +25 -10
- package/skills/r2-goods/references/r2-goods-query.md +8 -8
- package/skills/r2-goods/scenes/r2-scene-batch-operations.md +9 -8
- package/skills/r2-goods/scenes/r2-scene-edit-with-images.md +10 -6
- package/skills/r2-shared/SKILL.md +8 -3
- package/skills/r2-workflow-batch-up/SKILL.md +4 -4
- package/skills/r2-workflow-goods-audit/SKILL.md +3 -3
- package/scripts/install-skills.js +0 -20
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
1. `r2-cli goods shops --json` → 展示店铺 → 用户选择 `shopId`
|
|
10
10
|
2. `r2-cli goods stocks --json` → 展示仓库 → 用户选择 `stockId`
|
|
11
11
|
3. `r2-cli goods list --stock-id <stockId> --json` → 展示商品 → 用户选择 `stockGoodsId`
|
|
12
|
-
4. `r2-cli goods up --stock-goods-id <id> --shop-id <id> --price <amount> --json` → 提交上架
|
|
12
|
+
4. `r2-cli goods xianyu up --stock-goods-id <id> --shop-id <id> --price <amount> --json` → 提交上架
|
|
13
|
+
|
|
14
|
+
> **提交前提醒用户**:运费默认包邮(`--transport-fee 0`),如需收运费请提供金额。可选开启验货宝(`--yhb`),但价格须在品类验货宝价格区间内。
|
|
13
15
|
|
|
14
16
|
命令自动轮询上架进度(每 2 秒,最多 10 秒),返回 `{ success, data: { submit, listing } }`。
|
|
15
17
|
|
|
@@ -82,8 +84,12 @@ Agent 提取展示:
|
|
|
82
84
|
| `--stock-goods-id <id>` | 是 | 库存商品 ID(来自 `stockGoodsId`) |
|
|
83
85
|
| `--shop-id <id>` | 是 | 第三方店铺 ID(来自 `shopId`,**不是 `id`**) |
|
|
84
86
|
| `--price <amount>` | 是 | 上架价格 |
|
|
87
|
+
| `--yhb` | 否 | 开启验货宝(价格区间因品类而异) |
|
|
88
|
+
| `--transport-fee <amount>` | 否 | 运费(元,默认 0 = 包邮) |
|
|
85
89
|
| `--json` | 否 | JSON 输出(Agent 推荐) |
|
|
86
90
|
|
|
91
|
+
> **验货宝约束**:开启 `--yhb` 时,价格须在该品类的验货宝价格区间内(不同品类区间不同,如 100~20,000、1,000~50,000 等)。超出区间会返回 `YHB_PRICE_NOT_SUPPORT` 错误,错误信息中包含具体的价格范围。Agent 应在上架失败时根据错误信息提示用户调整价格或关闭验货宝。
|
|
92
|
+
|
|
87
93
|
> 缺少必填参数时返回 `{ "success": false, "error": "Agent 模式需要 --stock-goods-id, --shop-id, --price" }`,不会进入交互模式。
|
|
88
94
|
|
|
89
95
|
## 下架(down)
|
|
@@ -100,10 +106,10 @@ Agent 提取展示:
|
|
|
100
106
|
|
|
101
107
|
```bash
|
|
102
108
|
# 方式 1:上架记录 ID
|
|
103
|
-
r2-cli goods down --id <goodsListingId> --json
|
|
109
|
+
r2-cli goods xianyu down --id <goodsListingId> --json
|
|
104
110
|
|
|
105
111
|
# 方式 2:库存商品 ID + 店铺 ID
|
|
106
|
-
r2-cli goods down --stock-goods-id <id> --shop-id <id> --json
|
|
112
|
+
r2-cli goods xianyu down --stock-goods-id <id> --shop-id <id> --json
|
|
107
113
|
```
|
|
108
114
|
|
|
109
115
|
### 友好输出指引
|
|
@@ -120,12 +126,17 @@ r2-cli goods down --stock-goods-id <id> --shop-id <id> --json
|
|
|
120
126
|
|
|
121
127
|
**Agent 必须先询问用户新价格,不能自行决定。**
|
|
122
128
|
|
|
129
|
+
> **提交前提醒用户**:可同时修改运费(`--transport-fee`,默认 0 包邮)。
|
|
130
|
+
|
|
123
131
|
```bash
|
|
124
132
|
# 方式 1:上架记录 ID
|
|
125
|
-
r2-cli goods price --id <goodsListingId> --price <新价格> --json
|
|
133
|
+
r2-cli goods xianyu price --id <goodsListingId> --price <新价格> --json
|
|
126
134
|
|
|
127
135
|
# 方式 2:库存商品 ID + 店铺 ID
|
|
128
|
-
r2-cli goods price --stock-goods-id <id> --shop-id <id> --price <新价格> --json
|
|
136
|
+
r2-cli goods xianyu price --stock-goods-id <id> --shop-id <id> --price <新价格> --json
|
|
137
|
+
|
|
138
|
+
# 同时修改运费
|
|
139
|
+
r2-cli goods xianyu price --id <goodsListingId> --price <新价格> --transport-fee <运费> --json
|
|
129
140
|
```
|
|
130
141
|
|
|
131
142
|
### 友好输出指引
|
|
@@ -141,17 +152,19 @@ r2-cli goods price --stock-goods-id <id> --shop-id <id> --price <新价格> --js
|
|
|
141
152
|
|
|
142
153
|
修改已上架商品的标题、描述、品牌、类目、图片、属性等。
|
|
143
154
|
|
|
144
|
-
> **注意**:`goods edit` 不支持修改价格。改价需单独使用 `r2-cli goods price --id <id> --price <amount>`。
|
|
155
|
+
> **注意**:`goods xianyu edit` 不支持修改价格。改价需单独使用 `r2-cli goods xianyu price --id <id> --price <amount>`。
|
|
145
156
|
|
|
146
|
-
###
|
|
157
|
+
### 定位商品(三选一)
|
|
147
158
|
|
|
148
159
|
| 方式 | 参数 | 推荐度 |
|
|
149
160
|
|------|------|--------|
|
|
150
161
|
| 上架记录 ID | `--id <goodsListingId>` | 推荐,从 listing 的 id 字段取 |
|
|
151
162
|
| 库存商品 + 店铺 | `--stock-goods-id <id> --account <shopId>` | 备选,挂售商品 stockGoodsId 可能为 0 |
|
|
163
|
+
| 商家编码 | `--outer-id <outItemNo>` | 通过商家编码匹配商品 |
|
|
152
164
|
|
|
153
165
|
### Agent 注意事项
|
|
154
166
|
|
|
167
|
+
- **提交前提醒用户**:可同时修改运费(`--transport-fee`,默认 0 包邮)和验货宝(`--yhb`)
|
|
155
168
|
- **`--image-ids` 保持字符串**:图片 ID 是 19 位数字,`Number()` 会精度丢失
|
|
156
169
|
- **`--item-attrs` 传 JSON 字符串**:必须是 `JSON.stringify()` 后的结果,不能直接传对象
|
|
157
170
|
- **即使不改类目也要传 `--category-id` 和 `--channel-cat-id`**:后端必填,缺少会报 `getCategoryId() is null`
|
|
@@ -161,7 +174,7 @@ r2-cli goods price --stock-goods-id <id> --shop-id <id> --price <新价格> --js
|
|
|
161
174
|
|
|
162
175
|
| 参数 | 说明 |
|
|
163
176
|
|------|------|
|
|
164
|
-
| `--id <id>` 或 `--stock-goods-id + --account` |
|
|
177
|
+
| `--id <id>` 或 `--stock-goods-id + --account` 或 `--outer-id` | 定位商品(三选一) |
|
|
165
178
|
| `--category-id <id>` | 大分类 ID(**后端必填**,即使不改类目也要传当前值) |
|
|
166
179
|
| `--channel-cat-id <id>` | 小分类 ID(**后端必填**,即使不改类目也要传当前值) |
|
|
167
180
|
|
|
@@ -180,6 +193,8 @@ r2-cli goods price --stock-goods-id <id> --shop-id <id> --price <新价格> --js
|
|
|
180
193
|
| `--goods-no <no>` | 货号 |
|
|
181
194
|
| `--original-price <n>` | 原价(元) |
|
|
182
195
|
| `--size <size>` | 尺码 |
|
|
196
|
+
| `--yhb` | 是否开启验货宝 |
|
|
197
|
+
| `--transport-fee <amount>` | 运费(元,默认 0 = 包邮) |
|
|
183
198
|
|
|
184
199
|
### 带图片修改
|
|
185
200
|
|
|
@@ -191,12 +206,12 @@ r2-cli goods price --stock-goods-id <id> --shop-id <id> --price <新价格> --js
|
|
|
191
206
|
|
|
192
207
|
```bash
|
|
193
208
|
# 改标题
|
|
194
|
-
r2-cli goods edit --id 5 \
|
|
209
|
+
r2-cli goods xianyu edit --id 5 \
|
|
195
210
|
--category-id 50106003 --channel-cat-id "f4718bbb04d7ed1facde29f76907b07f" \
|
|
196
211
|
--title "新标题" --json
|
|
197
212
|
|
|
198
213
|
# 改品牌+描述
|
|
199
|
-
r2-cli goods edit --id 5 \
|
|
214
|
+
r2-cli goods xianyu edit --id 5 \
|
|
200
215
|
--category-id 50106003 --channel-cat-id "f4718bbb04d7ed1facde29f76907b07f" \
|
|
201
216
|
--brand-name "Nike" --desc "全新描述" --json
|
|
202
217
|
```
|
|
@@ -77,16 +77,16 @@ r2-cli goods list --stock-id <stockId> --page 2 --size 50 --json
|
|
|
77
77
|
## 上架列表(listing)
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
|
-
r2-cli goods listing --json
|
|
81
|
-
r2-cli goods listing --status up --json # 只看已上架
|
|
82
|
-
r2-cli goods listing --status sold --json # 只看已售出
|
|
83
|
-
r2-cli goods listing --shop-id <id> --json # 按店铺过滤
|
|
84
|
-
r2-cli goods listing --stock-goods-id <id> --json # 按商品过滤
|
|
85
|
-
r2-cli goods listing --id <id> --json # 精确查询
|
|
86
|
-
r2-cli goods listing --page 2 --size 50 --json # 翻页
|
|
80
|
+
r2-cli goods xianyu listing --json
|
|
81
|
+
r2-cli goods xianyu listing --status up --json # 只看已上架
|
|
82
|
+
r2-cli goods xianyu listing --status sold --json # 只看已售出
|
|
83
|
+
r2-cli goods xianyu listing --shop-id <id> --json # 按店铺过滤
|
|
84
|
+
r2-cli goods xianyu listing --stock-goods-id <id> --json # 按商品过滤
|
|
85
|
+
r2-cli goods xianyu listing --id <id> --json # 精确查询
|
|
86
|
+
r2-cli goods xianyu listing --page 2 --size 50 --json # 翻页
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
过滤参数:`--id`、`--stock-goods-id`、`--shop-id`、`--stock-id`、`--status`(init/up/down/fail/sold)、`--
|
|
89
|
+
过滤参数:`--id`、`--stock-goods-id`、`--shop-id`、`--stock-id`、`--status`(init/up/down/fail/sold)、`--page`(默认 1)、`--size`(默认 20,最大 50)
|
|
90
90
|
|
|
91
91
|
**Agent 展示格式**:
|
|
92
92
|
```
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
# 获取全部上架商品(分页遍历)
|
|
13
|
-
r2-cli goods listing --page 1 --size 50 --json
|
|
14
|
-
r2-cli goods listing --page 2 --size 50 --json
|
|
13
|
+
r2-cli goods xianyu listing --page 1 --size 50 --json
|
|
14
|
+
r2-cli goods xianyu listing --page 2 --size 50 --json
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
-
|
|
17
|
+
- 建议使用 `--size 50`(最大值),减少请求次数
|
|
18
18
|
- 用 `--status` 过滤特定状态的商品(up/down/sold)
|
|
19
19
|
- 用 `--shop-id` 限定店铺范围
|
|
20
20
|
|
|
@@ -28,8 +28,8 @@ r2-cli goods shops --json
|
|
|
28
28
|
r2-cli goods list --stock-id <stockId> --json
|
|
29
29
|
|
|
30
30
|
# 上架到不同店铺
|
|
31
|
-
r2-cli goods up --stock-goods-id <id> --shop-id <shopA> --price <n> --json
|
|
32
|
-
r2-cli goods up --stock-goods-id <id> --shop-id <shopB> --price <n> --json
|
|
31
|
+
r2-cli goods xianyu up --stock-goods-id <id> --shop-id <shopA> --price <n> --json
|
|
32
|
+
r2-cli goods xianyu up --stock-goods-id <id> --shop-id <shopB> --price <n> --json
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## 注意事项
|
|
@@ -37,6 +37,7 @@ r2-cli goods up --stock-goods-id <id> --shop-id <shopB> --price <n> --json
|
|
|
37
37
|
- 每个操作独立执行,一个失败不影响其他
|
|
38
38
|
- 批量提交时间隔至少 1 秒
|
|
39
39
|
- Token 过期时停止工作流,重新登录后从断点继续
|
|
40
|
+
- **上架/改价前提醒用户**:运费默认包邮(`--transport-fee` 默认 0),如需收运费请提供金额;可选开启验货宝(`--yhb`)
|
|
40
41
|
|
|
41
42
|
## 汇总展示格式
|
|
42
43
|
|
|
@@ -56,15 +57,15 @@ r2-cli goods up --stock-goods-id <id> --shop-id <shopB> --price <n> --json
|
|
|
56
57
|
|
|
57
58
|
每个批量操作命令的 JSON 响应结构不同,Agent 统一按以下方式处理:
|
|
58
59
|
|
|
59
|
-
**批量上架**:每个 `goods up --json` 返回 `{ success, data: { listing: { id, goodsName, price, shopName, status } } }`。逐个提取,累积汇总。
|
|
60
|
+
**批量上架**:每个 `goods xianyu up --json` 返回 `{ success, data: { listing: { id, goodsName, price, shopName, status } } }`。逐个提取,累积汇总。
|
|
60
61
|
|
|
61
|
-
**批量下架**:每个 `goods down --json` 返回 `{ success, data: "下架成功" }`。Agent 从流程参数中提取商品信息展示:
|
|
62
|
+
**批量下架**:每个 `goods xianyu down --json` 返回 `{ success, data: "下架成功" }`。Agent 从流程参数中提取商品信息展示:
|
|
62
63
|
```
|
|
63
64
|
[1/2] Nike 运动鞋 → ✅ 已下架
|
|
64
65
|
[2/2] Adidas T恤 → ✅ 已下架
|
|
65
66
|
```
|
|
66
67
|
|
|
67
|
-
**批量改价**:每个 `goods price --json` 返回 `{ success, data: "修改成功" }`。从流程参数中提取信息展示:
|
|
68
|
+
**批量改价**:每个 `goods xianyu price --json` 返回 `{ success, data: "修改成功" }`。从流程参数中提取信息展示:
|
|
68
69
|
```
|
|
69
70
|
[1/3] Nike 运动鞋 → ¥299 → ¥249 ✅
|
|
70
71
|
[2/3] Adidas T恤 → ¥199 → ¥149 ✅
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
## 全自动流程
|
|
6
6
|
|
|
7
|
-
1. **展示列表**:`r2-cli goods listing --json` → 展示给用户选择要修改的商品
|
|
8
|
-
2. **上传图片**:`r2-cli goods hang-up upload-images --shop-id <shopId> --files <paths> --json`
|
|
7
|
+
1. **展示列表**:`r2-cli goods xianyu listing --json` → 展示给用户选择要修改的商品
|
|
8
|
+
2. **上传图片**:`r2-cli goods xianyu hang-up upload-images --shop-id <shopId> --files <paths> --json`
|
|
9
9
|
3. **AI 读图识别**:Agent 用 Read 工具查看图片,识别品牌/类目/成色/描述/材质等
|
|
10
|
-
4. **自动匹配类目**:`r2-cli goods hang-up categories --json` → 根据识别结果匹配 catId + channelCatId
|
|
11
|
-
5. **自动查询属性**:`r2-cli goods hang-up props --channel-cat-id <id> --json` → 根据识别结果匹配成色/尺码/季节等
|
|
12
|
-
6. **自动搜索品牌**:`r2-cli goods hang-up brands --channel-cat-id <> --prop-id <> --key <品牌名> --json`
|
|
10
|
+
4. **自动匹配类目**:`r2-cli goods xianyu hang-up categories --json` → 根据识别结果匹配 catId + channelCatId
|
|
11
|
+
5. **自动查询属性**:`r2-cli goods xianyu hang-up props --channel-cat-id <id> --json` → 根据识别结果匹配成色/尺码/季节等
|
|
12
|
+
6. **自动搜索品牌**:`r2-cli goods xianyu hang-up brands --channel-cat-id <> --prop-id <> --key <品牌名> --json`
|
|
13
13
|
7. **汇总确认**:展示「当前值 vs 变更值」对比表,让用户确认
|
|
14
14
|
|
|
15
15
|
```
|
|
@@ -19,13 +19,17 @@
|
|
|
19
19
|
│ 标题 │ Nike 运动鞋 白 42 │ Nike 运动鞋 黑 42 │
|
|
20
20
|
│ 图片 │ img1.jpg │ img1.jpg,img2.jpg │
|
|
21
21
|
│ 成色 │ 95新 │ 全新 │
|
|
22
|
+
│ 运费 │ 包邮 │ 包邮(可修改) │
|
|
23
|
+
│ 验货宝 │ 未开启 │ 未开启(可开启) │
|
|
22
24
|
│ 价格 │ ¥299(不改价) │ — │
|
|
23
25
|
└──────────┴──────────────────┴──────────────────┘
|
|
24
26
|
```
|
|
27
|
+
|
|
28
|
+
> 运费默认包邮(`--transport-fee` 默认 0),验货宝默认关闭(`--yhb`)。确认时提醒用户可修改。
|
|
25
29
|
8. **提交**:
|
|
26
30
|
|
|
27
31
|
```bash
|
|
28
|
-
r2-cli goods edit \
|
|
32
|
+
r2-cli goods xianyu edit \
|
|
29
33
|
--id <goodsListingId> \
|
|
30
34
|
--category-id <catId> --channel-cat-id <channelCatId> \
|
|
31
35
|
--image-ids "id1,id2,id3" \
|
|
@@ -30,6 +30,11 @@ metadata:
|
|
|
30
30
|
- 如果 `r2-cli` 命令不可用,提示用户先安装:`npm install -g @round2ai/r2-cli@latest`
|
|
31
31
|
- **不要在命令末尾加 `&`**:如果用 Bash 工具的 `run_in_background: true`,不要额外加 `&`,否则 shell 立即返回导致输出丢失
|
|
32
32
|
|
|
33
|
+
**命令路径(重要)**:
|
|
34
|
+
- Agent **必须使用新路径**:`goods xianyu up/down/price/edit/listing/hang-up` 和 `goods taobao ...`
|
|
35
|
+
- 旧路径(`goods up`、`goods down` 等)仍可执行但已标记 `[已废弃]`,Agent 不要使用旧路径
|
|
36
|
+
- 跨平台命令(`goods shops`、`goods stocks`、`goods list`)保持不变,无平台前缀
|
|
37
|
+
|
|
33
38
|
**版本检查**:
|
|
34
39
|
- 首次使用时,Agent 应运行 `r2-cli --version` 检查当前版本
|
|
35
40
|
- 最低要求版本:`1.0.12`,低于此版本提示用户更新:`npm install -g @round2ai/r2-cli@latest`
|
|
@@ -104,7 +109,7 @@ Agent 处理命令失败时的策略:
|
|
|
104
109
|
- **网络错误**(`TypeError`、`fetch failed`):最多自动重试 2 次,间隔 3 秒。连续失败则提示用户检查网络
|
|
105
110
|
- **超时错误**(`timeout`):重试 1 次。仍超时则建议检查网络或 SERVER_BASEURL 配置
|
|
106
111
|
- **认证错误**(`请先运行 r2-cli auth login 登录`、`401`):**不重试**,直接引导用户重新登录(见下方 Token Expiry Recovery)
|
|
107
|
-
- **轮询超时**(`轮询超时`):说明提交已接受但结果未回,建议稍后用 `goods listing` 查看
|
|
112
|
+
- **轮询超时**(`轮询超时`):说明提交已接受但结果未回,建议稍后用 `goods xianyu listing` 查看
|
|
108
113
|
|
|
109
114
|
## Token Expiry Recovery
|
|
110
115
|
|
|
@@ -137,7 +142,7 @@ Agent 执行 `--json` 命令后,**不要直接把原始 JSON 丢给用户**。
|
|
|
137
142
|
|
|
138
143
|
## 分页建议
|
|
139
144
|
|
|
140
|
-
查询类命令(`goods list`、`goods listing`)建议使用 `--page 1 --size 50`。如果响应包含分页信息,继续翻页直到数据取完。在查询前提醒用户可以通过 `--status` 或 `--stock-id` 缩小范围提高效率。
|
|
145
|
+
查询类命令(`goods list`、`goods xianyu listing`、`goods taobao listing`)建议使用 `--page 1 --size 50`。如果响应包含分页信息,继续翻页直到数据取完。在查询前提醒用户可以通过 `--status` 或 `--stock-id` 缩小范围提高效率。
|
|
141
146
|
|
|
142
147
|
## 统一错误格式
|
|
143
148
|
|
|
@@ -159,4 +164,4 @@ API 错误和参数校验失败时额外包含 `status` 字段:
|
|
|
159
164
|
|----------|------|----------|
|
|
160
165
|
| `请先运行 r2-cli auth login 登录` | 未登录或 Token 过期 | 执行 `r2-cli auth login --json` |
|
|
161
166
|
| `二维码已过期` / `授权链接已过期` | 扫码超时(5 分钟) | 重新执行命令 |
|
|
162
|
-
| `轮询超时` | 上架结果查询超时 | 稍后用 `r2-cli goods listing` 查看 |
|
|
167
|
+
| `轮询超时` | 上架结果查询超时 | 稍后用 `r2-cli goods xianyu listing` 查看 |
|
|
@@ -27,7 +27,7 @@ metadata:
|
|
|
27
27
|
2. **确认仓库**:`r2-cli goods stocks --json` → 用户选择仓库
|
|
28
28
|
3. **展示待上架商品**:`r2-cli goods list --stock-id <id> --json`
|
|
29
29
|
4. **用户选择要上架的商品**(可多选)
|
|
30
|
-
5. **逐商品询问价格** → 逐个执行 `goods up`
|
|
30
|
+
5. **逐商品询问价格** → 逐个执行 `goods xianyu up`
|
|
31
31
|
6. **汇总结果展示**
|
|
32
32
|
|
|
33
33
|
```
|
|
@@ -39,7 +39,7 @@ metadata:
|
|
|
39
39
|
|
|
40
40
|
## 友好输出指引
|
|
41
41
|
|
|
42
|
-
批量上架过程中,每个商品独立执行 `goods up --json`,Agent 需要逐个处理响应:
|
|
42
|
+
批量上架过程中,每个商品独立执行 `goods xianyu up --json`,Agent 需要逐个处理响应:
|
|
43
43
|
|
|
44
44
|
**每上架一个商品,及时反馈进度**:
|
|
45
45
|
```
|
|
@@ -60,7 +60,7 @@ metadata:
|
|
|
60
60
|
- Adidas T恤 → 错误:商家编码重复
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
> 每个 `goods up --json` 返回 `{ success, data: { listing: { id, goodsName, price, shopName, status } } }`。Agent 从每个响应中提取 `success` 和 `data.listing` 字段,累加后汇总展示。
|
|
63
|
+
> 每个 `goods xianyu up --json` 返回 `{ success, data: { listing: { id, goodsName, price, shopName, status } } }`。Agent 从每个响应中提取 `success` 和 `data.listing` 字段,累加后汇总展示。
|
|
64
64
|
>
|
|
65
65
|
> 中途 Token 过期时:停止工作流,告知用户已完成的商品数,引导重新登录后从断点继续。**不要丢弃已完成的结果**。
|
|
66
66
|
|
|
@@ -69,7 +69,7 @@ metadata:
|
|
|
69
69
|
- **每个商品独立提交**:一个失败不影响其他商品
|
|
70
70
|
- **批量上架间隔至少 1 秒**,避免触发限流
|
|
71
71
|
- **中途 Token 过期**:停止工作流,引导重新登录后从当前商品继续
|
|
72
|
-
- **提交失败 ≠ 已下架**:可能只是轮询超时,稍后用 `goods listing` 确认
|
|
72
|
+
- **提交失败 ≠ 已下架**:可能只是轮询超时,稍后用 `goods xianyu listing` 确认
|
|
73
73
|
|
|
74
74
|
## 参考
|
|
75
75
|
|
|
@@ -33,7 +33,7 @@ metadata:
|
|
|
33
33
|
❌ [商品C] — 缺少:类目
|
|
34
34
|
```
|
|
35
35
|
4. **用户确认**:用户确认后进入批量上架
|
|
36
|
-
5. **批量提交**:逐个执行 `goods up`
|
|
36
|
+
5. **批量提交**:逐个执行 `goods xianyu up`
|
|
37
37
|
|
|
38
38
|
## 友好输出指引
|
|
39
39
|
|
|
@@ -51,7 +51,7 @@ metadata:
|
|
|
51
51
|
结果:2 个通过,1 个缺项跳过(2 个无需处理)
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
**批量提交进度**:逐个执行 `goods up --json` 时,实时反馈进度:
|
|
54
|
+
**批量提交进度**:逐个执行 `goods xianyu up --json` 时,实时反馈进度:
|
|
55
55
|
```
|
|
56
56
|
正在上架通过审核的商品...
|
|
57
57
|
[1/2] 商品A → ✅ 成功(listing id: 12345)
|
|
@@ -59,7 +59,7 @@ metadata:
|
|
|
59
59
|
全部上架完成!
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
> `goods list --json` 返回 `{ success, data: {
|
|
62
|
+
> `goods list --json` 返回 `{ success, data: { items: SelectGoodsItem[], total } }`。Agent 从 `data.items` 中遍历,检查每个商品的 `goodsName`(标题)、`salePrice`(价格 > 0)、`cate1Name/cate2Name/cate3Name`(类目)、`img`(图片)。
|
|
63
63
|
>
|
|
64
64
|
> 缺项商品标记后**跳过不上架**,只上架信息完整的商品。结束后汇总告知用户哪些商品因缺项被跳过。
|
|
65
65
|
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* postinstall: 通过 skills CLI 将本地 skills 安装到所有 Agent 目录
|
|
3
|
-
* 自动适配 Claude Code / Codex / Gemini CLI 等所有 Agent
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { execSync } from "node:child_process";
|
|
7
|
-
import path from "node:path";
|
|
8
|
-
import { fileURLToPath } from "node:url";
|
|
9
|
-
|
|
10
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
-
const skillsDir = path.join(__dirname, "..", "skills");
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
execSync(`npx skills add "${skillsDir}" --all -g`, {
|
|
15
|
-
stdio: "inherit",
|
|
16
|
-
timeout: 60_000,
|
|
17
|
-
});
|
|
18
|
-
} catch {
|
|
19
|
-
// 网络不可用或 skills CLI 失败时静默跳过
|
|
20
|
-
}
|