辛泽俄罗斯选品专家skill · Seerfar Open API
> 技术标识:seerfar-open-api(与「辛泽俄罗斯选品专家」专家配套使用,两份副本内容一致)
直连 Seerfar 官方 Open API,覆盖 Ozon 与 Wildberries 双平台,无第三方网关中转。
🔑 第 0 步(强制):先确认 API Key
任何取数动作之前,必须先确认 SEERFAR_API_KEY 是否已配置。 这是不可跳过的第一步。
检查顺序
- 读本 skill 的
config/.env中的SEERFAR_API_KEY - 读用户级共享配置
~/.workbuddy/seerfar.env - 读环境变量
SEERFAR_API_KEY - 若都未配置 → 立即向操作者索要,并停止后续动作
> 为什么有用户级共享配置:本 skill 可能同时存在两份副本——专家包内置副本(<专家包>/skills/seerfar-open-api/)与独立安装副本(~/.workbuddy/skills/seerfar-open-api/)。把 Key 写入 ~/.workbuddy/seerfar.env 可让两份副本共用同一份配置,只需配置一次。
索要话术(直接使用)
开始查询前,我需要你的 Seerfar API Key。
请在 Seerfar 官网 → 个人中心 → API Key 管理 中获取,
然后把它配置到以下任一位置:
方式一(推荐,一次配置两处通用):
在 ~/.workbuddy/seerfar.env 中写入:
SEERFAR_API_KEY=你的key
方式二(仅本 skill 副本生效):
在本 skill 的 config/.env 中写入:
SEERFAR_API_KEY=你的key
方式三:设置环境变量 SEERFAR_API_KEY
配置好告诉我,我先调用 /open-api/quota 验证连通性并读取积分余额。
提醒:请勿把 Key 直接贴在对话里。Key 只写进配置文件,我不会把它写进任何输出或日志。
铁律
| # | 规则 |
|---|---|
| 1 | 未配置 Key 时,不发起任何业务请求(/open-api/quota 也需 Key) |
| 2 | 绝不猜测、绝不伪造 Key |
| 3 | 绝不把 Key 写入输出、日志、报告或任何交付文件 |
| 4 | 操作者若已在对话中贴出 Key,提醒其改配置方式,并不将其回显 |
| 5 | Key 配置完成后,第一次调用必须是 /open-api/quota,用于连通性验证 + 读取余额 |
| 6 | 余额为 0 或报 8000 时,停止取数并提示充值 |
首调用示例
curl "http://api.seerfar.cn/open-api/quota" \
-H "Authorization: Bearer $SEERFAR_API_KEY"
返回:
{"code":200,"msg":"SUCCESS","data":{"creditLimit":100,"creditUsed":23,"freeCreditLimitMonth":0,"freeCreditUsedMonth":0}}
报告格式:已连通。付费积分总量 100,已用 23,剩余 77。
接入信息
| 项 | 值 |
|---|---|
| Base URL | http://api.seerfar.cn |
| 统一前缀 | /open-api/ |
| 鉴权 | Authorization: Bearer <api_key> |
| POST 请求头 | Content-Type: application/json |
| 平台参数 | 路径末段 /ozon 或 /wb |
| 响应结构 | {"code":200,"msg":"SUCCESS","data":{...}} |
平台对称性:wb-* 端点与对应 ozon-* 端点请求体结构对称,字段名基本一致。
端点速查(29 个)
账户
| 端点 | Method | Path | 积分 | 频率 |
|---|---|---|---|---|
| 查积分 | GET | /open-api/quota |
0 | 1次/3秒 |
店铺
| 端点 | Method | Path | 积分 | 频率 |
|---|---|---|---|---|
| Ozon 查店铺 | POST | /open-api/shop/detail/search/ozon |
10 | 3次/3秒 |
| WB 查店铺 | POST | /open-api/shop/detail/search/wb |
10 | 3次/3秒 |
| Ozon 查店铺品牌 | POST | /open-api/shop/detail/brand/search/ozon |
10 | 3次/3秒 |
| WB 查店铺品牌 | POST | /open-api/shop/detail/brand/search/wb |
10 | 3次/3秒 |
| Ozon 查店铺类目 | POST | /open-api/shop/detail/category/search/ozon |
10 | 3次/3秒 |
| WB 查店铺类目 | POST | /open-api/shop/detail/category/search/wb |
10 | 3次/3秒 |
商品
| 端点 | Method | Path | 积分 | 频率 |
|---|---|---|---|---|
| Ozon 查竞品 | POST | /open-api/product/detail/search/ozon |
3 | 3次/3秒 |
| WB 查竞品 | POST | /open-api/product/detail/search/wb |
3 | 3次/3秒 |
| Ozon 查相似商品 | POST | /open-api/product/detail/similar/ozon |
15 | 3次/3秒 |
| WB 查相似商品 | POST | /open-api/product/detail/similar/wb |
15 | 3次/3秒 |
| Ozon 查变体特征 | POST | /open-api/product/detail/variations/characteristics/ozon |
1 | 3次/3秒 |
| WB 查变体特征 | POST | /open-api/product/detail/variations/characteristics/wb |
1 | 3次/3秒 |
| Ozon 查 Top 变体 | POST | /open-api/product/detail/variations/top/ozon |
3 | 3次/3秒 |
| WB 查 Top 变体 | POST | /open-api/product/detail/variations/top/wb |
3 | 3次/3秒 |
| Ozon 查商品变体 | POST | /open-api/product/detail/variations/search/ozon |
3 | 3次/3秒 |
| WB 查商品变体 | POST | /open-api/product/detail/variations/search/wb |
3 | 3次/3秒 |
| Ozon 采集商品 | POST | /open-api/product/collect/ozon |
1/SKU | 3次/3秒 |
| WB 采集商品 | POST | /open-api/product/collect/wb |
1/SKU | 3次/3秒 |
类目
| 端点 | Method | Path | 积分 | 频率 |
|---|---|---|---|---|
| Ozon 查类目 | POST | /open-api/category/detail/search/ozon |
10 | 3次/3秒 |
| WB 查类目 | POST | /open-api/category/detail/search/wb |
10 | 3次/3秒 |
榜单
| 端点 | Method | Path | 积分 | 频率 |
|---|---|---|---|---|
| Ozon 查热销榜单 | POST | /open-api/productReport/search/ozon |
10 | 3次/3秒 |
| WB 查热销榜单 | POST | /open-api/productReport/search/wb |
10 | 3次/3秒 |
关键词
| 端点 | Method | Path | 积分 | 频率 |
|---|---|---|---|---|
| Ozon 查市场热词 | POST | /open-api/market/search/ozon |
10 | 3次/3秒 |
| WB 查市场热词 | POST | /open-api/market/search/wb |
10 | 3次/3秒 |
| Ozon 关键词挖掘 | POST | /open-api/keyword/mining/ozon |
15 | 3次/3秒 |
| WB 关键词挖掘 | POST | /open-api/keyword/mining/wb |
15 | 3次/3秒 |
| Ozon 关键词反查 | POST | /open-api/keyword/backSearch/ozon |
15 | 3次/3秒 |
| WB 关键词反查 | POST | /open-api/keyword/backSearch/wb |
15 | 3次/3秒 |
调用规范(硬约束)
限流
- 统一 3 次/3 秒(quota 为 1 次/3 秒)
- 批量调用必须串行,每次间隔 ≥ 3 秒
- 收到
429→ 退避 ≥3 秒后重试,最多 2 次
积分
- 调用前先查
/open-api/quota - 单任务预估 > 100 积分 → 先报告预估消耗并等待确认
- 收到
8000→ 立即停止,提示充值
分页
page.pageSize最大 100,默认 20page.pageNumber从 1 开始- 需要更多数据时按需翻页,不要盲目拉满
参数陷阱
| 陷阱 | 正确做法 |
|---|---|
searchDate vs date |
商品报表/市场热词/关键词挖掘/反查用 searchDate(yyyy-MM-dd,传 1 号查上个月);类目/店铺品牌/店铺类目用 date(yyyy-MM 或该月 1 日) |
| 数据时间范围 | 不传时间参数 = 近 30 天;仅能查近 1 年 |
creationDate |
上架时间筛选:null 不筛 / 1 近30天 / 3 近90天 / 6 近180天 / 12 近1年 / 24 近2年 |
dateRange(商品详情) |
past_7_days / past_30_days / past_60_days / past_90_days / past_180_days / past_365_days |
| 区间筛选 | 所有数值筛选为 {min, max},传 null 表示不筛 |
hasVariant |
关键词反查必传:0 保留变体 / 1 剔除变体 |
skuIds |
关键词反查必传,最多 20 个 SKU |
keyword |
关键词挖掘必传,须为俄语原文 |
matchType |
0 精准匹配 / 1 模糊匹配(默认 0) |
type |
关键词反查专用,字符串数组:["0"] 自然搜索词 / ["1"] 广告搜索词,不传取两者 |
| SKU 上限 | 商品报表 skus 最多 10 个;店铺查询 skus 最多 10 个 |
| 类目 ID | 需从 Seerfar 类目文档获取(见 references/api-reference.md),不能按类目名直接查 |
| 店铺 ID | 是数字 ID(如 118364),不是店铺名 |
| 采集异步 | product/collect 提交即返回,结果去 Seerfar Web 端「采集箱」查看 |
排序字段速查(page.orders.field)
| 端点 | 支持的排序字段 |
|---|---|
| 店铺 / 类目 / 商品报表 | revenue, price, sales, grossMargin, views, sessionCountSearch, sessionCount, convToCartPdp, orderConversionRate, drr, returnCancellationRate, missedRevenue, variants, reviewCount, reviewRating, upTime, weight, volume, questionsAndAnswers |
| 店铺品牌 / 店铺类目 | products, avgPrice, totalSales, totalRevenues, salesRate, revenueRate |
| 市场热词 | searchVolume, avgPrice, sales, revenue, count30GrowthRate, productCount, sellers, competingProducts, reviews, ratings, marketSpace, itemsViews, conversionSharing, returnCancellationRate, weight, volume |
| 关键词挖掘 | uniqQueriesWCa, ca, searchVolume, count30GrowthRate, relevancy, titleDensity, wordCount, avgPrice, competingProducts, productCount, sellers, adRivalCount, itemsViews, marketSpace, conversionSharing, returnCancellationRate |
| 关键词反查 | exposure, conversion, uniqQueriesWCa, ca, searchVolume, count30GrowthRate, naturalRank, adRank, titleDensity, wordCount, competingProducts, productCount, sellers, adRivalCount, itemsViews, marketSpace, conversionSharing, returnCancellationRate |
| 商品变体搜索 | price, upTime, sales, revenue, reviewCount, reviewRating,扩展排序传特征 sourceName |
错误码处置
| code | 含义 | 动作 |
|---|---|---|
| 200 | 成功 | — |
| 401 | 鉴权失败 / Token 缺失 | 检查 Key 是否配置正确,提示重新配置 |
| 403 | 账号/权限不允许 | 检查账号状态、数据条款确认、平台授权 |
| 429 | 频率过高 | 退避 ≥3 秒重试 |
| 500 | 服务端错误 | 重试 1 次,仍失败如实报告 |
| 8000 | 积分耗尽 | 立即停止,提示充值 |
排障细节见 references/troubleshooting.md。
脚本用法
通用入口(推荐,跨平台)
Python 标准库实现,无需 curl,Windows / macOS / Linux 通用:
python scripts/seerfar.py <METHOD> <PATH> ['<JSON_BODY>']
示例:
# 查积分(无 body)
python scripts/seerfar.py GET /open-api/quota
# 查类目商品
python scripts/seerfar.py POST /open-api/category/detail/search/ozon '{
"categoryId":"15621032_15621049_115951147",
"page":{"pageNumber":1,"pageSize":20,"orders":[{"field":"revenue","direction":"DESC"}]}
}'
seerfar.py 的额外能力:
| 参数 | 作用 |
|---|---|
--pretty |
美化输出 JSON |
--save <file> |
把原始 JSON 落盘到文件(便于后续核对) |
--field <a.b.c> |
只抽取 data 下指定路径的字段,减少上下文占用 |
--dry-run |
只打印将要发出的请求(不含 Key),不实际调用 |
--body-file <file> |
从文件读取 POST 请求体(Windows cmd 下双引号容易被吞,推荐用这个) |
Windows 入口(.cmd)
Windows 原生入口,与 .py / .sh 一一对应、行为一致(先 chcp 65001 保证俄语与中文不乱码):
scripts\seerfar.cmd GET /open-api/quota
scripts\quota.cmd
scripts\ozon-category.cmd --body-file body.json
解释器优先取 SEERFAR_PYTHON,其次 PYTHON,最后用 PATH 上的 python。
JSON 里含双引号时,用 --body-file 传文件最稳(cmd 的转义规则极易出错)。
> ⚠️ .cmd 不进 SkillHub 分发包(平台不接受该扩展名)。若你的副本里没有 .cmd,
> 直接 python scripts/<name>.py ... 即可,功能完全一致;确需 .cmd 时按下面模板自行生成
> (把 <NAME> 换成 seerfar / quota / ozon-category / ozon-shop 等):
@echo off
setlocal
chcp 65001 >nul
set "DIR=%~dp0"
set "PY=%SEERFAR_PYTHON%"
if "%PY%"=="" set "PY=%PYTHON%"
if "%PY%"=="" set "PY=python"
"%PY%" "%DIR%<NAME>.py" %*
exit /b %ERRORLEVEL%
语义化快捷脚本
| 脚本 | 端点 | 典型场景 |
|---|---|---|
quota.[sh\|py] |
GET /open-api/quota |
查积分余额 |
ozon-product-report.[sh\|py] |
POST /open-api/productReport/search/ozon |
按指标筛品 / 看榜单 |
ozon-category.[sh\|py] |
POST /open-api/category/detail/search/ozon |
看类目盘子 |
ozon-shop.[sh\|py] |
POST /open-api/shop/detail/search/ozon |
店铺审计 |
ozon-product-detail.[sh\|py] |
POST /open-api/product/detail/search/ozon |
单品详情 |
ozon-keyword-mining.[sh\|py] |
POST /open-api/keyword/mining/ozon |
种子词挖掘 |
ozon-keyword-back.[sh\|py] |
POST /open-api/keyword/backSearch/ozon |
SKU 反查关键词 |
ozon-market-keyword.[sh\|py] |
POST /open-api/market/search/ozon |
市场热词 |
python scripts/quota.py
python scripts/ozon-product-report.py '{
"monthlySales":{"min":500},
"price":{"max":2000},
"page":{"pageNumber":1,"pageSize":20,"orders":[{"field":"sales","direction":"DESC"}]}
}'
python scripts/ozon-category.py '{
"categoryId":"15621032_15621049_115951147",
"page":{"pageNumber":1,"pageSize":20,"orders":[{"field":"revenue","direction":"DESC"}]}
}'
python scripts/ozon-shop.py '{
"id":118364,
"page":{"pageNumber":1,"pageSize":20,"orders":[{"field":"revenue","direction":"DESC"}]}
}'
python scripts/ozon-product-detail.py '{"sku":"175924376","dateRange":"past_30_days"}'
python scripts/ozon-keyword-mining.py '{
"keyword":"наушники беспроводные",
"matchType":0,
"page":{"pageNumber":1,"pageSize":20,"orders":[{"field":"relevancy","direction":"DESC"}]}
}'
python scripts/ozon-keyword-back.py '{
"skuIds":[175924376,149222760],
"hasVariant":1,
"page":{"pageNumber":1,"pageSize":20,"orders":[{"field":"exposure","direction":"DESC"}]}
}'
python scripts/ozon-market-keyword.py '{
"searchVolume":{"min":30000},
"page":{"pageNumber":1,"pageSize":20,"orders":[{"field":"searchVolume","direction":"DESC"}]}
}'
> 每个快捷脚本都是 seerfar.py 的薄包装,支持透传 --pretty / --save / --field / --no-throttle。
> .sh 版本等价于 python <name>.py "$@",仅作为习惯用 bash 时的入口。
> 需要 WB 数据时,把路径末段 /ozon 换成 /wb,参数结构不变。
脚本行为约定
- 自动从
config/.env→ 环境变量 读取SEERFAR_API_KEY - Key 缺失时报错退出并打印索要话术,不发起请求
- 自动节流(两次调用间隔 ≥3 秒)
- 统一输出格式化 JSON 到 stdout
- 非 200 响应以非零退出码返回,并打印错误码含义
- 不把 Key 写入 stdout、stderr、日志或文件
pageSize超过 100 时在发请求前直接拦截(不发请求、不消耗积分),对应「红线」第 6 条
退出码
| 退出码 | 含义 |
|---|---|
0 |
成功(业务 code=200) |
2 |
参数错误:method 不支持 / body 非法 JSON / pageSize 超 100 |
3 |
未配置 Key(未发起任何请求) |
1 |
业务码非 200(401 / 403 / 429 / 500 / 8000,stderr 给含义) |
4 |
网络或连接失败 |
5 |
响应不是合法 JSON |
6 |
--field 指定的字段不存在 |
场景 → 端点映射(选了就用)
| 用户意图 | 端点组合 |
|---|---|
| Ozon 选品(有类目) | category/detail/search/ozon → productReport/search/ozon → product/detail/search/ozon |
| Ozon 选品(只有关键词) | keyword/mining/ozon → productReport/search/ozon |
| Ozon 选品(无任何起点) | market/search/ozon → productReport/search/ozon |
| 查某个词的市场 | market/search/ozon |
| 扩展某个种子词 | keyword/mining/ozon |
| 看竞品在吃什么流量词 | keyword/backSearch/ozon |
| 看单个商品表现 | product/detail/search/ozon |
| 找同类商品 | product/detail/similar/ozon |
| 看哪个规格最好卖 | product/detail/variations/characteristics/ozon → variations/top/ozon → variations/search/ozon |
| 审计一个店铺 | shop/detail/search/ozon → shop/detail/brand/search/ozon → shop/detail/category/search/ozon |
| 看某类目的盘子 | category/detail/search/ozon |
| 看某月榜单 | productReport/search/ozon(带 searchDate) |
| 采集商品到 Seerfar 采集箱 | product/collect/ozon |
| Wildberries 同理 | 把路径末段换成 /wb |
分平台参数差异(避坑)
| 环节 | Ozon 端点字段 | WB 端点字段 |
|---|---|---|
| 商品报表 | reviewCount、reviewRating、questionsAndAnswers、monthlySales、monthlyRevenue |
结构对称,字段名一致 |
| 市场热词 | reviews、ratings(注意用复数) |
同 |
| 关键词挖掘 | searchVolume、products、sellers、marketSpace、relevancy |
同 |
| 关键词反查 | skuIds、hasVariant、type |
同 |
| 类目 | categoryId + date(yyyy-MM) |
同 |
| 店铺 | id(数字店铺ID) |
同 |
> WB 数据集以 Ozon 为主干,WB 行在可用时返回;部分端点无平台过滤入参,需客户端侧过滤。
输出规范
- 金额单位:
₽(卢布) - 指标标注:必须写英文 API 字段名 + 中文释义
- 关键词:俄语原文 + 中文释义双列,不允许只给中文
- 时间口径:注明数据月份或「近 30 天」
- 置信度:每次输出标注 高/中/低
- 风险提示:第三方估算数据,与平台后台可能有偏差
红线
- 不把 API Key 写入任何输出、日志或交付文件
- 未配置 Key 时不发起业务请求
- 不编造 API 未返回的数值
- 不做收益承诺(不说「必赚」「稳赚」)
- 不协助侵权、仿品、违禁品类
pageSize不超过 100- 批量调用不并发
References
| 文件 | 内容 |
|---|---|
references/api-reference.md |
29 个端点完整参数、请求/响应示例、字段释义(官方文档 v1.1 提取) |
references/metrics-dictionary.md |
指标词典:英文 API 字段 / 中文 / 单位 / 判读方向 |
references/russian-seo-guide.md |
俄语关键词处理指南:词根、格变、长尾切分、意图判读、转写 |
references/troubleshooting.md |
错误码、限流、参数陷阱与排障流程 |
references/coverage-mapping.md |
能力覆盖对照与来源追溯(仅内部核对用,对外表述一律为「直连 Seerfar」) |
config/README.md |
API Key 获取与配置指引 |