ozon-seller-mcp 2.1.0 → 2.2.0

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 CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Ozon 卖家 API 的标准 MCP 服务(stdio),纯 Node 实现,`npx` 即装即用,**不需要 Python**。
4
4
 
5
+ - **广告数据**:接入 Ozon Performance API(广告后台)全部 48 个接口,`ozon_ads_stats` 一次调用出点击率/加购率/下单率/DRR 分析,见[广告数据](#广告数据performance-api)
6
+
5
7
  - 覆盖俄文官方 OpenAPI(2026-10-26 快照)全部 **482 个接口**,参数严格按官方 schema 校验
6
8
  - **6 个组合工具**:常见问题一次调用出结果(销量排行、商品列表、单品详情、库存、订单、经营概览)
7
9
  - **默认只读**;写操作在发送前拦截
@@ -42,6 +44,7 @@ Windows 上如果客户端找不到 `npx`,把 `command` 改为 `"cmd"`,`args
42
44
  | `OZON_MAX_RESULT_KB` | `80` | 单次结果上限;超出时截断最大的数组并提示分页 |
43
45
  | `OZON_OUTPUT_DIR` | `~/.accio/outputs/ozon` | HTML 报告目录 |
44
46
  | `OZON_ACCESS_TOKEN` | — | Ozon Delivery 分组接口的 OAuth 令牌 |
47
+ | `OZON_PERF_CLIENT_ID` / `OZON_PERF_CLIENT_SECRET` | — | 广告 Performance API 凭证,查广告数据才需要;和上面的 Seller API 凭证不是一组 |
45
48
  | `OZON_PROXY` | 空 | 只给 Ozon 请求用的代理,留空就直连。支持 `vless://` 节点链接(WebSocket 类型)、`http://`、`socks5://`;设置后优先于 `HTTPS_PROXY` |
46
49
  | `HTTPS_PROXY` | — | 标准代理变量,`OZON_PROXY` 为空时生效 |
47
50
 
@@ -105,6 +108,36 @@ Windows 上如果客户端找不到 `npx`,把 `command` 改为 `"cmd"`,`args
105
108
 
106
109
  独立接口工具名为 `ozon_<官方 operationId>`,参数就是官方请求体。
107
110
 
111
+ ## 广告数据(Performance API)
112
+
113
+ 广告数据不在 Seller API 里,而在独立的 Performance API(`api-performance.ozon.ru`),需要另一组凭证:
114
+
115
+ 1. 卖家后台 **设置 → API 密钥 → Performance API**,没有服务账号就先创建
116
+ 2. 点服务账号名称 → **添加新密钥**,得到 Client ID(以 `@advertising.performance.ozon.ru` 结尾)和 Client Secret
117
+ 3. 填到 MCP 的 `env`:
118
+
119
+ ```json
120
+ "env": {
121
+ "OZON_PERF_CLIENT_ID": "xxxx@advertising.performance.ozon.ru",
122
+ "OZON_PERF_CLIENT_SECRET": "你的 Client Secret"
123
+ }
124
+ ```
125
+
126
+ 配置了这两项后才会出现下面 3 个广告工具(没配时工具列表与以前一样,`ozon_status` 的 `ads.setup_hint` 会提示怎么配)。只用广告功能时可以不填 `OZON_CLIENT_ID` / `OZON_API_KEY`。访问令牌由服务自动获取(30 分钟有效,提前 1 分钟换新,遇到 401 自动刷新一次),不会出现在结果里。代理设置(`OZON_PROXY` 等)与 Seller API 共用。
127
+
128
+ | 工具 | 内容 |
129
+ |---|---|
130
+ | `ozon_ads_stats` | 【一次调用】按点击付费活动:各活动和各商品的展示、点击、点击率、加购率、下单率、花费、平均点击价、单均成本、DRR;标出点击率偏低、点击≥100 无订单、DRR 超过目标的商品。默认最近 7 天(莫斯科时间),最长 62 天。实测一个 8 个活动的店铺约 25 秒 |
131
+ | `ozon_ads_api_catalog` | 搜索全部 48 个广告接口 + 官方说明中给出的 12 个 `/json` 报表版本,或查看单个接口的参数与响应定义 |
132
+ | `ozon_ads_api_call` | 按路径调用任一广告接口:路径参数和查询参数放 `params`,请求体放 `body` |
133
+
134
+ - `ozon_ads_stats` 的活动汇总来自 `/api/client/statistics/campaign/product/json`(同步,不消耗限额);商品明细来自异步活动报表 `/api/client/statistics/json`(每次最多 10 个活动,同一账号同时只生成 1 个,最多等 90 秒),包含本期内已移出活动的商品。`include_products=false` 只看活动汇总
135
+ - `/api/client/statistics/products/sku` 实测只接受今天或昨天(Ozon 返回 `date range must contain only today or yesterday`),所以不用于多天统计
136
+ - `OZON_READ_ONLY=true` 时,改出价、启停活动、增删商品、开关“按订单付款”等 16 个写接口在发送前拦截(包括 `GET /api/client/campaign/all_sku_promo/activate` 这类用 GET 做写操作的接口)
137
+ - 官方限制:每天总计 100 000 次;统计报表同一账号同时只能生成 1 个、一次最多 10 个活动、最长 62 天
138
+ - 多活动统计报表是 ZIP,本服务不解压;请每次一个活动,或用 `/json` 版本
139
+ - 活动列表按页读取(每页 100,直到读完),同时最多 4 个请求
140
+
108
141
  ## 限流
109
142
 
110
143
  官方文档中写明限额的接口如下。工具说明里会标出 `⚠ 限流`,调用结果附带 `rate_limit` 字段,Accio 技能要求模型把限额告诉用户。
@@ -149,7 +182,7 @@ Windows 上如果客户端找不到 `npx`,把 `command` 改为 `"cmd"`,`args
149
182
 
150
183
  ```bash
151
184
  npm install
152
- npm test # 26 个单元/契约测试,不联网
185
+ npm test # 52 个单元/契约测试,不联网
153
186
  npm run smoke # 启动真实进程,跑一遍 MCP stdio 握手
154
187
  ```
155
188
 
@@ -159,6 +192,7 @@ npm run smoke # 启动真实进程,跑一遍 MCP stdio 握手
159
192
 
160
193
  - 俄文主规范:https://docs.ozon.ru/api/seller/swagger.json
161
194
  - 中文辅助规范:https://docs.ozon.ru/api/seller/zh/swagger.json
195
+ - 广告 Performance API(2026-11-09 快照):https://docs.ozon.ru/api/performance/swagger.json 、中文 https://docs.ozon.ru/api/performance/zh/swagger.json
162
196
  - MCP SDK:`@modelcontextprotocol/server` 2.4.0
163
197
 
164
198
  `spec/` 是版本快照,不在运行时联网更新。Accio 展示技能见 `ozon-seller-assistant.skill`(源文件在 `skills/`)。
@@ -18,6 +18,8 @@ if (args.includes('--version') || args.includes('-v')) {
18
18
  OZON_MAX_RESULT_KB 单次结果上限,默认 80
19
19
  OZON_OUTPUT_DIR HTML 报告输出目录
20
20
  OZON_ACCESS_TOKEN Ozon Delivery 接口 OAuth 令牌(可选)
21
+ OZON_PERF_CLIENT_ID 广告 Performance API 的 Client ID(可选,查广告数据用)
22
+ OZON_PERF_CLIENT_SECRET 广告 Performance API 的 Client Secret
21
23
  OZON_PROXY 只给 Ozon 用的代理:vless://(WS 节点)、http://、socks5://;留空直连
22
24
  HTTPS_PROXY 标准代理变量,OZON_PROXY 为空时生效
23
25
  `);
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ozon-seller-mcp",
3
- "version": "2.1.0",
4
- "description": "Ozon Seller API MCP server: 482 official endpoints, one-call composite queries, read-only by default, strict schema validation.",
3
+ "version": "2.2.0",
4
+ "description": "Ozon Seller API + Performance (ads) API MCP server: 482 seller endpoints, 48 advertising endpoints, one-call composite queries, read-only by default, strict schema validation.",
5
5
  "keywords": [
6
6
  "mcp",
7
7
  "model-context-protocol",
@@ -25,6 +25,8 @@
25
25
  "assets/",
26
26
  "spec/openapi-ru.json",
27
27
  "spec/operations.json",
28
+ "spec/performance-ru.json",
29
+ "spec/performance-zh.json",
28
30
  "skills/",
29
31
  "ozon-seller-assistant.skill"
30
32
  ],
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ozon-seller-assistant
3
- description: "通过 Ozon Seller MCP 查询和管理店铺商品、价格、库存、仓库、订单、退货、财务及促销,并将结果整理为清晰表格或离线 HTML 报告。用户提及 Ozon 店铺/API、库存查询、订单同步、财务对账或经营看板时使用。"
3
+ description: "通过 Ozon Seller MCP 查询和管理店铺商品、价格、库存、仓库、订单、退货、财务、促销及广告数据(点击率、推广效果),并将结果整理为清晰表格或离线 HTML 报告。用户提及 Ozon 店铺/API、库存查询、订单同步、财务对账、广告点击率或经营看板时使用。"
4
4
  metadata:
5
5
  display_name: Ozon 店铺助手
6
6
  version: "2.0.0"
@@ -22,9 +22,17 @@ metadata:
22
22
  | 库存情况、缺货、低库存、补货清单 | `ozon_stock_overview` |
23
23
  | 最近订单/货件、发货状态、取消原因 | `ozon_orders_overview` |
24
24
  | 最近卖了多少、销量营收趋势、财务余额 | `ozon_sales_overview` |
25
+ | 广告点击率、推广效果、哪个广告/商品亏钱(按点击付费) | `ozon_ads_stats` |
25
26
 
26
27
  组合工具结果含 `notes`(口径与缺失说明,需转告用户)和 `timing_ms`。底层接口失败时其余部分照常返回,在 notes 中说明。
27
28
 
29
+ ## 广告数据
30
+
31
+ - 广告用独立的 Performance API 凭证(`OZON_PERF_CLIENT_ID` / `OZON_PERF_CLIENT_SECRET`)。`ozon_status` 的 `ads.credentials_configured=false` 时,告诉用户在卖家后台 设置 → API 密钥 → Performance API 创建服务账号和密钥,并填进 MCP env。
32
+ - `ozon_ads_stats` 的 `flags` 是按阈值给的提示,`target_drr` 默认 30%:用户给出毛利率后用毛利率重算。展示少的商品不评判点击率,点击少的不评判转化。
33
+ - 解读顺序:点击率低 → 主图/价格/标题;点击率正常但加购率低 → 详情页;加购正常但下单率低 → 价格与竞品;DRR 高于毛利率 → 降出价或停投。
34
+ - 其他广告接口用 `ozon_ads_api_catalog` 搜索后 `ozon_ads_api_call` 调用;改出价、启停活动属于写操作,只读模式下会被拦截。
35
+
28
36
  ## 限流(必须告知用户)
29
37
 
30
38
  - 工具说明或结果中出现“⚠ 限流”/`rate_limit` 时,在回复中告诉用户该官方限制。