{"id":"20b325b6-7768-405a-a8c1-05bbad790c5e","entityType":"agent","slug":"clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail","name":"MPSTATS-Ozon商品详情","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail","canonicalPath":"/agent/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail","generatedAt":"2026-10-10T10:59:07.150Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T08:31:25.917Z","emptyReason":null},"description":"MPSTATS Ozon 俄罗斯站单个 SKU 全量详情查询。传入一个 Ozon 商品 ID（productId），返回该 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、单个 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, single Ozon SKU lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按单个 Ozon SKU 拉取全量商品卡数据，也应触发此技能。 Skill: MPSTATS-Ozon商品详情 Owner: linkfox-ai Summary: MPSTATS Ozon 俄罗斯站单个 SKU 全量详情查询。传入一个 Ozon 商品 ID（productId），返回该 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、单个 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, single Ozon SKU lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"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-product-detail","sourceUrl":"https://clawhub.ai/linkfox-ai/linkfox-mpstats-ozon-product-detail","homepage":"https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-detail","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linkfox-ai/linkfox-mpstats-ozon-product-detail","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-detail","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"MPSTATS Ozon 俄罗斯站单个 SKU 全量详情查询。传入一个 Ozon 商品 ID（productId），返回该 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:31:25.917Z","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:31:25.917Z","emptyReason":null},"stars":null,"forks":null,"downloads":1555,"packageName":null,"latestVersion":"1.0.7","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:31:25.917Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T08:31:25.917Z","lastCrawledAt":"2026-10-10T08:31:25.917Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T08:31:25.917Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.7","createdAt":"2026-09-14T05:22:19.179Z","changelog":"Update from 1.0.6 to 1.0.7","fileCount":7,"zipByteSize":24261},{"version":"1.0.6","createdAt":"2026-08-14T14:57:30.272Z","changelog":"Update from 1.0.5 to 1.0.6","fileCount":7,"zipByteSize":24188},{"version":"1.0.5","createdAt":"2026-08-07T10:53:25.147Z","changelog":"Update from 1.0.4 to 1.0.5","fileCount":7,"zipByteSize":24178},{"version":"1.0.4","createdAt":"2026-07-13T12:13:58.729Z","changelog":"Update from 1.0.3 to 1.0.4","fileCount":5,"zipByteSize":15319},{"version":"1.0.3","createdAt":"2026-07-06T11:22:45.828Z","changelog":"Update from 1.0.2 to 1.0.3","fileCount":5,"zipByteSize":14375},{"version":"1.0.2","createdAt":"2026-07-03T08:21:23.041Z","changelog":"Update from 1.0.1 to 1.0.2","fileCount":4,"zipByteSize":13038},{"version":"1.0.1","createdAt":"2026-07-03T06:52:08.496Z","changelog":"Update from 1.0.0 to 1.0.1","fileCount":5,"zipByteSize":14268},{"version":"1.0.0","createdAt":"2026-05-06T05:40:01.953Z","changelog":"Initial release","fileCount":5,"zipByteSize":10149}]},"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-product-detail","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-product-detail/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail/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:59:07.146Z"}},"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-product-detail/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-detail/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:31:25.917Z","emptyReason":null},"readme":"Skill: MPSTATS-Ozon商品详情\n\nOwner: linkfox-ai\n\nSummary: MPSTATS Ozon 俄罗斯站单个 SKU 全量详情查询。传入一个 Ozon 商品 ID（productId），返回该 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、单个 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, single Ozon SKU lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按单个 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n\nTags: latest:1.0.7\n\nVersion history:\n\nv1.0.7 | 2026-09-14T05:22:19.179Z | user\n\nUpdate from 1.0.6 to 1.0.7\n\nv1.0.6 | 2026-08-14T14:57:30.272Z | user\n\nUpdate from 1.0.5 to 1.0.6\n\nv1.0.5 | 2026-08-07T10:53:25.147Z | user\n\nUpdate from 1.0.4 to 1.0.5\n\nv1.0.4 | 2026-07-13T12:13:58.729Z | user\n\nUpdate from 1.0.3 to 1.0.4\n\nv1.0.3 | 2026-07-06T11:22:45.828Z | user\n\nUpdate from 1.0.2 to 1.0.3\n\nv1.0.2 | 2026-07-03T08:21:23.041Z | user\n\nUpdate from 1.0.1 to 1.0.2\n\nv1.0.1 | 2026-07-03T06:52:08.496Z | user\n\nUpdate from 1.0.0 to 1.0.1\n\nv1.0.0 | 2026-05-06T05:40:01.953Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.7: 7 files, 24261 bytes\n\nFiles: references/api.md (6308b), references/onboarding.md (1999b), scripts/mpstats_ozon_product_detail.py (14014b), scripts/onboarding.py (24027b), skill-card.md (2696b), SKILL.md (9808b), _meta.json (154b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-detail\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 全量详情查询。传入一个 Ozon 商品 ID（productId），返回该 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、单个 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, single Ozon SKU lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按单个 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Detail (Single SKU)\n\nThis skill fetches the full product card for one Ozon (Russia) SKU via MPSTATS. Returned fields include price, Ozon Card price, discount, rating, reviews, stock, monthly sales units, monthly sales revenue, lost profit, potential revenue, first listing date, image, and more.\n\n## Core Concepts\n\n**Single-SKU semantics**: Pass exactly one `productId` in a call. `productIds` arrays/lists are no longer accepted by this skill; for multiple SKUs, make separate calls only after confirming the extra credit cost with the user.\n\n**Fulfillment model per SKU**: Each product card carries `deliveryScheme`:\n- `FBO` — Fulfillment by Ozon (stock in Ozon warehouses)\n- `FBS` — Fulfillment by Seller (seller-shipped)\n\nPass `includeFbs: true` to allow FBS SKUs and FBS-scoped metrics into the response; `false` (or omitted) keeps the result FBO-centric. This switch applies to the whole request.\n\n**Previous-period comparison**: The card includes `previousSalesUnits` / `previousRevenue` — sales and revenue from the equal-length period immediately before `[startDate, endDate]` — ready for MoM / period-over-period diffs without extra calls.\n\n**Revenue potential**: `revenuePotential` projects what the SKU could have earned if it had been in stock every day of the window; compare with `monthlySalesRevenue` to quantify stock-out drag, together with `lostProfit` / `lostProfitPercent`.\n\n**Date window**: `startDate` / `endDate` define the period for all period-aggregated metrics. Latest selectable date is **yesterday** (T-1); today and future dates are rejected.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer\\|string | yes | Single Ozon SKU ID |\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| includeFbs | boolean | no | `true` to include FBS data; `false` = FBO-only |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productDetail`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_detail.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗算力；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-detail-<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发生以下异常情况时，采用 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. Single-SKU detail**\n```json\n{\"productId\": 1786874757}\n```\n\n**2. Single-SKU lookup with period**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\",\n  \"includeFbs\": true\n}\n```\n\n**3. FBO-only snapshot**\n```json\n{\"productId\": 1786874757, \"includeFbs\": false}\n```\n\n**4. SKU discovered upstream — full card**\n```json\n{\"productId\": <productId from mpstats-ozon-product-search>}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Search → detail**: Use `mpstats-ozon-product-search` to resolve a keyword / brand / seller into candidate `productId`s, choose one SKU, then pass that `productId` here for full metrics.\n2. **Detail vs trend**: This endpoint is a **period aggregate** per SKU; for day-by-day time-series on a single SKU, use `mpstats-ozon-product-trend`.\n3. **Detail vs drill-downs**: When the input dimension is a brand / category / seller (not a single SKU), prefer `brand-products` / `category-products` / `seller-products` — they already return aggregated metrics per SKU under that dimension.\n\n## Display Rules\n\n1. **Compact table** — lead with `productId`, `title`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `reviewCount`, `balance`, `deliveryScheme`, `firstDate`. Pull `revenuePotential` / `lostProfit` / `lostProfitPercent` in when the user asks about stock-out impact.\n2. **Currency** — Ozon native currency is **RUB**; the `currency` field carries the symbol. Do not silently relabel.\n3. **Failure handling** — the response carries `successCount` / `failedCount` / `failures`; when `failedCount > 0`, list the failed `productId` from `failures` to the user rather than silently dropping it.\n4. **Period-over-period** — when both current and `previous*` fields are present, render them side-by-side or as diff; don't report a single-period number as \"trend\".\n5. **With-stock vs all-days** — `salesPerDayWithStock` / `dailySalesRevenueWithStock` only count days that had inventory; distinguish from the plain `salesPerDay` / `dailySalesRevenue`.\n6. **Delivery model** — prefer the per-SKU `deliveryScheme` value over assuming FBO.\n7. **No business advice** — present data; do not extrapolate \"this SKU is worth selling\" without a wider analysis.\n\n## Important Limitations\n\n- **Single-SKU input only** — pass `productId`, not `productIds`; arrays/lists are invalid. For multiple SKUs, call once per SKU only after confirming the added credit cost.\n- **Ozon-only** — this tool does not cover Wildberries or other Russian marketplaces.\n- **T-1 data** — `endDate` must not be today or future.\n- **FBS coverage** — some categories have partial FBS coverage; if the input set is FBS-heavy, expect sparser cards.\n- **Field set differs from brand/seller** — this endpoint does **not** return `brandId`, `country`, `category`, `minPrice` / `maxPrice` / `averagePrice`, `balanceFbs`, `frozenStocks`, `warehousesCount`, `daysInSite` / `daysInStock` / `turnoverDays`, `position` / `categoryPosition` / `revenueSharePercent`, `isFbs`. Use `brand-products` / `category-products` / `seller-products` if those are needed.\n- **No translation** — titles are returned in Russian; translate on demand when presenting to Chinese / English users.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Per-SKU Ozon card lookup:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Pull Ozon details for this SKU\" | Single card fetch |\n| \"What's the price / rating / stock of Ozon SKU 1786874757\" | Single-SKU card |\n| \"Competitor's Ozon listing, give me sales & rating\" | Competitor card audit |\n| \"Compare FBO vs FBO+FBS metrics for this SKU\" | Fulfillment-model comparison |\n\n**Not applicable** — Needs beyond per-SKU card:\n\n- Keyword-based discovery → use `mpstats-ozon-product-search`\n- Day-by-day time-series for one SKU → use `mpstats-ozon-product-trend`\n- Listing copy / reviews / images analysis beyond URL → out of scope\n- Brand / category / seller drill-down with filters → use the matching drill-down skill\n\n**Boundary judgment**: If the user already has a single **SKU** and wants sales / price / stock / rating, this is the skill. If they provide multiple SKUs, process them one at a time only after confirming the added credit cost. If they don't yet have SKUs, route through the search or drill-down skills first.\n\n## 算力消耗规则\n\n按动态规则计费：消耗算力 = 12。`productId` 为空返回 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-product-detail\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1789363339179\n}\n\nFile v1.0.7:references/api.md\n\n# MPSTATS Ozon 商品详情（单个 SKU）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productDetail`\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-09-01）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| productId | integer\\|string | 是 | 单个 Ozon 商品 ID（SKU）；不接受数组/列表 |\n| startDate | string | 否 | 统计起始日，格式 `YYYY-MM-DD`；最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，格式 `YYYY-MM-DD`；最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n\n> `productIds` 已废弃；本 skill 只接受单个 `productId`。\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 返回的 SKU 数（通常为 0 或 1，= `successCount` + `failedCount`） |\n| successCount | integer | 成功返回卡片的 SKU 数（通常为 0 或 1） |\n| failedCount | integer | 失败的 SKU 数（通常为 0 或 1） |\n| failures | array | 失败 SKU 明细列表（通常最多 1 项，每项含失败的 `productId` 与错误信息） |\n| products | array | 商品卡列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品详情字段（36 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_productDetail`，同步日期 2026-05-06）。**detail 的字段集与 brand/category/seller 不同**：detail 独有 `previous*` / `revenuePotential` / `deliveryScheme` / `productImageUrls` 等深度字段，但不返回 `brandId` / `country` / `category` / `minPrice/maxPrice/averagePrice` / `balanceFbs` / `frozenStocks` / `warehousesCount` / `daysInSite/daysInStock/turnoverDays` / `position/categoryPosition/revenueSharePercent` / `isFbs`。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| sellerIsBestSeller | boolean | 卖家是否为畅销卖家 |\n| nicheName | string | 赛道路径（俄语，`/` 分隔） |\n| nicheId | integer | 赛道 ID |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| updated | string | 数据更新时间（`yyyy-MM-dd HH:mm:ss`） |\n| note | string | 备注 |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**图片**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| imageUrl | string | 主图 URL（首张大图） |\n| imageCount | integer | 图片总数 |\n| productImageUrls | array<string> | 除主图外的其余大图 URL |\n| productPageUrl | string | 商品页 URL |\n\n**价格与折扣**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与配送**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| deliveryScheme | string | 配送方案；`FBO`=Ozon 仓配，`FBS`=卖家自配 |\n\n**销售与收入（当期 + 上期对比）**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| salesPerDayWithStock | number | 有货日均销量（仅计有库存日） |\n| dailySalesRevenue | number | 日均销售额 |\n| dailySalesRevenueWithStock | number | 有货日均销售额 |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| previousSalesUnits | integer | 上期销量（与本统计周期等长的前一段时间） |\n| previousRevenue | number | 上期销售额 |\n| revenuePotential | number | 潜在销售额（按全期有库存估算） |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| lostProfitPercent | number | 损失销售额占比（%） |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 正常解析 `products` |\n| 401 | 认证失败 | HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和算力问题** 处理。 |\n| 402 | 算力或余额不足 | HTTP 402：按 SKILL.md 的 **## 解决认证和算力问题** 处理。 |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为缺少/非法 `productId`、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"productId\": 1786874757,\n    \"startDate\": \"2025-03-01\",\n    \"endDate\": \"2025-03-31\",\n    \"includeFbs\": true\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-product-detail\",\n  \"sentiment\": \"NEGATIVE\",\n  \"category\": \"BUG\",\n  \"content\": \"productId 1786874757 returned an empty products list despite a successful response.\"\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\nFetches a full MPSTATS product card for one Ozon Russia SKU, including price, discount, rating, reviews, stock, sales, revenue, listing date, delivery scheme, and image fields.\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 users and developers use this skill to retrieve and summarize marketplace metrics for a single known Ozon SKU, including competitor product checks, stock-out impact review, fulfillment comparison, and period-over-period sales comparison.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The release evidence reports sensitive onboarding, credential, billing, storage, and automatic feedback behaviors.\n\nMitigation: Install only after reviewing those behaviors and confirming that LinkFox handling product queries and related account or billing workflows is acceptable.\n\nRisk: Endpoint and credential settings can affect where requests and API keys are sent.\n\nMitigation: Verify endpoint environment variables are not overridden, avoid sharing SMS codes unless registration or login is intended, and avoid storing API keys in shell startup files.\n\nRisk: Billing flows can create payment orders and display payment QR codes or links.\n\nMitigation: Review the selected package, payment method, amount, and order details before scanning or opening any payment QR code or URL.\n\nRisk: Local linkfox output folders may contain full API responses and payment artifacts.\n\nMitigation: Treat local linkfox data folders as sensitive and avoid sharing them without review.\n\n## Reference(s):\n\n- [MPSTATS Ozon Product Detail 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-product-detail)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown-facing summaries with JSON API responses and optional shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes full API responses to local linkfox session data, uses a 24-hour local cache for repeated parameters, and summarizes large responses unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.7 (source: ClawHub 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, 24188 bytes\n\nFiles: references/api.md (6294b), references/onboarding.md (2046b), scripts/mpstats_ozon_product_detail.py (12758b), scripts/onboarding.py (24089b), skill-card.md (2882b), SKILL.md (9683b), _meta.json (154b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-detail\ndescription: MPSTATS Ozon 俄罗斯站 SKU 全量详情批量查询。一次最多传 100 个 Ozon 商品 ID，返回每个 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、批量 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, Ozon batch lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Detail (Batch)\n\nThis skill batch-fetches the full product card for one or more Ozon (Russia) SKUs via MPSTATS. Returned fields include price, Ozon Card price, discount, rating, reviews, stock, monthly sales units, monthly sales revenue, lost profit, potential revenue, first listing date, image, and more.\n\n## Core Concepts\n\n**Batch semantics**: Pass up to **100** `productIds` in a single call. The server fans out concurrently and automatically retries each failed SKU once; partial success is allowed, so a mixed list is normal.\n\n**Fulfillment model per SKU**: Each product card carries `deliveryScheme`:\n- `FBO` — Fulfillment by Ozon (stock in Ozon warehouses)\n- `FBS` — Fulfillment by Seller (seller-shipped)\n\nPass `includeFbs: true` to allow FBS SKUs and FBS-scoped metrics into the response; `false` (or omitted) keeps the result FBO-centric. This switch applies to the whole batch.\n\n**Previous-period comparison**: The card includes `previousSalesUnits` / `previousRevenue` — sales and revenue from the equal-length period immediately before `[startDate, endDate]` — ready for MoM / period-over-period diffs without extra calls.\n\n**Revenue potential**: `revenuePotential` projects what the SKU could have earned if it had been in stock every day of the window; compare with `monthlySalesRevenue` to quantify stock-out drag, together with `lostProfit` / `lostProfitPercent`.\n\n**Date window**: `startDate` / `endDate` define the period for all period-aggregated metrics. Latest selectable date is **yesterday** (T-1); today and future dates are rejected.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productIds | array<integer\\|string> | yes | Ozon SKU list, up to **100** per call |\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| includeFbs | boolean | no | `true` to include FBS data; `false` = FBO-only |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productDetail`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_detail.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-detail-<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发生以下异常情况时，采用 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. Single-SKU detail**\n```json\n{\"productIds\": [1786874757]}\n```\n\n**2. Batch lookup with period**\n```json\n{\n  \"productIds\": [1786874757, 151623766, 142257239],\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\",\n  \"includeFbs\": true\n}\n```\n\n**3. FBO-only snapshot**\n```json\n{\"productIds\": [1786874757, 151623766], \"includeFbs\": false}\n```\n\n**4. SKUs discovered upstream — full card**\n```json\n{\"productIds\": [<list from mpstats-ozon-product-search>]}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Search → detail**: Use `mpstats-ozon-product-search` to resolve a keyword / brand / seller into `productId`s, then pass them here for full metrics.\n2. **Detail vs trend**: This endpoint is a **period aggregate** per SKU; for day-by-day time-series on a single SKU, use `mpstats-ozon-product-trend`.\n3. **Detail vs drill-downs**: When the input dimension is a brand / category / seller (not a SKU list), prefer `brand-products` / `category-products` / `seller-products` — they already return aggregated metrics per SKU under that dimension.\n\n## Display Rules\n\n1. **Compact table** — lead with `productId`, `title`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `reviewCount`, `balance`, `deliveryScheme`, `firstDate`. Pull `revenuePotential` / `lostProfit` / `lostProfitPercent` in when the user asks about stock-out impact.\n2. **Currency** — Ozon native currency is **RUB**; the `currency` field carries the symbol. Do not silently relabel.\n3. **Partial success** — the response carries `successCount` / `failedCount` / `failures`; when `failedCount > 0`, list the failed `productId`s from `failures` to the user rather than silently dropping them.\n4. **Period-over-period** — when both current and `previous*` fields are present, render them side-by-side or as diff; don't report a single-period number as \"trend\".\n5. **With-stock vs all-days** — `salesPerDayWithStock` / `dailySalesRevenueWithStock` only count days that had inventory; distinguish from the plain `salesPerDay` / `dailySalesRevenue`.\n6. **Delivery model** — prefer the per-SKU `deliveryScheme` value over assuming FBO; remind users when a batch mixes FBO and FBS.\n7. **No business advice** — present data; do not extrapolate \"this SKU is worth selling\" without a wider analysis.\n\n## Important Limitations\n\n- **100-SKU batch cap** — split larger input lists and call multiple times; the Agent must paginate.\n- **Ozon-only** — this tool does not cover Wildberries or other Russian marketplaces.\n- **T-1 data** — `endDate` must not be today or future.\n- **FBS coverage** — some categories have partial FBS coverage; if the input set is FBS-heavy, expect sparser cards.\n- **Field set differs from brand/seller** — this endpoint does **not** return `brandId`, `country`, `category`, `minPrice` / `maxPrice` / `averagePrice`, `balanceFbs`, `frozenStocks`, `warehousesCount`, `daysInSite` / `daysInStock` / `turnoverDays`, `position` / `categoryPosition` / `revenueSharePercent`, `isFbs`. Use `brand-products` / `category-products` / `seller-products` if those are needed.\n- **No translation** — titles are returned in Russian; translate on demand when presenting to Chinese / English users.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Per-SKU Ozon card lookup:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Pull Ozon details for these SKUs\" | Batch card fetch |\n| \"What's the price / rating / stock of Ozon SKU 1786874757\" | Single-SKU card |\n| \"Competitor's Ozon listings, give me sales & rating\" | Competitor card audit |\n| \"Compare FBO vs FBO+FBS metrics for this SKU set\" | Fulfillment-model comparison |\n\n**Not applicable** — Needs beyond per-SKU card:\n\n- Keyword-based discovery → use `mpstats-ozon-product-search`\n- Day-by-day time-series for one SKU → use `mpstats-ozon-product-trend`\n- Listing copy / reviews / images analysis beyond URL → out of scope\n- Brand / category / seller drill-down with filters → use the matching drill-down skill\n\n**Boundary judgment**: If the user already has a **SKU list** and wants per-SKU sales / price / stock / rating, this is the skill. If they don't yet have SKUs, route through the search or drill-down skills first.\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-product-detail\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1786719450272\n}\n\nFile v1.0.6:references/api.md\n\n# MPSTATS Ozon 商品详情（批量）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productDetail`\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| productIds | array | 是 | Ozon 商品 ID 列表（整数或字符串），**单次最多 100 个**，超过请分批调用 |\n| startDate | string | 否 | 统计起始日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据；整批共享 |\n\n> 服务端并发请求每个 SKU，单条失败自动重试一次；支持部分成功。\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 返回的 SKU 数（= `successCount` + `failedCount`） |\n| successCount | integer | 成功返回卡片的 SKU 数 |\n| failedCount | integer | 失败的 SKU 数 |\n| failures | array | 失败 SKU 明细列表（每项含失败的 `productId` 与错误信息） |\n| products | array | 商品卡列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品详情字段（36 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_productDetail`，同步日期 2026-05-06）。**detail 的字段集与 brand/category/seller 不同**：detail 独有 `previous*` / `revenuePotential` / `deliveryScheme` / `productImageUrls` 等深度字段，但不返回 `brandId` / `country` / `category` / `minPrice/maxPrice/averagePrice` / `balanceFbs` / `frozenStocks` / `warehousesCount` / `daysInSite/daysInStock/turnoverDays` / `position/categoryPosition/revenueSharePercent` / `isFbs`。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| sellerIsBestSeller | boolean | 卖家是否为畅销卖家 |\n| nicheName | string | 赛道路径（俄语，`/` 分隔） |\n| nicheId | integer | 赛道 ID |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| updated | string | 数据更新时间（`yyyy-MM-dd HH:mm:ss`） |\n| note | string | 备注 |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**图片**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| imageUrl | string | 主图 URL（首张大图） |\n| imageCount | integer | 图片总数 |\n| productImageUrls | array<string> | 除主图外的其余大图 URL |\n| productPageUrl | string | 商品页 URL |\n\n**价格与折扣**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与配送**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| deliveryScheme | string | 配送方案；`FBO`=Ozon 仓配，`FBS`=卖家自配 |\n\n**销售与收入（当期 + 上期对比）**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| salesPerDayWithStock | number | 有货日均销量（仅计有库存日） |\n| dailySalesRevenue | number | 日均销售额 |\n| dailySalesRevenueWithStock | number | 有货日均销售额 |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| previousSalesUnits | integer | 上期销量（与本统计周期等长的前一段时间） |\n| previousRevenue | number | 上期销售额 |\n| revenuePotential | number | 潜在销售额（按全期有库存估算） |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| lostProfitPercent | number | 损失销售额占比（%） |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 正常解析 `products` |\n| 401 | 认证失败 | HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 402 | 积分或余额不足 | HTTP 402：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为批量超过 100、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"productIds\": [1786874757, 151623766, 142257239],\n    \"startDate\": \"2025-03-01\",\n    \"endDate\": \"2025-03-31\",\n    \"includeFbs\": true\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-product-detail\",\n  \"sentiment\": \"NEGATIVE\",\n  \"category\": \"BUG\",\n  \"content\": \"Batch with 80 SKUs returned only 40 entries.\"\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\nBatch-fetches MPSTATS Ozon Russia product-card data for up to 100 SKU IDs, including price, discounts, Ozon Card price, rating, reviews, stock, sales, revenue, listing date, and images.\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 operators, analysts, and developers use this skill to retrieve per-SKU Ozon product-card metrics for competitor checks, stock and price audits, and period-level sales comparisons. It is intended for users who already have Ozon SKU IDs or have obtained them from another search or drill-down workflow.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill calls LinkFox/MPSTATS services using an API key and can send SKU queries and session headers to those services.\n\nMitigation: Use a dedicated LinkFox API key, avoid sharing secrets in prompts or logs, and only run the skill when sending Ozon SKU data to LinkFox/MPSTATS is acceptable.\n\nRisk: Full product-detail responses are saved and cached locally, which can persist marketplace analysis data beyond the visible chat output.\n\nMitigation: Review and clean the generated linkfox session data and cache directories when the results contain sensitive competitive or commercial analysis.\n\nRisk: The bundled onboarding helper can list paid plans and create payment orders.\n\nMitigation: Prefer self-service API-key setup, require explicit user confirmation before creating any payment order, and do not actively poll payment status unless the user asks.\n\nRisk: Custom LINKFOX_* base URL environment variables can redirect API, login, or billing traffic.\n\nMitigation: Keep default endpoints unless the destination is trusted and intentionally configured.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-detail)\n- [MPSTATS Ozon product-detail API reference](references/api.md)\n- [Authentication and billing onboarding guide](references/onboarding.md)\n- [LinkFox Skills](https://skill.linkfox.com/)\n\n## Skill Output:\n\n**Output Type(s):** [API Calls, JSON, Files, Shell commands, Guidance]\n\n**Output Format:** [JSON responses saved to local files with stdout JSON or summary text]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes full API responses under a linkfox session data directory; uses a 24-hour local cache; large responses are summarized unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.6 (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.5: 7 files, 24178 bytes\n\nFiles: references/api.md (6294b), references/onboarding.md (2046b), scripts/mpstats_ozon_product_detail.py (12758b), scripts/onboarding.py (24089b), skill-card.md (2905b), SKILL.md (9683b), _meta.json (154b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-detail\ndescription: MPSTATS Ozon 俄罗斯站 SKU 全量详情批量查询。一次最多传 100 个 Ozon 商品 ID，返回每个 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、批量 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, Ozon batch lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Detail (Batch)\n\nThis skill batch-fetches the full product card for one or more Ozon (Russia) SKUs via MPSTATS. Returned fields include price, Ozon Card price, discount, rating, reviews, stock, monthly sales units, monthly sales revenue, lost profit, potential revenue, first listing date, image, and more.\n\n## Core Concepts\n\n**Batch semantics**: Pass up to **100** `productIds` in a single call. The server fans out concurrently and automatically retries each failed SKU once; partial success is allowed, so a mixed list is normal.\n\n**Fulfillment model per SKU**: Each product card carries `deliveryScheme`:\n- `FBO` — Fulfillment by Ozon (stock in Ozon warehouses)\n- `FBS` — Fulfillment by Seller (seller-shipped)\n\nPass `includeFbs: true` to allow FBS SKUs and FBS-scoped metrics into the response; `false` (or omitted) keeps the result FBO-centric. This switch applies to the whole batch.\n\n**Previous-period comparison**: The card includes `previousSalesUnits` / `previousRevenue` — sales and revenue from the equal-length period immediately before `[startDate, endDate]` — ready for MoM / period-over-period diffs without extra calls.\n\n**Revenue potential**: `revenuePotential` projects what the SKU could have earned if it had been in stock every day of the window; compare with `monthlySalesRevenue` to quantify stock-out drag, together with `lostProfit` / `lostProfitPercent`.\n\n**Date window**: `startDate` / `endDate` define the period for all period-aggregated metrics. Latest selectable date is **yesterday** (T-1); today and future dates are rejected.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productIds | array<integer\\|string> | yes | Ozon SKU list, up to **100** per call |\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| includeFbs | boolean | no | `true` to include FBS data; `false` = FBO-only |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productDetail`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_detail.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-detail-<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发生以下异常情况时，采用 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. Single-SKU detail**\n```json\n{\"productIds\": [1786874757]}\n```\n\n**2. Batch lookup with period**\n```json\n{\n  \"productIds\": [1786874757, 151623766, 142257239],\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\",\n  \"includeFbs\": true\n}\n```\n\n**3. FBO-only snapshot**\n```json\n{\"productIds\": [1786874757, 151623766], \"includeFbs\": false}\n```\n\n**4. SKUs discovered upstream — full card**\n```json\n{\"productIds\": [<list from mpstats-ozon-product-search>]}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Search → detail**: Use `mpstats-ozon-product-search` to resolve a keyword / brand / seller into `productId`s, then pass them here for full metrics.\n2. **Detail vs trend**: This endpoint is a **period aggregate** per SKU; for day-by-day time-series on a single SKU, use `mpstats-ozon-product-trend`.\n3. **Detail vs drill-downs**: When the input dimension is a brand / category / seller (not a SKU list), prefer `brand-products` / `category-products` / `seller-products` — they already return aggregated metrics per SKU under that dimension.\n\n## Display Rules\n\n1. **Compact table** — lead with `productId`, `title`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `reviewCount`, `balance`, `deliveryScheme`, `firstDate`. Pull `revenuePotential` / `lostProfit` / `lostProfitPercent` in when the user asks about stock-out impact.\n2. **Currency** — Ozon native currency is **RUB**; the `currency` field carries the symbol. Do not silently relabel.\n3. **Partial success** — the response carries `successCount` / `failedCount` / `failures`; when `failedCount > 0`, list the failed `productId`s from `failures` to the user rather than silently dropping them.\n4. **Period-over-period** — when both current and `previous*` fields are present, render them side-by-side or as diff; don't report a single-period number as \"trend\".\n5. **With-stock vs all-days** — `salesPerDayWithStock` / `dailySalesRevenueWithStock` only count days that had inventory; distinguish from the plain `salesPerDay` / `dailySalesRevenue`.\n6. **Delivery model** — prefer the per-SKU `deliveryScheme` value over assuming FBO; remind users when a batch mixes FBO and FBS.\n7. **No business advice** — present data; do not extrapolate \"this SKU is worth selling\" without a wider analysis.\n\n## Important Limitations\n\n- **100-SKU batch cap** — split larger input lists and call multiple times; the Agent must paginate.\n- **Ozon-only** — this tool does not cover Wildberries or other Russian marketplaces.\n- **T-1 data** — `endDate` must not be today or future.\n- **FBS coverage** — some categories have partial FBS coverage; if the input set is FBS-heavy, expect sparser cards.\n- **Field set differs from brand/seller** — this endpoint does **not** return `brandId`, `country`, `category`, `minPrice` / `maxPrice` / `averagePrice`, `balanceFbs`, `frozenStocks`, `warehousesCount`, `daysInSite` / `daysInStock` / `turnoverDays`, `position` / `categoryPosition` / `revenueSharePercent`, `isFbs`. Use `brand-products` / `category-products` / `seller-products` if those are needed.\n- **No translation** — titles are returned in Russian; translate on demand when presenting to Chinese / English users.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Per-SKU Ozon card lookup:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Pull Ozon details for these SKUs\" | Batch card fetch |\n| \"What's the price / rating / stock of Ozon SKU 1786874757\" | Single-SKU card |\n| \"Competitor's Ozon listings, give me sales & rating\" | Competitor card audit |\n| \"Compare FBO vs FBO+FBS metrics for this SKU set\" | Fulfillment-model comparison |\n\n**Not applicable** — Needs beyond per-SKU card:\n\n- Keyword-based discovery → use `mpstats-ozon-product-search`\n- Day-by-day time-series for one SKU → use `mpstats-ozon-product-trend`\n- Listing copy / reviews / images analysis beyond URL → out of scope\n- Brand / category / seller drill-down with filters → use the matching drill-down skill\n\n**Boundary judgment**: If the user already has a **SKU list** and wants per-SKU sales / price / stock / rating, this is the skill. If they don't yet have SKUs, route through the search or drill-down skills first.\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-product-detail\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1786100005147\n}\n\nFile v1.0.5:references/api.md\n\n# MPSTATS Ozon 商品详情（批量）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productDetail`\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| productIds | array | 是 | Ozon 商品 ID 列表（整数或字符串），**单次最多 100 个**，超过请分批调用 |\n| startDate | string | 否 | 统计起始日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据；整批共享 |\n\n> 服务端并发请求每个 SKU，单条失败自动重试一次；支持部分成功。\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 返回的 SKU 数（= `successCount` + `failedCount`） |\n| successCount | integer | 成功返回卡片的 SKU 数 |\n| failedCount | integer | 失败的 SKU 数 |\n| failures | array | 失败 SKU 明细列表（每项含失败的 `productId` 与错误信息） |\n| products | array | 商品卡列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品详情字段（36 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_productDetail`，同步日期 2026-05-06）。**detail 的字段集与 brand/category/seller 不同**：detail 独有 `previous*` / `revenuePotential` / `deliveryScheme` / `productImageUrls` 等深度字段，但不返回 `brandId` / `country` / `category` / `minPrice/maxPrice/averagePrice` / `balanceFbs` / `frozenStocks` / `warehousesCount` / `daysInSite/daysInStock/turnoverDays` / `position/categoryPosition/revenueSharePercent` / `isFbs`。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| sellerIsBestSeller | boolean | 卖家是否为畅销卖家 |\n| nicheName | string | 赛道路径（俄语，`/` 分隔） |\n| nicheId | integer | 赛道 ID |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| updated | string | 数据更新时间（`yyyy-MM-dd HH:mm:ss`） |\n| note | string | 备注 |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**图片**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| imageUrl | string | 主图 URL（首张大图） |\n| imageCount | integer | 图片总数 |\n| productImageUrls | array<string> | 除主图外的其余大图 URL |\n| productPageUrl | string | 商品页 URL |\n\n**价格与折扣**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与配送**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| deliveryScheme | string | 配送方案；`FBO`=Ozon 仓配，`FBS`=卖家自配 |\n\n**销售与收入（当期 + 上期对比）**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| salesPerDayWithStock | number | 有货日均销量（仅计有库存日） |\n| dailySalesRevenue | number | 日均销售额 |\n| dailySalesRevenueWithStock | number | 有货日均销售额 |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| previousSalesUnits | integer | 上期销量（与本统计周期等长的前一段时间） |\n| previousRevenue | number | 上期销售额 |\n| revenuePotential | number | 潜在销售额（按全期有库存估算） |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| lostProfitPercent | number | 损失销售额占比（%） |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 正常解析 `products` |\n| 401 | 认证失败 | HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 402 | 积分或余额不足 | HTTP 402：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为批量超过 100、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"productIds\": [1786874757, 151623766, 142257239],\n    \"startDate\": \"2025-03-01\",\n    \"endDate\": \"2025-03-31\",\n    \"includeFbs\": true\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-product-detail\",\n  \"sentiment\": \"NEGATIVE\",\n  \"category\": \"BUG\",\n  \"content\": \"Batch with 80 SKUs returned only 40 entries.\"\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\nMPSTATS-Ozon商品详情 batch-fetches full MPSTATS product cards for up to 100 Ozon Russia SKUs, including price, rating, reviews, stock, sales, revenue, listing date, images, and fulfillment details.\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 developers and marketplace analysts use this skill to retrieve per-SKU Ozon Russia product metrics through MPSTATS for price, stock, sales, revenue, fulfillment, and competitor listing checks.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill includes account login, API-key generation, billing plan listing, and paid order creation flows in addition to Ozon data retrieval.\n\nMitigation: Run onboarding or billing commands only when the user intends to register, log in, generate a LinkFox API key, or create a payment order.\n\nRisk: The skill sends API keys and Ozon SKU lookup requests to LinkFox-controlled service endpoints.\n\nMitigation: Install and use the skill only when the operator trusts LinkFox, and configure a dedicated least-privilege API key through LINKFOX_AGENT_API_KEY or LINKFOXAGENT_API_KEY.\n\nRisk: Full response data, cache files, metadata, and payment QR images may be written locally under LinkFox directories that can fall back outside the current project.\n\nMitigation: Run from the intended workspace, verify LinkFox-related environment variables and output paths before use, and review or delete local LinkFox data and cache files when they are no longer needed.\n\nRisk: Ozon detail lookups consume LinkFox credits, and repeated or modified calls may create additional cost.\n\nMitigation: Confirm expected credit use before batch calls, rely on the documented local cache when appropriate, and avoid automatic retries with changed parameters unless the user approves more cost.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-detail)\n- [MPSTATS Ozon product detail API reference](references/api.md)\n- [Authentication and billing onboarding](references/onboarding.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, JSON, files, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON API responses and saved JSON files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Full responses are saved under LinkFox session directories; large responses print summaries unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.5 (source: server release metadata)\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, 15319 bytes\n\nFiles: references/api.md (6294b), scripts/mpstats_ozon_product_detail.py (12758b), skill-card.md (3039b), SKILL.md (10300b), _meta.json (154b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-detail\ndescription: MPSTATS Ozon 俄罗斯站 SKU 全量详情批量查询。一次最多传 100 个 Ozon 商品 ID，返回每个 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、批量 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, Ozon batch lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Detail (Batch)\n\nThis skill batch-fetches the full product card for one or more Ozon (Russia) SKUs via MPSTATS. Returned fields include price, Ozon Card price, discount, rating, reviews, stock, monthly sales units, monthly sales revenue, lost profit, potential revenue, first listing date, image, and more.\n\n## Core Concepts\n\n**Batch semantics**: Pass up to **100** `productIds` in a single call. The server fans out concurrently and automatically retries each failed SKU once; partial success is allowed, so a mixed list is normal.\n\n**Fulfillment model per SKU**: Each product card carries `deliveryScheme`:\n- `FBO` — Fulfillment by Ozon (stock in Ozon warehouses)\n- `FBS` — Fulfillment by Seller (seller-shipped)\n\nPass `includeFbs: true` to allow FBS SKUs and FBS-scoped metrics into the response; `false` (or omitted) keeps the result FBO-centric. This switch applies to the whole batch.\n\n**Previous-period comparison**: The card includes `previousSalesUnits` / `previousRevenue` — sales and revenue from the equal-length period immediately before `[startDate, endDate]` — ready for MoM / period-over-period diffs without extra calls.\n\n**Revenue potential**: `revenuePotential` projects what the SKU could have earned if it had been in stock every day of the window; compare with `monthlySalesRevenue` to quantify stock-out drag, together with `lostProfit` / `lostProfitPercent`.\n\n**Date window**: `startDate` / `endDate` define the period for all period-aggregated metrics. Latest selectable date is **yesterday** (T-1); today and future dates are rejected.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productIds | array<integer\\|string> | yes | Ozon SKU list, up to **100** per call |\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| includeFbs | boolean | no | `true` to include FBS data; `false` = FBO-only |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productDetail`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_detail.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-detail-<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- **未配置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. Single-SKU detail**\n```json\n{\"productIds\": [1786874757]}\n```\n\n**2. Batch lookup with period**\n```json\n{\n  \"productIds\": [1786874757, 151623766, 142257239],\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\",\n  \"includeFbs\": true\n}\n```\n\n**3. FBO-only snapshot**\n```json\n{\"productIds\": [1786874757, 151623766], \"includeFbs\": false}\n```\n\n**4. SKUs discovered upstream — full card**\n```json\n{\"productIds\": [<list from mpstats-ozon-product-search>]}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Search → detail**: Use `mpstats-ozon-product-search` to resolve a keyword / brand / seller into `productId`s, then pass them here for full metrics.\n2. **Detail vs trend**: This endpoint is a **period aggregate** per SKU; for day-by-day time-series on a single SKU, use `mpstats-ozon-product-trend`.\n3. **Detail vs drill-downs**: When the input dimension is a brand / category / seller (not a SKU list), prefer `brand-products` / `category-products` / `seller-products` — they already return aggregated metrics per SKU under that dimension.\n\n## Display Rules\n\n1. **Compact table** — lead with `productId`, `title`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `reviewCount`, `balance`, `deliveryScheme`, `firstDate`. Pull `revenuePotential` / `lostProfit` / `lostProfitPercent` in when the user asks about stock-out impact.\n2. **Currency** — Ozon native currency is **RUB**; the `currency` field carries the symbol. Do not silently relabel.\n3. **Partial success** — the response carries `successCount` / `failedCount` / `failures`; when `failedCount > 0`, list the failed `productId`s from `failures` to the user rather than silently dropping them.\n4. **Period-over-period** — when both current and `previous*` fields are present, render them side-by-side or as diff; don't report a single-period number as \"trend\".\n5. **With-stock vs all-days** — `salesPerDayWithStock` / `dailySalesRevenueWithStock` only count days that had inventory; distinguish from the plain `salesPerDay` / `dailySalesRevenue`.\n6. **Delivery model** — prefer the per-SKU `deliveryScheme` value over assuming FBO; remind users when a batch mixes FBO and FBS.\n7. **No business advice** — present data; do not extrapolate \"this SKU is worth selling\" without a wider analysis.\n\n## Important Limitations\n\n- **100-SKU batch cap** — split larger input lists and call multiple times; the Agent must paginate.\n- **Ozon-only** — this tool does not cover Wildberries or other Russian marketplaces.\n- **T-1 data** — `endDate` must not be today or future.\n- **FBS coverage** — some categories have partial FBS coverage; if the input set is FBS-heavy, expect sparser cards.\n- **Field set differs from brand/seller** — this endpoint does **not** return `brandId`, `country`, `category`, `minPrice` / `maxPrice` / `averagePrice`, `balanceFbs`, `frozenStocks`, `warehousesCount`, `daysInSite` / `daysInStock` / `turnoverDays`, `position` / `categoryPosition` / `revenueSharePercent`, `isFbs`. Use `brand-products` / `category-products` / `seller-products` if those are needed.\n- **No translation** — titles are returned in Russian; translate on demand when presenting to Chinese / English users.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Per-SKU Ozon card lookup:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Pull Ozon details for these SKUs\" | Batch card fetch |\n| \"What's the price / rating / stock of Ozon SKU 1786874757\" | Single-SKU card |\n| \"Competitor's Ozon listings, give me sales & rating\" | Competitor card audit |\n| \"Compare FBO vs FBO+FBS metrics for this SKU set\" | Fulfillment-model comparison |\n\n**Not applicable** — Needs beyond per-SKU card:\n\n- Keyword-based discovery → use `mpstats-ozon-product-search`\n- Day-by-day time-series for one SKU → use `mpstats-ozon-product-trend`\n- Listing copy / reviews / images analysis beyond URL → out of scope\n- Brand / category / seller drill-down with filters → use the matching drill-down skill\n\n**Boundary judgment**: If the user already has a **SKU list** and wants per-SKU sales / price / stock / rating, this is the skill. If they don't yet have SKUs, route through the search or drill-down skills first.\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-product-detail\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783944838729\n}\n\nFile v1.0.4:references/api.md\n\n# MPSTATS Ozon 商品详情（批量）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productDetail`\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| productIds | array | 是 | Ozon 商品 ID 列表（整数或字符串），**单次最多 100 个**，超过请分批调用 |\n| startDate | string | 否 | 统计起始日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据；整批共享 |\n\n> 服务端并发请求每个 SKU，单条失败自动重试一次；支持部分成功。\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 返回的 SKU 数（= `successCount` + `failedCount`） |\n| successCount | integer | 成功返回卡片的 SKU 数 |\n| failedCount | integer | 失败的 SKU 数 |\n| failures | array | 失败 SKU 明细列表（每项含失败的 `productId` 与错误信息） |\n| products | array | 商品卡列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品详情字段（36 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_productDetail`，同步日期 2026-05-06）。**detail 的字段集与 brand/category/seller 不同**：detail 独有 `previous*` / `revenuePotential` / `deliveryScheme` / `productImageUrls` 等深度字段，但不返回 `brandId` / `country` / `category` / `minPrice/maxPrice/averagePrice` / `balanceFbs` / `frozenStocks` / `warehousesCount` / `daysInSite/daysInStock/turnoverDays` / `position/categoryPosition/revenueSharePercent` / `isFbs`。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| sellerIsBestSeller | boolean | 卖家是否为畅销卖家 |\n| nicheName | string | 赛道路径（俄语，`/` 分隔） |\n| nicheId | integer | 赛道 ID |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| updated | string | 数据更新时间（`yyyy-MM-dd HH:mm:ss`） |\n| note | string | 备注 |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**图片**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| imageUrl | string | 主图 URL（首张大图） |\n| imageCount | integer | 图片总数 |\n| productImageUrls | array<string> | 除主图外的其余大图 URL |\n| productPageUrl | string | 商品页 URL |\n\n**价格与折扣**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与配送**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| deliveryScheme | string | 配送方案；`FBO`=Ozon 仓配，`FBS`=卖家自配 |\n\n**销售与收入（当期 + 上期对比）**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| salesPerDayWithStock | number | 有货日均销量（仅计有库存日） |\n| dailySalesRevenue | number | 日均销售额 |\n| dailySalesRevenueWithStock | number | 有货日均销售额 |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| previousSalesUnits | integer | 上期销量（与本统计周期等长的前一段时间） |\n| previousRevenue | number | 上期销售额 |\n| revenuePotential | number | 潜在销售额（按全期有库存估算） |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| lostProfitPercent | number | 损失销售额占比（%） |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 正常解析 `products` |\n| 401 | 认证失败 | HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 402 | 积分或余额不足 | HTTP 402：按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为批量超过 100、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"productIds\": [1786874757, 151623766, 142257239],\n    \"startDate\": \"2025-03-01\",\n    \"endDate\": \"2025-03-31\",\n    \"includeFbs\": true\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-product-detail\",\n  \"sentiment\": \"NEGATIVE\",\n  \"category\": \"BUG\",\n  \"content\": \"Batch with 80 SKUs returned only 40 entries.\"\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>\nBatch-fetches full MPSTATS product-card data for up to 100 Ozon Russia SKUs, including pricing, ratings, reviews, inventory, sales, revenue, listing dates, images, and fulfillment details. <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 and analysts use this skill to retrieve and compare detailed Ozon SKU metrics from MPSTATS for product checks, competitor audits, fulfillment comparisons, and period-over-period sales review. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill uses LinkFox/MPSTATS API credentials and sends requests to LinkFox-controlled services. <br>\nMitigation: Use a scoped API key where possible, keep the key in environment variables only for the intended session, and confirm LINKFOX_TOOL_GATEWAY is unset or points to the expected LinkFox gateway before running. <br>\nRisk: Full product-detail responses may be saved locally and cached, including business data from SKU lookups. <br>\nMitigation: Run the skill from an appropriate workspace, review the generated linkfox data directory, and remove cached or saved response files when they are no longer needed. <br>\nRisk: The skill can consume paid LinkFox/MPSTATS credits and may produce additional cost for repeated or large-batch lookups. <br>\nMitigation: Confirm batch size and date windows before execution, rely on the built-in cache for repeated identical calls, and ask before splitting large SKU lists into multiple requests. <br>\nRisk: The artifact describes automatic feedback reporting and onboarding-skill installation behavior. <br>\nMitigation: Approve feedback reporting and any onboarding-skill installation explicitly before allowing those behaviors in a sensitive environment. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-detail) <br>\n- [MPSTATS Ozon API reference](references/api.md) <br>\n- [LinkFox skills guide](https://skill.linkfox.com/linkfoxskills/guide.htm) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with JSON parameters, shell commands, compact tables, summaries, and saved JSON response files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [The script writes full API responses to local JSON files, prints small responses inline, summarizes large responses, and supports a 24-hour local cache.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (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.3: 5 files, 14375 bytes\n\nFiles: references/api.md (6171b), scripts/mpstats_ozon_product_detail.py (12839b), skill-card.md (2492b), SKILL.md (8974b), _meta.json (154b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-detail\ndescription: MPSTATS Ozon 俄罗斯站 SKU 全量详情批量查询。一次最多传 100 个 Ozon 商品 ID，返回每个 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、批量 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, Ozon batch lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Detail (Batch)\n\nThis skill batch-fetches the full product card for one or more Ozon (Russia) SKUs via MPSTATS. Returned fields include price, Ozon Card price, discount, rating, reviews, stock, monthly sales units, monthly sales revenue, lost profit, potential revenue, first listing date, image, and more.\n\n## Core Concepts\n\n**Batch semantics**: Pass up to **100** `productIds` in a single call. The server fans out concurrently and automatically retries each failed SKU once; partial success is allowed, so a mixed list is normal.\n\n**Fulfillment model per SKU**: Each product card carries `deliveryScheme`:\n- `FBO` — Fulfillment by Ozon (stock in Ozon warehouses)\n- `FBS` — Fulfillment by Seller (seller-shipped)\n\nPass `includeFbs: true` to allow FBS SKUs and FBS-scoped metrics into the response; `false` (or omitted) keeps the result FBO-centric. This switch applies to the whole batch.\n\n**Previous-period comparison**: The card includes `previousSalesUnits` / `previousRevenue` — sales and revenue from the equal-length period immediately before `[startDate, endDate]` — ready for MoM / period-over-period diffs without extra calls.\n\n**Revenue potential**: `revenuePotential` projects what the SKU could have earned if it had been in stock every day of the window; compare with `monthlySalesRevenue` to quantify stock-out drag, together with `lostProfit` / `lostProfitPercent`.\n\n**Date window**: `startDate` / `endDate` define the period for all period-aggregated metrics. Latest selectable date is **yesterday** (T-1); today and future dates are rejected.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productIds | array<integer\\|string> | yes | Ozon SKU list, up to **100** per call |\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| includeFbs | boolean | no | `true` to include FBS data; `false` = FBO-only |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productDetail`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_detail.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-detail-<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. Single-SKU detail**\n```json\n{\"productIds\": [1786874757]}\n```\n\n**2. Batch lookup with period**\n```json\n{\n  \"productIds\": [1786874757, 151623766, 142257239],\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\",\n  \"includeFbs\": true\n}\n```\n\n**3. FBO-only snapshot**\n```json\n{\"productIds\": [1786874757, 151623766], \"includeFbs\": false}\n```\n\n**4. SKUs discovered upstream — full card**\n```json\n{\"productIds\": [<list from mpstats-ozon-product-search>]}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Search → detail**: Use `mpstats-ozon-product-search` to resolve a keyword / brand / seller into `productId`s, then pass them here for full metrics.\n2. **Detail vs trend**: This endpoint is a **period aggregate** per SKU; for day-by-day time-series on a single SKU, use `mpstats-ozon-product-trend`.\n3. **Detail vs drill-downs**: When the input dimension is a brand / category / seller (not a SKU list), prefer `brand-products` / `category-products` / `seller-products` — they already return aggregated metrics per SKU under that dimension.\n\n## Display Rules\n\n1. **Compact table** — lead with `productId`, `title`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `reviewCount`, `balance`, `deliveryScheme`, `firstDate`. Pull `revenuePotential` / `lostProfit` / `lostProfitPercent` in when the user asks about stock-out impact.\n2. **Currency** — Ozon native currency is **RUB**; the `currency` field carries the symbol. Do not silently relabel.\n3. **Partial success** — the response carries `successCount` / `failedCount` / `failures`; when `failedCount > 0`, list the failed `productId`s from `failures` to the user rather than silently dropping them.\n4. **Period-over-period** — when both current and `previous*` fields are present, render them side-by-side or as diff; don't report a single-period number as \"trend\".\n5. **With-stock vs all-days** — `salesPerDayWithStock` / `dailySalesRevenueWithStock` only count days that had inventory; distinguish from the plain `salesPerDay` / `dailySalesRevenue`.\n6. **Delivery model** — prefer the per-SKU `deliveryScheme` value over assuming FBO; remind users when a batch mixes FBO and FBS.\n7. **No business advice** — present data; do not extrapolate \"this SKU is worth selling\" without a wider analysis.\n\n## Important Limitations\n\n- **100-SKU batch cap** — split larger input lists and call multiple times; the Agent must paginate.\n- **Ozon-only** — this tool does not cover Wildberries or other Russian marketplaces.\n- **T-1 data** — `endDate` must not be today or future.\n- **FBS coverage** — some categories have partial FBS coverage; if the input set is FBS-heavy, expect sparser cards.\n- **Field set differs from brand/seller** — this endpoint does **not** return `brandId`, `country`, `category`, `minPrice` / `maxPrice` / `averagePrice`, `balanceFbs`, `frozenStocks`, `warehousesCount`, `daysInSite` / `daysInStock` / `turnoverDays`, `position` / `categoryPosition` / `revenueSharePercent`, `isFbs`. Use `brand-products` / `category-products` / `seller-products` if those are needed.\n- **No translation** — titles are returned in Russian; translate on demand when presenting to Chinese / English users.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Per-SKU Ozon card lookup:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Pull Ozon details for these SKUs\" | Batch card fetch |\n| \"What's the price / rating / stock of Ozon SKU 1786874757\" | Single-SKU card |\n| \"Competitor's Ozon listings, give me sales & rating\" | Competitor card audit |\n| \"Compare FBO vs FBO+FBS metrics for this SKU set\" | Fulfillment-model comparison |\n\n**Not applicable** — Needs beyond per-SKU card:\n\n- Keyword-based discovery → use `mpstats-ozon-product-search`\n- Day-by-day time-series for one SKU → use `mpstats-ozon-product-trend`\n- Listing copy / reviews / images analysis beyond URL → out of scope\n- Brand / category / seller drill-down with filters → use the matching drill-down skill\n\n**Boundary judgment**: If the user already has a **SKU list** and wants per-SKU sales / price / stock / rating, this is the skill. If they don't yet have SKUs, route through the search or drill-down skills first.\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-product-detail\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1783336965828\n}\n\nFile v1.0.3:references/api.md\n\n# MPSTATS Ozon 商品详情（批量）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productDetail`\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| productIds | array | 是 | Ozon 商品 ID 列表（整数或字符串），**单次最多 100 个**，超过请分批调用 |\n| startDate | string | 否 | 统计起始日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据；整批共享 |\n\n> 服务端并发请求每个 SKU，单条失败自动重试一次；支持部分成功。\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 返回的 SKU 数（= `successCount` + `failedCount`） |\n| successCount | integer | 成功返回卡片的 SKU 数 |\n| failedCount | integer | 失败的 SKU 数 |\n| failures | array | 失败 SKU 明细列表（每项含失败的 `productId` 与错误信息） |\n| products | array | 商品卡列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品详情字段（36 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_productDetail`，同步日期 2026-05-06）。**detail 的字段集与 brand/category/seller 不同**：detail 独有 `previous*` / `revenuePotential` / `deliveryScheme` / `productImageUrls` 等深度字段，但不返回 `brandId` / `country` / `category` / `minPrice/maxPrice/averagePrice` / `balanceFbs` / `frozenStocks` / `warehousesCount` / `daysInSite/daysInStock/turnoverDays` / `position/categoryPosition/revenueSharePercent` / `isFbs`。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| sellerIsBestSeller | boolean | 卖家是否为畅销卖家 |\n| nicheName | string | 赛道路径（俄语，`/` 分隔） |\n| nicheId | integer | 赛道 ID |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| updated | string | 数据更新时间（`yyyy-MM-dd HH:mm:ss`） |\n| note | string | 备注 |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**图片**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| imageUrl | string | 主图 URL（首张大图） |\n| imageCount | integer | 图片总数 |\n| productImageUrls | array<string> | 除主图外的其余大图 URL |\n| productPageUrl | string | 商品页 URL |\n\n**价格与折扣**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与配送**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| deliveryScheme | string | 配送方案；`FBO`=Ozon 仓配，`FBS`=卖家自配 |\n\n**销售与收入（当期 + 上期对比）**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| salesPerDayWithStock | number | 有货日均销量（仅计有库存日） |\n| dailySalesRevenue | number | 日均销售额 |\n| dailySalesRevenueWithStock | number | 有货日均销售额 |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| previousSalesUnits | integer | 上期销量（与本统计周期等长的前一段时间） |\n| previousRevenue | number | 上期销售额 |\n| revenuePotential | number | 潜在销售额（按全期有库存估算） |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| lostProfitPercent | number | 损失销售额占比（%） |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 正常解析 `products` |\n| 401 | 认证失败 | 检查 `Authorization` 请求头是否正确携带 API Key |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为批量超过 100、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"productIds\": [1786874757, 151623766, 142257239],\n    \"startDate\": \"2025-03-01\",\n    \"endDate\": \"2025-03-31\",\n    \"includeFbs\": true\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-product-detail\",\n  \"sentiment\": \"NEGATIVE\",\n  \"category\": \"BUG\",\n  \"content\": \"Batch with 80 SKUs returned only 40 entries.\"\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>\nQueries MPSTATS for batch Ozon Russia SKU product cards, returning prices, discounts, ratings, reviews, inventory, sales, revenue, revenue potential, listing dates, and image links. <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 e-commerce operators, analysts, and developers use this skill to fetch per-SKU Ozon Russia product cards and compare product price, stock, rating, sales, revenue, and period-over-period metrics. <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 calls LinkFox network services. <br>\nMitigation: Install only when the user is comfortable granting a LinkFox API key, and avoid setting LINKFOX_TOOL_GATEWAY unless the destination is trusted. <br>\nRisk: Full product-result data is stored locally after calls. <br>\nMitigation: Review the local output location and retention expectations before using the skill with sensitive SKU lists or competitive research data. <br>\nRisk: The skill text asks agents to submit automatic feedback to a separate external API. <br>\nMitigation: Allow feedback submission only when the user consents to sending comments or task context to LinkFox's feedback service. <br>\n\n\n## Reference(s): <br>\n- [MPSTATS Ozon product detail API reference](artifact/references/api.md) <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-detail) <br>\n- [LinkFox Skills authorization guide](https://skill.linkfox.com/linkfoxskills/guide.htm) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, JSON, Files] <br>\n**Output Format:** [JSON response data written to disk, with stdout showing either full JSON for small responses or a compact text summary for large responses.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [The skill can cache identical calls for 24 hours and supports an inline mode that prints the full response after saving it.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server release metadata) <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, 13038 bytes\n\nFiles: references/api.md (6171b), scripts/mpstats_ozon_product_detail.py (12839b), SKILL.md (8974b), _meta.json (154b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-detail\ndescription: MPSTATS Ozon 俄罗斯站 SKU 全量详情批量查询。一次最多传 100 个 Ozon 商品 ID，返回每个 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、批量 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, Ozon batch lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Detail (Batch)\n\nThis skill batch-fetches the full product card for one or more Ozon (Russia) SKUs via MPSTATS. Returned fields include price, Ozon Card price, discount, rating, reviews, stock, monthly sales units, monthly sales revenue, lost profit, potential revenue, first listing date, image, and more.\n\n## Core Concepts\n\n**Batch semantics**: Pass up to **100** `productIds` in a single call. The server fans out concurrently and automatically retries each failed SKU once; partial success is allowed, so a mixed list is normal.\n\n**Fulfillment model per SKU**: Each product card carries `deliveryScheme`:\n- `FBO` — Fulfillment by Ozon (stock in Ozon warehouses)\n- `FBS` — Fulfillment by Seller (seller-shipped)\n\nPass `includeFbs: true` to allow FBS SKUs and FBS-scoped metrics into the response; `false` (or omitted) keeps the result FBO-centric. This switch applies to the whole batch.\n\n**Previous-period comparison**: The card includes `previousSalesUnits` / `previousRevenue` — sales and revenue from the equal-length period immediately before `[startDate, endDate]` — ready for MoM / period-over-period diffs without extra calls.\n\n**Revenue potential**: `revenuePotential` projects what the SKU could have earned if it had been in stock every day of the window; compare with `monthlySalesRevenue` to quantify stock-out drag, together with `lostProfit` / `lostProfitPercent`.\n\n**Date window**: `startDate` / `endDate` define the period for all period-aggregated metrics. Latest selectable date is **yesterday** (T-1); today and future dates are rejected.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productIds | array<integer\\|string> | yes | Ozon SKU list, up to **100** per call |\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| includeFbs | boolean | no | `true` to include FBS data; `false` = FBO-only |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productDetail`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_detail.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-detail-<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. Single-SKU detail**\n```json\n{\"productIds\": [1786874757]}\n```\n\n**2. Batch lookup with period**\n```json\n{\n  \"productIds\": [1786874757, 151623766, 142257239],\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\",\n  \"includeFbs\": true\n}\n```\n\n**3. FBO-only snapshot**\n```json\n{\"productIds\": [1786874757, 151623766], \"includeFbs\": false}\n```\n\n**4. SKUs discovered upstream — full card**\n```json\n{\"productIds\": [<list from mpstats-ozon-product-search>]}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Search → detail**: Use `mpstats-ozon-product-search` to resolve a keyword / brand / seller into `productId`s, then pass them here for full metrics.\n2. **Detail vs trend**: This endpoint is a **period aggregate** per SKU; for day-by-day time-series on a single SKU, use `mpstats-ozon-product-trend`.\n3. **Detail vs drill-downs**: When the input dimension is a brand / category / seller (not a SKU list), prefer `brand-products` / `category-products` / `seller-products` — they already return aggregated metrics per SKU under that dimension.\n\n## Display Rules\n\n1. **Compact table** — lead with `productId`, `title`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `reviewCount`, `balance`, `deliveryScheme`, `firstDate`. Pull `revenuePotential` / `lostProfit` / `lostProfitPercent` in when the user asks about stock-out impact.\n2. **Currency** — Ozon native currency is **RUB**; the `currency` field carries the symbol. Do not silently relabel.\n3. **Partial success** — the response carries `successCount` / `failedCount` / `failures`; when `failedCount > 0`, list the failed `productId`s from `failures` to the user rather than silently dropping them.\n4. **Period-over-period** — when both current and `previous*` fields are present, render them side-by-side or as diff; don't report a single-period number as \"trend\".\n5. **With-stock vs all-days** — `salesPerDayWithStock` / `dailySalesRevenueWithStock` only count days that had inventory; distinguish from the plain `salesPerDay` / `dailySalesRevenue`.\n6. **Delivery model** — prefer the per-SKU `deliveryScheme` value over assuming FBO; remind users when a batch mixes FBO and FBS.\n7. **No business advice** — present data; do not extrapolate \"this SKU is worth selling\" without a wider analysis.\n\n## Important Limitations\n\n- **100-SKU batch cap** — split larger input lists and call multiple times; the Agent must paginate.\n- **Ozon-only** — this tool does not cover Wildberries or other Russian marketplaces.\n- **T-1 data** — `endDate` must not be today or future.\n- **FBS coverage** — some categories have partial FBS coverage; if the input set is FBS-heavy, expect sparser cards.\n- **Field set differs from brand/seller** — this endpoint does **not** return `brandId`, `country`, `category`, `minPrice` / `maxPrice` / `averagePrice`, `balanceFbs`, `frozenStocks`, `warehousesCount`, `daysInSite` / `daysInStock` / `turnoverDays`, `position` / `categoryPosition` / `revenueSharePercent`, `isFbs`. Use `brand-products` / `category-products` / `seller-products` if those are needed.\n- **No translation** — titles are returned in Russian; translate on demand when presenting to Chinese / English users.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Per-SKU Ozon card lookup:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Pull Ozon details for these SKUs\" | Batch card fetch |\n| \"What's the price / rating / stock of Ozon SKU 1786874757\" | Single-SKU card |\n| \"Competitor's Ozon listings, give me sales & rating\" | Competitor card audit |\n| \"Compare FBO vs FBO+FBS metrics for this SKU set\" | Fulfillment-model comparison |\n\n**Not applicable** — Needs beyond per-SKU card:\n\n- Keyword-based discovery → use `mpstats-ozon-product-search`\n- Day-by-day time-series for one SKU → use `mpstats-ozon-product-trend`\n- Listing copy / reviews / images analysis beyond URL → out of scope\n- Brand / category / seller drill-down with filters → use the matching drill-down skill\n\n**Boundary judgment**: If the user already has a **SKU list** and wants per-SKU sales / price / stock / rating, this is the skill. If they don't yet have SKUs, route through the search or drill-down skills first.\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-product-detail\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1783066883041\n}\n\nFile v1.0.2:references/api.md\n\n# MPSTATS Ozon 商品详情（批量）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productDetail`\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| productIds | array | 是 | Ozon 商品 ID 列表（整数或字符串），**单次最多 100 个**，超过请分批调用 |\n| startDate | string | 否 | 统计起始日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据；整批共享 |\n\n> 服务端并发请求每个 SKU，单条失败自动重试一次；支持部分成功。\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 返回的 SKU 数（= `successCount` + `failedCount`） |\n| successCount | integer | 成功返回卡片的 SKU 数 |\n| failedCount | integer | 失败的 SKU 数 |\n| failures | array | 失败 SKU 明细列表（每项含失败的 `productId` 与错误信息） |\n| products | array | 商品卡列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品详情字段（36 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_productDetail`，同步日期 2026-05-06）。**detail 的字段集与 brand/category/seller 不同**：detail 独有 `previous*` / `revenuePotential` / `deliveryScheme` / `productImageUrls` 等深度字段，但不返回 `brandId` / `country` / `category` / `minPrice/maxPrice/averagePrice` / `balanceFbs` / `frozenStocks` / `warehousesCount` / `daysInSite/daysInStock/turnoverDays` / `position/categoryPosition/revenueSharePercent` / `isFbs`。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| sellerIsBestSeller | boolean | 卖家是否为畅销卖家 |\n| nicheName | string | 赛道路径（俄语，`/` 分隔） |\n| nicheId | integer | 赛道 ID |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| updated | string | 数据更新时间（`yyyy-MM-dd HH:mm:ss`） |\n| note | string | 备注 |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**图片**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| imageUrl | string | 主图 URL（首张大图） |\n| imageCount | integer | 图片总数 |\n| productImageUrls | array<string> | 除主图外的其余大图 URL |\n| productPageUrl | string | 商品页 URL |\n\n**价格与折扣**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与配送**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| deliveryScheme | string | 配送方案；`FBO`=Ozon 仓配，`FBS`=卖家自配 |\n\n**销售与收入（当期 + 上期对比）**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| salesPerDayWithStock | number | 有货日均销量（仅计有库存日） |\n| dailySalesRevenue | number | 日均销售额 |\n| dailySalesRevenueWithStock | number | 有货日均销售额 |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| previousSalesUnits | integer | 上期销量（与本统计周期等长的前一段时间） |\n| previousRevenue | number | 上期销售额 |\n| revenuePotential | number | 潜在销售额（按全期有库存估算） |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| lostProfitPercent | number | 损失销售额占比（%） |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 正常解析 `products` |\n| 401 | 认证失败 | 检查 `Authorization` 请求头是否正确携带 API Key |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为批量超过 100、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"productIds\": [1786874757, 151623766, 142257239],\n    \"startDate\": \"2025-03-01\",\n    \"endDate\": \"2025-03-31\",\n    \"includeFbs\": true\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-product-detail\",\n  \"sentiment\": \"NEGATIVE\",\n  \"category\": \"BUG\",\n  \"content\": \"Batch with 80 SKUs returned only 40 entries.\"\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, 14268 bytes\n\nFiles: references/api.md (6172b), scripts/mpstats_ozon_product_detail.py (12841b), skill-card.md (2306b), SKILL.md (8974b), _meta.json (154b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-detail\ndescription: MPSTATS Ozon 俄罗斯站 SKU 全量详情批量查询。一次最多传 100 个 Ozon 商品 ID，返回每个 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、批量 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, Ozon batch lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Detail (Batch)\n\nThis skill batch-fetches the full product card for one or more Ozon (Russia) SKUs via MPSTATS. Returned fields include price, Ozon Card price, discount, rating, reviews, stock, monthly sales units, monthly sales revenue, lost profit, potential revenue, first listing date, image, and more.\n\n## Core Concepts\n\n**Batch semantics**: Pass up to **100** `productIds` in a single call. The server fans out concurrently and automatically retries each failed SKU once; partial success is allowed, so a mixed list is normal.\n\n**Fulfillment model per SKU**: Each product card carries `deliveryScheme`:\n- `FBO` — Fulfillment by Ozon (stock in Ozon warehouses)\n- `FBS` — Fulfillment by Seller (seller-shipped)\n\nPass `includeFbs: true` to allow FBS SKUs and FBS-scoped metrics into the response; `false` (or omitted) keeps the result FBO-centric. This switch applies to the whole batch.\n\n**Previous-period comparison**: The card includes `previousSalesUnits` / `previousRevenue` — sales and revenue from the equal-length period immediately before `[startDate, endDate]` — ready for MoM / period-over-period diffs without extra calls.\n\n**Revenue potential**: `revenuePotential` projects what the SKU could have earned if it had been in stock every day of the window; compare with `monthlySalesRevenue` to quantify stock-out drag, together with `lostProfit` / `lostProfitPercent`.\n\n**Date window**: `startDate` / `endDate` define the period for all period-aggregated metrics. Latest selectable date is **yesterday** (T-1); today and future dates are rejected.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productIds | array<integer\\|string> | yes | Ozon SKU list, up to **100** per call |\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| includeFbs | boolean | no | `true` to include FBS data; `false` = FBO-only |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productDetail`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_detail.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-detail-<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. Single-SKU detail**\n```json\n{\"productIds\": [1786874757]}\n```\n\n**2. Batch lookup with period**\n```json\n{\n  \"productIds\": [1786874757, 151623766, 142257239],\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\",\n  \"includeFbs\": true\n}\n```\n\n**3. FBO-only snapshot**\n```json\n{\"productIds\": [1786874757, 151623766], \"includeFbs\": false}\n```\n\n**4. SKUs discovered upstream — full card**\n```json\n{\"productIds\": [<list from mpstats-ozon-product-search>]}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Search → detail**: Use `mpstats-ozon-product-search` to resolve a keyword / brand / seller into `productId`s, then pass them here for full metrics.\n2. **Detail vs trend**: This endpoint is a **period aggregate** per SKU; for day-by-day time-series on a single SKU, use `mpstats-ozon-product-trend`.\n3. **Detail vs drill-downs**: When the input dimension is a brand / category / seller (not a SKU list), prefer `brand-products` / `category-products` / `seller-products` — they already return aggregated metrics per SKU under that dimension.\n\n## Display Rules\n\n1. **Compact table** — lead with `productId`, `title`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `reviewCount`, `balance`, `deliveryScheme`, `firstDate`. Pull `revenuePotential` / `lostProfit` / `lostProfitPercent` in when the user asks about stock-out impact.\n2. **Currency** — Ozon native currency is **RUB**; the `currency` field carries the symbol. Do not silently relabel.\n3. **Partial success** — the response carries `successCount` / `failedCount` / `failures`; when `failedCount > 0`, list the failed `productId`s from `failures` to the user rather than silently dropping them.\n4. **Period-over-period** — when both current and `previous*` fields are present, render them side-by-side or as diff; don't report a single-period number as \"trend\".\n5. **With-stock vs all-days** — `salesPerDayWithStock` / `dailySalesRevenueWithStock` only count days that had inventory; distinguish from the plain `salesPerDay` / `dailySalesRevenue`.\n6. **Delivery model** — prefer the per-SKU `deliveryScheme` value over assuming FBO; remind users when a batch mixes FBO and FBS.\n7. **No business advice** — present data; do not extrapolate \"this SKU is worth selling\" without a wider analysis.\n\n## Important Limitations\n\n- **100-SKU batch cap** — split larger input lists and call multiple times; the Agent must paginate.\n- **Ozon-only** — this tool does not cover Wildberries or other Russian marketplaces.\n- **T-1 data** — `endDate` must not be today or future.\n- **FBS coverage** — some categories have partial FBS coverage; if the input set is FBS-heavy, expect sparser cards.\n- **Field set differs from brand/seller** — this endpoint does **not** return `brandId`, `country`, `category`, `minPrice` / `maxPrice` / `averagePrice`, `balanceFbs`, `frozenStocks`, `warehousesCount`, `daysInSite` / `daysInStock` / `turnoverDays`, `position` / `categoryPosition` / `revenueSharePercent`, `isFbs`. Use `brand-products` / `category-products` / `seller-products` if those are needed.\n- **No translation** — titles are returned in Russian; translate on demand when presenting to Chinese / English users.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Per-SKU Ozon card lookup:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Pull Ozon details for these SKUs\" | Batch card fetch |\n| \"What's the price / rating / stock of Ozon SKU 1786874757\" | Single-SKU card |\n| \"Competitor's Ozon listings, give me sales & rating\" | Competitor card audit |\n| \"Compare FBO vs FBO+FBS metrics for this SKU set\" | Fulfillment-model comparison |\n\n**Not applicable** — Needs beyond per-SKU card:\n\n- Keyword-based discovery → use `mpstats-ozon-product-search`\n- Day-by-day time-series for one SKU → use `mpstats-ozon-product-trend`\n- Listing copy / reviews / images analysis beyond URL → out of scope\n- Brand / category / seller drill-down with filters → use the matching drill-down skill\n\n**Boundary judgment**: If the user already has a **SKU list** and wants per-SKU sales / price / stock / rating, this is the skill. If they don't yet have SKUs, route through the search or drill-down skills first.\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-product-detail\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1783061528496\n}\n\nFile v1.0.1:references/api.md\n\n# MPSTATS Ozon 商品详情（批量）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_AGENT_API_URL}/mpstats/ozon/productDetail`\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| productIds | array | 是 | Ozon 商品 ID 列表（整数或字符串），**单次最多 100 个**，超过请分批调用 |\n| startDate | string | 否 | 统计起始日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据；整批共享 |\n\n> 服务端并发请求每个 SKU，单条失败自动重试一次；支持部分成功。\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 返回的 SKU 数（= `successCount` + `failedCount`） |\n| successCount | integer | 成功返回卡片的 SKU 数 |\n| failedCount | integer | 失败的 SKU 数 |\n| failures | array | 失败 SKU 明细列表（每项含失败的 `productId` 与错误信息） |\n| products | array | 商品卡列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品详情字段（36 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_productDetail`，同步日期 2026-05-06）。**detail 的字段集与 brand/category/seller 不同**：detail 独有 `previous*` / `revenuePotential` / `deliveryScheme` / `productImageUrls` 等深度字段，但不返回 `brandId` / `country` / `category` / `minPrice/maxPrice/averagePrice` / `balanceFbs` / `frozenStocks` / `warehousesCount` / `daysInSite/daysInStock/turnoverDays` / `position/categoryPosition/revenueSharePercent` / `isFbs`。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| sellerIsBestSeller | boolean | 卖家是否为畅销卖家 |\n| nicheName | string | 赛道路径（俄语，`/` 分隔） |\n| nicheId | integer | 赛道 ID |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| updated | string | 数据更新时间（`yyyy-MM-dd HH:mm:ss`） |\n| note | string | 备注 |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**图片**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| imageUrl | string | 主图 URL（首张大图） |\n| imageCount | integer | 图片总数 |\n| productImageUrls | array<string> | 除主图外的其余大图 URL |\n| productPageUrl | string | 商品页 URL |\n\n**价格与折扣**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与配送**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| deliveryScheme | string | 配送方案；`FBO`=Ozon 仓配，`FBS`=卖家自配 |\n\n**销售与收入（当期 + 上期对比）**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| salesPerDayWithStock | number | 有货日均销量（仅计有库存日） |\n| dailySalesRevenue | number | 日均销售额 |\n| dailySalesRevenueWithStock | number | 有货日均销售额 |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| previousSalesUnits | integer | 上期销量（与本统计周期等长的前一段时间） |\n| previousRevenue | number | 上期销售额 |\n| revenuePotential | number | 潜在销售额（按全期有库存估算） |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| lostProfitPercent | number | 损失销售额占比（%） |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 正常解析 `products` |\n| 401 | 认证失败 | 检查 `Authorization` 请求头是否正确携带 API Key |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为批量超过 100、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"productIds\": [1786874757, 151623766, 142257239],\n    \"startDate\": \"2025-03-01\",\n    \"endDate\": \"2025-03-31\",\n    \"includeFbs\": true\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-product-detail\",\n  \"sentiment\": \"NEGATIVE\",\n  \"category\": \"BUG\",\n  \"content\": \"Batch with 80 SKUs returned only 40 entries.\"\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>\nBatch fetches full product cards for up to 100 Ozon Russia SKUs via MPSTATS, including price, rating, reviews, stock, sales, revenue, listing date, image, and fulfillment details. <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>\nMarketplace operators, analysts, and developers use this skill to retrieve and compare per-SKU Ozon product metrics for pricing checks, stock review, sales analysis, and competitor audits. <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 SKU lookup requests to LinkFox. <br>\nMitigation: Use approved API keys and only submit SKU data that may be shared with LinkFox. <br>\nRisk: Complete API responses are cached or saved locally and may contain commercial marketplace data. <br>\nMitigation: Use controlled workspaces, manage the saved linkfox data directory, and remove cached response files when retention is not appropriate. <br>\nRisk: Feedback submission can transmit user feedback text to LinkFox. <br>\nMitigation: Submit feedback only when the user or deployment policy permits external transmission. <br>\n\n\n## Reference(s): <br>\n- [MPSTATS Ozon product detail API reference](references/api.md) <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-detail) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [API Calls, JSON, Files, Markdown, Guidance] <br>\n**Output Format:** [JSON response data saved locally, with either full JSON or a concise text summary for agent presentation] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Supports batches of up to 100 productIds, optional date windows, optional FBS inclusion, 24-hour local caching, and partial-success reporting.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release metadata) <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, 10149 bytes\n\nFiles: references/api.md (6164b), scripts/mpstats_ozon_product_detail.py (3438b), skill-card.md (2191b), SKILL.md (7903b), _meta.json (154b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-detail\nversion: 1.0.0\ncategory: product-sourcing\ndescription: MPSTATS Ozon 俄罗斯站 SKU 全量详情批量查询。一次最多传 100 个 Ozon 商品 ID，返回每个 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、批量 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, Ozon batch lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Detail (Batch)\n\nThis skill batch-fetches the full product card for one or more Ozon (Russia) SKUs via MPSTATS. Returned fields include price, Ozon Card price, discount, rating, reviews, stock, monthly sales units, monthly sales revenue, lost profit, potential revenue, first listing date, image, and more.\n\n## Core Concepts\n\n**Batch semantics**: Pass up to **100** `productIds` in a single call. The server fans out concurrently and automatically retries each failed SKU once; partial success is allowed, so a mixed list is normal.\n\n**Fulfillment model per SKU**: Each product card carries `deliveryScheme`:\n- `FBO` — Fulfillment by Ozon (stock in Ozon warehouses)\n- `FBS` — Fulfillment by Seller (seller-shipped)\n\nPass `includeFbs: true` to allow FBS SKUs and FBS-scoped metrics into the response; `false` (or omitted) keeps the result FBO-centric. This switch applies to the whole batch.\n\n**Previous-period comparison**: The card includes `previousSalesUnits` / `previousRevenue` — sales and revenue from the equal-length period immediately before `[startDate, endDate]` — ready for MoM / period-over-period diffs without extra calls.\n\n**Revenue potential**: `revenuePotential` projects what the SKU could have earned if it had been in stock every day of the window; compare with `monthlySalesRevenue` to quantify stock-out drag, together with `lostProfit` / `lostProfitPercent`.\n\n**Date window**: `startDate` / `endDate` define the period for all period-aggregated metrics. Latest selectable date is **yesterday** (T-1); today and future dates are rejected.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productIds | array<integer\\|string> | yes | Ozon SKU list, up to **100** per call |\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| includeFbs | boolean | no | `true` to include FBS data; `false` = FBO-only |\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_product_detail.py` directly for ad-hoc queries.\n\n## Usage Examples\n\n**1. Single-SKU detail**\n```json\n{\"productIds\": [1786874757]}\n```\n\n**2. Batch lookup with period**\n```json\n{\n  \"productIds\": [1786874757, 151623766, 142257239],\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\",\n  \"includeFbs\": true\n}\n```\n\n**3. FBO-only snapshot**\n```json\n{\"productIds\": [1786874757, 151623766], \"includeFbs\": false}\n```\n\n**4. SKUs discovered upstream — full card**\n```json\n{\"productIds\": [<list from mpstats-ozon-product-search>]}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Search → detail**: Use `mpstats-ozon-product-search` to resolve a keyword / brand / seller into `productId`s, then pass them here for full metrics.\n2. **Detail vs trend**: This endpoint is a **period aggregate** per SKU; for day-by-day time-series on a single SKU, use `mpstats-ozon-product-trend`.\n3. **Detail vs drill-downs**: When the input dimension is a brand / category / seller (not a SKU list), prefer `brand-products` / `category-products` / `seller-products` — they already return aggregated metrics per SKU under that dimension.\n\n## Display Rules\n\n1. **Compact table** — lead with `productId`, `title`, `price`, `monthlySalesUnits`, `monthlySalesRevenue`, `rating`, `reviewCount`, `balance`, `deliveryScheme`, `firstDate`. Pull `revenuePotential` / `lostProfit` / `lostProfitPercent` in when the user asks about stock-out impact.\n2. **Currency** — Ozon native currency is **RUB**; the `currency` field carries the symbol. Do not silently relabel.\n3. **Partial success** — the response carries `successCount` / `failedCount` / `failures`; when `failedCount > 0`, list the failed `productId`s from `failures` to the user rather than silently dropping them.\n4. **Period-over-period** — when both current and `previous*` fields are present, render them side-by-side or as diff; don't report a single-period number as \"trend\".\n5. **With-stock vs all-days** — `salesPerDayWithStock` / `dailySalesRevenueWithStock` only count days that had inventory; distinguish from the plain `salesPerDay` / `dailySalesRevenue`.\n6. **Delivery model** — prefer the per-SKU `deliveryScheme` value over assuming FBO; remind users when a batch mixes FBO and FBS.\n7. **No business advice** — present data; do not extrapolate \"this SKU is worth selling\" without a wider analysis.\n\n## Important Limitations\n\n- **100-SKU batch cap** — split larger input lists and call multiple times; the Agent must paginate.\n- **Ozon-only** — this tool does not cover Wildberries or other Russian marketplaces.\n- **T-1 data** — `endDate` must not be today or future.\n- **FBS coverage** — some categories have partial FBS coverage; if the input set is FBS-heavy, expect sparser cards.\n- **Field set differs from brand/seller** — this endpoint does **not** return `brandId`, `country`, `category`, `minPrice` / `maxPrice` / `averagePrice`, `balanceFbs`, `frozenStocks`, `warehousesCount`, `daysInSite` / `daysInStock` / `turnoverDays`, `position` / `categoryPosition` / `revenueSharePercent`, `isFbs`. Use `brand-products` / `category-products` / `seller-products` if those are needed.\n- **No translation** — titles are returned in Russian; translate on demand when presenting to Chinese / English users.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Per-SKU Ozon card lookup:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"Pull Ozon details for these SKUs\" | Batch card fetch |\n| \"What's the price / rating / stock of Ozon SKU 1786874757\" | Single-SKU card |\n| \"Competitor's Ozon listings, give me sales & rating\" | Competitor card audit |\n| \"Compare FBO vs FBO+FBS metrics for this SKU set\" | Fulfillment-model comparison |\n\n**Not applicable** — Needs beyond per-SKU card:\n\n- Keyword-based discovery → use `mpstats-ozon-product-search`\n- Day-by-day time-series for one SKU → use `mpstats-ozon-product-trend`\n- Listing copy / reviews / images analysis beyond URL → out of scope\n- Brand / category / seller drill-down with filters → use the matching drill-down skill\n\n**Boundary judgment**: If the user already has a **SKU list** and wants per-SKU sales / price / stock / rating, this is the skill. If they don't yet have SKUs, route through the search or drill-down skills first.\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-product-detail\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778046001953\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/productDetail`\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| productIds | array | 是 | Ozon 商品 ID 列表（整数或字符串），**单次最多 100 个**，超过请分批调用 |\n| startDate | string | 否 | 统计起始日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，格式 `YYYY-MM-DD`；整批共享；最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据；整批共享 |\n\n> 服务端并发请求每个 SKU，单条失败自动重试一次；支持部分成功。\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 返回的 SKU 数（= `successCount` + `failedCount`） |\n| successCount | integer | 成功返回卡片的 SKU 数 |\n| failedCount | integer | 失败的 SKU 数 |\n| failures | array | 失败 SKU 明细列表（每项含失败的 `productId` 与错误信息） |\n| products | array | 商品卡列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品详情字段（36 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_productDetail`，同步日期 2026-05-06）。**detail 的字段集与 brand/category/seller 不同**：detail 独有 `previous*` / `revenuePotential` / `deliveryScheme` / `productImageUrls` 等深度字段，但不返回 `brandId` / `country` / `category` / `minPrice/maxPrice/averagePrice` / `balanceFbs` / `frozenStocks` / `warehousesCount` / `daysInSite/daysInStock/turnoverDays` / `position/categoryPosition/revenueSharePercent` / `isFbs`。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| sellerIsBestSeller | boolean | 卖家是否为畅销卖家 |\n| nicheName | string | 赛道路径（俄语，`/` 分隔） |\n| nicheId | integer | 赛道 ID |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| updated | string | 数据更新时间（`yyyy-MM-dd HH:mm:ss`） |\n| note | string | 备注 |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**图片**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| imageUrl | string | 主图 URL（首张大图） |\n| imageCount | integer | 图片总数 |\n| productImageUrls | array<string> | 除主图外的其余大图 URL |\n| productPageUrl | string | 商品页 URL |\n\n**价格与折扣**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与配送**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| deliveryScheme | string | 配送方案；`FBO`=Ozon 仓配，`FBS`=卖家自配 |\n\n**销售与收入（当期 + 上期对比）**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| salesPerDay | number | 日均销量（件/日） |\n| salesPerDayWithStock | number | 有货日均销量（仅计有库存日） |\n| dailySalesRevenue | number | 日均销售额 |\n| dailySalesRevenueWithStock | number | 有货日均销售额 |\n| monthlySalesUnits | integer | 统计期销量（件） |\n| monthlySalesRevenue | number | 统计期销售额 |\n| previousSalesUnits | integer | 上期销量（与本统计周期等长的前一段时间） |\n| previousRevenue | number | 上期销售额 |\n| revenuePotential | number | 潜在销售额（按全期有库存估算） |\n| lostProfit | number | 损失销售额（缺货等造成） |\n| lostProfitPercent | number | 损失销售额占比（%） |\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 正常解析 `products` |\n| 401 | 认证失败 | 检查 `Authorization` 请求头是否正确携带 API Key |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为批量超过 100、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"productIds\": [1786874757, 151623766, 142257239],\n    \"startDate\": \"2025-03-01\",\n    \"endDate\": \"2025-03-31\",\n    \"includeFbs\": true\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-product-detail\",\n  \"sentiment\": \"NEGATIVE\",\n  \"category\": \"BUG\",\n  \"content\": \"Batch with 80 SKUs returned only 40 entries.\"\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>\nBatch-fetches full MPSTATS product cards for up to 100 Ozon Russia SKUs, including price, discounts, Ozon Card price, ratings, reviews, stock, sales, revenue, revenue potential, lost sales, first listing date, and images. <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>\nMarketplace operators, product-sourcing teams, and commerce analysts use this skill to retrieve per-SKU Ozon product details and period metrics from MPSTATS for price, stock, rating, sales, revenue, and fulfillment checks. It is best suited when the user already has Ozon SKU IDs and needs compact product-card data or batch comparison. <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 Ozon SKU lists, date windows, and possible feedback text to LinkFox-operated endpoints. <br>\nMitigation: Use a scoped, revocable LINKFOXAGENT_API_KEY, avoid submitting sensitive business notes as feedback, and install only when LinkFox is trusted for these data flows. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/linkfox-mpstats-ozon-product-detail) <br>\n- [MPSTATS Ozon Product Detail API Reference](references/api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown or JSON-oriented summaries of API results, with optional shell commands for direct script usage.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Results may include partial-success batch details, Ozon SKU product-card fields, and API error information.] <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 商品 ID（productId），返回该 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、单个 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, single Ozon SKU lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按单个 Ozon","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\"productId\": 1786874757}"},{"language":"json","snippet":"{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\",\n  \"includeFbs\": true\n}"},{"language":"json","snippet":"{\"productId\": 1786874757, \"includeFbs\": false}"},{"language":"json","snippet":"{\"productId\": <productId from mpstats-ozon-product-search>}"},{"language":"bash","snippet":"curl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{"},{"language":"bash","snippet":"curl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productDetail \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"productId\": 1786874757,\n    \"startDate\": \"2025-03-01\",\n    \"endDate\": \"2025-03-31\",\n    \"includeFbs\": true\n  }'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkfox-mpstats-ozon-product-detail\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 全量详情查询。传入一个 Ozon 商品 ID（productId），返回该 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、单个 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, single Ozon SKU lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按单个 Ozon SKU 拉取全量商品卡数据，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Detail (Single SKU)\n\nThis skill fetches the full product card for one Ozon (Russia) SKU via MPSTATS. Returned fields include price, Ozon Card price, discount, rating, reviews, stock, monthly sales units, monthly sales revenue, lost profit, potential revenue, first listing date, image, and more.\n\n## Core Concepts\n\n**Single-SKU semantics**: Pass exactly one `productId` in a call. `productIds` arrays/lists are no longer accepted by this skill; for multiple SKUs, make separate calls only after confirming the extra credit cost with the user.\n\n**Fulfillment model per SKU**: Each product card carries `deliveryScheme`:\n- `FBO` — Fulfillment by Ozon (stock in Ozon warehouses)\n- `FBS` — Fulfillment by Seller (seller-shipped)\n\nPass `includeFbs: true` to allow FBS SKUs and FBS-scoped metrics into the response; `false` (or omitted) keeps the result FBO-centric. This switch applies to the whole request.\n\n**Previous-period comparison**: The card includes `previousSalesUnits` / `previousRevenue` — sales and revenue from the equal-length period immediately before `[startDate, endDate]` — ready for MoM / period-over-period diffs without extra calls.\n\n**Revenue potential**: `revenuePotential` projects what the SKU could have earned if it had been in stock every day of the window; compare with `monthlySalesRevenue` to quantify stock-out drag, together with `lostProfit` / `lostProfitPercent`.\n\n**Date window**: `startDate` / `endDate` define the period for all period-aggregated metrics. Latest selectable date is **yesterday** (T-1); today and future dates are rejected.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer\\|string | yes | Single Ozon SKU ID |\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| includeFbs | boolean | no | `true` to include FBS data; `false` = FBO-only |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productDetail`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_detail.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗算力；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-detail-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-product-detail\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1789363339179\n}"},{"path":"references/api.md","content":"# MPSTATS Ozon 商品详情（单个 SKU）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productDetail`\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-09-01）。\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| productId | integer\\|string | 是 | 单个 Ozon 商品 ID（SKU）；不接受数组/列表 |\n| startDate | string | 否 | 统计起始日，格式 `YYYY-MM-DD`；最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，格式 `YYYY-MM-DD`；最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n\n> `productIds` 已废弃；本 skill 只接受单个 `productId`。\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 返回的 SKU 数（通常为 0 或 1，= `successCount` + `failedCount`） |\n| successCount | integer | 成功返回卡片的 SKU 数（通常为 0 或 1） |\n| failedCount | integer | 失败的 SKU 数（通常为 0 或 1） |\n| failures | array | 失败 SKU 明细列表（通常最多 1 项，每项含失败的 `productId` 与错误信息） |\n| products | array | 商品卡列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n### products[*] 商品详情字段（36 个）\n\n按官方 outputSchema 定义（`_mpstats_ozon_productDetail`，同步日期 2026-05-06）。**detail 的字段集与 brand/category/seller 不同**：detail 独有 `previous*` / `revenuePotential` / `deliveryScheme` / `productImageUrls` 等深度字段，但不返回 `brandId` / `country` / `category` / `minPrice/maxPrice/averagePrice` / `balanceFbs` / `frozenStocks` / `warehousesCount` / `daysInSite/daysInStock/turnoverDays` / `position/categoryPosition/revenueSharePercent` / `isFbs`。\n\n**身份与基础信息**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| productId | integer | SKU ID |\n| title | string | 商品名称（俄语） |\n| brand | string | 品牌 |\n| sellerName | string | 卖家名 |\n| sellerId | integer | 卖家 ID |\n| sellerIsBestSeller | boolean | 卖家是否为畅销卖家 |\n| nicheName | string | 赛道路径（俄语，`/` 分隔） |\n| nicheId | integer | 赛道 ID |\n| firstDate | string | 上架日期（`yyyy-MM-dd`） |\n| updated | string | 数据更新时间（`yyyy-MM-dd HH:mm:ss`） |\n| note | string | 备注 |\n| sourceTool / sourceType | string | 来源工具 / 数据源标识 |\n\n**图片**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| imageUrl | string | 主图 URL（首张大图） |\n| imageCount | integer | 图片总数 |\n| productImageUrls | array<string> | 除主图外的其余大图 URL |\n| productPageUrl | string | 商品页 URL |\n\n**价格与折扣**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| price | number | 当前售价 |\n| oldPrice | number | 折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（`₽` / `$` / `€`） |\n\n**评分**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| rating | number | 评分，0-5 |\n| reviewCount | integer | 评论数 |\n\n**库存与配送**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| balance | integer | 当前库存（件） |\n| deliveryScheme | string | 配送方案；`FBO`=Ozon 仓配，`FBS`=卖家自配 |\n\n**销售与收入（当期 + 上期对比）**\n\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\nFetches a full MPSTATS product card for one Ozon Russia SKU, including price, discount, rating, reviews, stock, sales, revenue, listing date, delivery scheme, and image fields.\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 users and developers use this skill to retrieve and summarize marketplace metrics for a single known Ozon SKU, including competitor product checks, stock-out impact review, fulfillment comparison, and period-over-period sales comparison.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The release evidence reports sensitive onboarding, credential, billing, storage, and automatic feedback behaviors.\n\nMitigation: Install only after reviewing those behaviors and confirming that LinkFox handling product queries and related account or billing workflows is acceptable.\n\nRisk: Endpoint and credential settings can affect where requests and API keys are sent.\n\nMitigation: Verify endpoint environment variables are not overridden, avoid sharing SMS codes unless registration or login is intended, and avoid storing API keys in shell startup files.\n\nRisk: Billing flows can create payment orders and display payment QR codes or links.\n\nMitigation: Review the selected package, payment method, amount, and order details before scanning or opening any payment QR code or URL.\n\nRisk: Local linkfox output folders may contain full API responses and payment artifacts.\n\nMitigation: Treat local linkfox data folders as sensitive and avoid sharing them without review.\n\n## Reference(s):\n\n- [MPSTATS Ozon Product Detail 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-product-detail)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, JSON, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown-facing summaries with JSON API responses and optional shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes full API responses to local linkfox session data, uses a 24-hour local cache for repeated parameters, and summarizes large responses unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.7 (source: ClawHub 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 商品 ID（productId），返回该 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、单个 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, single Ozon SKU lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按单个 Ozon SKU 拉取全量商品卡数据，也应触发此技能。 Skill: MPSTATS-Ozon商品详情 Owner: linkfox-ai Summary: MPSTATS Ozon 俄罗斯站单个 SKU 全量详情查询。传入一个 Ozon 商品 ID（productId），返回该 SKU 的价格、折扣、Ozon Card 价、评分、评论数、库存、销量、销售额、潜在销售额/损失销售额、上架日期、图片等完整商品卡。当用户提到 Ozon 商品详情、Ozon SKU 详情、Ozon 价格/评分/销量/库存核对、单个 Ozon SKU 查询、竞品 Ozon 基础数据拉取、Ozon 竞品卡片、MPSTATS Ozon detail, Ozon SKU detail, Ozon product card, single Ozon SKU lookup, Russian marketplace product detail 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是按单个 Ozon","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1456,"uniquenessScore":49,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T08:31:25.917Z","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:31:25.917Z","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:59:07.150Z","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"}]}}}