{"id":"14deacb9-18db-4ca2-a61e-b3fd0daa50d2","entityType":"agent","slug":"clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend","name":"MPSTATS-Ozon商品趋势","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend","canonicalPath":"/agent/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend","generatedAt":"2026-10-10T11:53:56.064Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T09:49:35.149Z","emptyReason":null},"description":"MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。 Skill: MPSTATS-Ozon商品趋势 Owner: linkfox-ai Summary: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。 Tags: latest:1.0.7","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-mpstats-ozon-product-trend","sourceUrl":"https://clawhub.ai/linkfox-ai/linkfox-mpstats-ozon-product-trend","homepage":"https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-trend","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linkfox-ai/linkfox-mpstats-ozon-product-trend","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-trend","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:49:35.149Z","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-10T09:49:35.149Z","emptyReason":null},"stars":null,"forks":null,"downloads":1514,"packageName":null,"latestVersion":"1.0.7","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:49:35.149Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T09:49:35.149Z","lastCrawledAt":"2026-10-10T09:49:35.149Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T09:49:35.149Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.7","createdAt":"2026-09-14T05:22:31.395Z","changelog":"Update from 1.0.6 to 1.0.7","fileCount":7,"zipByteSize":23017},{"version":"1.0.6","createdAt":"2026-08-14T14:57:44.071Z","changelog":"Update from 1.0.5 to 1.0.6","fileCount":7,"zipByteSize":23208},{"version":"1.0.5","createdAt":"2026-08-07T10:53:43.446Z","changelog":"Update from 1.0.4 to 1.0.5","fileCount":7,"zipByteSize":23211},{"version":"1.0.4","createdAt":"2026-07-13T12:14:17.060Z","changelog":"Update from 1.0.3 to 1.0.4","fileCount":5,"zipByteSize":14253},{"version":"1.0.3","createdAt":"2026-07-06T11:23:03.237Z","changelog":"Update from 1.0.2 to 1.0.3","fileCount":5,"zipByteSize":13394},{"version":"1.0.2","createdAt":"2026-07-03T08:21:39.735Z","changelog":"Update from 1.0.1 to 1.0.2","fileCount":4,"zipByteSize":11957},{"version":"1.0.1","createdAt":"2026-07-03T06:52:26.303Z","changelog":"Update from 1.0.0 to 1.0.1","fileCount":4,"zipByteSize":11936},{"version":"1.0.0","createdAt":"2026-05-06T05:40:08.035Z","changelog":"Initial release","fileCount":5,"zipByteSize":9140}]},"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-trend","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-trend/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend/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-10T11:53:56.061Z"}},"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-trend/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-mpstats-ozon-product-trend/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-10T09:49:35.149Z","emptyReason":null},"readme":"Skill: MPSTATS-Ozon商品趋势\n\nOwner: linkfox-ai\n\nSummary: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n\nTags: latest:1.0.7\n\nVersion history:\n\nv1.0.7 | 2026-09-14T05:22:31.395Z | user\n\nUpdate from 1.0.6 to 1.0.7\n\nv1.0.6 | 2026-08-14T14:57:44.071Z | user\n\nUpdate from 1.0.5 to 1.0.6\n\nv1.0.5 | 2026-08-07T10:53:43.446Z | user\n\nUpdate from 1.0.4 to 1.0.5\n\nv1.0.4 | 2026-07-13T12:14:17.060Z | user\n\nUpdate from 1.0.3 to 1.0.4\n\nv1.0.3 | 2026-07-06T11:23:03.237Z | user\n\nUpdate from 1.0.2 to 1.0.3\n\nv1.0.2 | 2026-07-03T08:21:39.735Z | user\n\nUpdate from 1.0.1 to 1.0.2\n\nv1.0.1 | 2026-07-03T06:52:26.303Z | user\n\nUpdate from 1.0.0 to 1.0.1\n\nv1.0.0 | 2026-05-06T05:40:08.035Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.7: 7 files, 23017 bytes\n\nFiles: references/api.md (4503b), references/onboarding.md (1999b), scripts/mpstats_ozon_product_trend.py (12818b), scripts/onboarding.py (24027b), skill-card.md (2738b), SKILL.md (8526b), _meta.json (153b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-trend\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Trend (Daily Time-Series)\n\nThis skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.\n\n## Core Concepts\n\n**Single-SKU scope**: Each call analyzes exactly **one** `productId`. For batch per-SKU snapshots (period aggregates), use `mpstats-ozon-product-detail` instead.\n\n**Daily granularity**: The response is an array of daily points (top-level field `data`) across the `[startDate, endDate]` window. Each point carries a `hasData` boolean — if `hasData=false`, the day has no observation (distinct from `sales=0` with `hasData=true`).\n\n**T-1 delay**: MPSTATS trend data is delayed by one day; the latest selectable end date is **yesterday**. Today or future dates are rejected.\n\n**Search-visibility add-on**: Set `includeSearchStats: true` to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer | yes | Ozon SKU (numeric) |\n| startDate | string | no | Window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Window end, `YYYY-MM-DD`; latest = yesterday |\n| includeFbs | boolean | no | Include FBS data alongside FBO |\n| includeSearchStats | boolean | no | Attach search position / visibility signals |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productTrend`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_trend.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗算力；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-trend-<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. Monthly trend for a SKU**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\"\n}\n```\n\n**2. Trend with search visibility**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-02-01\",\n  \"endDate\": \"2025-02-28\",\n  \"includeSearchStats\": true\n}\n```\n\n**3. Combined FBO+FBS trend**\n```json\n{\n  \"productId\": 151623766,\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2025-01-31\",\n  \"includeFbs\": true\n}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Discovery → trend**: Use `mpstats-ozon-product-search` to find a SKU, then check growth / volatility here before committing.\n2. **Aggregate vs time-series**: `mpstats-ozon-product-detail` gives a one-number-per-metric period view; this skill shows the day-by-day shape behind those numbers.\n3. **Drill-down → trend**: After `brand-products` / `category-products` / `seller-products` surfaces a hot SKU, use this skill to validate whether the hotness is recent, seasonal, or sustained.\n\n## Display Rules\n\n1. **Prefer a simple table or sparkline-friendly output** — one row per date with `date`, `price`, `sales`, `balance`, `rating`, `comments`; do not overfit a 90-point series into a single paragraph.\n2. **Use `hasData` to distinguish gaps from zero sales** — `hasData=false` means the day has no observation; don't report it as a zero-sale day.\n3. **Call out anomalies** — large single-day spikes or stockouts (`balance=0` runs where `hasData=true`) should be flagged factually, not as buying advice.\n4. **Currency is RUB** unless upstream layer is already converting (the `currency` field per point carries the symbol, e.g. `₽`); state the currency when showing price movement.\n5. **Revenue is not returned per day** — if the user asks for daily revenue, estimate via `sales * price` and note it's an estimate.\n6. **`includeSearchStats` gaps** — when no search-visibility fields come back, note \"搜索位次数据在该赛道暂不可用\" rather than silently omitting.\n7. **No business advice** — present the shape; leave \"should we buy this listing?\" to the user.\n\n## Important Limitations\n\n- **Single SKU per call** — cannot pass a list of `productId`s; loop at the Agent layer if needed.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **Search stats optional** — `includeSearchStats=true` doesn't guarantee coverage for all niches.\n- **Ozon-only** — Wildberries and other Russian marketplaces are not covered.\n- **Missing days** — the series may have nulls / gaps where no data was captured; do not treat nulls as zero sales.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Single-SKU temporal analysis:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"What's the sales trend of Ozon SKU 1786874757 last month\" | Monthly time-series |\n| \"Is this Ozon listing seasonal or stable\" | Seasonality check |\n| \"Did this Ozon product have stockouts recently\" | Stock anomaly detection |\n| \"Price walk for this Ozon product over Q1\" | Price movement |\n| \"Did this listing's search position improve\" | Search visibility (requires `includeSearchStats`) |\n\n**Not applicable** — Needs beyond single-SKU time-series:\n\n- Batch snapshot of many SKUs → `mpstats-ozon-product-detail`\n- Brand / category / seller drill-down → matching `*-products` skill\n- Pre-IDed discovery → `mpstats-ozon-product-search`\n\n**Boundary judgment**: Use this skill when the question starts with \"how did this ONE product change over time\". For multi-SKU comparisons or dimension-level filtering, go elsewhere.\n\n## 算力消耗规则\n\n按动态规则计费：消耗算力 = 12。列表为空返回 0\n\n> **重要**：本技能的服务按倍数动态计算，可能一次性消耗大量算力，必须提醒用户，由用户决定是否继续。\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n---\n*For more high-quality, professional cross-border e-commerce skills, set [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-product-trend\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1789363351395\n}\n\nFile v1.0.7:references/api.md\n\n# MPSTATS Ozon 商品趋势（分日）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productTrend`\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| productId | integer | 是 | Ozon 商品 SKU |\n| startDate | string | 否 | 统计起始日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n| includeSearchStats | boolean | 否 | 是否附带搜索位次 / 可见性；部分赛道不支持 |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 分日数据点数量（窗口天数） |\n| data | array | 分日数据点列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n> 注意：**分日序列字段名为 `data`**，不是 `trend`；响应体不包含独立的 `productId` 回显。\n\n### data 数据点字段\n\n按官方 outputSchema 定义（`_mpstats_ozon_productTrend`，同步日期 2026-05-06）。共 13 个字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| date | string | 日期，`YYYY-MM-DD` |\n| hasData | boolean | 当日是否有数据（`false` 表示缺失日，区别于 `sales=0`） |\n| price | number | 当日售价 |\n| oldPrice | number | 当日折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（Ozon 官方银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（如 `₽` / `$` / `€`） |\n| sales | integer | 当日销量（件） |\n| balance | integer | 当日 FBO 仓库库存（件） |\n| rating | number | 评分，取值 0-5 |\n| comments | integer | 评论数 |\n| isBestseller | boolean | 当日是否带\"畅销\"标识 |\n| isNew | boolean | 当日是否带\"新品\"标识 |\n\n> **Schema 未声明的字段不会返回**：端点不独立返回 `revenue`、`reviewCount`、`balanceFbs`、`isInStock` 等；如需销售额，用 `sales × price` 估算。\n\n### includeSearchStats 说明\n\n入参层 `includeSearchStats=true` 仅作为服务端可选能力开关；官方 outputSchema 未声明任何额外顶层数组或 per-point 字段。若未来 schema 扩展，请以工具网关 `listEnabledTool` 返回的最新 outputSchema 为准。\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `data` |\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/productTrend \\\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    \"includeSearchStats\": 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-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean seasonal peak for the SKU.\"\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\nReturns daily time-series data for a single Ozon Russia SKU, including sales, price, stock, rating, comments, and optional search visibility signals.\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\nE-commerce analysts, operators, and agents use this skill to inspect one Ozon SKU over time and identify sales, price, stock, rating, or visibility changes. It supports trend validation, seasonality checks, and factual anomaly reporting without making purchasing recommendations.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires a LinkFox API key and may guide users through phone/SMS login or payment flows when access or billing errors occur.\n\nMitigation: Prefer self-service key setup, avoid sharing API keys in chat or persistent shell profile files on shared machines, and review authentication or payment steps before proceeding.\n\nRisk: Endpoint environment variables can redirect requests to non-default LINKFOX_* hosts.\n\nMitigation: Verify LINKFOX_* endpoint variables are unset or point only to trusted LinkFox hosts before running the scripts.\n\nRisk: Full API responses, cache files, and possible QR-code images may be written to local linkfox directories.\n\nMitigation: Run the skill in an appropriate workspace and review or delete local response, cache, and payment QR artifacts when they are no longer needed.\n\nRisk: The security verdict is suspicious and the security summary flags sensitive account, payment, credential, persistence, and automatic feedback behaviors.\n\nMitigation: Review the skill and scan results before installation, and install only when those behaviors are acceptable for the intended environment.\n\n## Reference(s):\n\n- [MPSTATS Ozon Product Trend API Reference](references/api.md)\n- [Authentication and Billing Onboarding](references/onboarding.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON API responses, tables, file paths, and shell command snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes full API responses and cache files under a local linkfox workspace path; large responses are summarized unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.7 (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.6: 7 files, 23208 bytes\n\nFiles: references/api.md (4503b), references/onboarding.md (2046b), scripts/mpstats_ozon_product_trend.py (12762b), scripts/onboarding.py (24089b), skill-card.md (3154b), SKILL.md (8526b), _meta.json (153b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-trend\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Trend (Daily Time-Series)\n\nThis skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.\n\n## Core Concepts\n\n**Single-SKU scope**: Each call analyzes exactly **one** `productId`. For batch per-SKU snapshots (period aggregates), use `mpstats-ozon-product-detail` instead.\n\n**Daily granularity**: The response is an array of daily points (top-level field `data`) across the `[startDate, endDate]` window. Each point carries a `hasData` boolean — if `hasData=false`, the day has no observation (distinct from `sales=0` with `hasData=true`).\n\n**T-1 delay**: MPSTATS trend data is delayed by one day; the latest selectable end date is **yesterday**. Today or future dates are rejected.\n\n**Search-visibility add-on**: Set `includeSearchStats: true` to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer | yes | Ozon SKU (numeric) |\n| startDate | string | no | Window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Window end, `YYYY-MM-DD`; latest = yesterday |\n| includeFbs | boolean | no | Include FBS data alongside FBO |\n| includeSearchStats | boolean | no | Attach search position / visibility signals |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productTrend`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_trend.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-trend-<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. Monthly trend for a SKU**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\"\n}\n```\n\n**2. Trend with search visibility**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-02-01\",\n  \"endDate\": \"2025-02-28\",\n  \"includeSearchStats\": true\n}\n```\n\n**3. Combined FBO+FBS trend**\n```json\n{\n  \"productId\": 151623766,\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2025-01-31\",\n  \"includeFbs\": true\n}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Discovery → trend**: Use `mpstats-ozon-product-search` to find a SKU, then check growth / volatility here before committing.\n2. **Aggregate vs time-series**: `mpstats-ozon-product-detail` gives a one-number-per-metric period view; this skill shows the day-by-day shape behind those numbers.\n3. **Drill-down → trend**: After `brand-products` / `category-products` / `seller-products` surfaces a hot SKU, use this skill to validate whether the hotness is recent, seasonal, or sustained.\n\n## Display Rules\n\n1. **Prefer a simple table or sparkline-friendly output** — one row per date with `date`, `price`, `sales`, `balance`, `rating`, `comments`; do not overfit a 90-point series into a single paragraph.\n2. **Use `hasData` to distinguish gaps from zero sales** — `hasData=false` means the day has no observation; don't report it as a zero-sale day.\n3. **Call out anomalies** — large single-day spikes or stockouts (`balance=0` runs where `hasData=true`) should be flagged factually, not as buying advice.\n4. **Currency is RUB** unless upstream layer is already converting (the `currency` field per point carries the symbol, e.g. `₽`); state the currency when showing price movement.\n5. **Revenue is not returned per day** — if the user asks for daily revenue, estimate via `sales * price` and note it's an estimate.\n6. **`includeSearchStats` gaps** — when no search-visibility fields come back, note \"搜索位次数据在该赛道暂不可用\" rather than silently omitting.\n7. **No business advice** — present the shape; leave \"should we buy this listing?\" to the user.\n\n## Important Limitations\n\n- **Single SKU per call** — cannot pass a list of `productId`s; loop at the Agent layer if needed.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **Search stats optional** — `includeSearchStats=true` doesn't guarantee coverage for all niches.\n- **Ozon-only** — Wildberries and other Russian marketplaces are not covered.\n- **Missing days** — the series may have nulls / gaps where no data was captured; do not treat nulls as zero sales.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Single-SKU temporal analysis:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"What's the sales trend of Ozon SKU 1786874757 last month\" | Monthly time-series |\n| \"Is this Ozon listing seasonal or stable\" | Seasonality check |\n| \"Did this Ozon product have stockouts recently\" | Stock anomaly detection |\n| \"Price walk for this Ozon product over Q1\" | Price movement |\n| \"Did this listing's search position improve\" | Search visibility (requires `includeSearchStats`) |\n\n**Not applicable** — Needs beyond single-SKU time-series:\n\n- Batch snapshot of many SKUs → `mpstats-ozon-product-detail`\n- Brand / category / seller drill-down → matching `*-products` skill\n- Pre-IDed discovery → `mpstats-ozon-product-search`\n\n**Boundary judgment**: Use this skill when the question starts with \"how did this ONE product change over time\". For multi-SKU comparisons or dimension-level filtering, go elsewhere.\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-trend\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1786719464071\n}\n\nFile v1.0.6:references/api.md\n\n# MPSTATS Ozon 商品趋势（分日）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productTrend`\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| productId | integer | 是 | Ozon 商品 SKU |\n| startDate | string | 否 | 统计起始日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n| includeSearchStats | boolean | 否 | 是否附带搜索位次 / 可见性；部分赛道不支持 |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 分日数据点数量（窗口天数） |\n| data | array | 分日数据点列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n> 注意：**分日序列字段名为 `data`**，不是 `trend`；响应体不包含独立的 `productId` 回显。\n\n### data 数据点字段\n\n按官方 outputSchema 定义（`_mpstats_ozon_productTrend`，同步日期 2026-05-06）。共 13 个字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| date | string | 日期，`YYYY-MM-DD` |\n| hasData | boolean | 当日是否有数据（`false` 表示缺失日，区别于 `sales=0`） |\n| price | number | 当日售价 |\n| oldPrice | number | 当日折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（Ozon 官方银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（如 `₽` / `$` / `€`） |\n| sales | integer | 当日销量（件） |\n| balance | integer | 当日 FBO 仓库库存（件） |\n| rating | number | 评分，取值 0-5 |\n| comments | integer | 评论数 |\n| isBestseller | boolean | 当日是否带\"畅销\"标识 |\n| isNew | boolean | 当日是否带\"新品\"标识 |\n\n> **Schema 未声明的字段不会返回**：端点不独立返回 `revenue`、`reviewCount`、`balanceFbs`、`isInStock` 等；如需销售额，用 `sales × price` 估算。\n\n### includeSearchStats 说明\n\n入参层 `includeSearchStats=true` 仅作为服务端可选能力开关；官方 outputSchema 未声明任何额外顶层数组或 per-point 字段。若未来 schema 扩展，请以工具网关 `listEnabledTool` 返回的最新 outputSchema 为准。\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `data` |\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/productTrend \\\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    \"includeSearchStats\": 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-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean seasonal peak for the SKU.\"\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\nReturns daily time-series metrics for a single Ozon Russia SKU, including sales, price, stock, rating, and optional search visibility signals.\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 e-commerce operators, marketplace analysts, and agent developers use this skill to inspect one Ozon SKU's day-by-day sales, price, stock, rating, and visibility patterns. It supports trend validation, seasonality checks, and factual anomaly review without providing buying advice.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uses a LinkFox API key and contacts LinkFox network services, with environment variables that can change service endpoints.\n\nMitigation: Install only if comfortable sharing requests with LinkFox services, keep the API key scoped to the intended account, and avoid custom endpoint environment variables unless the destination is controlled and trusted.\n\nRisk: The bundled onboarding flow can guide phone/SMS login, generate API keys, list paid plans, and create payment orders after a plan and payment method are selected.\n\nMitigation: Prefer self-service account setup on the official LinkFox site when possible, and verify the selected plan, payment method, and order details before approving any payment action.\n\nRisk: The skill writes complete marketplace responses and cache data to local storage, which may include commercially sensitive product research.\n\nMitigation: Run the skill in an appropriate workspace, avoid using sensitive SKU research where local persistence is unacceptable, and review or delete generated linkfox output files when no longer needed.\n\nRisk: The skill can report feedback to LinkFox when results or user reactions indicate an issue or improvement.\n\nMitigation: Review feedback content for sensitive business details before allowing outbound feedback reporting.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-trend)\n- [LinkFox publisher profile](https://clawhub.ai/user/linkfox-ai)\n- [MPSTATS Ozon product trend API reference](references/api.md)\n- [Authentication and billing onboarding](references/onboarding.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, JSON files, guidance]\n\n**Output Format:** [Markdown guidance with JSON API responses, saved JSON data files, tables, and inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Full marketplace responses are saved under a local linkfox session directory; small responses are also printed to stdout, while larger responses are summarized unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.6 (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.5: 7 files, 23211 bytes\n\nFiles: references/api.md (4503b), references/onboarding.md (2046b), scripts/mpstats_ozon_product_trend.py (12762b), scripts/onboarding.py (24089b), skill-card.md (3109b), SKILL.md (8526b), _meta.json (153b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-trend\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Trend (Daily Time-Series)\n\nThis skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.\n\n## Core Concepts\n\n**Single-SKU scope**: Each call analyzes exactly **one** `productId`. For batch per-SKU snapshots (period aggregates), use `mpstats-ozon-product-detail` instead.\n\n**Daily granularity**: The response is an array of daily points (top-level field `data`) across the `[startDate, endDate]` window. Each point carries a `hasData` boolean — if `hasData=false`, the day has no observation (distinct from `sales=0` with `hasData=true`).\n\n**T-1 delay**: MPSTATS trend data is delayed by one day; the latest selectable end date is **yesterday**. Today or future dates are rejected.\n\n**Search-visibility add-on**: Set `includeSearchStats: true` to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer | yes | Ozon SKU (numeric) |\n| startDate | string | no | Window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Window end, `YYYY-MM-DD`; latest = yesterday |\n| includeFbs | boolean | no | Include FBS data alongside FBO |\n| includeSearchStats | boolean | no | Attach search position / visibility signals |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productTrend`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_trend.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-trend-<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. Monthly trend for a SKU**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\"\n}\n```\n\n**2. Trend with search visibility**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-02-01\",\n  \"endDate\": \"2025-02-28\",\n  \"includeSearchStats\": true\n}\n```\n\n**3. Combined FBO+FBS trend**\n```json\n{\n  \"productId\": 151623766,\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2025-01-31\",\n  \"includeFbs\": true\n}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Discovery → trend**: Use `mpstats-ozon-product-search` to find a SKU, then check growth / volatility here before committing.\n2. **Aggregate vs time-series**: `mpstats-ozon-product-detail` gives a one-number-per-metric period view; this skill shows the day-by-day shape behind those numbers.\n3. **Drill-down → trend**: After `brand-products` / `category-products` / `seller-products` surfaces a hot SKU, use this skill to validate whether the hotness is recent, seasonal, or sustained.\n\n## Display Rules\n\n1. **Prefer a simple table or sparkline-friendly output** — one row per date with `date`, `price`, `sales`, `balance`, `rating`, `comments`; do not overfit a 90-point series into a single paragraph.\n2. **Use `hasData` to distinguish gaps from zero sales** — `hasData=false` means the day has no observation; don't report it as a zero-sale day.\n3. **Call out anomalies** — large single-day spikes or stockouts (`balance=0` runs where `hasData=true`) should be flagged factually, not as buying advice.\n4. **Currency is RUB** unless upstream layer is already converting (the `currency` field per point carries the symbol, e.g. `₽`); state the currency when showing price movement.\n5. **Revenue is not returned per day** — if the user asks for daily revenue, estimate via `sales * price` and note it's an estimate.\n6. **`includeSearchStats` gaps** — when no search-visibility fields come back, note \"搜索位次数据在该赛道暂不可用\" rather than silently omitting.\n7. **No business advice** — present the shape; leave \"should we buy this listing?\" to the user.\n\n## Important Limitations\n\n- **Single SKU per call** — cannot pass a list of `productId`s; loop at the Agent layer if needed.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **Search stats optional** — `includeSearchStats=true` doesn't guarantee coverage for all niches.\n- **Ozon-only** — Wildberries and other Russian marketplaces are not covered.\n- **Missing days** — the series may have nulls / gaps where no data was captured; do not treat nulls as zero sales.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Single-SKU temporal analysis:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"What's the sales trend of Ozon SKU 1786874757 last month\" | Monthly time-series |\n| \"Is this Ozon listing seasonal or stable\" | Seasonality check |\n| \"Did this Ozon product have stockouts recently\" | Stock anomaly detection |\n| \"Price walk for this Ozon product over Q1\" | Price movement |\n| \"Did this listing's search position improve\" | Search visibility (requires `includeSearchStats`) |\n\n**Not applicable** — Needs beyond single-SKU time-series:\n\n- Batch snapshot of many SKUs → `mpstats-ozon-product-detail`\n- Brand / category / seller drill-down → matching `*-products` skill\n- Pre-IDed discovery → `mpstats-ozon-product-search`\n\n**Boundary judgment**: Use this skill when the question starts with \"how did this ONE product change over time\". For multi-SKU comparisons or dimension-level filtering, go elsewhere.\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-trend\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1786100023446\n}\n\nFile v1.0.5:references/api.md\n\n# MPSTATS Ozon 商品趋势（分日）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productTrend`\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| productId | integer | 是 | Ozon 商品 SKU |\n| startDate | string | 否 | 统计起始日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n| includeSearchStats | boolean | 否 | 是否附带搜索位次 / 可见性；部分赛道不支持 |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 分日数据点数量（窗口天数） |\n| data | array | 分日数据点列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n> 注意：**分日序列字段名为 `data`**，不是 `trend`；响应体不包含独立的 `productId` 回显。\n\n### data 数据点字段\n\n按官方 outputSchema 定义（`_mpstats_ozon_productTrend`，同步日期 2026-05-06）。共 13 个字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| date | string | 日期，`YYYY-MM-DD` |\n| hasData | boolean | 当日是否有数据（`false` 表示缺失日，区别于 `sales=0`） |\n| price | number | 当日售价 |\n| oldPrice | number | 当日折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（Ozon 官方银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（如 `₽` / `$` / `€`） |\n| sales | integer | 当日销量（件） |\n| balance | integer | 当日 FBO 仓库库存（件） |\n| rating | number | 评分，取值 0-5 |\n| comments | integer | 评论数 |\n| isBestseller | boolean | 当日是否带\"畅销\"标识 |\n| isNew | boolean | 当日是否带\"新品\"标识 |\n\n> **Schema 未声明的字段不会返回**：端点不独立返回 `revenue`、`reviewCount`、`balanceFbs`、`isInStock` 等；如需销售额，用 `sales × price` 估算。\n\n### includeSearchStats 说明\n\n入参层 `includeSearchStats=true` 仅作为服务端可选能力开关；官方 outputSchema 未声明任何额外顶层数组或 per-point 字段。若未来 schema 扩展，请以工具网关 `listEnabledTool` 返回的最新 outputSchema 为准。\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `data` |\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/productTrend \\\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    \"includeSearchStats\": 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-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean seasonal peak for the SKU.\"\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\nThis skill helps an agent retrieve daily MPSTATS time-series data for one Ozon Russia SKU, including price, sales, stock, rating, comments, and optional search-visibility signals.\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 agent users use this skill to inspect the day-by-day trend for a single Ozon product SKU and distinguish growth, seasonality, stockouts, missing observations, and price changes. It supports analysis and reporting, not purchasing or investment advice.\n\n### Deployment Geography for Use:\n\nGlobal; the covered marketplace data is specific to Ozon Russia.\n\n## Known Risks and Mitigations:\n\nRisk: The security evidence reports account onboarding, phone/SMS verification, API-key handling, credit purchases, and local saved outputs.\n\nMitigation: Install only if the user trusts LinkFox for these flows; prefer the LinkFox self-service website for login and billing, and avoid storing long-lived API keys in shell startup files on shared or managed machines.\n\nRisk: The security evidence reports broad credential-bearing network behavior and warns about gateway URL overrides.\n\nMitigation: Review configured LinkFox environment variables before use, avoid overriding gateway URLs unless the endpoint is trusted, and keep API keys scoped to appropriate accounts.\n\nRisk: The artifact includes billing flows for listing plans, creating orders, and rendering payment QR codes.\n\nMitigation: Require explicit user consent before any paid action, verify the plan and payment method, and use official LinkFox billing channels where possible.\n\nRisk: The artifact describes automatic feedback submission when behavior, results, or user sentiment indicate feedback is appropriate.\n\nMitigation: Review whether feedback submission is acceptable in the deployment context before enabling or using this behavior.\n\n## Reference(s):\n\n- [MPSTATS Ozon Product Trend API Reference](references/api.md)\n- [Authentication and Billing Onboarding](references/onboarding.md)\n- [ClawHub Skill Listing](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-trend)\n- [LinkFox Skills](https://skill.linkfox.com/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, json, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown/table summaries, shell command guidance, and saved JSON API responses.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The tool writes full API responses under a local linkfox session data directory, prints small responses inline, summarizes larger responses, and uses a 24-hour local cache for repeated parameter sets.]\n\n## Skill Version(s):\n\n1.0.5 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.4: 5 files, 14253 bytes\n\nFiles: references/api.md (4503b), scripts/mpstats_ozon_product_trend.py (12762b), skill-card.md (2922b), SKILL.md (9143b), _meta.json (153b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-trend\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Trend (Daily Time-Series)\n\nThis skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.\n\n## Core Concepts\n\n**Single-SKU scope**: Each call analyzes exactly **one** `productId`. For batch per-SKU snapshots (period aggregates), use `mpstats-ozon-product-detail` instead.\n\n**Daily granularity**: The response is an array of daily points (top-level field `data`) across the `[startDate, endDate]` window. Each point carries a `hasData` boolean — if `hasData=false`, the day has no observation (distinct from `sales=0` with `hasData=true`).\n\n**T-1 delay**: MPSTATS trend data is delayed by one day; the latest selectable end date is **yesterday**. Today or future dates are rejected.\n\n**Search-visibility add-on**: Set `includeSearchStats: true` to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer | yes | Ozon SKU (numeric) |\n| startDate | string | no | Window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Window end, `YYYY-MM-DD`; latest = yesterday |\n| includeFbs | boolean | no | Include FBS data alongside FBO |\n| includeSearchStats | boolean | no | Attach search position / visibility signals |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productTrend`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_trend.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-trend-<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. Monthly trend for a SKU**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\"\n}\n```\n\n**2. Trend with search visibility**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-02-01\",\n  \"endDate\": \"2025-02-28\",\n  \"includeSearchStats\": true\n}\n```\n\n**3. Combined FBO+FBS trend**\n```json\n{\n  \"productId\": 151623766,\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2025-01-31\",\n  \"includeFbs\": true\n}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Discovery → trend**: Use `mpstats-ozon-product-search` to find a SKU, then check growth / volatility here before committing.\n2. **Aggregate vs time-series**: `mpstats-ozon-product-detail` gives a one-number-per-metric period view; this skill shows the day-by-day shape behind those numbers.\n3. **Drill-down → trend**: After `brand-products` / `category-products` / `seller-products` surfaces a hot SKU, use this skill to validate whether the hotness is recent, seasonal, or sustained.\n\n## Display Rules\n\n1. **Prefer a simple table or sparkline-friendly output** — one row per date with `date`, `price`, `sales`, `balance`, `rating`, `comments`; do not overfit a 90-point series into a single paragraph.\n2. **Use `hasData` to distinguish gaps from zero sales** — `hasData=false` means the day has no observation; don't report it as a zero-sale day.\n3. **Call out anomalies** — large single-day spikes or stockouts (`balance=0` runs where `hasData=true`) should be flagged factually, not as buying advice.\n4. **Currency is RUB** unless upstream layer is already converting (the `currency` field per point carries the symbol, e.g. `₽`); state the currency when showing price movement.\n5. **Revenue is not returned per day** — if the user asks for daily revenue, estimate via `sales * price` and note it's an estimate.\n6. **`includeSearchStats` gaps** — when no search-visibility fields come back, note \"搜索位次数据在该赛道暂不可用\" rather than silently omitting.\n7. **No business advice** — present the shape; leave \"should we buy this listing?\" to the user.\n\n## Important Limitations\n\n- **Single SKU per call** — cannot pass a list of `productId`s; loop at the Agent layer if needed.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **Search stats optional** — `includeSearchStats=true` doesn't guarantee coverage for all niches.\n- **Ozon-only** — Wildberries and other Russian marketplaces are not covered.\n- **Missing days** — the series may have nulls / gaps where no data was captured; do not treat nulls as zero sales.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Single-SKU temporal analysis:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"What's the sales trend of Ozon SKU 1786874757 last month\" | Monthly time-series |\n| \"Is this Ozon listing seasonal or stable\" | Seasonality check |\n| \"Did this Ozon product have stockouts recently\" | Stock anomaly detection |\n| \"Price walk for this Ozon product over Q1\" | Price movement |\n| \"Did this listing's search position improve\" | Search visibility (requires `includeSearchStats`) |\n\n**Not applicable** — Needs beyond single-SKU time-series:\n\n- Batch snapshot of many SKUs → `mpstats-ozon-product-detail`\n- Brand / category / seller drill-down → matching `*-products` skill\n- Pre-IDed discovery → `mpstats-ozon-product-search`\n\n**Boundary judgment**: Use this skill when the question starts with \"how did this ONE product change over time\". For multi-SKU comparisons or dimension-level filtering, go elsewhere.\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-trend\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783944857060\n}\n\nFile v1.0.4:references/api.md\n\n# MPSTATS Ozon 商品趋势（分日）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productTrend`\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| productId | integer | 是 | Ozon 商品 SKU |\n| startDate | string | 否 | 统计起始日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n| includeSearchStats | boolean | 否 | 是否附带搜索位次 / 可见性；部分赛道不支持 |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 分日数据点数量（窗口天数） |\n| data | array | 分日数据点列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n> 注意：**分日序列字段名为 `data`**，不是 `trend`；响应体不包含独立的 `productId` 回显。\n\n### data 数据点字段\n\n按官方 outputSchema 定义（`_mpstats_ozon_productTrend`，同步日期 2026-05-06）。共 13 个字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| date | string | 日期，`YYYY-MM-DD` |\n| hasData | boolean | 当日是否有数据（`false` 表示缺失日，区别于 `sales=0`） |\n| price | number | 当日售价 |\n| oldPrice | number | 当日折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（Ozon 官方银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（如 `₽` / `$` / `€`） |\n| sales | integer | 当日销量（件） |\n| balance | integer | 当日 FBO 仓库库存（件） |\n| rating | number | 评分，取值 0-5 |\n| comments | integer | 评论数 |\n| isBestseller | boolean | 当日是否带\"畅销\"标识 |\n| isNew | boolean | 当日是否带\"新品\"标识 |\n\n> **Schema 未声明的字段不会返回**：端点不独立返回 `revenue`、`reviewCount`、`balanceFbs`、`isInStock` 等；如需销售额，用 `sales × price` 估算。\n\n### includeSearchStats 说明\n\n入参层 `includeSearchStats=true` 仅作为服务端可选能力开关；官方 outputSchema 未声明任何额外顶层数组或 per-point 字段。若未来 schema 扩展，请以工具网关 `listEnabledTool` 返回的最新 outputSchema 为准。\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `data` |\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/productTrend \\\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    \"includeSearchStats\": 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-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean seasonal peak for the SKU.\"\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>\nReturns daily time-series metrics for a single Ozon Russia SKU, including sales, price, stock, rating, and optional search-position or visibility signals for trend, seasonality, and anomaly review. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal marketplace analysts, ecommerce operators, and agents use this skill to inspect the day-by-day performance of one Ozon SKU and identify growth, seasonality, stockouts, price movement, or data gaps. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill reads a LinkFox API key from environment variables and sends requests to external LinkFox services. <br>\nMitigation: Use a scoped API key, keep LINKFOX_TOOL_GATEWAY unset or restricted to a trusted LinkFox endpoint, and run the skill only in environments approved for LinkFox API access. <br>\nRisk: Calls may consume paid LinkFox credits and marketplace trend requests can incur a nonzero cost. <br>\nMitigation: Confirm the requested SKU and date window before execution, rely on the documented 24-hour cache for repeated identical calls, and ask before making additional paid lookups. <br>\nRisk: Full marketplace API responses are saved locally under the current working directory. <br>\nMitigation: Run the skill in an appropriate project directory and review or clean generated linkfox data and cache folders after use, especially in shared repositories. <br>\nRisk: The skill may send feedback reports to LinkFox when quality, mismatch, praise, dissatisfaction, or improvement signals are detected. <br>\nMitigation: Avoid including sensitive user or business data in feedback content and review feedback behavior before enabling the skill in sensitive workflows. <br>\n\n\n## Reference(s): <br>\n- [MPSTATS Ozon 商品趋势 API 参考](references/api.md) <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-trend) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance, JSON, files] <br>\n**Output Format:** [Markdown guidance with JSON API responses and saved JSON files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Full responses are saved under the current working directory; small responses can also be printed inline, while larger responses are summarized unless inline output is requested.] <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, 13394 bytes\n\nFiles: references/api.md (4352b), scripts/mpstats_ozon_product_trend.py (12843b), skill-card.md (2653b), SKILL.md (7817b), _meta.json (153b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-trend\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Trend (Daily Time-Series)\n\nThis skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.\n\n## Core Concepts\n\n**Single-SKU scope**: Each call analyzes exactly **one** `productId`. For batch per-SKU snapshots (period aggregates), use `mpstats-ozon-product-detail` instead.\n\n**Daily granularity**: The response is an array of daily points (top-level field `data`) across the `[startDate, endDate]` window. Each point carries a `hasData` boolean — if `hasData=false`, the day has no observation (distinct from `sales=0` with `hasData=true`).\n\n**T-1 delay**: MPSTATS trend data is delayed by one day; the latest selectable end date is **yesterday**. Today or future dates are rejected.\n\n**Search-visibility add-on**: Set `includeSearchStats: true` to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer | yes | Ozon SKU (numeric) |\n| startDate | string | no | Window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Window end, `YYYY-MM-DD`; latest = yesterday |\n| includeFbs | boolean | no | Include FBS data alongside FBO |\n| includeSearchStats | boolean | no | Attach search position / visibility signals |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productTrend`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_trend.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-trend-<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. Monthly trend for a SKU**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\"\n}\n```\n\n**2. Trend with search visibility**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-02-01\",\n  \"endDate\": \"2025-02-28\",\n  \"includeSearchStats\": true\n}\n```\n\n**3. Combined FBO+FBS trend**\n```json\n{\n  \"productId\": 151623766,\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2025-01-31\",\n  \"includeFbs\": true\n}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Discovery → trend**: Use `mpstats-ozon-product-search` to find a SKU, then check growth / volatility here before committing.\n2. **Aggregate vs time-series**: `mpstats-ozon-product-detail` gives a one-number-per-metric period view; this skill shows the day-by-day shape behind those numbers.\n3. **Drill-down → trend**: After `brand-products` / `category-products` / `seller-products` surfaces a hot SKU, use this skill to validate whether the hotness is recent, seasonal, or sustained.\n\n## Display Rules\n\n1. **Prefer a simple table or sparkline-friendly output** — one row per date with `date`, `price`, `sales`, `balance`, `rating`, `comments`; do not overfit a 90-point series into a single paragraph.\n2. **Use `hasData` to distinguish gaps from zero sales** — `hasData=false` means the day has no observation; don't report it as a zero-sale day.\n3. **Call out anomalies** — large single-day spikes or stockouts (`balance=0` runs where `hasData=true`) should be flagged factually, not as buying advice.\n4. **Currency is RUB** unless upstream layer is already converting (the `currency` field per point carries the symbol, e.g. `₽`); state the currency when showing price movement.\n5. **Revenue is not returned per day** — if the user asks for daily revenue, estimate via `sales * price` and note it's an estimate.\n6. **`includeSearchStats` gaps** — when no search-visibility fields come back, note \"搜索位次数据在该赛道暂不可用\" rather than silently omitting.\n7. **No business advice** — present the shape; leave \"should we buy this listing?\" to the user.\n\n## Important Limitations\n\n- **Single SKU per call** — cannot pass a list of `productId`s; loop at the Agent layer if needed.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **Search stats optional** — `includeSearchStats=true` doesn't guarantee coverage for all niches.\n- **Ozon-only** — Wildberries and other Russian marketplaces are not covered.\n- **Missing days** — the series may have nulls / gaps where no data was captured; do not treat nulls as zero sales.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Single-SKU temporal analysis:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"What's the sales trend of Ozon SKU 1786874757 last month\" | Monthly time-series |\n| \"Is this Ozon listing seasonal or stable\" | Seasonality check |\n| \"Did this Ozon product have stockouts recently\" | Stock anomaly detection |\n| \"Price walk for this Ozon product over Q1\" | Price movement |\n| \"Did this listing's search position improve\" | Search visibility (requires `includeSearchStats`) |\n\n**Not applicable** — Needs beyond single-SKU time-series:\n\n- Batch snapshot of many SKUs → `mpstats-ozon-product-detail`\n- Brand / category / seller drill-down → matching `*-products` skill\n- Pre-IDed discovery → `mpstats-ozon-product-search`\n\n**Boundary judgment**: Use this skill when the question starts with \"how did this ONE product change over time\". For multi-SKU comparisons or dimension-level filtering, go elsewhere.\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-trend\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1783336983237\n}\n\nFile v1.0.3:references/api.md\n\n# MPSTATS Ozon 商品趋势（分日）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productTrend`\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| productId | integer | 是 | Ozon 商品 SKU |\n| startDate | string | 否 | 统计起始日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n| includeSearchStats | boolean | 否 | 是否附带搜索位次 / 可见性；部分赛道不支持 |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 分日数据点数量（窗口天数） |\n| data | array | 分日数据点列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n> 注意：**分日序列字段名为 `data`**，不是 `trend`；响应体不包含独立的 `productId` 回显。\n\n### data 数据点字段\n\n按官方 outputSchema 定义（`_mpstats_ozon_productTrend`，同步日期 2026-05-06）。共 13 个字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| date | string | 日期，`YYYY-MM-DD` |\n| hasData | boolean | 当日是否有数据（`false` 表示缺失日，区别于 `sales=0`） |\n| price | number | 当日售价 |\n| oldPrice | number | 当日折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（Ozon 官方银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（如 `₽` / `$` / `€`） |\n| sales | integer | 当日销量（件） |\n| balance | integer | 当日 FBO 仓库库存（件） |\n| rating | number | 评分，取值 0-5 |\n| comments | integer | 评论数 |\n| isBestseller | boolean | 当日是否带\"畅销\"标识 |\n| isNew | boolean | 当日是否带\"新品\"标识 |\n\n> **Schema 未声明的字段不会返回**：端点不独立返回 `revenue`、`reviewCount`、`balanceFbs`、`isInStock` 等；如需销售额，用 `sales × price` 估算。\n\n### includeSearchStats 说明\n\n入参层 `includeSearchStats=true` 仅作为服务端可选能力开关；官方 outputSchema 未声明任何额外顶层数组或 per-point 字段。若未来 schema 扩展，请以工具网关 `listEnabledTool` 返回的最新 outputSchema 为准。\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `data` |\n| 401 | 认证失败 | 检查 `Authorization` API Key |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为 `productId` 无效、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productTrend \\\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    \"includeSearchStats\": 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-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean seasonal peak for the SKU.\"\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>\nReturns daily time-series metrics for a single Ozon Russia SKU, including sales, price, stock, rating, and optional search-visibility signals, to help analyze growth, seasonality, and anomalies. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal marketplace analysts, e-commerce operators, and agents use this skill to retrieve and summarize day-by-day performance for one Ozon SKU over a selected date window. <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 query parameters plus session-related headers to LinkFox services. <br>\nMitigation: Use a scoped key where possible, avoid submitting sensitive product or session context, and run the skill only in environments approved for external API calls. <br>\nRisk: The skill can automatically submit feedback externally based on user intent or conversation-derived comments. <br>\nMitigation: Review or disable feedback behavior before deployment where user comments, intent, or task context should not be shared with the feedback API. <br>\nRisk: The script persists full API responses and session metadata to local files, which may expose marketplace data in shared workspaces. <br>\nMitigation: Confirm the output directory before use, restrict workspace permissions, and remove generated response files when they are no longer needed. <br>\n\n\n## Reference(s): <br>\n- [MPSTATS Ozon 商品趋势 API 参考](references/api.md) <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-mpstats-ozon-product-trend) <br>\n- [LinkFox Skills API key guide](https://skill.linkfox.com/linkfoxskills/guide.htm) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, JSON files, shell commands, guidance] <br>\n**Output Format:** [Markdown summaries and tables, shell command examples, and persisted JSON API responses] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Full responses are written to local JSON files; small responses may also be printed inline, while larger responses are summarized with sample records.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.2: 4 files, 11957 bytes\n\nFiles: references/api.md (4352b), scripts/mpstats_ozon_product_trend.py (12843b), SKILL.md (7817b), _meta.json (153b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-trend\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Trend (Daily Time-Series)\n\nThis skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.\n\n## Core Concepts\n\n**Single-SKU scope**: Each call analyzes exactly **one** `productId`. For batch per-SKU snapshots (period aggregates), use `mpstats-ozon-product-detail` instead.\n\n**Daily granularity**: The response is an array of daily points (top-level field `data`) across the `[startDate, endDate]` window. Each point carries a `hasData` boolean — if `hasData=false`, the day has no observation (distinct from `sales=0` with `hasData=true`).\n\n**T-1 delay**: MPSTATS trend data is delayed by one day; the latest selectable end date is **yesterday**. Today or future dates are rejected.\n\n**Search-visibility add-on**: Set `includeSearchStats: true` to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer | yes | Ozon SKU (numeric) |\n| startDate | string | no | Window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Window end, `YYYY-MM-DD`; latest = yesterday |\n| includeFbs | boolean | no | Include FBS data alongside FBO |\n| includeSearchStats | boolean | no | Attach search position / visibility signals |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productTrend`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_trend.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-trend-<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. Monthly trend for a SKU**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\"\n}\n```\n\n**2. Trend with search visibility**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-02-01\",\n  \"endDate\": \"2025-02-28\",\n  \"includeSearchStats\": true\n}\n```\n\n**3. Combined FBO+FBS trend**\n```json\n{\n  \"productId\": 151623766,\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2025-01-31\",\n  \"includeFbs\": true\n}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Discovery → trend**: Use `mpstats-ozon-product-search` to find a SKU, then check growth / volatility here before committing.\n2. **Aggregate vs time-series**: `mpstats-ozon-product-detail` gives a one-number-per-metric period view; this skill shows the day-by-day shape behind those numbers.\n3. **Drill-down → trend**: After `brand-products` / `category-products` / `seller-products` surfaces a hot SKU, use this skill to validate whether the hotness is recent, seasonal, or sustained.\n\n## Display Rules\n\n1. **Prefer a simple table or sparkline-friendly output** — one row per date with `date`, `price`, `sales`, `balance`, `rating`, `comments`; do not overfit a 90-point series into a single paragraph.\n2. **Use `hasData` to distinguish gaps from zero sales** — `hasData=false` means the day has no observation; don't report it as a zero-sale day.\n3. **Call out anomalies** — large single-day spikes or stockouts (`balance=0` runs where `hasData=true`) should be flagged factually, not as buying advice.\n4. **Currency is RUB** unless upstream layer is already converting (the `currency` field per point carries the symbol, e.g. `₽`); state the currency when showing price movement.\n5. **Revenue is not returned per day** — if the user asks for daily revenue, estimate via `sales * price` and note it's an estimate.\n6. **`includeSearchStats` gaps** — when no search-visibility fields come back, note \"搜索位次数据在该赛道暂不可用\" rather than silently omitting.\n7. **No business advice** — present the shape; leave \"should we buy this listing?\" to the user.\n\n## Important Limitations\n\n- **Single SKU per call** — cannot pass a list of `productId`s; loop at the Agent layer if needed.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **Search stats optional** — `includeSearchStats=true` doesn't guarantee coverage for all niches.\n- **Ozon-only** — Wildberries and other Russian marketplaces are not covered.\n- **Missing days** — the series may have nulls / gaps where no data was captured; do not treat nulls as zero sales.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Single-SKU temporal analysis:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"What's the sales trend of Ozon SKU 1786874757 last month\" | Monthly time-series |\n| \"Is this Ozon listing seasonal or stable\" | Seasonality check |\n| \"Did this Ozon product have stockouts recently\" | Stock anomaly detection |\n| \"Price walk for this Ozon product over Q1\" | Price movement |\n| \"Did this listing's search position improve\" | Search visibility (requires `includeSearchStats`) |\n\n**Not applicable** — Needs beyond single-SKU time-series:\n\n- Batch snapshot of many SKUs → `mpstats-ozon-product-detail`\n- Brand / category / seller drill-down → matching `*-products` skill\n- Pre-IDed discovery → `mpstats-ozon-product-search`\n\n**Boundary judgment**: Use this skill when the question starts with \"how did this ONE product change over time\". For multi-SKU comparisons or dimension-level filtering, go elsewhere.\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-trend\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1783066899735\n}\n\nFile v1.0.2:references/api.md\n\n# MPSTATS Ozon 商品趋势（分日）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productTrend`\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| productId | integer | 是 | Ozon 商品 SKU |\n| startDate | string | 否 | 统计起始日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n| includeSearchStats | boolean | 否 | 是否附带搜索位次 / 可见性；部分赛道不支持 |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 分日数据点数量（窗口天数） |\n| data | array | 分日数据点列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n> 注意：**分日序列字段名为 `data`**，不是 `trend`；响应体不包含独立的 `productId` 回显。\n\n### data 数据点字段\n\n按官方 outputSchema 定义（`_mpstats_ozon_productTrend`，同步日期 2026-05-06）。共 13 个字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| date | string | 日期，`YYYY-MM-DD` |\n| hasData | boolean | 当日是否有数据（`false` 表示缺失日，区别于 `sales=0`） |\n| price | number | 当日售价 |\n| oldPrice | number | 当日折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（Ozon 官方银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（如 `₽` / `$` / `€`） |\n| sales | integer | 当日销量（件） |\n| balance | integer | 当日 FBO 仓库库存（件） |\n| rating | number | 评分，取值 0-5 |\n| comments | integer | 评论数 |\n| isBestseller | boolean | 当日是否带\"畅销\"标识 |\n| isNew | boolean | 当日是否带\"新品\"标识 |\n\n> **Schema 未声明的字段不会返回**：端点不独立返回 `revenue`、`reviewCount`、`balanceFbs`、`isInStock` 等；如需销售额，用 `sales × price` 估算。\n\n### includeSearchStats 说明\n\n入参层 `includeSearchStats=true` 仅作为服务端可选能力开关；官方 outputSchema 未声明任何额外顶层数组或 per-point 字段。若未来 schema 扩展，请以工具网关 `listEnabledTool` 返回的最新 outputSchema 为准。\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `data` |\n| 401 | 认证失败 | 检查 `Authorization` API Key |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为 `productId` 无效、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productTrend \\\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    \"includeSearchStats\": 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-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean seasonal peak for the SKU.\"\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: 4 files, 11936 bytes\n\nFiles: references/api.md (4353b), scripts/mpstats_ozon_product_trend.py (12845b), SKILL.md (7817b), _meta.json (153b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-trend\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Trend (Daily Time-Series)\n\nThis skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.\n\n## Core Concepts\n\n**Single-SKU scope**: Each call analyzes exactly **one** `productId`. For batch per-SKU snapshots (period aggregates), use `mpstats-ozon-product-detail` instead.\n\n**Daily granularity**: The response is an array of daily points (top-level field `data`) across the `[startDate, endDate]` window. Each point carries a `hasData` boolean — if `hasData=false`, the day has no observation (distinct from `sales=0` with `hasData=true`).\n\n**T-1 delay**: MPSTATS trend data is delayed by one day; the latest selectable end date is **yesterday**. Today or future dates are rejected.\n\n**Search-visibility add-on**: Set `includeSearchStats: true` to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer | yes | Ozon SKU (numeric) |\n| startDate | string | no | Window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Window end, `YYYY-MM-DD`; latest = yesterday |\n| includeFbs | boolean | no | Include FBS data alongside FBO |\n| includeSearchStats | boolean | no | Attach search position / visibility signals |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productTrend`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_trend.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗积分；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-trend-<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. Monthly trend for a SKU**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\"\n}\n```\n\n**2. Trend with search visibility**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-02-01\",\n  \"endDate\": \"2025-02-28\",\n  \"includeSearchStats\": true\n}\n```\n\n**3. Combined FBO+FBS trend**\n```json\n{\n  \"productId\": 151623766,\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2025-01-31\",\n  \"includeFbs\": true\n}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Discovery → trend**: Use `mpstats-ozon-product-search` to find a SKU, then check growth / volatility here before committing.\n2. **Aggregate vs time-series**: `mpstats-ozon-product-detail` gives a one-number-per-metric period view; this skill shows the day-by-day shape behind those numbers.\n3. **Drill-down → trend**: After `brand-products` / `category-products` / `seller-products` surfaces a hot SKU, use this skill to validate whether the hotness is recent, seasonal, or sustained.\n\n## Display Rules\n\n1. **Prefer a simple table or sparkline-friendly output** — one row per date with `date`, `price`, `sales`, `balance`, `rating`, `comments`; do not overfit a 90-point series into a single paragraph.\n2. **Use `hasData` to distinguish gaps from zero sales** — `hasData=false` means the day has no observation; don't report it as a zero-sale day.\n3. **Call out anomalies** — large single-day spikes or stockouts (`balance=0` runs where `hasData=true`) should be flagged factually, not as buying advice.\n4. **Currency is RUB** unless upstream layer is already converting (the `currency` field per point carries the symbol, e.g. `₽`); state the currency when showing price movement.\n5. **Revenue is not returned per day** — if the user asks for daily revenue, estimate via `sales * price` and note it's an estimate.\n6. **`includeSearchStats` gaps** — when no search-visibility fields come back, note \"搜索位次数据在该赛道暂不可用\" rather than silently omitting.\n7. **No business advice** — present the shape; leave \"should we buy this listing?\" to the user.\n\n## Important Limitations\n\n- **Single SKU per call** — cannot pass a list of `productId`s; loop at the Agent layer if needed.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **Search stats optional** — `includeSearchStats=true` doesn't guarantee coverage for all niches.\n- **Ozon-only** — Wildberries and other Russian marketplaces are not covered.\n- **Missing days** — the series may have nulls / gaps where no data was captured; do not treat nulls as zero sales.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Single-SKU temporal analysis:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"What's the sales trend of Ozon SKU 1786874757 last month\" | Monthly time-series |\n| \"Is this Ozon listing seasonal or stable\" | Seasonality check |\n| \"Did this Ozon product have stockouts recently\" | Stock anomaly detection |\n| \"Price walk for this Ozon product over Q1\" | Price movement |\n| \"Did this listing's search position improve\" | Search visibility (requires `includeSearchStats`) |\n\n**Not applicable** — Needs beyond single-SKU time-series:\n\n- Batch snapshot of many SKUs → `mpstats-ozon-product-detail`\n- Brand / category / seller drill-down → matching `*-products` skill\n- Pre-IDed discovery → `mpstats-ozon-product-search`\n\n**Boundary judgment**: Use this skill when the question starts with \"how did this ONE product change over time\". For multi-SKU comparisons or dimension-level filtering, go elsewhere.\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-trend\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1783061546303\n}\n\nFile v1.0.1:references/api.md\n\n# MPSTATS Ozon 商品趋势（分日）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_AGENT_API_URL}/mpstats/ozon/productTrend`\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| productId | integer | 是 | Ozon 商品 SKU |\n| startDate | string | 否 | 统计起始日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n| includeSearchStats | boolean | 否 | 是否附带搜索位次 / 可见性；部分赛道不支持 |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 分日数据点数量（窗口天数） |\n| data | array | 分日数据点列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n> 注意：**分日序列字段名为 `data`**，不是 `trend`；响应体不包含独立的 `productId` 回显。\n\n### data 数据点字段\n\n按官方 outputSchema 定义（`_mpstats_ozon_productTrend`，同步日期 2026-05-06）。共 13 个字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| date | string | 日期，`YYYY-MM-DD` |\n| hasData | boolean | 当日是否有数据（`false` 表示缺失日，区别于 `sales=0`） |\n| price | number | 当日售价 |\n| oldPrice | number | 当日折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（Ozon 官方银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（如 `₽` / `$` / `€`） |\n| sales | integer | 当日销量（件） |\n| balance | integer | 当日 FBO 仓库库存（件） |\n| rating | number | 评分，取值 0-5 |\n| comments | integer | 评论数 |\n| isBestseller | boolean | 当日是否带\"畅销\"标识 |\n| isNew | boolean | 当日是否带\"新品\"标识 |\n\n> **Schema 未声明的字段不会返回**：端点不独立返回 `revenue`、`reviewCount`、`balanceFbs`、`isInStock` 等；如需销售额，用 `sales × price` 估算。\n\n### includeSearchStats 说明\n\n入参层 `includeSearchStats=true` 仅作为服务端可选能力开关；官方 outputSchema 未声明任何额外顶层数组或 per-point 字段。若未来 schema 扩展，请以工具网关 `listEnabledTool` 返回的最新 outputSchema 为准。\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `data` |\n| 401 | 认证失败 | 检查 `Authorization` API Key |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为 `productId` 无效、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productTrend \\\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    \"includeSearchStats\": 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-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean seasonal peak for the SKU.\"\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.0: 5 files, 9140 bytes\n\nFiles: references/api.md (4345b), scripts/mpstats_ozon_product_trend.py (3474b), skill-card.md (2371b), SKILL.md (6748b), _meta.json (153b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: linkfox-mpstats-ozon-product-trend\nversion: 1.0.0\ncategory: product-sourcing\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Trend (Daily Time-Series)\n\nThis skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.\n\n## Core Concepts\n\n**Single-SKU scope**: Each call analyzes exactly **one** `productId`. For batch per-SKU snapshots (period aggregates), use `mpstats-ozon-product-detail` instead.\n\n**Daily granularity**: The response is an array of daily points (top-level field `data`) across the `[startDate, endDate]` window. Each point carries a `hasData` boolean — if `hasData=false`, the day has no observation (distinct from `sales=0` with `hasData=true`).\n\n**T-1 delay**: MPSTATS trend data is delayed by one day; the latest selectable end date is **yesterday**. Today or future dates are rejected.\n\n**Search-visibility add-on**: Set `includeSearchStats: true` to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer | yes | Ozon SKU (numeric) |\n| startDate | string | no | Window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Window end, `YYYY-MM-DD`; latest = yesterday |\n| includeFbs | boolean | no | Include FBS data alongside FBO |\n| includeSearchStats | boolean | no | Attach search position / visibility signals |\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_trend.py` directly for ad-hoc queries.\n\n## Usage Examples\n\n**1. Monthly trend for a SKU**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\"\n}\n```\n\n**2. Trend with search visibility**\n```json\n{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-02-01\",\n  \"endDate\": \"2025-02-28\",\n  \"includeSearchStats\": true\n}\n```\n\n**3. Combined FBO+FBS trend**\n```json\n{\n  \"productId\": 151623766,\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2025-01-31\",\n  \"includeFbs\": true\n}\n```\n\n## How to Chain with Other Ozon Skills\n\n1. **Discovery → trend**: Use `mpstats-ozon-product-search` to find a SKU, then check growth / volatility here before committing.\n2. **Aggregate vs time-series**: `mpstats-ozon-product-detail` gives a one-number-per-metric period view; this skill shows the day-by-day shape behind those numbers.\n3. **Drill-down → trend**: After `brand-products` / `category-products` / `seller-products` surfaces a hot SKU, use this skill to validate whether the hotness is recent, seasonal, or sustained.\n\n## Display Rules\n\n1. **Prefer a simple table or sparkline-friendly output** — one row per date with `date`, `price`, `sales`, `balance`, `rating`, `comments`; do not overfit a 90-point series into a single paragraph.\n2. **Use `hasData` to distinguish gaps from zero sales** — `hasData=false` means the day has no observation; don't report it as a zero-sale day.\n3. **Call out anomalies** — large single-day spikes or stockouts (`balance=0` runs where `hasData=true`) should be flagged factually, not as buying advice.\n4. **Currency is RUB** unless upstream layer is already converting (the `currency` field per point carries the symbol, e.g. `₽`); state the currency when showing price movement.\n5. **Revenue is not returned per day** — if the user asks for daily revenue, estimate via `sales * price` and note it's an estimate.\n6. **`includeSearchStats` gaps** — when no search-visibility fields come back, note \"搜索位次数据在该赛道暂不可用\" rather than silently omitting.\n7. **No business advice** — present the shape; leave \"should we buy this listing?\" to the user.\n\n## Important Limitations\n\n- **Single SKU per call** — cannot pass a list of `productId`s; loop at the Agent layer if needed.\n- **T-1 data** — `endDate` cannot be today or a future date.\n- **Search stats optional** — `includeSearchStats=true` doesn't guarantee coverage for all niches.\n- **Ozon-only** — Wildberries and other Russian marketplaces are not covered.\n- **Missing days** — the series may have nulls / gaps where no data was captured; do not treat nulls as zero sales.\n\n## User Expression & Scenario Quick Reference\n\n**Applicable** — Single-SKU temporal analysis:\n\n| User Says | Scenario |\n|-----------|----------|\n| \"What's the sales trend of Ozon SKU 1786874757 last month\" | Monthly time-series |\n| \"Is this Ozon listing seasonal or stable\" | Seasonality check |\n| \"Did this Ozon product have stockouts recently\" | Stock anomaly detection |\n| \"Price walk for this Ozon product over Q1\" | Price movement |\n| \"Did this listing's search position improve\" | Search visibility (requires `includeSearchStats`) |\n\n**Not applicable** — Needs beyond single-SKU time-series:\n\n- Batch snapshot of many SKUs → `mpstats-ozon-product-detail`\n- Brand / category / seller drill-down → matching `*-products` skill\n- Pre-IDed discovery → `mpstats-ozon-product-search`\n\n**Boundary judgment**: Use this skill when the question starts with \"how did this ONE product change over time\". For multi-SKU comparisons or dimension-level filtering, go elsewhere.\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-trend\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778046008035\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/productTrend`\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| productId | integer | 是 | Ozon 商品 SKU |\n| startDate | string | 否 | 统计起始日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n| includeSearchStats | boolean | 否 | 是否附带搜索位次 / 可见性；部分赛道不支持 |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 分日数据点数量（窗口天数） |\n| data | array | 分日数据点列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n> 注意：**分日序列字段名为 `data`**，不是 `trend`；响应体不包含独立的 `productId` 回显。\n\n### data 数据点字段\n\n按官方 outputSchema 定义（`_mpstats_ozon_productTrend`，同步日期 2026-05-06）。共 13 个字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| date | string | 日期，`YYYY-MM-DD` |\n| hasData | boolean | 当日是否有数据（`false` 表示缺失日，区别于 `sales=0`） |\n| price | number | 当日售价 |\n| oldPrice | number | 当日折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（Ozon 官方银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（如 `₽` / `$` / `€`） |\n| sales | integer | 当日销量（件） |\n| balance | integer | 当日 FBO 仓库库存（件） |\n| rating | number | 评分，取值 0-5 |\n| comments | integer | 评论数 |\n| isBestseller | boolean | 当日是否带\"畅销\"标识 |\n| isNew | boolean | 当日是否带\"新品\"标识 |\n\n> **Schema 未声明的字段不会返回**：端点不独立返回 `revenue`、`reviewCount`、`balanceFbs`、`isInStock` 等；如需销售额，用 `sales × price` 估算。\n\n### includeSearchStats 说明\n\n入参层 `includeSearchStats=true` 仅作为服务端可选能力开关；官方 outputSchema 未声明任何额外顶层数组或 per-point 字段。若未来 schema 扩展，请以工具网关 `listEnabledTool` 返回的最新 outputSchema 为准。\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `data` |\n| 401 | 认证失败 | 检查 `Authorization` API Key |\n| 其他非 200 值 | 业务异常 | 查看 `errmsg` / `msg`；常见为 `productId` 无效、日期越过昨日等 |\n\n## curl 示例\n\n```bash\ncurl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productTrend \\\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    \"includeSearchStats\": 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-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean seasonal peak for the SKU.\"\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>\nReturns daily MPSTATS time-series data for one Ozon Russia SKU, including sales, price, stock, ratings, and optional search-visibility signals for trend, seasonality, and anomaly checks. <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 agents and e-commerce analysts use this skill to inspect one Ozon SKU's day-by-day sales, price, inventory, rating, and visibility behavior. It is intended for factual trend review, stockout detection, and anomaly checks, not automated buying advice. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can send Ozon SKU queries and a LinkFox API key to LinkFox services. <br>\nMitigation: Install only when that data flow is acceptable, keep the API key in LINKFOXAGENT_API_KEY, and avoid exposing credentials in prompts, logs, or feedback text. <br>\nRisk: The artifact instructs agents to submit feedback to a separate LinkFox endpoint without clearly requiring user consent. <br>\nMitigation: Require explicit user approval before submitting feedback and exclude credentials, private prompts, customer data, and confidential business context. <br>\n\n\n## Reference(s): <br>\n- [MPSTATS Ozon Product Trend API Reference](references/api.md) <br>\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/linkfox-mpstats-ozon-product-trend) <br>\n- [LinkFox Skills](https://skill.linkfox.com/) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [API Calls, Analysis, Markdown, Shell commands, Guidance] <br>\n**Output Format:** [Markdown guidance with JSON API responses or table-style summaries] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires LINKFOXAGENT_API_KEY and returns a single-SKU daily time series with possible missing days; the helper script can print raw JSON or a terminal summary table.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: frontmatter and release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: MPSTATS-Ozon商品趋势 Owner: linkfox-ai Summary: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。 Tags: latest:1.0.7","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-03-01\",\n  \"endDate\": \"2025-03-31\"\n}"},{"language":"json","snippet":"{\n  \"productId\": 1786874757,\n  \"startDate\": \"2025-02-01\",\n  \"endDate\": \"2025-02-28\",\n  \"includeSearchStats\": true\n}"},{"language":"json","snippet":"{\n  \"productId\": 151623766,\n  \"startDate\": \"2025-01-01\",\n  \"endDate\": \"2025-01-31\",\n  \"includeFbs\": true\n}"},{"language":"bash","snippet":"curl -X POST https://tool-gateway.linkfox.com/mpstats/ozon/productTrend \\\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/productTrend \\\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    \"includeSearchStats\": true\n  }'"},{"language":"json","snippet":"{\n  \"skillName\": \"linkfox-mpstats-ozon-product-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean seasonal peak for the SKU.\"\n}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkfox-mpstats-ozon-product-trend\ndescription: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。\n---\n\n# MPSTATS Ozon Product Trend (Daily Time-Series)\n\nThis skill returns a daily time-series of a single Ozon (Russia) SKU — sales units, price, stock, rating, and optionally search-position / visibility metrics. It is the go-to for validating growth, seasonality, or anomalies for a specific product.\n\n## Core Concepts\n\n**Single-SKU scope**: Each call analyzes exactly **one** `productId`. For batch per-SKU snapshots (period aggregates), use `mpstats-ozon-product-detail` instead.\n\n**Daily granularity**: The response is an array of daily points (top-level field `data`) across the `[startDate, endDate]` window. Each point carries a `hasData` boolean — if `hasData=false`, the day has no observation (distinct from `sales=0` with `hasData=true`).\n\n**T-1 delay**: MPSTATS trend data is delayed by one day; the latest selectable end date is **yesterday**. Today or future dates are rejected.\n\n**Search-visibility add-on**: Set `includeSearchStats: true` to append search-position / visibility signals. Some niches (especially small categories) may not have search-stats coverage — expect partial or empty fields in those cases.\n\n## Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| productId | integer | yes | Ozon SKU (numeric) |\n| startDate | string | no | Window start, `YYYY-MM-DD`; latest = yesterday |\n| endDate | string | no | Window end, `YYYY-MM-DD`; latest = yesterday |\n| includeFbs | boolean | no | Include FBS data alongside FBO |\n| includeSearchStats | boolean | no | Attach search position / visibility signals |\n\n## 调用方式\n\n- **API 端点**：`POST /mpstats/ozon/productTrend`（完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/mpstats_ozon_product_trend.py '<JSON 参数>' [--inline]`\n- **成本约束**：本工具会消耗算力；同一会话同一参数组合默认只调用一次，脚本带 24h 本地缓存。失败/空结果不得自动换关键词、翻页或改邮编连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-mpstats-ozon-product-trend-<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/套"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-mpstats-ozon-product-trend\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1789363351395\n}"},{"path":"references/api.md","content":"# MPSTATS Ozon 商品趋势（分日）API 参考\n\n## 调用规范\n\n- **请求地址**：`${LINKFOX_TOOL_GATEWAY}/mpstats/ozon/productTrend`\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| productId | integer | 是 | Ozon 商品 SKU |\n| startDate | string | 否 | 统计起始日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| endDate | string | 否 | 统计结束日，`YYYY-MM-DD`；数据延迟 T-1，最晚可选昨日 |\n| includeFbs | boolean | 否 | 是否包含 FBS 数据 |\n| includeSearchStats | boolean | 否 | 是否附带搜索位次 / 可见性；部分赛道不支持 |\n\n## 响应结构\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| code | string | 返回码（字符串），`\"200\"` 表示成功 |\n| errcode | integer | 返回码（整数），`200` 表示成功 |\n| msg / errmsg | string | 消息；成功为 `ok` |\n| total | integer | 分日数据点数量（窗口天数） |\n| data | array | 分日数据点列表（详见下方） |\n| columns | array | 渲染列定义 |\n| costTime | integer | 接口耗时（毫秒） |\n| costToken | integer | 消耗 Token 数量 |\n| type | string | 响应类型 |\n\n> 注意：**分日序列字段名为 `data`**，不是 `trend`；响应体不包含独立的 `productId` 回显。\n\n### data 数据点字段\n\n按官方 outputSchema 定义（`_mpstats_ozon_productTrend`，同步日期 2026-05-06）。共 13 个字段：\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| date | string | 日期，`YYYY-MM-DD` |\n| hasData | boolean | 当日是否有数据（`false` 表示缺失日，区别于 `sales=0`） |\n| price | number | 当日售价 |\n| oldPrice | number | 当日折扣前原价 |\n| ozonCardPrice | number | Ozon Card 价（Ozon 官方银行卡优惠价） |\n| discount | integer | 折扣，百分比整数 0-100 |\n| currency | string | 币种符号（如 `₽` / `$` / `€`） |\n| sales | integer | 当日销量（件） |\n| balance | integer | 当日 FBO 仓库库存（件） |\n| rating | number | 评分，取值 0-5 |\n| comments | integer | 评论数 |\n| isBestseller | boolean | 当日是否带\"畅销\"标识 |\n| isNew | boolean | 当日是否带\"新品\"标识 |\n\n> **Schema 未声明的字段不会返回**：端点不独立返回 `revenue`、`reviewCount`、`balanceFbs`、`isInStock` 等；如需销售额，用 `sales × price` 估算。\n\n### includeSearchStats 说明\n\n入参层 `includeSearchStats=true` 仅作为服务端可选能力开关；官方 outputSchema 未声明任何额外顶层数组或 per-point 字段。若未来 schema 扩展，请以工具网关 `listEnabledTool` 返回的最新 outputSchema 为准。\n\n## 错误码\n\n| errcode | 含义 | 处理建议 |\n|---------|------|----------|\n| 200 | 成功 | 解析 `data` |\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/productTrend \\\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    \"includeSearchStats\": 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-trend\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Spotted a clean sea"},{"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\nReturns daily time-series data for a single Ozon Russia SKU, including sales, price, stock, rating, comments, and optional search visibility signals.\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\nE-commerce analysts, operators, and agents use this skill to inspect one Ozon SKU over time and identify sales, price, stock, rating, or visibility changes. It supports trend validation, seasonality checks, and factual anomaly reporting without making purchasing recommendations.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill requires a LinkFox API key and may guide users through phone/SMS login or payment flows when access or billing errors occur.\n\nMitigation: Prefer self-service key setup, avoid sharing API keys in chat or persistent shell profile files on shared machines, and review authentication or payment steps before proceeding.\n\nRisk: Endpoint environment variables can redirect requests to non-default LINKFOX_* hosts.\n\nMitigation: Verify LINKFOX_* endpoint variables are unset or point only to trusted LinkFox hosts before running the scripts.\n\nRisk: Full API responses, cache files, and possible QR-code images may be written to local linkfox directories.\n\nMitigation: Run the skill in an appropriate workspace and review or delete local response, cache, and payment QR artifacts when they are no longer needed.\n\nRisk: The security verdict is suspicious and the security summary flags sensitive account, payment, credential, persistence, and automatic feedback behaviors.\n\nMitigation: Review the skill and scan results before installation, and install only when those behaviors are acceptable for the intended environment.\n\n## Reference(s):\n\n- [MPSTATS Ozon Product Trend API Reference](references/api.md)\n- [Authentication and Billing Onboarding](references/onboarding.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON API responses, tables, file paths, and shell command snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Writes full API responses and cache files under a local linkfox workspace path; large responses are summarized unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.7 (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."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。 Skill: MPSTATS-Ozon商品趋势 Owner: linkfox-ai Summary: MPSTATS Ozon 俄罗斯站单个 SKU 的分日时间序列表现。按日期粒度返回一个 Ozon 商品的销量、价格、库存、评分等指标，可选附带搜索位次/可见性数据，用于验证增长趋势、季节性、异常波动。当用户提到 Ozon 趋势、Ozon 销量趋势、Ozon 价格走势、Ozon 分日数据、Ozon 库存走势、Ozon 搜索位次、Ozon 商品历史、MPSTATS trend, Ozon daily performance, Ozon time series, Ozon search visibility, Russian marketplace product history 时触发此技能。即使用户未明确说\"MPSTATS\"，只要意图是看某个 Ozon 商品的分日/时间段走势，也应触发此技能。 Tags: latest:1.0.7","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1413,"uniquenessScore":48,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T09:49:35.149Z","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-10T09:49:35.149Z","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-10T11:53:56.064Z","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"}]}}}