{"id":"ad681581-3f39-410c-9e17-0e39abcf13cd","entityType":"agent","slug":"clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products","name":"MPSTATS-Ozon类目商品查询","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products","canonicalPath":"/agent/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products","generatedAt":"2026-10-10T10:48:30.141Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T08:37:42.449Z","emptyReason":null},"description":"MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。 Skill: MPSTATS-Ozon类目商品查询 Owner: linkfox-ai Summary: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-mpstats-ozon-category-products","sourceUrl":"https://clawhub.ai/linkfox-ai/linkfox-mpstats-ozon-category-products","homepage":"https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-category-products","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linkfox-ai/linkfox-mpstats-ozon-category-products","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-category-products","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:37:42.449Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:37:42.449Z","emptyReason":null},"stars":null,"forks":null,"downloads":1552,"packageName":null,"latestVersion":"1.0.7","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:37:42.449Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T08:37:42.449Z","lastCrawledAt":"2026-10-10T08:37:42.449Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T08:37:42.449Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.7","createdAt":"2026-09-14T05:22:12.594Z","changelog":"Update from 1.0.6 to 1.0.7","fileCount":7,"zipByteSize":24156},{"version":"1.0.6","createdAt":"2026-08-14T14:57:22.949Z","changelog":"Update from 1.0.5 to 1.0.6","fileCount":7,"zipByteSize":24100},{"version":"1.0.5","createdAt":"2026-08-07T10:53:18.259Z","changelog":"Update from 1.0.4 to 1.0.5","fileCount":7,"zipByteSize":24239},{"version":"1.0.4","createdAt":"2026-07-13T12:13:49.610Z","changelog":"Update from 1.0.3 to 1.0.4","fileCount":5,"zipByteSize":15270},{"version":"1.0.3","createdAt":"2026-07-06T11:22:37.072Z","changelog":"Update from 1.0.2 to 1.0.3","fileCount":5,"zipByteSize":14535},{"version":"1.0.2","createdAt":"2026-07-03T08:21:13.854Z","changelog":"Update from 1.0.1 to 1.0.2","fileCount":4,"zipByteSize":13117},{"version":"1.0.1","createdAt":"2026-07-03T06:51:59.703Z","changelog":"Update from 1.0.0 to 1.0.1","fileCount":5,"zipByteSize":14469},{"version":"1.0.0","createdAt":"2026-05-06T05:39:59.177Z","changelog":"Initial release","fileCount":5,"zipByteSize":10703}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-mpstats-ozon-category-products","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:48:30.137Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-category-products/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T08:37:42.449Z","emptyReason":null},"readme":"Skill: MPSTATS-Ozon类目商品查询\n\nOwner: linkfox-ai\n\nSummary: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n\nTags: latest:1.0.7\n\nVersion history:\n\nv1.0.7 | 2026-09-14T05:22:12.594Z | user\n\nUpdate from 1.0.6 to 1.0.7\n\nv1.0.6 | 2026-08-14T14:57:22.949Z | user\n\nUpdate from 1.0.5 to 1.0.6\n\nv1.0.5 | 2026-08-07T10:53:18.259Z | user\n\nUpdate from 1.0.4 to 1.0.5\n\nv1.0.4 | 2026-07-13T12:13:49.610Z | user\n\nUpdate from 1.0.3 to 1.0.4\n\nv1.0.3 | 2026-07-06T11:22:37.072Z | user\n\nUpdate from 1.0.2 to 1.0.3\n\nv1.0.2 | 2026-07-03T08:21:13.854Z | user\n\nUpdate from 1.0.1 to 1.0.2\n\nv1.0.1 | 2026-07-03T06:51:59.703Z | user\n\nUpdate from 1.0.0 to 1.0.1\n\nv1.0.0 | 2026-05-06T05:39:59.177Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.7: 7 files, 24156 bytes\n\nFiles: references/api.md (6805b), references/onboarding.md (1999b), scripts/mpstats_ozon_category_products.py (12818b), scripts/onboarding.py (24027b), skill-card.md (2790b), SKILL.md (9760b), _meta.json (157b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-category-products\ndescription: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n---\n\n# MPSTATS Ozon Category Products\n\nThis skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.\n\n## Core Concepts\n\n**Russian full-path requirement**: `categoryPath` must be the **full Russian category path** as used on the Ozon platform, with levels separated by `/` — for example, `Одежда/Женская одежда/Футболки и топы женские`. A partial path, English translation, or root-only value will generally return empty results.\n\n**Where to find the path**: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's `category` field from `mpstats-ozon-product-detail` / `mpstats-ozon-product-search`.\n\n**Filters are AND-combined**: `filters` carries multi-field numeric conditions, each `{field, op, value, value2?}`. See the Filter Reference.\n\n**Currency**: Default `RUB`. Override with `currency` (USD, EUR, CNY, ...) and optionally `currencyRate`.\n\n**FBO / FBS**: `includeFbs: true` folds FBS into stock / sales numbers; `false` keeps FBO-only.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| categoryPath | string | yes | Full Russian category path separated by `/` |\n| startDate | string | no | Stats window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Stats window end, `YYYY-MM-DD`; latest = yesterday |\n| page | integer | no | Page number, starts at 1 |\n| pageSize | integer | no | Rows per page, 1-100, default 100 |\n| sortField | string | no | snake_case column: `sales`, `revenue`, `final_price`, `balance`, `rating`, ... |\n| sortDirection | string | no | `asc` / `desc` |\n| currency | string | no | Currency code, default `RUB` |\n| currencyRate | integer | no | Custom rate when non-default currency is used |\n| includeFbs | boolean | no | Include FBS data |\n| filters | array | no | Numeric filter list (see below) |\n\n## Filter Reference\n\nEach `filters` entry: `{\"field\": \"<snake_case>\", \"op\": \"<OP>\", \"value\": <num>, \"value2\": <num?>}`.\n\n**Common fields**: `sales` (monthly units), `final_price` (price RUB), `rating` (0-5), `comments` (reviews), `balance` (stock), `revenue` (amount RUB), `days_in_stock`, `turnover_days`, `lost_profit`, `category_position`.\n\n**Operators**: `GTE`, `LTE`, `GT`, `LT`, `EQ`, `NOT_EQ`, `BETWEEN` (requires `value2`).\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/categoryProducts`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_category_products.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗算力；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-category-products-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和算力问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示算力或余额不足**：消息含\"算力余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## Usage Examples\n\n**1. Women's T-shirts — top by sales**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"sortField\": \"sales\",\n  \"sortDirection\": \"desc\",\n  \"pageSize\": 100\n}\n```\n\n**2. Blue-ocean hunt (sales ≥ 50, rating ≥ 4.5)**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"filters\": [\n    {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n    {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n  ],\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**3. Mid-price + strong turnover**\n```json\n{\n  \"categoryPath\": \"Электроника/Наушники\",\n  \"filters\": [\n    {\"field\": \"final_price\", \"op\": \"BETWEEN\", \"value\": 1500, \"value2\": 5000},\n    {\"field\": \"turnover_days\", \"op\": \"LTE\", \"value\": 30}\n  ]\n}\n```\n\n**4. USD-converted ranking for cross-market comparison**\n```json\n{\n  \"categoryPath\": \"Электроника/Смартфоны\",\n  \"currency\": \"USD\",\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**5. High lost-profit category scan**\n```json\n{\n  \"categoryPath\": \"Одежда/Мужская одежда/Куртки мужские\",\n  \"filters\": [{\"field\": \"lost_profit\", \"op\": \"GTE\", \"value\": 500000}],\n  \"sortField\": \"lost_profit\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n## Display Rules\n\n1. **Compact category table** — key columns: `productId`, `title`, `brand`, `sellerName`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `balance`, `position`, `revenueSharePercent`.\n2. **Revenue share = within this category query** — 0-100%; clarify the basis when presenting.\n3. **Russian titles / brands** — preserve original; translate on demand.\n4. **Currency labeling** — state the currency; if converted, note `\"已按 USD 换算\"`.\n5. **Pagination** — report `total`; for large categories (tens of thousands of SKUs) suggest tightening filters rather than naively paging through.\n6. **Category position** — lower is better; mention this when showing `categoryPosition`.\n\n## Important Limitations\n\n- **Russian full path only** — partial or translated paths return empty.\n- **Path discovery is upstream** — this endpoint does not browse the category tree; resolve the path via product detail / search first.\n- **Page cap** — max 100 rows per page.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **No business advice** — data-only view.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Category-scoped Ozon product metrics:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Bestsellers in category X on Ozon\" | Category bestseller mining |\n| \"Find blue-ocean SKUs in niche Y\" | Blue-ocean niche scan |\n| \"Show mid-price, fast-turnover items in this category\" | Multi-criteria niche filter |\n| \"Which brands dominate this Ozon category\" | Brand-landscape pre-cut (then group by brand client-side) |\n| \"Huge lost-profit opportunities in category X\" | Out-of-stock pain hunting |\n\n**Not applicable** — Needs beyond category drill-down:\n\n- Unknown category path → use `mpstats-ozon-product-search` or product detail to discover the exact Russian path\n- Brand-scoped drill → `mpstats-ozon-brand-products`\n- Seller-scoped drill → `mpstats-ozon-seller-products`\n- Single-SKU time-series → `mpstats-ozon-product-trend`\n- Wildberries / other Russian marketplaces → not covered\n\n**Boundary judgment**: Use this skill when the **dimension is a category path** and you want the per-SKU roll-up under it. For cross-category comparisons you must run multiple calls and fuse results at the Agent layer.\n\n## 算力消耗规则\n\n按动态规则计费：消耗算力 = 12。列表为空返回 0\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量算力，必须提醒用户，由用户决定是否继续。\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n---\n*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-category-products\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1789363332594\n}\n\nFile v1.0.7:references/api.md\n\n# MPSTATS Ozon 类目商品 API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/categoryProducts`\n- **请求方式**：POST，Content-Type: application/json\n- **认证方式**：Header `Authorization: <api_key>`，api_key 从环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` 读取（如未配置 按 SKILL.md 的 **## 解决认证和算力问题** 处理）\n\n## 请求参数\n\nPOST Body（JSON）。以下字段与工具网关当前登记的「MPSTATS-Ozon-类目商品」入参 schema 一致（同步日期 2026-04-30）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| categoryPath | string | 是 | Ozon 俄语类目全路径，层级用 `/` 分隔，例如 `Одежда/Женская одежда/Футболки и топы женские` |\n| startDate | string | 否 | 统计起始日 `YYYY-MM-DD`；最晚昨日 |\n| endDate | string | 否 | 统计结束日 `YYYY-MM-DD`；最晚昨日 |\n| page | integer | 否 | 页码，从 1 开始 |\n| pageSize | integer | 否 | 每页行数 1-100，默认 100 |\n| sortField | string | 否 | 排序列名（snake_case），如 `sales`、`revenue`、`final_price`、`balance`、`rating` |\n| sortDirection | string | 否 | `asc` / `desc` |\n| currency | string | 否 | 货币代码，默认 `RUB`，如 `USD` |\n| currencyRate | integer | 否 | 自定义汇率（配合非默认货币） |\n| includeFbs | boolean | 否 | 是否纳入 FBS 数据 |\n| filters | array | 否 | 数值筛选条件列表，每项 `{field, op, value, value2?}`，多条件 AND |\n\n### filters 子字段\n\n| 子字段 | 类型 | 必填 | 说明 |\n|--------|------|------|------|\n| field | string | 是 | 列名（snake_case）。常用：`sales`（月销）、`final_price`（售价 RUB）、`rating`（评分 0-5）、`comments`（评论数）、`balance`（库存）、`revenue`（销售额 RUB）、`days_in_stock`、`turnover_days`、`lost_profit`、`category_position`。 |\n| op | string | 是 | `GTE` / `LTE` / `GT` / `LT` / `EQ` / `NOT_EQ` / `BETWEEN` |\n| value | number | 是 | 主值（`BETWEEN` 时为下界） |\n| value2 | number | `BETWEEN` 必填 | 上界（闭区间） |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码，`\"200\"` 成功 |\n| msg | string | 消息；成功为 `ok` |\n| total | integer | 类目下命中商品总数 |\n| products | array | 商品列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品对象字段（39 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_categoryProducts`，同步日期 2026-05-06）。该 schema 与 `productSearch` / `brandProducts` / `sellerProducts` **完全共用**；4 个端点只是查询维度不同，返回的商品卡字段集完全一致。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| brandId | integer | 品牌 ID |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| category | string | 品类路径（俄语，`/` 分隔） |\n| nicheName | string | 赛道路径（俄语） |\n| nicheId | integer | 赛道 ID |\n| country | string | 销售国，Ozon 恒为 `RU` |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| imageUrl | string | 主图 URL |\n| productPageUrl | string | 商品页 URL |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**价格与货币**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价 |\n| minPrice / maxPrice / averagePrice | number | 统计期内最低价 / 最高价 / 均价 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分与评论**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与 FBS**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| balanceFbs | integer | FBS 库存（卖家自发货件数） |\n| frozenStocks | integer | 滞销库存 |\n| warehousesCount | integer | FBO 分仓数 |\n| isFbs | boolean | 是否 FBS 发货 |\n\n**销售与周转**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| daysInSite | integer | 在售天数（统计期，含缺货日） |\n| daysInStock | integer | 有货天数 |\n| turnoverDays | number | 周转天数（越小越快） |\n\n**排名与占比**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| position | integer | 当前查询维度（本端点为类目）内排名 |\n| categoryPosition | integer | 品类内排名 |\n| revenueSharePercent | number | 该 SKU 在当前查询维度的销售额占比，0-100 |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `products` |\n| 401 | 认证失败 | HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和算力问题** 处理。 |\n| 402 | 算力或余额不足 | HTTP 402：按 SKILL.md 的 **## 解决认证和算力问题** 处理。 |\n| 其他 | 业务异常 | 查看 `errmsg`；常见为 `categoryPath` 非俄语、非全路径、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n    \"sortField\": \"revenue\",\n    \"sortDirection\": \"desc\",\n    \"pageSize\": 100,\n    \"filters\": [\n      {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n      {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n    ]\n  }'\n```\n\n---\n\n## Feedback API\n\n> 该接口与上方工具接口不同，**请勿混用两个基础 URL**。\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-mpstats-ozon-category-products\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Nice niche surface from a Russian path.\"\n}\n```\n\n**字段说明：**\n- `skillName`：使用本 skill 的 YAML `name`\n- `sentiment`：`POSITIVE` / `NEUTRAL` / `NEGATIVE`\n- `category`：`BUG` / `COMPLAINT` / `SUGGESTION` / `OTHER`\n- `content`：用户表达、实际现象、为什么算问题或好评\n\nFile v1.0.7:references/onboarding.md\n\n# 解决认证和算力问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `算力/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.7:skill-card.md\n\n## Description:\n\nThis skill queries MPSTATS Ozon Russia category product data by full Russian category path and returns per-SKU sales, revenue, price, rating, stock, turnover, ranking, and related metrics.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal marketplace analysts, e-commerce operators, and developers use this skill to inspect product-level performance within an Ozon Russia category for bestseller discovery, niche analysis, category ranking review, and brand landscape scanning. The skill is data-oriented and does not provide business advice.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uses LinkFox API credentials and can guide users through account onboarding.\n\nMitigation: Store API keys in a secret manager or protected environment variables, avoid sharing logs that contain credentials, and verify endpoint environment variables before use.\n\nRisk: The onboarding flow can list paid plans and create payment orders.\n\nMitigation: Review the selected plan, payment method, and generated order before confirming any purchase.\n\nRisk: The skill writes full marketplace query responses and cache data to local LinkFox session directories.\n\nMitigation: Treat saved response files as potentially sensitive business data and remove or protect them according to the workspace retention policy.\n\nRisk: The skill documentation describes automatic feedback reporting when results or user sentiment indicate an issue or praise.\n\nMitigation: Review feedback behavior before deployment and make feedback submission opt-in when user queries or results may contain sensitive information.\n\n## Reference(s):\n\n- [MPSTATS Ozon Category Products API Reference](references/api.md)\n- [Authentication and Billing Onboarding](references/onboarding.md)\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-category-products)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON API parameters, shell commands, and saved JSON response files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes complete API responses to a local LinkFox session data file; small responses may also be printed inline, and large responses are summarized.]\n\n## Skill Version(s):\n\n1.0.7 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.6: 7 files, 24100 bytes\n\nFiles: references/api.md (6805b), references/onboarding.md (2046b), scripts/mpstats_ozon_category_products.py (12762b), scripts/onboarding.py (24089b), skill-card.md (2531b), SKILL.md (9760b), _meta.json (157b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-category-products\ndescription: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n---\n\n# MPSTATS Ozon Category Products\n\nThis skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.\n\n## Core Concepts\n\n**Russian full-path requirement**: `categoryPath` must be the **full Russian category path** as used on the Ozon platform, with levels separated by `/` — for example, `Одежда/Женская одежда/Футболки и топы женские`. A partial path, English translation, or root-only value will generally return empty results.\n\n**Where to find the path**: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's `category` field from `mpstats-ozon-product-detail` / `mpstats-ozon-product-search`.\n\n**Filters are AND-combined**: `filters` carries multi-field numeric conditions, each `{field, op, value, value2?}`. See the Filter Reference.\n\n**Currency**: Default `RUB`. Override with `currency` (USD, EUR, CNY, ...) and optionally `currencyRate`.\n\n**FBO / FBS**: `includeFbs: true` folds FBS into stock / sales numbers; `false` keeps FBO-only.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| categoryPath | string | yes | Full Russian category path separated by `/` |\n| startDate | string | no | Stats window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Stats window end, `YYYY-MM-DD`; latest = yesterday |\n| page | integer | no | Page number, starts at 1 |\n| pageSize | integer | no | Rows per page, 1-100, default 100 |\n| sortField | string | no | snake_case column: `sales`, `revenue`, `final_price`, `balance`, `rating`, ... |\n| sortDirection | string | no | `asc` / `desc` |\n| currency | string | no | Currency code, default `RUB` |\n| currencyRate | integer | no | Custom rate when non-default currency is used |\n| includeFbs | boolean | no | Include FBS data |\n| filters | array | no | Numeric filter list (see below) |\n\n## Filter Reference\n\nEach `filters` entry: `{\"field\": \"<snake_case>\", \"op\": \"<OP>\", \"value\": <num>, \"value2\": <num?>}`.\n\n**Common fields**: `sales` (monthly units), `final_price` (price RUB), `rating` (0-5), `comments` (reviews), `balance` (stock), `revenue` (amount RUB), `days_in_stock`, `turnover_days`, `lost_profit`, `category_position`.\n\n**Operators**: `GTE`, `LTE`, `GT`, `LT`, `EQ`, `NOT_EQ`, `BETWEEN` (requires `value2`).\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/categoryProducts`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_category_products.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-category-products-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## Usage Examples\n\n**1. Women's T-shirts — top by sales**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"sortField\": \"sales\",\n  \"sortDirection\": \"desc\",\n  \"pageSize\": 100\n}\n```\n\n**2. Blue-ocean hunt (sales ≥ 50, rating ≥ 4.5)**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"filters\": [\n    {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n    {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n  ],\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**3. Mid-price + strong turnover**\n```json\n{\n  \"categoryPath\": \"Электроника/Наушники\",\n  \"filters\": [\n    {\"field\": \"final_price\", \"op\": \"BETWEEN\", \"value\": 1500, \"value2\": 5000},\n    {\"field\": \"turnover_days\", \"op\": \"LTE\", \"value\": 30}\n  ]\n}\n```\n\n**4. USD-converted ranking for cross-market comparison**\n```json\n{\n  \"categoryPath\": \"Электроника/Смартфоны\",\n  \"currency\": \"USD\",\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**5. High lost-profit category scan**\n```json\n{\n  \"categoryPath\": \"Одежда/Мужская одежда/Куртки мужские\",\n  \"filters\": [{\"field\": \"lost_profit\", \"op\": \"GTE\", \"value\": 500000}],\n  \"sortField\": \"lost_profit\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n## Display Rules\n\n1. **Compact category table** — key columns: `productId`, `title`, `brand`, `sellerName`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `balance`, `position`, `revenueSharePercent`.\n2. **Revenue share = within this category query** — 0-100%; clarify the basis when presenting.\n3. **Russian titles / brands** — preserve original; translate on demand.\n4. **Currency labeling** — state the currency; if converted, note `\"已按 USD 换算\"`.\n5. **Pagination** — report `total`; for large categories (tens of thousands of SKUs) suggest tightening filters rather than naively paging through.\n6. **Category position** — lower is better; mention this when showing `categoryPosition`.\n\n## Important Limitations\n\n- **Russian full path only** — partial or translated paths return empty.\n- **Path discovery is upstream** — this endpoint does not browse the category tree; resolve the path via product detail / search first.\n- **Page cap** — max 100 rows per page.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **No business advice** — data-only view.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Category-scoped Ozon product metrics:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Bestsellers in category X on Ozon\" | Category bestseller mining |\n| \"Find blue-ocean SKUs in niche Y\" | Blue-ocean niche scan |\n| \"Show mid-price, fast-turnover items in this category\" | Multi-criteria niche filter |\n| \"Which brands dominate this Ozon category\" | Brand-landscape pre-cut (then group by brand client-side) |\n| \"Huge lost-profit opportunities in category X\" | Out-of-stock pain hunting |\n\n**Not applicable** — Needs beyond category drill-down:\n\n- Unknown category path → use `mpstats-ozon-product-search` or product detail to discover the exact Russian path\n- Brand-scoped drill → `mpstats-ozon-brand-products`\n- Seller-scoped drill → `mpstats-ozon-seller-products`\n- Single-SKU time-series → `mpstats-ozon-product-trend`\n- Wildberries / other Russian marketplaces → not covered\n\n**Boundary judgment**: Use this skill when the **dimension is a category path** and you want the per-SKU roll-up under it. For cross-category comparisons you must run multiple calls and fuse results at the Agent layer.\n\n## 积分消耗规则\n\n按动态规则计费：消耗积分 = 12。列表为空返回 0\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量积分，必须提醒用户，由用户决定是否继续。\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n---\n*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-category-products\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1786719442949\n}\n\nFile v1.0.6:references/api.md\n\n# MPSTATS Ozon 类目商品 API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/categoryProducts`\n- **请求方式**：POST，Content-Type: application/json\n- **认证方式**：Header `Authorization: <api_key>`，api_key 从环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` 读取（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 请求参数\n\nPOST Body（JSON）。以下字段与工具网关当前登记的「MPSTATS-Ozon-类目商品」入参 schema 一致（同步日期 2026-04-30）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| categoryPath | string | 是 | Ozon 俄语类目全路径，层级用 `/` 分隔，例如 `Одежда/Женская одежда/Футболки и топы женские` |\n| startDate | string | 否 | 统计起始日 `YYYY-MM-DD`；最晚昨日 |\n| endDate | string | 否 | 统计结束日 `YYYY-MM-DD`；最晚昨日 |\n| page | integer | 否 | 页码，从 1 开始 |\n| pageSize | integer | 否 | 每页行数 1-100，默认 100 |\n| sortField | string | 否 | 排序列名（snake_case），如 `sales`、`revenue`、`final_price`、`balance`、`rating` |\n| sortDirection | string | 否 | `asc` / `desc` |\n| currency | string | 否 | 货币代码，默认 `RUB`，如 `USD` |\n| currencyRate | integer | 否 | 自定义汇率（配合非默认货币） |\n| includeFbs | boolean | 否 | 是否纳入 FBS 数据 |\n| filters | array | 否 | 数值筛选条件列表，每项 `{field, op, value, value2?}`，多条件 AND |\n\n### filters 子字段\n\n| 子字段 | 类型 | 必填 | 说明 |\n|--------|------|------|------|\n| field | string | 是 | 列名（snake_case）。常用：`sales`（月销）、`final_price`（售价 RUB）、`rating`（评分 0-5）、`comments`（评论数）、`balance`（库存）、`revenue`（销售额 RUB）、`days_in_stock`、`turnover_days`、`lost_profit`、`category_position`。 |\n| op | string | 是 | `GTE` / `LTE` / `GT` / `LT` / `EQ` / `NOT_EQ` / `BETWEEN` |\n| value | number | 是 | 主值（`BETWEEN` 时为下界） |\n| value2 | number | `BETWEEN` 必填 | 上界（闭区间） |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码，`\"200\"` 成功 |\n| msg | string | 消息；成功为 `ok` |\n| total | integer | 类目下命中商品总数 |\n| products | array | 商品列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品对象字段（39 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_categoryProducts`，同步日期 2026-05-06）。该 schema 与 `productSearch` / `brandProducts` / `sellerProducts` **完全共用**；4 个端点只是查询维度不同，返回的商品卡字段集完全一致。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| brandId | integer | 品牌 ID |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| category | string | 品类路径（俄语，`/` 分隔） |\n| nicheName | string | 赛道路径（俄语） |\n| nicheId | integer | 赛道 ID |\n| country | string | 销售国，Ozon 恒为 `RU` |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| imageUrl | string | 主图 URL |\n| productPageUrl | string | 商品页 URL |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**价格与货币**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价 |\n| minPrice / maxPrice / averagePrice | number | 统计期内最低价 / 最高价 / 均价 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分与评论**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与 FBS**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| balanceFbs | integer | FBS 库存（卖家自发货件数） |\n| frozenStocks | integer | 滞销库存 |\n| warehousesCount | integer | FBO 分仓数 |\n| isFbs | boolean | 是否 FBS 发货 |\n\n**销售与周转**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| daysInSite | integer | 在售天数（统计期，含缺货日） |\n| daysInStock | integer | 有货天数 |\n| turnoverDays | number | 周转天数（越小越快） |\n\n**排名与占比**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| position | integer | 当前查询维度（本端点为类目）内排名 |\n| categoryPosition | integer | 品类内排名 |\n| revenueSharePercent | number | 该 SKU 在当前查询维度的销售额占比，0-100 |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `products` |\n| 401 | 认证失败 | HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 402 | 积分或余额不足 | HTTP 402：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 其他 | 业务异常 | 查看 `errmsg`；常见为 `categoryPath` 非俄语、非全路径、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n    \"sortField\": \"revenue\",\n    \"sortDirection\": \"desc\",\n    \"pageSize\": 100,\n    \"filters\": [\n      {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n      {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n    ]\n  }'\n```\n\n---\n\n## Feedback API\n\n> 该接口与上方工具接口不同，**请勿混用两个基础 URL**。\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-mpstats-ozon-category-products\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Nice niche surface from a Russian path.\"\n}\n```\n\n**字段说明：**\n- `skillName`：使用本 skill 的 YAML `name`\n- `sentiment`：`POSITIVE` / `NEUTRAL` / `NEGATIVE`\n- `category`：`BUG` / `COMPLAINT` / `SUGGESTION` / `OTHER`\n- `content`：用户表达、实际现象、为什么算问题或好评\n\nFile v1.0.6:references/onboarding.md\n\n# 解决认证和积分问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`（workbuddy 宿主加 `--channel workbuddy`）\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `积分/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.6:skill-card.md\n\n## Description:\n\nDrills into Ozon Russia products under a full Russian category path and returns SKU-level sales, revenue, price, rating, stock, turnover, lost-profit, ranking, and brand metrics.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal marketplace analysts, ecommerce operators, and agent users use this skill to inspect Ozon category-level SKU performance, identify bestsellers or blue-ocean opportunities, and compare brands within a specific category path.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill sends marketplace analytics queries to LinkFox services and may store result files or cache data locally.\n\nMitigation: Install only if LinkFox is trusted with the queried marketplace data, and periodically clean local linkfox output and cache files when results are sensitive.\n\nRisk: The onboarding flow can handle phone/SMS login, generated API keys, billing package actions, and payment ordering.\n\nMitigation: Prefer self-service API key setup when possible, and review any plan selection or payment step before approving it.\n\nRisk: The evidence security summary notes silent feedback reporting behavior that needs careful review.\n\nMitigation: Review feedback content and reporting behavior before deployment, especially in environments with sensitive user prompts or business data.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-category-products)\n- [API reference](references/api.md)\n- [Authentication and billing onboarding](references/onboarding.md)\n- [LinkFox Skills](https://skill.linkfox.com/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON request examples, shell command examples, and JSON API responses or response summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes complete API responses to local linkfox session data files; large responses are summarized unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.6 (source: server evidence release.version)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.5: 7 files, 24239 bytes\n\nFiles: references/api.md (6805b), references/onboarding.md (2046b), scripts/mpstats_ozon_category_products.py (12762b), scripts/onboarding.py (24089b), skill-card.md (2866b), SKILL.md (9760b), _meta.json (157b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-category-products\ndescription: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n---\n\n# MPSTATS Ozon Category Products\n\nThis skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.\n\n## Core Concepts\n\n**Russian full-path requirement**: `categoryPath` must be the **full Russian category path** as used on the Ozon platform, with levels separated by `/` — for example, `Одежда/Женская одежда/Футболки и топы женские`. A partial path, English translation, or root-only value will generally return empty results.\n\n**Where to find the path**: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's `category` field from `mpstats-ozon-product-detail` / `mpstats-ozon-product-search`.\n\n**Filters are AND-combined**: `filters` carries multi-field numeric conditions, each `{field, op, value, value2?}`. See the Filter Reference.\n\n**Currency**: Default `RUB`. Override with `currency` (USD, EUR, CNY, ...) and optionally `currencyRate`.\n\n**FBO / FBS**: `includeFbs: true` folds FBS into stock / sales numbers; `false` keeps FBO-only.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| categoryPath | string | yes | Full Russian category path separated by `/` |\n| startDate | string | no | Stats window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Stats window end, `YYYY-MM-DD`; latest = yesterday |\n| page | integer | no | Page number, starts at 1 |\n| pageSize | integer | no | Rows per page, 1-100, default 100 |\n| sortField | string | no | snake_case column: `sales`, `revenue`, `final_price`, `balance`, `rating`, ... |\n| sortDirection | string | no | `asc` / `desc` |\n| currency | string | no | Currency code, default `RUB` |\n| currencyRate | integer | no | Custom rate when non-default currency is used |\n| includeFbs | boolean | no | Include FBS data |\n| filters | array | no | Numeric filter list (see below) |\n\n## Filter Reference\n\nEach `filters` entry: `{\"field\": \"<snake_case>\", \"op\": \"<OP>\", \"value\": <num>, \"value2\": <num?>}`.\n\n**Common fields**: `sales` (monthly units), `final_price` (price RUB), `rating` (0-5), `comments` (reviews), `balance` (stock), `revenue` (amount RUB), `days_in_stock`, `turnover_days`, `lost_profit`, `category_position`.\n\n**Operators**: `GTE`, `LTE`, `GT`, `LT`, `EQ`, `NOT_EQ`, `BETWEEN` (requires `value2`).\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/categoryProducts`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_category_products.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-category-products-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## Usage Examples\n\n**1. Women's T-shirts — top by sales**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"sortField\": \"sales\",\n  \"sortDirection\": \"desc\",\n  \"pageSize\": 100\n}\n```\n\n**2. Blue-ocean hunt (sales ≥ 50, rating ≥ 4.5)**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"filters\": [\n    {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n    {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n  ],\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**3. Mid-price + strong turnover**\n```json\n{\n  \"categoryPath\": \"Электроника/Наушники\",\n  \"filters\": [\n    {\"field\": \"final_price\", \"op\": \"BETWEEN\", \"value\": 1500, \"value2\": 5000},\n    {\"field\": \"turnover_days\", \"op\": \"LTE\", \"value\": 30}\n  ]\n}\n```\n\n**4. USD-converted ranking for cross-market comparison**\n```json\n{\n  \"categoryPath\": \"Электроника/Смартфоны\",\n  \"currency\": \"USD\",\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**5. High lost-profit category scan**\n```json\n{\n  \"categoryPath\": \"Одежда/Мужская одежда/Куртки мужские\",\n  \"filters\": [{\"field\": \"lost_profit\", \"op\": \"GTE\", \"value\": 500000}],\n  \"sortField\": \"lost_profit\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n## Display Rules\n\n1. **Compact category table** — key columns: `productId`, `title`, `brand`, `sellerName`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `balance`, `position`, `revenueSharePercent`.\n2. **Revenue share = within this category query** — 0-100%; clarify the basis when presenting.\n3. **Russian titles / brands** — preserve original; translate on demand.\n4. **Currency labeling** — state the currency; if converted, note `\"已按 USD 换算\"`.\n5. **Pagination** — report `total`; for large categories (tens of thousands of SKUs) suggest tightening filters rather than naively paging through.\n6. **Category position** — lower is better; mention this when showing `categoryPosition`.\n\n## Important Limitations\n\n- **Russian full path only** — partial or translated paths return empty.\n- **Path discovery is upstream** — this endpoint does not browse the category tree; resolve the path via product detail / search first.\n- **Page cap** — max 100 rows per page.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **No business advice** — data-only view.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Category-scoped Ozon product metrics:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Bestsellers in category X on Ozon\" | Category bestseller mining |\n| \"Find blue-ocean SKUs in niche Y\" | Blue-ocean niche scan |\n| \"Show mid-price, fast-turnover items in this category\" | Multi-criteria niche filter |\n| \"Which brands dominate this Ozon category\" | Brand-landscape pre-cut (then group by brand client-side) |\n| \"Huge lost-profit opportunities in category X\" | Out-of-stock pain hunting |\n\n**Not applicable** — Needs beyond category drill-down:\n\n- Unknown category path → use `mpstats-ozon-product-search` or product detail to discover the exact Russian path\n- Brand-scoped drill → `mpstats-ozon-brand-products`\n- Seller-scoped drill → `mpstats-ozon-seller-products`\n- Single-SKU time-series → `mpstats-ozon-product-trend`\n- Wildberries / other Russian marketplaces → not covered\n\n**Boundary judgment**: Use this skill when the **dimension is a category path** and you want the per-SKU roll-up under it. For cross-category comparisons you must run multiple calls and fuse results at the Agent layer.\n\n## 积分消耗规则\n\n按动态规则计费：消耗积分 = 12。列表为空返回 0\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量积分，必须提醒用户，由用户决定是否继续。\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n---\n*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-category-products\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1786099998259\n}\n\nFile v1.0.5:references/api.md\n\n# MPSTATS Ozon 类目商品 API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/categoryProducts`\n- **请求方式**：POST，Content-Type: application/json\n- **认证方式**：Header `Authorization: <api_key>`，api_key 从环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` 读取（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 请求参数\n\nPOST Body（JSON）。以下字段与工具网关当前登记的「MPSTATS-Ozon-类目商品」入参 schema 一致（同步日期 2026-04-30）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| categoryPath | string | 是 | Ozon 俄语类目全路径，层级用 `/` 分隔，例如 `Одежда/Женская одежда/Футболки и топы женские` |\n| startDate | string | 否 | 统计起始日 `YYYY-MM-DD`；最晚昨日 |\n| endDate | string | 否 | 统计结束日 `YYYY-MM-DD`；最晚昨日 |\n| page | integer | 否 | 页码，从 1 开始 |\n| pageSize | integer | 否 | 每页行数 1-100，默认 100 |\n| sortField | string | 否 | 排序列名（snake_case），如 `sales`、`revenue`、`final_price`、`balance`、`rating` |\n| sortDirection | string | 否 | `asc` / `desc` |\n| currency | string | 否 | 货币代码，默认 `RUB`，如 `USD` |\n| currencyRate | integer | 否 | 自定义汇率（配合非默认货币） |\n| includeFbs | boolean | 否 | 是否纳入 FBS 数据 |\n| filters | array | 否 | 数值筛选条件列表，每项 `{field, op, value, value2?}`，多条件 AND |\n\n### filters 子字段\n\n| 子字段 | 类型 | 必填 | 说明 |\n|--------|------|------|------|\n| field | string | 是 | 列名（snake_case）。常用：`sales`（月销）、`final_price`（售价 RUB）、`rating`（评分 0-5）、`comments`（评论数）、`balance`（库存）、`revenue`（销售额 RUB）、`days_in_stock`、`turnover_days`、`lost_profit`、`category_position`。 |\n| op | string | 是 | `GTE` / `LTE` / `GT` / `LT` / `EQ` / `NOT_EQ` / `BETWEEN` |\n| value | number | 是 | 主值（`BETWEEN` 时为下界） |\n| value2 | number | `BETWEEN` 必填 | 上界（闭区间） |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码，`\"200\"` 成功 |\n| msg | string | 消息；成功为 `ok` |\n| total | integer | 类目下命中商品总数 |\n| products | array | 商品列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品对象字段（39 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_categoryProducts`，同步日期 2026-05-06）。该 schema 与 `productSearch` / `brandProducts` / `sellerProducts` **完全共用**；4 个端点只是查询维度不同，返回的商品卡字段集完全一致。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| brandId | integer | 品牌 ID |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| category | string | 品类路径（俄语，`/` 分隔） |\n| nicheName | string | 赛道路径（俄语） |\n| nicheId | integer | 赛道 ID |\n| country | string | 销售国，Ozon 恒为 `RU` |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| imageUrl | string | 主图 URL |\n| productPageUrl | string | 商品页 URL |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**价格与货币**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价 |\n| minPrice / maxPrice / averagePrice | number | 统计期内最低价 / 最高价 / 均价 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分与评论**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与 FBS**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| balanceFbs | integer | FBS 库存（卖家自发货件数） |\n| frozenStocks | integer | 滞销库存 |\n| warehousesCount | integer | FBO 分仓数 |\n| isFbs | boolean | 是否 FBS 发货 |\n\n**销售与周转**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| daysInSite | integer | 在售天数（统计期，含缺货日） |\n| daysInStock | integer | 有货天数 |\n| turnoverDays | number | 周转天数（越小越快） |\n\n**排名与占比**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| position | integer | 当前查询维度（本端点为类目）内排名 |\n| categoryPosition | integer | 品类内排名 |\n| revenueSharePercent | number | 该 SKU 在当前查询维度的销售额占比，0-100 |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `products` |\n| 401 | 认证失败 | HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 402 | 积分或余额不足 | HTTP 402：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 其他 | 业务异常 | 查看 `errmsg`；常见为 `categoryPath` 非俄语、非全路径、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n    \"sortField\": \"revenue\",\n    \"sortDirection\": \"desc\",\n    \"pageSize\": 100,\n    \"filters\": [\n      {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n      {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n    ]\n  }'\n```\n\n---\n\n## Feedback API\n\n> 该接口与上方工具接口不同，**请勿混用两个基础 URL**。\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-mpstats-ozon-category-products\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Nice niche surface from a Russian path.\"\n}\n```\n\n**字段说明：**\n- `skillName`：使用本 skill 的 YAML `name`\n- `sentiment`：`POSITIVE` / `NEUTRAL` / `NEGATIVE`\n- `category`：`BUG` / `COMPLAINT` / `SUGGESTION` / `OTHER`\n- `content`：用户表达、实际现象、为什么算问题或好评\n\nFile v1.0.5:references/onboarding.md\n\n# 解决认证和积分问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`（workbuddy 宿主加 `--channel workbuddy`）\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `积分/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.5:skill-card.md\n\n## Description:\n\nQueries MPSTATS Ozon category-product data for a full Russian category path, returning SKU-level sales, revenue, price, rating, stock, turnover, lost-sales, ranking, and filtering metrics.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCross-border e-commerce analysts, category researchers, and marketplace operators use this skill to inspect Ozon Russia products within a known Russian category path, compare SKU performance, and find category opportunities. It is data-only and does not provide business advice.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires a LinkFox API key and can use account, phone/SMS, and billing helper flows.\n\nMitigation: Use a scoped LinkFox account where possible, prefer self-service setup for credentials and payments, and avoid sharing phone or payment steps with the agent unless the workflow requires it.\n\nRisk: Full marketplace API responses are written locally and may contain commercial product, seller, ranking, and performance data.\n\nMitigation: Run the skill only in workspaces where saved marketplace data is acceptable, and review or remove saved linkfox session data according to local retention needs.\n\nRisk: Environment variables can override LinkFox endpoint URLs.\n\nMitigation: Avoid untrusted LINKFOX_* endpoint overrides and review the configured gateway URLs before using the skill with credentials.\n\nRisk: The skill may send feedback to LinkFox automatically when it detects quality issues or user sentiment.\n\nMitigation: Review the feedback behavior before installation and avoid including sensitive user or business details in feedback content.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-category-products)\n- [API reference](references/api.md)\n- [Authentication and billing onboarding](references/onboarding.md)\n- [LinkFox Skills](https://skill.linkfox.com/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON parameters, shell commands, API response summaries, and saved JSON response files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Full API responses are saved under the workspace linkfox session data directory; small responses may also be printed inline, while larger responses are summarized.]\n\n## Skill Version(s):\n\n1.0.5 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.4: 5 files, 15270 bytes\n\nFiles: references/api.md (6805b), scripts/mpstats_ozon_category_products.py (12762b), skill-card.md (2781b), SKILL.md (10377b), _meta.json (157b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-category-products\ndescription: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n---\n\n# MPSTATS Ozon Category Products\n\nThis skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.\n\n## Core Concepts\n\n**Russian full-path requirement**: `categoryPath` must be the **full Russian category path** as used on the Ozon platform, with levels separated by `/` — for example, `Одежда/Женская одежда/Футболки и топы женские`. A partial path, English translation, or root-only value will generally return empty results.\n\n**Where to find the path**: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's `category` field from `mpstats-ozon-product-detail` / `mpstats-ozon-product-search`.\n\n**Filters are AND-combined**: `filters` carries multi-field numeric conditions, each `{field, op, value, value2?}`. See the Filter Reference.\n\n**Currency**: Default `RUB`. Override with `currency` (USD, EUR, CNY, ...) and optionally `currencyRate`.\n\n**FBO / FBS**: `includeFbs: true` folds FBS into stock / sales numbers; `false` keeps FBO-only.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| categoryPath | string | yes | Full Russian category path separated by `/` |\n| startDate | string | no | Stats window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Stats window end, `YYYY-MM-DD`; latest = yesterday |\n| page | integer | no | Page number, starts at 1 |\n| pageSize | integer | no | Rows per page, 1-100, default 100 |\n| sortField | string | no | snake_case column: `sales`, `revenue`, `final_price`, `balance`, `rating`, ... |\n| sortDirection | string | no | `asc` / `desc` |\n| currency | string | no | Currency code, default `RUB` |\n| currencyRate | integer | no | Custom rate when non-default currency is used |\n| includeFbs | boolean | no | Include FBS data |\n| filters | array | no | Numeric filter list (see below) |\n\n## Filter Reference\n\nEach `filters` entry: `{\"field\": \"<snake_case>\", \"op\": \"<OP>\", \"value\": <num>, \"value2\": <num?>}`.\n\n**Common fields**: `sales` (monthly units), `final_price` (price RUB), `rating` (0-5), `comments` (reviews), `balance` (stock), `revenue` (amount RUB), `days_in_stock`, `turnover_days`, `lost_profit`, `category_position`.\n\n**Operators**: `GTE`, `LTE`, `GT`, `LT`, `EQ`, `NOT_EQ`, `BETWEEN` (requires `value2`).\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/categoryProducts`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_category_products.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-category-products-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用以下措施来处理：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n### 措施\n- 优先采用skill内的 onboarding.md 引导解决问题。\n- 如找不到 onboarding.md 文件，则加载 /linkfox-onboarding 这个skill并根据它的引导来处理。如未安装请先安装：\n    - 下载 https://agent-files.linkfox.com/skills/linkfox-onboarding/release.zip，解压后安装这个skill。如需用户授权才可下载，要询问用户获得授权，你不能自己放弃下载。\n- 兜底措施：仅当前面两个措施经过所有努力都走不通时，才提示用户依据 https://skill.linkfox.com/linkfoxskills/guide.htm 指引获取API Key，或去 https://os.linkfox.com/ 补充积分。\n\n## Usage Examples\n\n**1. Women's T-shirts — top by sales**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"sortField\": \"sales\",\n  \"sortDirection\": \"desc\",\n  \"pageSize\": 100\n}\n```\n\n**2. Blue-ocean hunt (sales ≥ 50, rating ≥ 4.5)**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"filters\": [\n    {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n    {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n  ],\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**3. Mid-price + strong turnover**\n```json\n{\n  \"categoryPath\": \"Электроника/Наушники\",\n  \"filters\": [\n    {\"field\": \"final_price\", \"op\": \"BETWEEN\", \"value\": 1500, \"value2\": 5000},\n    {\"field\": \"turnover_days\", \"op\": \"LTE\", \"value\": 30}\n  ]\n}\n```\n\n**4. USD-converted ranking for cross-market comparison**\n```json\n{\n  \"categoryPath\": \"Электроника/Смартфоны\",\n  \"currency\": \"USD\",\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**5. High lost-profit category scan**\n```json\n{\n  \"categoryPath\": \"Одежда/Мужская одежда/Куртки мужские\",\n  \"filters\": [{\"field\": \"lost_profit\", \"op\": \"GTE\", \"value\": 500000}],\n  \"sortField\": \"lost_profit\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n## Display Rules\n\n1. **Compact category table** — key columns: `productId`, `title`, `brand`, `sellerName`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `balance`, `position`, `revenueSharePercent`.\n2. **Revenue share = within this category query** — 0-100%; clarify the basis when presenting.\n3. **Russian titles / brands** — preserve original; translate on demand.\n4. **Currency labeling** — state the currency; if converted, note `\"已按 USD 换算\"`.\n5. **Pagination** — report `total`; for large categories (tens of thousands of SKUs) suggest tightening filters rather than naively paging through.\n6. **Category position** — lower is better; mention this when showing `categoryPosition`.\n\n## Important Limitations\n\n- **Russian full path only** — partial or translated paths return empty.\n- **Path discovery is upstream** — this endpoint does not browse the category tree; resolve the path via product detail / search first.\n- **Page cap** — max 100 rows per page.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **No business advice** — data-only view.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Category-scoped Ozon product metrics:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Bestsellers in category X on Ozon\" | Category bestseller mining |\n| \"Find blue-ocean SKUs in niche Y\" | Blue-ocean niche scan |\n| \"Show mid-price, fast-turnover items in this category\" | Multi-criteria niche filter |\n| \"Which brands dominate this Ozon category\" | Brand-landscape pre-cut (then group by brand client-side) |\n| \"Huge lost-profit opportunities in category X\" | Out-of-stock pain hunting |\n\n**Not applicable** — Needs beyond category drill-down:\n\n- Unknown category path → use `mpstats-ozon-product-search` or product detail to discover the exact Russian path\n- Brand-scoped drill → `mpstats-ozon-brand-products`\n- Seller-scoped drill → `mpstats-ozon-seller-products`\n- Single-SKU time-series → `mpstats-ozon-product-trend`\n- Wildberries / other Russian marketplaces → not covered\n\n**Boundary judgment**: Use this skill when the **dimension is a category path** and you want the per-SKU roll-up under it. For cross-category comparisons you must run multiple calls and fuse results at the Agent layer.\n\n## 积分消耗规则\n\n按动态规则计费：消耗积分 = 12。列表为空返回 0\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量积分，必须提醒用户，由用户决定是否继续。\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n---\n*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-category-products\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783944829610\n}\n\nFile v1.0.4:references/api.md\n\n# MPSTATS Ozon 类目商品 API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/categoryProducts`\n- **请求方式**：POST，Content-Type: application/json\n- **认证方式**：Header `Authorization: <api_key>`，api_key 从环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` 读取（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 请求参数\n\nPOST Body（JSON）。以下字段与工具网关当前登记的「MPSTATS-Ozon-类目商品」入参 schema 一致（同步日期 2026-04-30）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| categoryPath | string | 是 | Ozon 俄语类目全路径，层级用 `/` 分隔，例如 `Одежда/Женская одежда/Футболки и топы женские` |\n| startDate | string | 否 | 统计起始日 `YYYY-MM-DD`；最晚昨日 |\n| endDate | string | 否 | 统计结束日 `YYYY-MM-DD`；最晚昨日 |\n| page | integer | 否 | 页码，从 1 开始 |\n| pageSize | integer | 否 | 每页行数 1-100，默认 100 |\n| sortField | string | 否 | 排序列名（snake_case），如 `sales`、`revenue`、`final_price`、`balance`、`rating` |\n| sortDirection | string | 否 | `asc` / `desc` |\n| currency | string | 否 | 货币代码，默认 `RUB`，如 `USD` |\n| currencyRate | integer | 否 | 自定义汇率（配合非默认货币） |\n| includeFbs | boolean | 否 | 是否纳入 FBS 数据 |\n| filters | array | 否 | 数值筛选条件列表，每项 `{field, op, value, value2?}`，多条件 AND |\n\n### filters 子字段\n\n| 子字段 | 类型 | 必填 | 说明 |\n|--------|------|------|------|\n| field | string | 是 | 列名（snake_case）。常用：`sales`（月销）、`final_price`（售价 RUB）、`rating`（评分 0-5）、`comments`（评论数）、`balance`（库存）、`revenue`（销售额 RUB）、`days_in_stock`、`turnover_days`、`lost_profit`、`category_position`。 |\n| op | string | 是 | `GTE` / `LTE` / `GT` / `LT` / `EQ` / `NOT_EQ` / `BETWEEN` |\n| value | number | 是 | 主值（`BETWEEN` 时为下界） |\n| value2 | number | `BETWEEN` 必填 | 上界（闭区间） |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码，`\"200\"` 成功 |\n| msg | string | 消息；成功为 `ok` |\n| total | integer | 类目下命中商品总数 |\n| products | array | 商品列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品对象字段（39 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_categoryProducts`，同步日期 2026-05-06）。该 schema 与 `productSearch` / `brandProducts` / `sellerProducts` **完全共用**；4 个端点只是查询维度不同，返回的商品卡字段集完全一致。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| brandId | integer | 品牌 ID |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| category | string | 品类路径（俄语，`/` 分隔） |\n| nicheName | string | 赛道路径（俄语） |\n| nicheId | integer | 赛道 ID |\n| country | string | 销售国，Ozon 恒为 `RU` |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| imageUrl | string | 主图 URL |\n| productPageUrl | string | 商品页 URL |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**价格与货币**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价 |\n| minPrice / maxPrice / averagePrice | number | 统计期内最低价 / 最高价 / 均价 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分与评论**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与 FBS**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| balanceFbs | integer | FBS 库存（卖家自发货件数） |\n| frozenStocks | integer | 滞销库存 |\n| warehousesCount | integer | FBO 分仓数 |\n| isFbs | boolean | 是否 FBS 发货 |\n\n**销售与周转**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| daysInSite | integer | 在售天数（统计期，含缺货日） |\n| daysInStock | integer | 有货天数 |\n| turnoverDays | number | 周转天数（越小越快） |\n\n**排名与占比**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| position | integer | 当前查询维度（本端点为类目）内排名 |\n| categoryPosition | integer | 品类内排名 |\n| revenueSharePercent | number | 该 SKU 在当前查询维度的销售额占比，0-100 |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `products` |\n| 401 | 认证失败 | HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 402 | 积分或余额不足 | HTTP 402：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 其他 | 业务异常 | 查看 `errmsg`；常见为 `categoryPath` 非俄语、非全路径、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n    \"sortField\": \"revenue\",\n    \"sortDirection\": \"desc\",\n    \"pageSize\": 100,\n    \"filters\": [\n      {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n      {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n    ]\n  }'\n```\n\n---\n\n## Feedback API\n\n> 该接口与上方工具接口不同，**请勿混用两个基础 URL**。\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-mpstats-ozon-category-products\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Nice niche surface from a Russian path.\"\n}\n```\n\n**字段说明：**\n- `skillName`：使用本 skill 的 YAML `name`\n- `sentiment`：`POSITIVE` / `NEUTRAL` / `NEGATIVE`\n- `category`：`BUG` / `COMPLAINT` / `SUGGESTION` / `OTHER`\n- `content`：用户表达、实际现象、为什么算问题或好评\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nThis skill queries LinkFox MPSTATS for Ozon Russia products under a full Russian category path and returns SKU-level sales, revenue, pricing, rating, inventory, turnover, and lost-sales metrics for category analysis. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal marketplace analysts and ecommerce operators use this skill to inspect Ozon category product performance, identify category bestsellers, scan blue-ocean niches, and compare brand or seller presence within a specific Russian category path. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires a LinkFox API key and sends category-query parameters to the LinkFox gateway. <br>\nMitigation: Use an appropriately scoped API key, avoid submitting sensitive category research when that is not acceptable, and review the configured LinkFox gateway before running the script. <br>\nRisk: Full Ozon analytics responses are stored locally and cached by default, which may retain commercially sensitive query results. <br>\nMitigation: Run the skill from an approved writable workspace, clear saved LinkFox output when no longer needed, and use --no-cache for sensitive queries. <br>\nRisk: The artifact includes automatic feedback behavior that can submit observations about skill behavior to LinkFox. <br>\nMitigation: Review or disable feedback submission behavior before installation if automatic external feedback is not acceptable for the deployment environment. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-category-products) <br>\n- [MPSTATS Ozon Category Products API Reference](references/api.md) <br>\n- [LinkFox Skill Guide](https://skill.linkfox.com/linkfoxskills/guide.htm) <br>\n- [LinkFox Skill Catalog](https://skill.linkfox.com/) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, JSON, shell commands, guidance] <br>\n**Output Format:** [JSON response files with stdout summaries or full inline JSON for small responses] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires a full Russian Ozon category path and LinkFox API credentials; page size is capped at 100 and default local cache TTL is 24 hours.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.3: 5 files, 14535 bytes\n\nFiles: references/api.md (6646b), scripts/mpstats_ozon_category_products.py (12855b), skill-card.md (2704b), SKILL.md (9050b), _meta.json (157b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-category-products\ndescription: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n---\n\n# MPSTATS Ozon Category Products\n\nThis skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.\n\n## Core Concepts\n\n**Russian full-path requirement**: `categoryPath` must be the **full Russian category path** as used on the Ozon platform, with levels separated by `/` — for example, `Одежда/Женская одежда/Футболки и топы женские`. A partial path, English translation, or root-only value will generally return empty results.\n\n**Where to find the path**: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's `category` field from `mpstats-ozon-product-detail` / `mpstats-ozon-product-search`.\n\n**Filters are AND-combined**: `filters` carries multi-field numeric conditions, each `{field, op, value, value2?}`. See the Filter Reference.\n\n**Currency**: Default `RUB`. Override with `currency` (USD, EUR, CNY, ...) and optionally `currencyRate`.\n\n**FBO / FBS**: `includeFbs: true` folds FBS into stock / sales numbers; `false` keeps FBO-only.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| categoryPath | string | yes | Full Russian category path separated by `/` |\n| startDate | string | no | Stats window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Stats window end, `YYYY-MM-DD`; latest = yesterday |\n| page | integer | no | Page number, starts at 1 |\n| pageSize | integer | no | Rows per page, 1-100, default 100 |\n| sortField | string | no | snake_case column: `sales`, `revenue`, `final_price`, `balance`, `rating`, ... |\n| sortDirection | string | no | `asc` / `desc` |\n| currency | string | no | Currency code, default `RUB` |\n| currencyRate | integer | no | Custom rate when non-default currency is used |\n| includeFbs | boolean | no | Include FBS data |\n| filters | array | no | Numeric filter list (see below) |\n\n## Filter Reference\n\nEach `filters` entry: `{\"field\": \"<snake_case>\", \"op\": \"<OP>\", \"value\": <num>, \"value2\": <num?>}`.\n\n**Common fields**: `sales` (monthly units), `final_price` (price RUB), `rating` (0-5), `comments` (reviews), `balance` (stock), `revenue` (amount RUB), `days_in_stock`, `turnover_days`, `lost_profit`, `category_position`.\n\n**Operators**: `GTE`, `LTE`, `GT`, `LT`, `EQ`, `NOT_EQ`, `BETWEEN` (requires `value2`).\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/categoryProducts`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_category_products.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-category-products-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n## Usage Examples\n\n**1. Women's T-shirts — top by sales**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"sortField\": \"sales\",\n  \"sortDirection\": \"desc\",\n  \"pageSize\": 100\n}\n```\n\n**2. Blue-ocean hunt (sales ≥ 50, rating ≥ 4.5)**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"filters\": [\n    {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n    {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n  ],\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**3. Mid-price + strong turnover**\n```json\n{\n  \"categoryPath\": \"Электроника/Наушники\",\n  \"filters\": [\n    {\"field\": \"final_price\", \"op\": \"BETWEEN\", \"value\": 1500, \"value2\": 5000},\n    {\"field\": \"turnover_days\", \"op\": \"LTE\", \"value\": 30}\n  ]\n}\n```\n\n**4. USD-converted ranking for cross-market comparison**\n```json\n{\n  \"categoryPath\": \"Электроника/Смартфоны\",\n  \"currency\": \"USD\",\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**5. High lost-profit category scan**\n```json\n{\n  \"categoryPath\": \"Одежда/Мужская одежда/Куртки мужские\",\n  \"filters\": [{\"field\": \"lost_profit\", \"op\": \"GTE\", \"value\": 500000}],\n  \"sortField\": \"lost_profit\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n## Display Rules\n\n1. **Compact category table** — key columns: `productId`, `title`, `brand`, `sellerName`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `balance`, `position`, `revenueSharePercent`.\n2. **Revenue share = within this category query** — 0-100%; clarify the basis when presenting.\n3. **Russian titles / brands** — preserve original; translate on demand.\n4. **Currency labeling** — state the currency; if converted, note `\"已按 USD 换算\"`.\n5. **Pagination** — report `total`; for large categories (tens of thousands of SKUs) suggest tightening filters rather than naively paging through.\n6. **Category position** — lower is better; mention this when showing `categoryPosition`.\n\n## Important Limitations\n\n- **Russian full path only** — partial or translated paths return empty.\n- **Path discovery is upstream** — this endpoint does not browse the category tree; resolve the path via product detail / search first.\n- **Page cap** — max 100 rows per page.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **No business advice** — data-only view.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Category-scoped Ozon product metrics:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Bestsellers in category X on Ozon\" | Category bestseller mining |\n| \"Find blue-ocean SKUs in niche Y\" | Blue-ocean niche scan |\n| \"Show mid-price, fast-turnover items in this category\" | Multi-criteria niche filter |\n| \"Which brands dominate this Ozon category\" | Brand-landscape pre-cut (then group by brand client-side) |\n| \"Huge lost-profit opportunities in category X\" | Out-of-stock pain hunting |\n\n**Not applicable** — Needs beyond category drill-down:\n\n- Unknown category path → use `mpstats-ozon-product-search` or product detail to discover the exact Russian path\n- Brand-scoped drill → `mpstats-ozon-brand-products`\n- Seller-scoped drill → `mpstats-ozon-seller-products`\n- Single-SKU time-series → `mpstats-ozon-product-trend`\n- Wildberries / other Russian marketplaces → not covered\n\n**Boundary judgment**: Use this skill when the **dimension is a category path** and you want the per-SKU roll-up under it. For cross-category comparisons you must run multiple calls and fuse results at the Agent layer.\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n---\n*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-category-products\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1783336957072\n}\n\nFile v1.0.3:references/api.md\n\n# MPSTATS Ozon 类目商品 API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/categoryProducts`\n- **请求方式**：POST，Content-Type: application/json\n- **认证方式**：Header `Authorization: <api_key>`，api_key 从环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` 读取（如未配置，提示用户前往 https://skill.linkfox.com/linkfoxskills/guide.htm 申请）\n\n## 请求参数\n\nPOST Body（JSON）。以下字段与工具网关当前登记的「MPSTATS-Ozon-类目商品」入参 schema 一致（同步日期 2026-04-30）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| categoryPath | string | 是 | Ozon 俄语类目全路径，层级用 `/` 分隔，例如 `Одежда/Женская одежда/Футболки и топы женские` |\n| startDate | string | 否 | 统计起始日 `YYYY-MM-DD`；最晚昨日 |\n| endDate | string | 否 | 统计结束日 `YYYY-MM-DD`；最晚昨日 |\n| page | integer | 否 | 页码，从 1 开始 |\n| pageSize | integer | 否 | 每页行数 1-100，默认 100 |\n| sortField | string | 否 | 排序列名（snake_case），如 `sales`、`revenue`、`final_price`、`balance`、`rating` |\n| sortDirection | string | 否 | `asc` / `desc` |\n| currency | string | 否 | 货币代码，默认 `RUB`，如 `USD` |\n| currencyRate | integer | 否 | 自定义汇率（配合非默认货币） |\n| includeFbs | boolean | 否 | 是否纳入 FBS 数据 |\n| filters | array | 否 | 数值筛选条件列表，每项 `{field, op, value, value2?}`，多条件 AND |\n\n### filters 子字段\n\n| 子字段 | 类型 | 必填 | 说明 |\n|--------|------|------|------|\n| field | string | 是 | 列名（snake_case）。常用：`sales`（月销）、`final_price`（售价 RUB）、`rating`（评分 0-5）、`comments`（评论数）、`balance`（库存）、`revenue`（销售额 RUB）、`days_in_stock`、`turnover_days`、`lost_profit`、`category_position`。 |\n| op | string | 是 | `GTE` / `LTE` / `GT` / `LT` / `EQ` / `NOT_EQ` / `BETWEEN` |\n| value | number | 是 | 主值（`BETWEEN` 时为下界） |\n| value2 | number | `BETWEEN` 必填 | 上界（闭区间） |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码，`\"200\"` 成功 |\n| msg | string | 消息；成功为 `ok` |\n| total | integer | 类目下命中商品总数 |\n| products | array | 商品列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品对象字段（39 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_categoryProducts`，同步日期 2026-05-06）。该 schema 与 `productSearch` / `brandProducts` / `sellerProducts` **完全共用**；4 个端点只是查询维度不同，返回的商品卡字段集完全一致。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| brandId | integer | 品牌 ID |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| category | string | 品类路径（俄语，`/` 分隔） |\n| nicheName | string | 赛道路径（俄语） |\n| nicheId | integer | 赛道 ID |\n| country | string | 销售国，Ozon 恒为 `RU` |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| imageUrl | string | 主图 URL |\n| productPageUrl | string | 商品页 URL |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**价格与货币**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价 |\n| minPrice / maxPrice / averagePrice | number | 统计期内最低价 / 最高价 / 均价 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分与评论**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与 FBS**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| balanceFbs | integer | FBS 库存（卖家自发货件数） |\n| frozenStocks | integer | 滞销库存 |\n| warehousesCount | integer | FBO 分仓数 |\n| isFbs | boolean | 是否 FBS 发货 |\n\n**销售与周转**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| daysInSite | integer | 在售天数（统计期，含缺货日） |\n| daysInStock | integer | 有货天数 |\n| turnoverDays | number | 周转天数（越小越快） |\n\n**排名与占比**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| position | integer | 当前查询维度（本端点为类目）内排名 |\n| categoryPosition | integer | 品类内排名 |\n| revenueSharePercent | number | 该 SKU 在当前查询维度的销售额占比，0-100 |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `products` |\n| 401 | 认证失败 | 检查 `Authorization` |\n| 其他 | 业务异常 | 查看 `errmsg`；常见为 `categoryPath` 非俄语、非全路径、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n    \"sortField\": \"revenue\",\n    \"sortDirection\": \"desc\",\n    \"pageSize\": 100,\n    \"filters\": [\n      {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n      {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n    ]\n  }'\n```\n\n---\n\n## Feedback API\n\n> 该接口与上方工具接口不同，**请勿混用两个基础 URL**。\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-mpstats-ozon-category-products\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Nice niche surface from a Russian path.\"\n}\n```\n\n**字段说明：**\n- `skillName`：使用本 skill 的 YAML `name`\n- `sentiment`：`POSITIVE` / `NEUTRAL` / `NEGATIVE`\n- `category`：`BUG` / `COMPLAINT` / `SUGGESTION` / `OTHER`\n- `content`：用户表达、实际现象、为什么算问题或好评\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nThis skill queries LinkFox/MPSTATS for per-SKU Ozon Russia category metrics, including sales, revenue, price, rating, inventory, turnover, lost profit, sorting, filters, and currency conversion. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal marketplace operators, analysts, and cross-border e-commerce teams use this skill to inspect all products under a full Russian Ozon category path for bestseller mining, blue-ocean discovery, category ranking analysis, and brand landscape review. The skill is data-only and does not provide business advice. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill makes LinkFox/MPSTATS network calls and reads LinkFox API key environment variables. <br>\nMitigation: Verify the gateway URL and API key handling before use, and run the skill only in environments approved for LinkFox/MPSTATS access. <br>\nRisk: The skill writes complete analytics responses and cache files to local workspace paths. <br>\nMitigation: Run it in a workspace where retaining marketplace analytics data is acceptable, and avoid shared or source-controlled directories unless those files are intended to be kept. <br>\nRisk: The skill includes automatic feedback API behavior that can send telemetry-like reports. <br>\nMitigation: Review whether the feedback flow is acceptable under organizational policy before installation or production use. <br>\n\n\n## Reference(s): <br>\n- [MPSTATS Ozon category products API reference](references/api.md) <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-category-products) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, JSON, Files, API Calls, Guidance] <br>\n**Output Format:** [Markdown guidance with JSON parameters, shell command examples, stdout summaries, and saved JSON response files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires a full Russian Ozon category path; writes full API responses under a local linkfox session directory, prints small responses inline, summarizes larger responses, and uses a 24-hour local cache by default.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.2: 4 files, 13117 bytes\n\nFiles: references/api.md (6646b), scripts/mpstats_ozon_category_products.py (12855b), SKILL.md (9050b), _meta.json (157b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-category-products\ndescription: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n---\n\n# MPSTATS Ozon Category Products\n\nThis skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.\n\n## Core Concepts\n\n**Russian full-path requirement**: `categoryPath` must be the **full Russian category path** as used on the Ozon platform, with levels separated by `/` — for example, `Одежда/Женская одежда/Футболки и топы женские`. A partial path, English translation, or root-only value will generally return empty results.\n\n**Where to find the path**: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's `category` field from `mpstats-ozon-product-detail` / `mpstats-ozon-product-search`.\n\n**Filters are AND-combined**: `filters` carries multi-field numeric conditions, each `{field, op, value, value2?}`. See the Filter Reference.\n\n**Currency**: Default `RUB`. Override with `currency` (USD, EUR, CNY, ...) and optionally `currencyRate`.\n\n**FBO / FBS**: `includeFbs: true` folds FBS into stock / sales numbers; `false` keeps FBO-only.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| categoryPath | string | yes | Full Russian category path separated by `/` |\n| startDate | string | no | Stats window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Stats window end, `YYYY-MM-DD`; latest = yesterday |\n| page | integer | no | Page number, starts at 1 |\n| pageSize | integer | no | Rows per page, 1-100, default 100 |\n| sortField | string | no | snake_case column: `sales`, `revenue`, `final_price`, `balance`, `rating`, ... |\n| sortDirection | string | no | `asc` / `desc` |\n| currency | string | no | Currency code, default `RUB` |\n| currencyRate | integer | no | Custom rate when non-default currency is used |\n| includeFbs | boolean | no | Include FBS data |\n| filters | array | no | Numeric filter list (see below) |\n\n## Filter Reference\n\nEach `filters` entry: `{\"field\": \"<snake_case>\", \"op\": \"<OP>\", \"value\": <num>, \"value2\": <num?>}`.\n\n**Common fields**: `sales` (monthly units), `final_price` (price RUB), `rating` (0-5), `comments` (reviews), `balance` (stock), `revenue` (amount RUB), `days_in_stock`, `turnover_days`, `lost_profit`, `category_position`.\n\n**Operators**: `GTE`, `LTE`, `GT`, `LT`, `EQ`, `NOT_EQ`, `BETWEEN` (requires `value2`).\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/categoryProducts`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_category_products.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-category-products-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n## Usage Examples\n\n**1. Women's T-shirts — top by sales**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"sortField\": \"sales\",\n  \"sortDirection\": \"desc\",\n  \"pageSize\": 100\n}\n```\n\n**2. Blue-ocean hunt (sales ≥ 50, rating ≥ 4.5)**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"filters\": [\n    {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n    {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n  ],\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**3. Mid-price + strong turnover**\n```json\n{\n  \"categoryPath\": \"Электроника/Наушники\",\n  \"filters\": [\n    {\"field\": \"final_price\", \"op\": \"BETWEEN\", \"value\": 1500, \"value2\": 5000},\n    {\"field\": \"turnover_days\", \"op\": \"LTE\", \"value\": 30}\n  ]\n}\n```\n\n**4. USD-converted ranking for cross-market comparison**\n```json\n{\n  \"categoryPath\": \"Электроника/Смартфоны\",\n  \"currency\": \"USD\",\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**5. High lost-profit category scan**\n```json\n{\n  \"categoryPath\": \"Одежда/Мужская одежда/Куртки мужские\",\n  \"filters\": [{\"field\": \"lost_profit\", \"op\": \"GTE\", \"value\": 500000}],\n  \"sortField\": \"lost_profit\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n## Display Rules\n\n1. **Compact category table** — key columns: `productId`, `title`, `brand`, `sellerName`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `balance`, `position`, `revenueSharePercent`.\n2. **Revenue share = within this category query** — 0-100%; clarify the basis when presenting.\n3. **Russian titles / brands** — preserve original; translate on demand.\n4. **Currency labeling** — state the currency; if converted, note `\"已按 USD 换算\"`.\n5. **Pagination** — report `total`; for large categories (tens of thousands of SKUs) suggest tightening filters rather than naively paging through.\n6. **Category position** — lower is better; mention this when showing `categoryPosition`.\n\n## Important Limitations\n\n- **Russian full path only** — partial or translated paths return empty.\n- **Path discovery is upstream** — this endpoint does not browse the category tree; resolve the path via product detail / search first.\n- **Page cap** — max 100 rows per page.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **No business advice** — data-only view.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Category-scoped Ozon product metrics:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Bestsellers in category X on Ozon\" | Category bestseller mining |\n| \"Find blue-ocean SKUs in niche Y\" | Blue-ocean niche scan |\n| \"Show mid-price, fast-turnover items in this category\" | Multi-criteria niche filter |\n| \"Which brands dominate this Ozon category\" | Brand-landscape pre-cut (then group by brand client-side) |\n| \"Huge lost-profit opportunities in category X\" | Out-of-stock pain hunting |\n\n**Not applicable** — Needs beyond category drill-down:\n\n- Unknown category path → use `mpstats-ozon-product-search` or product detail to discover the exact Russian path\n- Brand-scoped drill → `mpstats-ozon-brand-products`\n- Seller-scoped drill → `mpstats-ozon-seller-products`\n- Single-SKU time-series → `mpstats-ozon-product-trend`\n- Wildberries / other Russian marketplaces → not covered\n\n**Boundary judgment**: Use this skill when the **dimension is a category path** and you want the per-SKU roll-up under it. For cross-category comparisons you must run multiple calls and fuse results at the Agent layer.\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n---\n*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-category-products\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1783066873854\n}\n\nFile v1.0.2:references/api.md\n\n# MPSTATS Ozon 类目商品 API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/categoryProducts`\n- **请求方式**：POST，Content-Type: application/json\n- **认证方式**：Header `Authorization: <api_key>`，api_key 从环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` 读取（如未配置，提示用户前往 https://skill.linkfox.com/linkfoxskills/guide.htm 申请）\n\n## 请求参数\n\nPOST Body（JSON）。以下字段与工具网关当前登记的「MPSTATS-Ozon-类目商品」入参 schema 一致（同步日期 2026-04-30）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| categoryPath | string | 是 | Ozon 俄语类目全路径，层级用 `/` 分隔，例如 `Одежда/Женская одежда/Футболки и топы женские` |\n| startDate | string | 否 | 统计起始日 `YYYY-MM-DD`；最晚昨日 |\n| endDate | string | 否 | 统计结束日 `YYYY-MM-DD`；最晚昨日 |\n| page | integer | 否 | 页码，从 1 开始 |\n| pageSize | integer | 否 | 每页行数 1-100，默认 100 |\n| sortField | string | 否 | 排序列名（snake_case），如 `sales`、`revenue`、`final_price`、`balance`、`rating` |\n| sortDirection | string | 否 | `asc` / `desc` |\n| currency | string | 否 | 货币代码，默认 `RUB`，如 `USD` |\n| currencyRate | integer | 否 | 自定义汇率（配合非默认货币） |\n| includeFbs | boolean | 否 | 是否纳入 FBS 数据 |\n| filters | array | 否 | 数值筛选条件列表，每项 `{field, op, value, value2?}`，多条件 AND |\n\n### filters 子字段\n\n| 子字段 | 类型 | 必填 | 说明 |\n|--------|------|------|------|\n| field | string | 是 | 列名（snake_case）。常用：`sales`（月销）、`final_price`（售价 RUB）、`rating`（评分 0-5）、`comments`（评论数）、`balance`（库存）、`revenue`（销售额 RUB）、`days_in_stock`、`turnover_days`、`lost_profit`、`category_position`。 |\n| op | string | 是 | `GTE` / `LTE` / `GT` / `LT` / `EQ` / `NOT_EQ` / `BETWEEN` |\n| value | number | 是 | 主值（`BETWEEN` 时为下界） |\n| value2 | number | `BETWEEN` 必填 | 上界（闭区间） |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码，`\"200\"` 成功 |\n| msg | string | 消息；成功为 `ok` |\n| total | integer | 类目下命中商品总数 |\n| products | array | 商品列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品对象字段（39 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_categoryProducts`，同步日期 2026-05-06）。该 schema 与 `productSearch` / `brandProducts` / `sellerProducts` **完全共用**；4 个端点只是查询维度不同，返回的商品卡字段集完全一致。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| brandId | integer | 品牌 ID |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| category | string | 品类路径（俄语，`/` 分隔） |\n| nicheName | string | 赛道路径（俄语） |\n| nicheId | integer | 赛道 ID |\n| country | string | 销售国，Ozon 恒为 `RU` |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| imageUrl | string | 主图 URL |\n| productPageUrl | string | 商品页 URL |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**价格与货币**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价 |\n| minPrice / maxPrice / averagePrice | number | 统计期内最低价 / 最高价 / 均价 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分与评论**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与 FBS**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| balanceFbs | integer | FBS 库存（卖家自发货件数） |\n| frozenStocks | integer | 滞销库存 |\n| warehousesCount | integer | FBO 分仓数 |\n| isFbs | boolean | 是否 FBS 发货 |\n\n**销售与周转**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| daysInSite | integer | 在售天数（统计期，含缺货日） |\n| daysInStock | integer | 有货天数 |\n| turnoverDays | number | 周转天数（越小越快） |\n\n**排名与占比**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| position | integer | 当前查询维度（本端点为类目）内排名 |\n| categoryPosition | integer | 品类内排名 |\n| revenueSharePercent | number | 该 SKU 在当前查询维度的销售额占比，0-100 |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `products` |\n| 401 | 认证失败 | 检查 `Authorization` |\n| 其他 | 业务异常 | 查看 `errmsg`；常见为 `categoryPath` 非俄语、非全路径、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n    \"sortField\": \"revenue\",\n    \"sortDirection\": \"desc\",\n    \"pageSize\": 100,\n    \"filters\": [\n      {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n      {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n    ]\n  }'\n```\n\n---\n\n## Feedback API\n\n> 该接口与上方工具接口不同，**请勿混用两个基础 URL**。\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-mpstats-ozon-category-products\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Nice niche surface from a Russian path.\"\n}\n```\n\n**字段说明：**\n- `skillName`：使用本 skill 的 YAML `name`\n- `sentiment`：`POSITIVE` / `NEUTRAL` / `NEGATIVE`\n- `category`：`BUG` / `COMPLAINT` / `SUGGESTION` / `OTHER`\n- `content`：用户表达、实际现象、为什么算问题或好评\n\nArchive v1.0.1: 5 files, 14469 bytes\n\nFiles: references/api.md (6647b), scripts/mpstats_ozon_category_products.py (12857b), skill-card.md (2566b), SKILL.md (9050b), _meta.json (157b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-category-products\ndescription: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n---\n\n# MPSTATS Ozon Category Products\n\nThis skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.\n\n## Core Concepts\n\n**Russian full-path requirement**: `categoryPath` must be the **full Russian category path** as used on the Ozon platform, with levels separated by `/` — for example, `Одежда/Женская одежда/Футболки и топы женские`. A partial path, English translation, or root-only value will generally return empty results.\n\n**Where to find the path**: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's `category` field from `mpstats-ozon-product-detail` / `mpstats-ozon-product-search`.\n\n**Filters are AND-combined**: `filters` carries multi-field numeric conditions, each `{field, op, value, value2?}`. See the Filter Reference.\n\n**Currency**: Default `RUB`. Override with `currency` (USD, EUR, CNY, ...) and optionally `currencyRate`.\n\n**FBO / FBS**: `includeFbs: true` folds FBS into stock / sales numbers; `false` keeps FBO-only.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| categoryPath | string | yes | Full Russian category path separated by `/` |\n| startDate | string | no | Stats window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Stats window end, `YYYY-MM-DD`; latest = yesterday |\n| page | integer | no | Page number, starts at 1 |\n| pageSize | integer | no | Rows per page, 1-100, default 100 |\n| sortField | string | no | snake_case column: `sales`, `revenue`, `final_price`, `balance`, `rating`, ... |\n| sortDirection | string | no | `asc` / `desc` |\n| currency | string | no | Currency code, default `RUB` |\n| currencyRate | integer | no | Custom rate when non-default currency is used |\n| includeFbs | boolean | no | Include FBS data |\n| filters | array | no | Numeric filter list (see below) |\n\n## Filter Reference\n\nEach `filters` entry: `{\"field\": \"<snake_case>\", \"op\": \"<OP>\", \"value\": <num>, \"value2\": <num?>}`.\n\n**Common fields**: `sales` (monthly units), `final_price` (price RUB), `rating` (0-5), `comments` (reviews), `balance` (stock), `revenue` (amount RUB), `days_in_stock`, `turnover_days`, `lost_profit`, `category_position`.\n\n**Operators**: `GTE`, `LTE`, `GT`, `LT`, `EQ`, `NOT_EQ`, `BETWEEN` (requires `value2`).\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/categoryProducts`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_category_products.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-category-products-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n## Usage Examples\n\n**1. Women's T-shirts — top by sales**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"sortField\": \"sales\",\n  \"sortDirection\": \"desc\",\n  \"pageSize\": 100\n}\n```\n\n**2. Blue-ocean hunt (sales ≥ 50, rating ≥ 4.5)**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"filters\": [\n    {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n    {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n  ],\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**3. Mid-price + strong turnover**\n```json\n{\n  \"categoryPath\": \"Электроника/Наушники\",\n  \"filters\": [\n    {\"field\": \"final_price\", \"op\": \"BETWEEN\", \"value\": 1500, \"value2\": 5000},\n    {\"field\": \"turnover_days\", \"op\": \"LTE\", \"value\": 30}\n  ]\n}\n```\n\n**4. USD-converted ranking for cross-market comparison**\n```json\n{\n  \"categoryPath\": \"Электроника/Смартфоны\",\n  \"currency\": \"USD\",\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**5. High lost-profit category scan**\n```json\n{\n  \"categoryPath\": \"Одежда/Мужская одежда/Куртки мужские\",\n  \"filters\": [{\"field\": \"lost_profit\", \"op\": \"GTE\", \"value\": 500000}],\n  \"sortField\": \"lost_profit\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n## Display Rules\n\n1. **Compact category table** — key columns: `productId`, `title`, `brand`, `sellerName`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `balance`, `position`, `revenueSharePercent`.\n2. **Revenue share = within this category query** — 0-100%; clarify the basis when presenting.\n3. **Russian titles / brands** — preserve original; translate on demand.\n4. **Currency labeling** — state the currency; if converted, note `\"已按 USD 换算\"`.\n5. **Pagination** — report `total`; for large categories (tens of thousands of SKUs) suggest tightening filters rather than naively paging through.\n6. **Category position** — lower is better; mention this when showing `categoryPosition`.\n\n## Important Limitations\n\n- **Russian full path only** — partial or translated paths return empty.\n- **Path discovery is upstream** — this endpoint does not browse the category tree; resolve the path via product detail / search first.\n- **Page cap** — max 100 rows per page.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **No business advice** — data-only view.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Category-scoped Ozon product metrics:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Bestsellers in category X on Ozon\" | Category bestseller mining |\n| \"Find blue-ocean SKUs in niche Y\" | Blue-ocean niche scan |\n| \"Show mid-price, fast-turnover items in this category\" | Multi-criteria niche filter |\n| \"Which brands dominate this Ozon category\" | Brand-landscape pre-cut (then group by brand client-side) |\n| \"Huge lost-profit opportunities in category X\" | Out-of-stock pain hunting |\n\n**Not applicable** — Needs beyond category drill-down:\n\n- Unknown category path → use `mpstats-ozon-product-search` or product detail to discover the exact Russian path\n- Brand-scoped drill → `mpstats-ozon-brand-products`\n- Seller-scoped drill → `mpstats-ozon-seller-products`\n- Single-SKU time-series → `mpstats-ozon-product-trend`\n- Wildberries / other Russian marketplaces → not covered\n\n**Boundary judgment**: Use this skill when the **dimension is a category path** and you want the per-SKU roll-up under it. For cross-category comparisons you must run multiple calls and fuse results at the Agent layer.\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n---\n*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-category-products\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1783061519703\n}\n\nFile v1.0.1:references/api.md\n\n# MPSTATS Ozon 类目商品 API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_AGENT_API_URL}/mpstats/ozon/categoryProducts`\n- **请求方式**：POST，Content-Type: application/json\n- **认证方式**：Header `Authorization: <api_key>`，api_key 从环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` 读取（如未配置，提示用户前往 https://skill.linkfox.com/linkfoxskills/guide.htm 申请）\n\n## 请求参数\n\nPOST Body（JSON）。以下字段与工具网关当前登记的「MPSTATS-Ozon-类目商品」入参 schema 一致（同步日期 2026-04-30）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| categoryPath | string | 是 | Ozon 俄语类目全路径，层级用 `/` 分隔，例如 `Одежда/Женская одежда/Футболки и топы женские` |\n| startDate | string | 否 | 统计起始日 `YYYY-MM-DD`；最晚昨日 |\n| endDate | string | 否 | 统计结束日 `YYYY-MM-DD`；最晚昨日 |\n| page | integer | 否 | 页码，从 1 开始 |\n| pageSize | integer | 否 | 每页行数 1-100，默认 100 |\n| sortField | string | 否 | 排序列名（snake_case），如 `sales`、`revenue`、`final_price`、`balance`、`rating` |\n| sortDirection | string | 否 | `asc` / `desc` |\n| currency | string | 否 | 货币代码，默认 `RUB`，如 `USD` |\n| currencyRate | integer | 否 | 自定义汇率（配合非默认货币） |\n| includeFbs | boolean | 否 | 是否纳入 FBS 数据 |\n| filters | array | 否 | 数值筛选条件列表，每项 `{field, op, value, value2?}`，多条件 AND |\n\n### filters 子字段\n\n| 子字段 | 类型 | 必填 | 说明 |\n|--------|------|------|------|\n| field | string | 是 | 列名（snake_case）。常用：`sales`（月销）、`final_price`（售价 RUB）、`rating`（评分 0-5）、`comments`（评论数）、`balance`（库存）、`revenue`（销售额 RUB）、`days_in_stock`、`turnover_days`、`lost_profit`、`category_position`。 |\n| op | string | 是 | `GTE` / `LTE` / `GT` / `LT` / `EQ` / `NOT_EQ` / `BETWEEN` |\n| value | number | 是 | 主值（`BETWEEN` 时为下界） |\n| value2 | number | `BETWEEN` 必填 | 上界（闭区间） |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码，`\"200\"` 成功 |\n| msg | string | 消息；成功为 `ok` |\n| total | integer | 类目下命中商品总数 |\n| products | array | 商品列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品对象字段（39 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_categoryProducts`，同步日期 2026-05-06）。该 schema 与 `productSearch` / `brandProducts` / `sellerProducts` **完全共用**；4 个端点只是查询维度不同，返回的商品卡字段集完全一致。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| brandId | integer | 品牌 ID |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| category | string | 品类路径（俄语，`/` 分隔） |\n| nicheName | string | 赛道路径（俄语） |\n| nicheId | integer | 赛道 ID |\n| country | string | 销售国，Ozon 恒为 `RU` |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| imageUrl | string | 主图 URL |\n| productPageUrl | string | 商品页 URL |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**价格与货币**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价 |\n| minPrice / maxPrice / averagePrice | number | 统计期内最低价 / 最高价 / 均价 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分与评论**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与 FBS**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| balanceFbs | integer | FBS 库存（卖家自发货件数） |\n| frozenStocks | integer | 滞销库存 |\n| warehousesCount | integer | FBO 分仓数 |\n| isFbs | boolean | 是否 FBS 发货 |\n\n**销售与周转**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| daysInSite | integer | 在售天数（统计期，含缺货日） |\n| daysInStock | integer | 有货天数 |\n| turnoverDays | number | 周转天数（越小越快） |\n\n**排名与占比**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| position | integer | 当前查询维度（本端点为类目）内排名 |\n| categoryPosition | integer | 品类内排名 |\n| revenueSharePercent | number | 该 SKU 在当前查询维度的销售额占比，0-100 |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `products` |\n| 401 | 认证失败 | 检查 `Authorization` |\n| 其他 | 业务异常 | 查看 `errmsg`；常见为 `categoryPath` 非俄语、非全路径、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n    \"sortField\": \"revenue\",\n    \"sortDirection\": \"desc\",\n    \"pageSize\": 100,\n    \"filters\": [\n      {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n      {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n    ]\n  }'\n```\n\n---\n\n## Feedback API\n\n> 该接口与上方工具接口不同，**请勿混用两个基础 URL**。\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-mpstats-ozon-category-products\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Nice niche surface from a Russian path.\"\n}\n```\n\n**字段说明：**\n- `skillName`：使用本 skill 的 YAML `name`\n- `sentiment`：`POSITIVE` / `NEUTRAL` / `NEGATIVE`\n- `category`：`BUG` / `COMPLAINT` / `SUGGESTION` / `OTHER`\n- `content`：用户表达、实际现象、为什么算问题或好评\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nThis skill drills into all Ozon Russia products under a full Russian category path and returns per-SKU sales, revenue, price, rating, stock, turnover, lost-profit, ranking, and related marketplace metrics. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal marketplace analysts, e-commerce operators, and developers use this skill to inspect Ozon Russia category-level product metrics for bestseller mining, blue-ocean niche discovery, brand-landscape review, and category ranking analysis. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill sends the configured LinkFox API key and Ozon category query parameters to the LinkFox gateway. <br>\nMitigation: Use only an intended LinkFox API key and keep LINKFOX_AGENT_API_URL fixed to the official gateway unless the deployment explicitly trusts another endpoint. <br>\nRisk: Full API responses and cache files are stored locally and may include detailed product, seller, and marketplace result data. <br>\nMitigation: Review the selected output and cache locations before use, control workspace access, and clean stored response files when they are no longer needed. <br>\nRisk: The skill includes automatic feedback reporting behavior that can send observations about skill behavior to a separate feedback API. <br>\nMitigation: Review or disable feedback reporting if automatic reporting is not acceptable for the deployment or user workflow. <br>\n\n\n## Reference(s): <br>\n- [MPSTATS Ozon category products API reference](references/api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [JSON, Files, Shell commands, Guidance] <br>\n**Output Format:** [JSON file plus stdout JSON or compact text summary; agents may present selected results as Markdown tables or concise analysis.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Writes full API responses locally, uses a 24-hour parameter cache by default, summarizes large responses unless --inline is used, and requires a LinkFox API key.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.0: 5 files, 10703 bytes\n\nFiles: references/api.md (6639b), scripts/mpstats_ozon_category_products.py (3627b), skill-card.md (3178b), SKILL.md (7973b), _meta.json (157b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-category-products\nversion: 1.0.0\ncategory: product-sourcing\ndescription: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n---\n\n# MPSTATS Ozon Category Products\n\nThis skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.\n\n## Core Concepts\n\n**Russian full-path requirement**: `categoryPath` must be the **full Russian category path** as used on the Ozon platform, with levels separated by `/` — for example, `Одежда/Женская одежда/Футболки и топы женские`. A partial path, English translation, or root-only value will generally return empty results.\n\n**Where to find the path**: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's `category` field from `mpstats-ozon-product-detail` / `mpstats-ozon-product-search`.\n\n**Filters are AND-combined**: `filters` carries multi-field numeric conditions, each `{field, op, value, value2?}`. See the Filter Reference.\n\n**Currency**: Default `RUB`. Override with `currency` (USD, EUR, CNY, ...) and optionally `currencyRate`.\n\n**FBO / FBS**: `includeFbs: true` folds FBS into stock / sales numbers; `false` keeps FBO-only.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| categoryPath | string | yes | Full Russian category path separated by `/` |\n| startDate | string | no | Stats window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Stats window end, `YYYY-MM-DD`; latest = yesterday |\n| page | integer | no | Page number, starts at 1 |\n| pageSize | integer | no | Rows per page, 1-100, default 100 |\n| sortField | string | no | snake_case column: `sales`, `revenue`, `final_price`, `balance`, `rating`, ... |\n| sortDirection | string | no | `asc` / `desc` |\n| currency | string | no | Currency code, default `RUB` |\n| currencyRate | integer | no | Custom rate when non-default currency is used |\n| includeFbs | boolean | no | Include FBS data |\n| filters | array | no | Numeric filter list (see below) |\n\n## Filter Reference\n\nEach `filters` entry: `{\"field\": \"<snake_case>\", \"op\": \"<OP>\", \"value\": <num>, \"value2\": <num?>}`.\n\n**Common fields**: `sales` (monthly units), `final_price` (price RUB), `rating` (0-5), `comments` (reviews), `balance` (stock), `revenue` (amount RUB), `days_in_stock`, `turnover_days`, `lost_profit`, `category_position`.\n\n**Operators**: `GTE`, `LTE`, `GT`, `LT`, `EQ`, `NOT_EQ`, `BETWEEN` (requires `value2`).\n\n## API Usage\n\nThis tool calls the LinkFox tool gateway API. See `references/api.md` for calling conventions, request parameters, response structure, and error codes. You can also execute `scripts/mpstats_ozon_category_products.py` directly for ad-hoc queries.\n\n## Usage Examples\n\n**1. Women's T-shirts — top by sales**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"sortField\": \"sales\",\n  \"sortDirection\": \"desc\",\n  \"pageSize\": 100\n}\n```\n\n**2. Blue-ocean hunt (sales ≥ 50, rating ≥ 4.5)**\n```json\n{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"filters\": [\n    {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n    {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n  ],\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**3. Mid-price + strong turnover**\n```json\n{\n  \"categoryPath\": \"Электроника/Наушники\",\n  \"filters\": [\n    {\"field\": \"final_price\", \"op\": \"BETWEEN\", \"value\": 1500, \"value2\": 5000},\n    {\"field\": \"turnover_days\", \"op\": \"LTE\", \"value\": 30}\n  ]\n}\n```\n\n**4. USD-converted ranking for cross-market comparison**\n```json\n{\n  \"categoryPath\": \"Электроника/Смартфоны\",\n  \"currency\": \"USD\",\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n**5. High lost-profit category scan**\n```json\n{\n  \"categoryPath\": \"Одежда/Мужская одежда/Куртки мужские\",\n  \"filters\": [{\"field\": \"lost_profit\", \"op\": \"GTE\", \"value\": 500000}],\n  \"sortField\": \"lost_profit\",\n  \"sortDirection\": \"desc\"\n}\n```\n\n## Display Rules\n\n1. **Compact category table** — key columns: `productId`, `title`, `brand`, `sellerName`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `balance`, `position`, `revenueSharePercent`.\n2. **Revenue share = within this category query** — 0-100%; clarify the basis when presenting.\n3. **Russian titles / brands** — preserve original; translate on demand.\n4. **Currency labeling** — state the currency; if converted, note `\"已按 USD 换算\"`.\n5. **Pagination** — report `total`; for large categories (tens of thousands of SKUs) suggest tightening filters rather than naively paging through.\n6. **Category position** — lower is better; mention this when showing `categoryPosition`.\n\n## Important Limitations\n\n- **Russian full path only** — partial or translated paths return empty.\n- **Path discovery is upstream** — this endpoint does not browse the category tree; resolve the path via product detail / search first.\n- **Page cap** — max 100 rows per page.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **No business advice** — data-only view.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Category-scoped Ozon product metrics:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Bestsellers in category X on Ozon\" | Category bestseller mining |\n| \"Find blue-ocean SKUs in niche Y\" | Blue-ocean niche scan |\n| \"Show mid-price, fast-turnover items in this category\" | Multi-criteria niche filter |\n| \"Which brands dominate this Ozon category\" | Brand-landscape pre-cut (then group by brand client-side) |\n| \"Huge lost-profit opportunities in category X\" | Out-of-stock pain hunting |\n\n**Not applicable** — Needs beyond category drill-down:\n\n- Unknown category path → use `mpstats-ozon-product-search` or product detail to discover the exact Russian path\n- Brand-scoped drill → `mpstats-ozon-brand-products`\n- Seller-scoped drill → `mpstats-ozon-seller-products`\n- Single-SKU time-series → `mpstats-ozon-product-trend`\n- Wildberries / other Russian marketplaces → not covered\n\n**Boundary judgment**: Use this skill when the **dimension is a category path** and you want the per-SKU roll-up under it. For cross-category comparisons you must run multiple calls and fuse results at the Agent layer.\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n---\n*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-category-products\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778045999177\n}\n\nFile v1.0.0:references/api.md\n\n# MPSTATS Ozon 类目商品 API 参考\n\n## 调用规范\n\n- **请求地址**：`https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts`\n- **请求方式**：POST，Content-Type: application/json\n- **认证方式**：Header `Authorization: <api_key>`，api_key 从环境变量 `LINKFOXAGENT_API_KEY` 读取（如未配置，提示用户前往 https://yxgb3sicy7.feishu.cn/wiki/GIkkweGghiyzkqkRXQKc2n0Tnre 申请）\n\n## 请求参数\n\nPOST Body（JSON）。以下字段与工具网关当前登记的「MPSTATS-Ozon-类目商品」入参 schema 一致（同步日期 2026-04-30）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| categoryPath | string | 是 | Ozon 俄语类目全路径，层级用 `/` 分隔，例如 `Одежда/Женская одежда/Футболки и топы женские` |\n| startDate | string | 否 | 统计起始日 `YYYY-MM-DD`；最晚昨日 |\n| endDate | string | 否 | 统计结束日 `YYYY-MM-DD`；最晚昨日 |\n| page | integer | 否 | 页码，从 1 开始 |\n| pageSize | integer | 否 | 每页行数 1-100，默认 100 |\n| sortField | string | 否 | 排序列名（snake_case），如 `sales`、`revenue`、`final_price`、`balance`、`rating` |\n| sortDirection | string | 否 | `asc` / `desc` |\n| currency | string | 否 | 货币代码，默认 `RUB`，如 `USD` |\n| currencyRate | integer | 否 | 自定义汇率（配合非默认货币） |\n| includeFbs | boolean | 否 | 是否纳入 FBS 数据 |\n| filters | array | 否 | 数值筛选条件列表，每项 `{field, op, value, value2?}`，多条件 AND |\n\n### filters 子字段\n\n| 子字段 | 类型 | 必填 | 说明 |\n|--------|------|------|------|\n| field | string | 是 | 列名（snake_case）。常用：`sales`（月销）、`final_price`（售价 RUB）、`rating`（评分 0-5）、`comments`（评论数）、`balance`（库存）、`revenue`（销售额 RUB）、`days_in_stock`、`turnover_days`、`lost_profit`、`category_position`。 |\n| op | string | 是 | `GTE` / `LTE` / `GT` / `LT` / `EQ` / `NOT_EQ` / `BETWEEN` |\n| value | number | 是 | 主值（`BETWEEN` 时为下界） |\n| value2 | number | `BETWEEN` 必填 | 上界（闭区间） |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码，`\"200\"` 成功 |\n| msg | string | 消息；成功为 `ok` |\n| total | integer | 类目下命中商品总数 |\n| products | array | 商品列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品对象字段（39 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_categoryProducts`，同步日期 2026-05-06）。该 schema 与 `productSearch` / `brandProducts` / `sellerProducts` **完全共用**；4 个端点只是查询维度不同，返回的商品卡字段集完全一致。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| brandId | integer | 品牌 ID |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| category | string | 品类路径（俄语，`/` 分隔） |\n| nicheName | string | 赛道路径（俄语） |\n| nicheId | integer | 赛道 ID |\n| country | string | 销售国，Ozon 恒为 `RU` |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| imageUrl | string | 主图 URL |\n| productPageUrl | string | 商品页 URL |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**价格与货币**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价 |\n| minPrice / maxPrice / averagePrice | number | 统计期内最低价 / 最高价 / 均价 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分与评论**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与 FBS**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| balanceFbs | integer | FBS 库存（卖家自发货件数） |\n| frozenStocks | integer | 滞销库存 |\n| warehousesCount | integer | FBO 分仓数 |\n| isFbs | boolean | 是否 FBS 发货 |\n\n**销售与周转**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| daysInSite | integer | 在售天数（统计期，含缺货日） |\n| daysInStock | integer | 有货天数 |\n| turnoverDays | number | 周转天数（越小越快） |\n\n**排名与占比**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| position | integer | 当前查询维度（本端点为类目）内排名 |\n| categoryPosition | integer | 品类内排名 |\n| revenueSharePercent | number | 该 SKU 在当前查询维度的销售额占比，0-100 |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `products` |\n| 401 | 认证失败 | 检查 `Authorization` |\n| 其他 | 业务异常 | 查看 `errmsg`；常见为 `categoryPath` 非俄语、非全路径、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n    \"sortField\": \"revenue\",\n    \"sortDirection\": \"desc\",\n    \"pageSize\": 100,\n    \"filters\": [\n      {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n      {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n    ]\n  }'\n```\n\n---\n\n## Feedback API\n\n> 该接口与上方工具接口不同，**请勿混用两个基础 URL**。\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-mpstats-ozon-category-products\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Nice niche surface from a Russian path.\"\n}\n```\n\n**字段说明：**\n- `skillName`：使用本 skill 的 YAML `name`\n- `sentiment`：`POSITIVE` / `NEUTRAL` / `NEGATIVE`\n- `category`：`BUG` / `COMPLAINT` / `SUGGESTION` / `OTHER`\n- `content`：用户表达、实际现象、为什么算问题或好评\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nThis skill drills into all Ozon Russia products under a full Russian category path and returns SKU-level sales, revenue, price, rating, stock, turnover, lost-profit, ranking, and related marketplace metrics. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal marketplace operators, analysts, and e-commerce agents use this skill to inspect Ozon category-level SKU performance, surface bestsellers or blue-ocean niches, and compare brands or products within a known Russian category path. It is a data retrieval and analysis aid, not a business-advice generator. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill sends the configured API key and Ozon category queries to LinkFox's tool gateway. <br>\nMitigation: Install only when LinkFox is trusted for the submitted marketplace queries, keep LINKFOXAGENT_API_KEY in environment configuration, and avoid exposing the key in prompts, logs, or shared outputs. <br>\nRisk: The skill may send skill-feedback events to a separate LinkFox feedback API. <br>\nMitigation: Submit feedback only when it is relevant to skill quality and avoid including sensitive query details or credentials in feedback content. <br>\nRisk: Incomplete or stale category analysis can result from partial category paths, translated paths, page limits, or same-day end dates. <br>\nMitigation: Use the full Russian Ozon category path, state the T-1 data constraint, report totals and pagination, and tighten filters rather than assuming one page represents a large category. <br>\nRisk: Marketplace metrics can be mistaken for direct business advice. <br>\nMitigation: Present the retrieved data and caveats clearly, preserve source labels and currencies, and avoid making unsupported business recommendations. <br>\n\n\n## Reference(s): <br>\n- [MPSTATS Ozon category products API reference](references/api.md) <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/linkfox-mpstats-ozon-category-products) <br>\n- [LinkFox MPSTATS Ozon category products endpoint](https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts) <br>\n- [LinkFox skills catalog](https://skill.linkfox.com/) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, API calls, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance, JSON request and response examples, shell command examples, and compact product-metric tables.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires LINKFOXAGENT_API_KEY and a full Russian Ozon category path; API responses are paginated with up to 100 rows per page.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: MPSTATS-Ozon类目商品查询 Owner: linkfox-ai Summary: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"sortField\": \"sales\",\n  \"sortDirection\": \"desc\",\n  \"pageSize\": 100\n}"},{"language":"json","snippet":"{\n  \"categoryPath\": \"Одежда/Женская одежда/Футболки и топы женские\",\n  \"filters\": [\n    {\"field\": \"sales\", \"op\": \"GTE\", \"value\": 50},\n    {\"field\": \"rating\", \"op\": \"GTE\", \"value\": 4.5}\n  ],\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}"},{"language":"json","snippet":"{\n  \"categoryPath\": \"Электроника/Наушники\",\n  \"filters\": [\n    {\"field\": \"final_price\", \"op\": \"BETWEEN\", \"value\": 1500, \"value2\": 5000},\n    {\"field\": \"turnover_days\", \"op\": \"LTE\", \"value\": 30}\n  ]\n}"},{"language":"json","snippet":"{\n  \"categoryPath\": \"Электроника/Смартфоны\",\n  \"currency\": \"USD\",\n  \"sortField\": \"revenue\",\n  \"sortDirection\": \"desc\"\n}"},{"language":"json","snippet":"{\n  \"categoryPath\": \"Одежда/Мужская одежда/Куртки мужские\",\n  \"filters\": [{\"field\": \"lost_profit\", \"op\": \"GTE\", \"value\": 500000}],\n  \"sortField\": \"lost_profit\",\n  \"sortDirection\": \"desc\"\n}"},{"language":"bash","snippet":"curl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/categoryProducts \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkfox-mpstats-ozon-category-products\ndescription: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。\n---\n\n# MPSTATS Ozon Category Products\n\nThis skill drills into all Ozon (Russia) products under a given Russian category path, returning each SKU's sales, revenue, price, rating, stock, turnover, lost profit, and more. Designed for category bestseller mining, blue-ocean niche discovery, and brand-landscape scanning within a specific category.\n\n## Core Concepts\n\n**Russian full-path requirement**: `categoryPath` must be the **full Russian category path** as used on the Ozon platform, with levels separated by `/` — for example, `Одежда/Женская одежда/Футболки и топы женские`. A partial path, English translation, or root-only value will generally return empty results.\n\n**Where to find the path**: Typical workflows resolve the path via an upstream Ozon category-search step (if available in your toolchain) or by pulling a known SKU's `category` field from `mpstats-ozon-product-detail` / `mpstats-ozon-product-search`.\n\n**Filters are AND-combined**: `filters` carries multi-field numeric conditions, each `{field, op, value, value2?}`. See the Filter Reference.\n\n**Currency**: Default `RUB`. Override with `currency` (USD, EUR, CNY, ...) and optionally `currencyRate`.\n\n**FBO / FBS**: `includeFbs: true` folds FBS into stock / sales numbers; `false` keeps FBO-only.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| categoryPath | string | yes | Full Russian category path separated by `/` |\n| startDate | string | no | Stats window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Stats window end, `YYYY-MM-DD`; latest = yesterday |\n| page | integer | no | Page number, starts at 1 |\n| pageSize | integer | no | Rows per page, 1-100, default 100 |\n| sortField | string | no | snake_case column: `sales`, `revenue`, `final_price`, `balance`, `rating`, ... |\n| sortDirection | string | no | `asc` / `desc` |\n| currency | string | no | Currency code, default `RUB` |\n| currencyRate | integer | no | Custom rate when non-default currency is used |\n| includeFbs | boolean | no | Include FBS data |\n| filters | array | no | Numeric filter list (see below) |\n\n## Filter Reference\n\nEach `filters` entry: `{\"field\": \"<snake_case>\", \"op\": \"<OP>\", \"value\": <num>, \"value2\": <num?>}`.\n\n**Common fields**: `sales` (monthly units), `final_price` (price RUB), `rating` (0-5), `comments` (reviews), `balance` (stock), `revenue` (amount RUB), `days_in_stock`, `turnover_days`, `lost_profit`, `category_position`.\n\n**Operators**: `GTE`, `LTE`, `GT`, `LT`, `EQ`, `NOT_EQ`, `BETWEEN` "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-category-products\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1789363332594\n}"},{"path":"references/api.md","content":"# MPSTATS Ozon 类目商品 API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/categoryProducts`\n- **请求方式**：POST，Content-Type: application/json\n- **认证方式**：Header `Authorization: <api_key>`，api_key 从环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` 读取（如未配置 按 SKILL.md 的 **## 解决认证和算力问题** 处理）\n\n## 请求参数\n\nPOST Body（JSON）。以下字段与工具网关当前登记的「MPSTATS-Ozon-类目商品」入参 schema 一致（同步日期 2026-04-30）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| categoryPath | string | 是 | Ozon 俄语类目全路径，层级用 `/` 分隔，例如 `Одежда/Женская одежда/Футболки и топы женские` |\n| startDate | string | 否 | 统计起始日 `YYYY-MM-DD`；最晚昨日 |\n| endDate | string | 否 | 统计结束日 `YYYY-MM-DD`；最晚昨日 |\n| page | integer | 否 | 页码，从 1 开始 |\n| pageSize | integer | 否 | 每页行数 1-100，默认 100 |\n| sortField | string | 否 | 排序列名（snake_case），如 `sales`、`revenue`、`final_price`、`balance`、`rating` |\n| sortDirection | string | 否 | `asc` / `desc` |\n| currency | string | 否 | 货币代码，默认 `RUB`，如 `USD` |\n| currencyRate | integer | 否 | 自定义汇率（配合非默认货币） |\n| includeFbs | boolean | 否 | 是否纳入 FBS 数据 |\n| filters | array | 否 | 数值筛选条件列表，每项 `{field, op, value, value2?}`，多条件 AND |\n\n### filters 子字段\n\n| 子字段 | 类型 | 必填 | 说明 |\n|--------|------|------|------|\n| field | string | 是 | 列名（snake_case）。常用：`sales`（月销）、`final_price`（售价 RUB）、`rating`（评分 0-5）、`comments`（评论数）、`balance`（库存）、`revenue`（销售额 RUB）、`days_in_stock`、`turnover_days`、`lost_profit`、`category_position`。 |\n| op | string | 是 | `GTE` / `LTE` / `GT` / `LT` / `EQ` / `NOT_EQ` / `BETWEEN` |\n| value | number | 是 | 主值（`BETWEEN` 时为下界） |\n| value2 | number | `BETWEEN` 必填 | 上界（闭区间） |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码，`\"200\"` 成功 |\n| msg | string | 消息；成功为 `ok` |\n| total | integer | 类目下命中商品总数 |\n| products | array | 商品列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品对象字段（39 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_categoryProducts`，同步日期 2026-05-06）。该 schema 与 `productSearch` / `brandProducts` / `sellerProducts` **完全共用**；4 个端点只是查询维度不同，返回的商品卡字段集完全一致。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| brandId | integer | 品牌 ID |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| category | string | 品类路径（俄语，`/` 分隔） |\n| nicheName | string | 赛道路径（俄语） |\n| nicheId | integer | 赛道 ID |\n| country | string | 销售国，Ozon 恒为 `RU` |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| imageUrl | string | 主图 URL |\n| productPageUrl | string | 商品页 URL |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**价格与货币**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价 |\n| minPrice / maxPrice / averagePrice | number | 统计期内最低价 / 最高价 / 均价 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分与评论**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与 FBS**\n\n| 字段 "},{"path":"references/onboarding.md","content":"# 解决认证和算力问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `算力/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。"},{"path":"skill-card.md","content":"## Description:\n\nThis skill queries MPSTATS Ozon Russia category product data by full Russian category path and returns per-SKU sales, revenue, price, rating, stock, turnover, ranking, and related metrics.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal marketplace analysts, e-commerce operators, and developers use this skill to inspect product-level performance within an Ozon Russia category for bestseller discovery, niche analysis, category ranking review, and brand landscape scanning. The skill is data-oriented and does not provide business advice.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uses LinkFox API credentials and can guide users through account onboarding.\n\nMitigation: Store API keys in a secret manager or protected environment variables, avoid sharing logs that contain credentials, and verify endpoint environment variables before use.\n\nRisk: The onboarding flow can list paid plans and create payment orders.\n\nMitigation: Review the selected plan, payment method, and generated order before confirming any purchase.\n\nRisk: The skill writes full marketplace query responses and cache data to local LinkFox session directories.\n\nMitigation: Treat saved response files as potentially sensitive business data and remove or protect them according to the workspace retention policy.\n\nRisk: The skill documentation describes automatic feedback reporting when results or user sentiment indicate an issue or praise.\n\nMitigation: Review feedback behavior before deployment and make feedback submission opt-in when user queries or results may contain sensitive information.\n\n## Reference(s):\n\n- [MPSTATS Ozon Category Products API Reference](references/api.md)\n- [Authentication and Billing Onboarding](references/onboarding.md)\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-category-products)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON API parameters, shell commands, and saved JSON response files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes complete API responses to a local LinkFox session data file; small responses may also be printed inline, and large responses are summarized.]\n\n## Skill Version(s):\n\n1.0.7 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品的销量/价格/排名表现，也应触发此技能。 Skill: MPSTATS-Ozon类目商品查询 Owner: linkfox-ai Summary: MPSTATS Ozon 俄罗斯站按俄语类目路径下钻该类目全部商品。返回每个 SKU 的销量、销售额、价格、评分、库存、周转、损失销售额等完整指标，支持多维数值筛选、排序、货币换算。用于类目爆款挖掘、蓝海洞察、类目排名分析、品牌格局观察。当用户提到 Ozon 类目下钻、Ozon 类目商品、Ozon 蓝海挖掘、Ozon 品类爆款、Ozon 类目排名、Ozon 子类目结构、Ozon 赛道 SKU、MPSTATS category, Ozon category drill-down, Russian marketplace niche, Ozon niche mining, Ozon subcategory bestseller 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon 类目路径查看该类目下所有商品","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1463,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T08:37:42.449Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T08:37:42.449Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:48:30.141Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}