{"id":"0a538896-d972-412a-a924-54ea6b9cf830","entityType":"agent","slug":"clawhub-apiclaw-amazon-daily-market-radar","name":"amazon-daily-market-radar","canonicalUrl":"https://www.xpersona.co/agent/clawhub-apiclaw-amazon-daily-market-radar","canonicalPath":"/agent/clawhub-apiclaw-amazon-daily-market-radar","generatedAt":"2026-10-10T09:00:41.599Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:35:24.860Z","emptyReason":null},"description":"Automated daily Amazon market digest. Given the user's own ASINs (1-10) and any competitor ASINs (up to 20), produces a daily change-detection briefing: price moves, BSR shifts, new entrants in the surrounding category, review wave detection, stockout signals. Output is a triaged alert dashboard (RED/YELLOW/GREEN) comparing today against yesterday's snapshot. Designed for unattended scheduled automation (cron-style daily run). Use when the user EXPLICITLY requests ongoing OPERATIONAL daily monitoring of their products and the surrounding market — a \"what changed since yesterday\" digest. Use when user asks: set up daily market monitoring for my ASINs, run my daily radar, what changed in my tracked market since yesterday, daily briefing on my tracked ASINs and competitors, emerging-brand or stockout alerts on my watchlist. Establishing monitoring and recurring runs always require the user's explicit opt-in — do not activate on vague update questions. Requires ZOODATA_API_KEY.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.7K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17081rahwfg1emrhs1pmfhmq984gan3:amazon-daily-market-radar","sourceUrl":"https://clawhub.ai/apiclaw/amazon-daily-market-radar","homepage":"https://clawhub.ai/apiclaw/skills/amazon-daily-market-radar","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/apiclaw/amazon-daily-market-radar","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/apiclaw/skills/amazon-daily-market-radar","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":40,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"amazon-daily-market-radar technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:35:24.860Z","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-10T05:35:24.860Z","emptyReason":null},"stars":null,"forks":null,"downloads":1650,"packageName":null,"latestVersion":"1.0.9","tractionLabel":"1.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:35:24.859Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T05:35:24.860Z","lastCrawledAt":"2026-10-10T05:35:24.859Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T05:35:24.860Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.9","createdAt":"2026-08-07T02:08:38.907Z","changelog":"Composite resolved_category_path metadata + ABA out-of-window date guidance; per-skill CLI command allowlists (COMMAND_NOT_ALLOWED enforcement); credential-source hardening; SKILL.md description trims. See CHANGELOG.","fileCount":10,"zipByteSize":64970},{"version":"1.0.8","createdAt":"2026-08-04T01:28:40.591Z","changelog":"Release v1.3.0: composite robustness (empty-target guard, category self-heal, terminal fail-fast, realtime retry + offline fallback), keyword workflow + shared CLI hardening, security declarations, release-notify CI","fileCount":9,"zipByteSize":62116},{"version":"1.0.7","createdAt":"2026-07-29T08:35:30.174Z","changelog":"Reference cleanup: stop 7 references mislabelling themselves as Market Entry Analyzer; per-skill endpoint scoping for narrow skills (#94)","fileCount":8,"zipByteSize":53368},{"version":"1.0.6","createdAt":"2026-07-28T14:01:07.353Z","changelog":"Security: remove leaked bundled key + credential/base-url hardening; clear LLM-review content flags; accurate credit reporting for composite + crawl-wait (#93)","fileCount":8,"zipByteSize":53257},{"version":"1.0.5","createdAt":"2026-07-28T07:11:20.022Z","changelog":"Capabilities & Data Flow declarations + CLI hardening (SkillSpector audit response, #91)","fileCount":8,"zipByteSize":51844},{"version":"1.0.4","createdAt":"2026-07-24T09:27:19.969Z","changelog":"ZooData rebrand + backend-contract release: correct 13 selection modes (fixes hard-422 on listingAge/badges preset values), mode documented as CLI-local (not an API param), category parser hardening (comma-safe, JSON array input), credential env renamed to ZOODATA_API_KEY (legacy APICLAW_API_KEY still works), realtime cold-start retry guidance, refreshed docs and API reference.","fileCount":8,"zipByteSize":48218},{"version":"1.0.1","createdAt":"2026-04-13T12:36:40.472Z","changelog":"amazon-daily-market-radar 1.0.1 - Documentation updates and refinements in SKILL.md for clarity and accuracy. - No breaking changes to logic or API integration. - Maintains all previous alert rules, action recommendations, and output specifications.","fileCount":6,"zipByteSize":31400},{"version":"1.0.0","createdAt":"2026-04-09T03:27:11.762Z","changelog":"Initial release","fileCount":5,"zipByteSize":30012}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17081rahwfg1emrhs1pmfhmq984gan3:amazon-daily-market-radar","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17081rahwfg1emrhs1pmfhmq984gan3:amazon-daily-market-radar` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/apiclaw/amazon-daily-market-radar before using production credentials."],"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-apiclaw-amazon-daily-market-radar/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-apiclaw-amazon-daily-market-radar/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-apiclaw-amazon-daily-market-radar/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-apiclaw-amazon-daily-market-radar/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-apiclaw-amazon-daily-market-radar/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-apiclaw-amazon-daily-market-radar/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-10T09:00:41.595Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-apiclaw-amazon-daily-market-radar/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-apiclaw-amazon-daily-market-radar/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-apiclaw-amazon-daily-market-radar/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-apiclaw-amazon-daily-market-radar/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":"medium","updatedAt":"2026-10-10T05:35:24.860Z","emptyReason":null},"readme":"Skill: amazon-daily-market-radar\n\nOwner: apiclaw\n\nSummary: Automated daily Amazon market digest. Given the user's own ASINs (1-10) and any competitor ASINs (up to 20), produces a daily change-detection briefing: price moves, BSR shifts, new entrants in the surrounding category, review wave detection, stockout signals. Output is a triaged alert dashboard (RED/YELLOW/GREEN) comparing today against yesterday's snapshot. Designed for unattended scheduled automation (cron-style daily run). Use when the user EXPLICITLY requests ongoing OPERATIONAL daily monitoring of their products and the surrounding market — a \"what changed since yesterday\" digest. Use when user asks: set up daily market monitoring for my ASINs, run my daily radar, what changed in my tracked market since yesterday, daily briefing on my tracked ASINs and competitors, emerging-brand or stockout alerts on my watchlist. Establishing monitoring and recurring runs always require the user's explicit opt-in — do not activate on vague update questions. Requires ZOODATA_API_KEY.\n\nTags: latest:1.0.9\n\nVersion history:\n\nv1.0.9 | 2026-08-07T02:08:38.907Z | user\n\nComposite resolved_category_path metadata + ABA out-of-window date guidance; per-skill CLI command allowlists (COMMAND_NOT_ALLOWED enforcement); credential-source hardening; SKILL.md description trims. See CHANGELOG.\n\nv1.0.8 | 2026-08-04T01:28:40.591Z | user\n\nRelease v1.3.0: composite robustness (empty-target guard, category self-heal, terminal fail-fast, realtime retry + offline fallback), keyword workflow + shared CLI hardening, security declarations, release-notify CI\n\nv1.0.7 | 2026-07-29T08:35:30.174Z | user\n\nReference cleanup: stop 7 references mislabelling themselves as Market Entry Analyzer; per-skill endpoint scoping for narrow skills (#94)\n\nv1.0.6 | 2026-07-28T14:01:07.353Z | user\n\nSecurity: remove leaked bundled key + credential/base-url hardening; clear LLM-review content flags; accurate credit reporting for composite + crawl-wait (#93)\n\nv1.0.5 | 2026-07-28T07:11:20.022Z | user\n\nCapabilities & Data Flow declarations + CLI hardening (SkillSpector audit response, #91)\n\nv1.0.4 | 2026-07-24T09:27:19.969Z | user\n\nZooData rebrand + backend-contract release: correct 13 selection modes (fixes hard-422 on listingAge/badges preset values), mode documented as CLI-local (not an API param), category parser hardening (comma-safe, JSON array input), credential env renamed to ZOODATA_API_KEY (legacy APICLAW_API_KEY still works), realtime cold-start retry guidance, refreshed docs and API reference.\n\nv1.0.1 | 2026-04-13T12:36:40.472Z | auto\n\namazon-daily-market-radar 1.0.1\n\n- Documentation updates and refinements in SKILL.md for clarity and accuracy.\n- No breaking changes to logic or API integration.\n- Maintains all previous alert rules, action recommendations, and output specifications.\n\nv1.0.0 | 2026-04-09T03:27:11.762Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.9: 10 files, 64970 bytes\n\nFiles: data/last-run.json (44520b), data/watchlist.json (760b), README.md (4065b), references/cli-contract.md (9156b), references/reference.md (9267b), scripts/allowed-commands.json (264b), scripts/zoodata.py (179106b), skill-card.md (3003b), SKILL.md (15171b), _meta.json (144b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: amazon-daily-market-radar\ndescription: >\n  Automated daily Amazon market digest. Given the user's own ASINs (1-10)\n  and any competitor ASINs (up to 20), produces a daily change-detection\n  briefing: price moves, BSR shifts, new entrants in the surrounding\n  category, review wave detection, stockout signals. Output is a triaged\n  alert dashboard (RED/YELLOW/GREEN) comparing today against yesterday's\n  snapshot. Designed for unattended scheduled automation (cron-style daily\n  run).\n  Use when the user EXPLICITLY requests ongoing OPERATIONAL daily\n  monitoring of their products and the surrounding market — a \"what\n  changed since yesterday\" digest.\n  Use when user asks: set up daily market monitoring for my ASINs, run\n  my daily radar, what changed in my tracked market since yesterday,\n  daily briefing on my tracked ASINs and competitors, emerging-brand or\n  stockout alerts on my watchlist. Establishing monitoring and recurring\n  runs always require the user's explicit opt-in — do not activate on\n  vague update questions.\n  Requires ZOODATA_API_KEY.\nmetadata:\n  version: \"1.0.9\"\n  author: SerendipityOneInc\n  homepage: https://github.com/SerendipityOneInc/ZooData-Skills\n  openclaw: {\"requires\": {\"env\": [\"ZOODATA_API_KEY\"]}, \"primaryEnv\": \"ZOODATA_API_KEY\"}\n---\n\n# ZooData — Amazon Daily Market Radar\n\n> Set it. Forget it. Get alerted when it matters. Respond in user's language.\n\n## Files\n\n| File | Purpose |\n|------|---------|\n| `{skill_base_dir}/scripts/zoodata.py` | **Execute** for all API calls (run `--help` for params) |\n| `{skill_base_dir}/references/reference.md` | Load for exact field names or response structure |\n| `{skill_base_dir}/data/` | Runtime: watchlist.json, last-run.json (auto-created) |\n\n## Credential\n\nRequired: `ZOODATA_API_KEY`. Get free key at [zoodata.ai/api-keys](https://zoodata.ai/en/api-keys).\n\n## Capabilities & Data Flow\n\n- **Network**: only `https://api.zoodata.ai` (Bearer `ZOODATA_API_KEY`). Setting `ZOODATA_BASE_URL` to an untrusted host (anything other than `api.zoodata.ai` / `*.zoodata.ai` / localhost) makes the CLI **refuse the request and withhold the key** — the Bearer token is never sent to an untrusted host.\n- **Execution**: bundled shared ZooData CLI `{skill_base_dir}/scripts/zoodata.py` (Python 3, stdlib-only). This skill allows `daily-radar`, `market`, `products`, `competitors`, `product`, `price-band-overview`, `history`, `check`, plus the review fallback toolkit (`reviews-raw` / `review-tag-prompt` / `review-reduce-prompt` / `review-aggregate`). Do not invoke unrelated subcommands for this skill's tasks — the bundled manifest `{skill_base_dir}/scripts/allowed-commands.json` enforces this: the CLI refuses out-of-scope subcommands with a structured `COMMAND_NOT_ALLOWED` error before any API request.\n- **Local files**: baseline snapshots `{skill_base_dir}/data/last-run.json` and `{skill_base_dir}/data/watchlist.json`; a private temporary working dir (created with `mktemp -d`, removed when the fallback completes) during the review fallback; reads the optional credential store `~/.zoodata/config.json`.\n- **Sent to the API**: keywords, category paths, ASINs, marketplace/date and numeric filter values only. **Never sent**: budget, experience level, risk tolerance, or any other user-profile text — profile inputs map client-side to numeric filters.\n- **Credits**: every API call consumes account credits. For broad or ambiguous requests, state the estimated credit cost and confirm with the user before running multi-call scans. The composite `daily-radar` command executes ~14+ API calls (~15-30 credits) in ONE invocation and has NO skip/trim flags — under a credit cap, use the granular commands instead.\n\n## Shared CLI Contract\n\nBefore selecting or invoking the first command, read and apply the local `references/cli-contract.md`. Reapply it after every granular or composite result and before any fallback, additional call, state write, interpretation, or user-facing report. Use this skill's fallback logic only when the shared contract classifies the result as non-terminal.\n\n### Local Interface Failure Output\n\nFor a terminal interface failure, respond in the user's language that today's radar could not be completed, then list succeeded and failed endpoint identifiers and state that the previous baseline remains unchanged. Do not emit RED/YELLOW/GREEN alerts or write `last-run.json`, watchlists, history, or baselines. Keep control tokens, parameters, and retry logs internal unless diagnostics are requested.\n\n## Input (First Run)\n\nCollect in ONE message: ✅ my_asins (1-10) | 💡 competitor_asins (up to 20) | 📌 alert_preferences. Optional: keyword, category. Category is auto-detected from first tracked ASIN if not provided.\n\nActivation requires clear monitoring intent. Do not start a baseline run, update the watchlist, or enable scheduled/recurring execution from a vague or merely related request (\"any updates?\") — confirm explicitly with the user first; recurring monitoring always needs the user's explicit opt-in.\n\n## API Pitfalls (CRITICAL)\n\n1. **Category auto-detection**: categoryPath is auto-detected from tracked ASINs. If `category_source` in output is `inferred_from_search`, confirm with user\n2. **All keyword-based endpoints MUST include `--category`**; ASIN-specific endpoints do NOT\n3. **Use API fields directly**: revenue=`sampleAvgMonthlyRevenue` (NEVER price×sales), sales=`monthlySalesFloor`, concentration=`sampleTop10BrandSalesRate`\n4. **reviews/analysis**: needs 50+ reviews. Fallback chain when sample is insufficient:\n   1. **Lightweight**: `realtime/product` ratingBreakdown — only star distribution, no themes\n   2. **Full 11-dim insights** — bypass `/reviews/analysis` entirely:\n      a. `zoodata.py reviews-raw --asin X` → fetch up to 100 raw reviews (10 credits, ~60s)\n      b. For each review: render Map prompt via `zoodata.py review-tag-prompt --review '<json>'`\n         and have your own LLM produce JSON tags (sentiment + 11 dimensions)\n      c. Collect candidate phrases per dimension; for each dimension render\n         Reduce prompt via `zoodata.py review-reduce-prompt --label-type X --candidates '[...]'`\n         and have your LLM produce semantic clusters\n      d. `zoodata.py review-aggregate --reviews R --tagged T --clusters C`\n         → consumerInsights output compatible with `/reviews/analysis`\n   3. **Fallback caveats** (apply to the 4-step chain above — lessons from end-to-end validation):\n      - **Working dir**: `WORK=$(mktemp -d)` (private, 0700 — not a predictable path); remove it with `rm -rf \"$WORK\"` after `review-aggregate` succeeds or the fallback aborts\n      - **Step b CLI behavior**: `review-tag-prompt` RENDERS the prompt only; YOUR LLM produces the JSON. Render once to learn the schema, then produce tags for all N reviews in one in-context pass (don't call the CLI N times).\n      - **Step c candidate extraction** (Python one-liner):\n        `candidates = {d: sorted({el.strip().lower() for t in tagged for el in (t.get(d) or [])}) for d in DIMS}`\n      - **Small-sample rule (reviewCount<50)**: demote single-mention items 📊→🔍; NEVER attach table-level or section-header 📊 when any row inside is 🔍; suppress \"🔴 Critical\" verdicts on count=1\n      - **Scope**: fallback replaces ONLY the `/reviews/analysis` aggregation. This skill's primary workflow outputs (price/BSR/sales deltas, alerts, watchlist baseline) remain valid — do not re-run them.\n5. **Aggregation without categoryPath**: severely distorted data\n\n## On Missing Key\n\nWhen `ZOODATA_API_KEY` is not set (verify via `python {skill_base_dir}/scripts/zoodata.py check` — exits 2 if no key in env or `~/.zoodata/config.json`), stop before any evidence call. Tell the user that a ZooData API key is required, link to https://zoodata.ai/en/api-keys, and explain that the key may be set in the environment or local config. Do not substitute public knowledge or a \"for reference only\" analysis.\n## On 401 Invalid Key\n\nWhen `_transport.status=401`, stop further calls, tell the user that the configured key was rejected, direct them to https://zoodata.ai/en/api-keys, and do not fabricate missing data.\n\n## On 402 Credit Exhausted\n\nWhen `_transport.status=402`, stop further calls. Report where the workflow stopped, any compatible partial findings already gathered, and returned credit metadata when present; direct the user to https://zoodata.ai/en/pricing and do not fabricate missing data.\n\n## Execution\n\n1. `daily-radar --asins \"asin1,asin2,...\" [--keyword X] [--category Y]` (composite, auto-detects category from ASINs)\n3. Compare against `{skill_base_dir}/data/last-run.json` for change detection (first run = baseline only, no alerts)\n4. Generate alert-prioritized briefing → save snapshot to `{skill_base_dir}/data/last-run.json`\n\n## Alert Rules\n\n| Level | Triggers |\n|-------|----------|\n| 🔴 RED | Price drop >10% by competitor; BSR crash >50% (yours); 1-star spike (3+ in 24h) |\n| 🟡 YELLOW | New competitor in Top 20; competitor price change 5-10%; BSR change 20-50%; brand share shift >2% |\n| 🟢 GREEN | Competitor stock-out; your review velocity up; price band opportunity shift |\n\n## Change Detection Logic\n\n- Price change >5% → 🔴\n- BSR move >20% → 🟡\n- New ASINs in top 20 (vs last run) → 🟡\n\nGrowth signal validation:\n- 📊 Sustained: 7+ days consistent direction\n- 🔍 Possible signal: 2-3 days of change\n- 💡 Single-day spike: could be promotion/restock\n\n### Change Interpretation Guide\n| Metric | Normal Range | Action Trigger | Likely Cause |\n|--------|-------------|----------------|-------------|\n| Price change | ±3% | >5% sustained 3+ days | Repricing strategy or promotion 🔍 |\n| BSR shift | ±15% daily | >30% sustained or >50% single day | Stockout, promotion, or algorithm change 🔍 |\n| Rating drop | ±0.1 | >0.2 in 7 days | Product quality issue or review attack 🔍 |\n| Review velocity | ±20% | >50% spike | Vine program, review manipulation, or viral moment 🔍 |\n| New entrant in Top 20 | 0-1/week | 3+ in one week | Market shift or seasonal demand 🔍 |\n\n### Action Recommendations by Alert Level\n- **🔴 RED**: Require immediate response — check inventory, match price if needed, investigate quality issues 💡\n- **🟡 YELLOW**: Monitor for 3-5 days before acting — may be temporary fluctuation 💡\n- **🟢 GREEN**: Opportunity window — act within 1-2 weeks before competitors notice 💡\n\n## Output Spec\n\nFirst run: \"Baseline Established\" — KPI Dashboard (current snapshot) only, no alerts.\n\nSubsequent runs: Alert Summary → RED Alerts → YELLOW Alerts → GREEN Opportunities → KPI Dashboard (today vs yesterday) → Competitor Movement → Market Shifts → Action Items → Data Provenance → API Usage.\n\n### Language (required)\n\nOutput language MUST match the user's input language. If the user asks in Chinese, the entire report is in Chinese. If in English, output in English. Exception: API field names (e.g. `monthlySalesFloor`, `categoryPath`), endpoint names, technical terms (e.g. ASIN, BSR, CR10, FBA, credits) remain in English.\n\n### Disclaimer (required, at the top of every report)\n\n> Data is based on ZooData API sampling as of [date]. Monthly sales (`monthlySalesFloor`) are lower-bound estimates. This analysis is for reference only and should not be the sole basis for business decisions. Validate with additional sources before acting.\n\n### Confidence Labels (required, tag EVERY conclusion)\n\n- 📊 **Data-backed** — direct API data (e.g. \"CR10 = 54.8% 📊\")\n- 🔍 **Inferred** — logical reasoning from data (e.g. \"brand concentration is moderate 🔍\")\n- 💡 **Directional** — suggestions, predictions, strategy (e.g. \"consider entering $10-15 band 💡\")\n\nRules: Strategy recommendations are NEVER 📊. Anomalies (>200% growth) are always 💡. User criteria override AI judgment.\n\n**Aggregate-label rule (applies to ALL report output, not just fallback)**: NEVER attach 📊 to ANY element that aggregates or groups underlying content when ANY piece of that content is 🔍 or 💡. \"Aggregate/grouping elements\" include:\n- Section headers at EVERY level (`#`, `##`, `###`, `####`) — including top-level summary sections like \"Overall Score\", \"Verdict\", \"Executive Summary\"\n- Summary/score lines anywhere in the report (e.g. `## Overall Score — 27/100 · Grade F 📊` is WRONG if any Basis row inside is 🔍)\n- Table **column** headers in comparison tables (e.g. `**Target ASIN** 📊` as a column label is WRONG if any cell in that column contains 🔍)\n- Table row headers or row-aggregation labels (when the row aggregates multiple cells of mixed confidence)\n- Any other visual grouping label — bullet-list group titles, callout box titles, etc.\n\nA group-level 📊 implies the whole block/column/row is data-backed, which smuggles inferred/directional content into the 📊 tier via visual grouping. Either (a) **omit the group-level label entirely** (preferred when content mixes tiers), or (b) use the LOWEST confidence present inside (🔍 if any underlying content is 🔍; 💡 if any is 💡). This is a universal output-quality rule — it applies regardless of which fallback path (if any) was triggered.\n\n**Emoji reservation rule (closely related)**: The three confidence symbols `📊 🔍 💡` are RESERVED for confidence labeling. NEVER use them as decorative prefixes on section headers, table headers, or any aggregate element — even when you also include a correct confidence suffix on the same line. Example:\n- ❌ WRONG: `## 📊 Overall Score — 27/100 · Grade F 🔍` (the leading 📊 reads as a data-backed claim even though the trailing 🔍 is correct)\n- ✅ RIGHT: `## Overall Score — 27/100 · Grade F 🔍` (no decorative emoji, just the proper confidence suffix)\n- ✅ RIGHT: `## 🎯 Overall Score — 27/100 · Grade F 🔍` (use non-reserved decorative icons like 🎯 🧭 📋 📝 📂 🏁 🚨 🏆 🔔 when a visual prefix is desired)\n\nDecorative emoji ≠ confidence label — but from a reader's perspective, a leading `📊/🔍/💡` is indistinguishable from a confidence claim. Reserve these three symbols EXCLUSIVELY for confidence annotation to avoid ambiguity.\n\nSample bias: \"Based on Top [N] by sales volume; niche/new products may be underrepresented.\"\n\n### Data Provenance (required)\n\nInclude a table at the end of every report:\n\n| Data | Endpoint | Key Params | Notes |\n|------|----------|------------|-------|\n| (e.g. Market Overview) | `markets/search` | categoryPath, topN=10 | 📊 Top N sampling, sales are lower-bound |\n| ... | ... | ... | ... |\n\nExtract endpoint and params from `_query` in JSON output. Add notes: sampling method, T+1 delay, realtime vs DB, minimum review threshold, etc.\n\n### API Usage (required)\n\n| Endpoint | Calls | Credits |\n|----------|-------|---------|\n| (each endpoint used) | N | N |\n| **Total** | **N** | **N** |\n\nExtract from `meta.creditsConsumed` per response. End with `Credits remaining: N`.\n\n## API Budget: ~15-30 credits\n\nRealtime×ASINs(5-15) + History(1-2) + Market/Brand(3) + Products(1) + Price(2) + Categories(1) + Reviews(1-3).\n\nFile v1.0.9:README.md\n\n# Amazon Daily Market Radar — ZooData Agent Skill\n\n> Set it. Forget it. Get alerted when it matters.\n\n## What This Skill Does\n\nAutomated daily monitoring and alert system for Amazon sellers. Tracks your ASINs and competitors, detects price changes, BSR movements, new entrants, review spikes, and stock-out signals. First run establishes a baseline; subsequent runs compare against it and fire tiered alerts. Designed for unattended agent automation.\n\n### What Makes This Different\n\n- **Set-and-forget**: First run = baseline, every run after = smart change detection\n- **Three-tier alerts**: 🔴 RED (price crash, BSR collapse, 1-star spike), 🟡 YELLOW (new competitors, moderate shifts), 🟢 GREEN (opportunities like competitor stock-outs)\n- **Signal validation**: Distinguishes sustained trends (📊 7+ days) from single-day spikes (💡)\n- **Cron-ready**: Built for scheduled execution with auto-monitor setup\n\n## Install\n\n```bash\nnpx skills add SerendipityOneInc/ZooData-Skills\n```\n\nSelect **Amazon Daily Market Radar** when prompted.\n\n## API Key Setup\n\n1. Get a free key at [zoodata.ai/api-keys](https://zoodata.ai/en/api-keys) — 1,000 free credits, no credit card\n2. Set the environment variable:\n   ```bash\n   export ZOODATA_API_KEY='hms_live_xxxxxx'\n   ```\n\n## Data & Privacy\n\n- Each run sends your tracked ASINs, competitor ASINs, keywords, category paths, and marketplace/date/numeric filters to the ZooData API (`api.zoodata.ai`). Because this skill is designed for scheduled, unattended execution, that transmission recurs on every scheduled run.\n- Nothing else is transmitted: no budget, seller-account, or free-text profile data leaves your machine.\n- Local state: `watchlist.json` and the `last-run.json` baseline under the skill's `data/` folder persist between runs for day-over-day comparison. Delete the folder anytime to reset monitoring and remove the retained data.\n- Baselines and scheduled runs are only established on your explicit request — never from a vague or merely related question — and recurring monitoring always requires your explicit opt-in. Every API call consumes account credits.\n\n## Example Prompts\n\nThe skill activates on explicit monitoring requests like these — it does not\nself-trigger on vague update questions, and recurring monitoring always\nrequires your explicit opt-in:\n\n- *\"Set up daily market monitoring for my ASINs: B0XXXXXXXX, B0YYYYYYYY\"*\n- *\"Set up daily market monitoring for keyword 'yoga mat', track these 3 ASINs\"*\n- *\"Run my daily market radar — what changed since yesterday?\"*\n- *\"Run a daily radar check on my tracked products\"*\n- *\"Run the daily radar and report competitor changes\"*\n\n## What You Get\n\n| Section | Description |\n|---------|-------------|\n| 🚨 Alert Summary | RED / YELLOW / GREEN alert counts |\n| 🔴 RED Alerts | Critical changes requiring immediate action |\n| 🟡 YELLOW Alerts | Watch-worthy shifts in competitors or market |\n| 🟢 GREEN Opportunities | Favorable changes to capitalize on |\n| 📊 KPI Dashboard | Today vs yesterday comparison |\n| 🏃 Competitor Movement | Price, BSR, listing changes per competitor |\n| 🌊 Market Shifts | Brand share, new entrants, price band migration |\n| ✅ Action Items | Prioritized next steps |\n\n## API Endpoints Used\n\n| Endpoint | Purpose |\n|----------|---------|\n| `categories` | Category resolution |\n| `markets/search` | Market-level metrics |\n| `products/search` | Product landscape |\n| `products/competitors` | Competitor discovery |\n| `realtime/product` | Live ASIN polling |\n| `reviews/analysis` | Review spike detection |\n| `products/price-band-overview` | Price band shifts |\n| `products/price-band-detail` | Detailed price analysis |\n| `products/brand-overview` | Brand share changes |\n| `products/brand-detail` | Per-brand tracking |\n| `products/history` | Trend validation |\n\n## Credit Cost\n\n~15-30 credits per run (depends on number of tracked ASINs).\n\n## Powered By\n\n[ZooData](https://zoodata.ai) — The data infrastructure built for agents. 200M+ Amazon products, 1B+ reviews, real-time signals.\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn78k155f6rbh2j8r8yjx8r2e18304q9\",\n  \"slug\": \"amazon-daily-market-radar\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1786068518907\n}\n\nFile v1.0.9:references/cli-contract.md\n\n<!-- Canonical source - do not edit copies under amazon-* skill directories directly -->\n\n# ZooData CLI Contract\n\n## Ownership and application\n\nThis file owns the project-wide caller contract before and after every bundled `{skill_base_dir}/scripts/zoodata.py` invocation. Read it before selecting the first command, then apply it after each granular or composite result and before any additional API/tool call, fallback, state write, interpretation, or user-facing report.\n\nIt owns the shared invocation form, command-identity validation, execution-environment permission handling, caller/CLI responsibilities, composite-result reuse, result acquisition, transport-status precedence, terminal-interface classification, retry ownership, and partial-result handling. It does not own skill-specific command allowlists, endpoint request/response fields, business interpretation, scenario selection, conclusion authority, or any user-facing failure/report rendering.\n\n## Invocation interface\n\n1. Invoke the bundled client as `python {skill_base_dir}/scripts/zoodata.py [global options] <subcommand> [subcommand options]` using the active skill's local copy.\n2. Place global options before the subcommand. Treat top-level and subcommand `--help` as the live invocation contract; help inspection makes no API request and consumes no credits.\n3. Use the active skill to select the allowed workflow and command scope. Use this contract to validate and execute that selection; do not let this shared file select a business workflow.\n4. Distinguish API/evidence commands from local-only diagnostic, prompt-rendering, and aggregation commands according to the selected subcommand's help. Do not attribute an API call or credit use to a local-only command.\n5. Credential resolution is owned by the bundled CLI. Invoke it directly; do not inspect local credential stores or pre-resolve, compare, export, or override credential values in the caller.\n\n## Command identity and composite reuse\n\n1. Inspect the bundled CLI's top-level `--help` and the selected subcommand's `--help` before invocation. Execute only an exact literal subcommand exposed by the current client and allowed by the active skill.\n2. Treat API endpoint identifiers and composite result keys as data identities, not CLI command names. Never derive a subcommand from either identity or invent an alias.\n3. Treat a successful composite command's structured output as the evidence bundle for that run. Perform selection, narrowing, transformation, extraction, and formatting locally.\n4. Do not make an additional API call solely to reread, reshape, or narrow evidence already present in the composite bundle.\n5. A granular call after a composite is allowed only for evidence absent from the bundle when the active skill's workflow or an explicit non-terminal fallback requires it.\n6. A keyword-driven composite resolves the working category through a fallback chain and records the outcome in `meta`: `meta.category_source` states how it resolved and `meta.resolved_category_path` carries the path used. An empty top-level `categories` section together with a non-null `meta.resolved_category_path` is successful fallback resolution (a multi-word product phrase not matching a category name), not missing data; read the resolved path and `category_source` before treating category evidence as absent.\n\n## Execution-environment permission gate\n\nApply this gate before classifying a connection or network failure as a CLI/API interface failure.\n\n1. Inspect the execution tool's permission profile and diagnostics. When they indicate, or strongly suggest, that a host sandbox or network policy blocked the request, treat the result as unresolved execution permission rather than endpoint failure.\n2. Use the execution tool's permission or escalation mechanism to request access and rerun the exact unchanged CLI command. Do not first emit the skill's interface-failure notice or a succeeded/failed endpoint ledger.\n3. A permission-approved rerun is environment recovery, not an external transport retry. Do not mutate the command, parameters, endpoint, or acquisition surface while requesting access.\n4. If access is declined or no permission mechanism is available, state only that the required network access was not granted and the task could not continue. Do not label endpoints as failed or imply that API requests consumed credits when no request reached the service.\n5. After the permission issue is resolved, classify the rerun normally through the sections below. Do not use this gate to bypass a returned HTTP status, credential failure, credit failure, validation failure, rate limit, or confirmed service outage.\n\n## Result acquisition\n\n1. Always inspect stdout, even when the process exits non-zero. Exit `1` with valid structured JSON means at least one API call failed; it does not make the JSON unreadable.\n2. Treat `_transport.status` as the authoritative outer HTTP status. Response-body or nested status-like fields never override it.\n3. For a composite payload, inspect nested endpoint results before classifying the whole workflow. Preserve returned `_query`, credit metadata, successful sections, and failure details internally.\n\n## Classification order\n\nAfter the execution-environment permission gate is resolved or found inapplicable, apply these routes in order:\n\n1. Missing credentials before an evidence call follow the local skill's missing-key procedure.\n2. `_transport.status=401` and `_transport.status=402` follow the local skill's credential and credit procedures. Do not retry, switch endpoints, or change credential sources.\n3. `_transport.status=422` is validation failure. Preserve the structured server error and `_query.params`; do not retry the unchanged request. Correct only fields identified by the server contract.\n4. A terminal interface failure is present when the result carries `error.action=\"STOP_CURRENT_TURN. APPLY_SKILL_INTERFACE_FAILURE_TEMPLATE. DO_NOT_SELECT_ANOTHER_COMMAND.\"`, or represents exhausted HTTP 5xx, exhausted 429, exhausted non-HTTP transport failure after host permission restrictions have been ruled out or resolved, endpoint unavailability, `MALFORMED_RESPONSE`, or non-zero execution without valid structured JSON.\n5. A valid `status=empty` or a documented business/coverage error is not automatically terminal. A local skill fallback is allowed only when its contract explicitly supports that result and no terminal interface-failure signal is present.\n\n## Retry and terminal behavior\n\nThe shared CLI owns transport retries. Once the execution-environment permission gate is resolved or found inapplicable, a terminal interface failure requires:\n\n1. Stop the current workflow turn. Do not retry externally, mutate parameters, switch endpoints or acquisition surfaces, start another tool command, or continue to a later workflow step.\n2. Do not reinterpret an HTTP 5xx body as validation, credential, credit, empty coverage, or permission to try another date, subject, marketplace, filter, or page.\n3. Retain earlier successful data for compatible later reuse, but do not produce the normal analysis, update monitoring/baseline state, or request the next workflow input.\n4. Keep detailed messages, request parameters, retry logs, and control tokens internal unless the user explicitly requests diagnostics.\n5. Hand off rendering to the active skill's local interface-failure template. This shared contract intentionally defines no user-facing wording.\n\n## Composite and partial results\n\n- A non-zero composite result may still contain successful sections. If any nested result is a terminal interface failure, stop after inventorying succeeded and failed interfaces; do not turn the surviving sections into the normal conclusion.\n- If all failures are documented non-terminal business/coverage failures, a local skill may use its explicit fallback and the compatible successful sections. Label coverage precisely and never present the composite as fully successful.\n- Process exit status and JSON status must agree for a single-result command. A partial pagination failure must return `success=false` while preserving already collected rows under `data`.\n\n## Realtime unavailable — offline fallback\n\n`realtime/product` is a live scrape endpoint that can return a transient 200-success with an empty payload. Composites retry it a few times; if it is still empty, that item's result carries `_realtimeStatus=\"empty_after_retries\"`, and the composite `meta` carries `realtimeUnavailable` (count) plus `realtimeFallbackHint`. When `realtimeFallbackHint` is present, tell the user realtime lookup is temporarily unavailable for those items, then continue the analysis using the offline snapshot data already gathered (products/search fields, history, price/BSR/rating). Do not stall, silently re-run, or fabricate the missing realtime detail.\n\n## Partial review pagination\n\nWhen `reviews-raw` fails after one or more successful pages, it returns `success=false`, preserves collected reviews and page count under `data`, and exposes the failed page request through `_failedQuery`. Never treat that payload as a complete review sample.\n\nFile v1.0.9:references/reference.md\n\n# ZooData API Field Reference\n\n> Load this file only when you need exact field names or response structure.\n\n## ZooData Endpoint Field Reference\n\n> Shared field reference. This skill's workflows use ONLY the subcommands\n> listed in its SKILL.md; the endpoints below are documented for field-name /\n> response-structure lookup, not as a claim that this skill invokes all of them.\n\n| # | Endpoint | Purpose |\n|---|----------|---------|\n| 1 | `categories` | Category path lookup |\n| 2 | `markets/search` | Market size, competition metrics, new-product rate |\n| 3 | `products/search` | Product supply (100+ via pagination), brand/price drill |\n| 4 | `products/competitors` | Top competitor list |\n| 5 | `realtime/product` | Live product detail |\n| 6 | `reviews/analysis` | Consumer pain points, buying factors |\n| 7 | `products/price-band-overview` | Price-band opportunity overview |\n| 8 | `products/price-band-detail` | Per-band SKU/sales/brand/rating breakdown |\n| 9 | `products/brand-overview` | Brand count, CR10, top-brand avg price/rating |\n| 10 | `products/brand-detail` | Per-brand SKU/sales/revenue/share ranking |\n| 11 | `products/history` | 30-day price/BSR/sales trend |\n\nBase URL: `https://api.zoodata.ai/openapi/v2`\nAuth: `Bearer $ZOODATA_API_KEY`\nMethod: All POST with JSON body\nAll endpoints return: `{success, data, error, meta}` with `meta.creditsRemaining`\n\n---\n\n## 1. categories\n\n**Request:** (mutually exclusive modes)\n- No params → root categories\n- `categoryKeyword`: String → search by keyword\n- `categoryPath`: List<String> → exact path\n- `parentCategoryPath`: List<String> → child categories\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `categoryId` | string | Category ID |\n| `categoryName` | string | Category name |\n| `categoryPath` | list | Full path from root |\n| `hasChildren` | bool | Has subcategories |\n| `level` | int | Depth (1=root) |\n| `productCount` | int | Products in category |\n\n---\n\n## 2. markets/search\n\n**Key Request Params:**\n- `categoryPath`: List<String> (e.g. `[\"Pet Supplies\", \"Dogs\"]`)\n- `categoryKeyword`: String\n- `topN`: **String** (`\"10\"` not `10`)\n- `sampleType`: `by_sale_100` / `by_bsr_100` / `avg`\n- `pageSize`: Integer (max 20)\n\n**Key Response Fields:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `totalSkuCount` | int | Market size |\n| `sampleAvgMonthlySales` | float | Demand level |\n| `sampleAvgMonthlyRevenue` | float | Market value |\n| `sampleAvgPrice` | float | Price benchmark |\n| `sampleAvgRating` | float | Quality benchmark |\n| `sampleBrandCount` | int | Brand diversity |\n| `sampleSellerCount` | int | Seller diversity |\n| `sampleFbaRate` | float | FBA adoption (decimal) |\n| `sampleNewSkuRate` | float | New entrant rate (decimal) |\n| `topSalesRate` | float | Product concentration (CR_topN) |\n| `topBrandSalesRate` | float | Brand concentration |\n| `topSellerSalesRate` | float | Seller concentration |\n| `sampleAPlusRate` | float | Margin benchmark |\n\n---\n\n## 3. products/search — Shared Product Object\n\n**Key Request Params:**\n- `keyword`, `categoryPath`, `keywordMatchType` (`mode` is a CLI-only preset — `zoodata.py` expands it into the filter pairs below client-side; it is NOT an API field and returns 422 if sent raw)\n- Filter pairs: `monthlySalesMin/Max`, `priceMin/Max`, `ratingMin/Max`, etc.\n- `pageSize` (max 20), `page`, `sortBy`, `sortOrder`\n- `includeBrands`, `excludeBrands`\n\n**Key Response Fields (per product):**\n| Field | Type | Used For |\n|-------|------|----------|\n| `asin` | string | Product ID |\n| `title` | string | Product name |\n| `brandName` | string | Brand |\n| `price` | float | Price |\n| `monthlySalesFloor` | int | Monthly sales (lower bound) |\n| `monthlyRevenueFloor` | float | Monthly revenue lower bound |\n| `rating` | float | Rating (0-5) |\n| `ratingCount` | int | Review count |\n| `bsr` | int | BSR (NOT `bestsellersRank`) |\n| `fbaFee` | float | FBA cost |\n| `sellerCount` | int | Sellers on listing |\n| `fulfillment` | string | FBA/FBM/AMZ |\n| `listingDate` | string | When listed |\n| `salesGrowthRate` | float | Growth rate |\n| `variantCount` | int | Variants |\n\n---\n\n## 4. products/competitors\n\nSame response as products/search. Different use: discovery by keyword/brand/asin.\nRequest params: `keyword`, `brand`, `asin`, `categoryPath`, `sortBy`, `pageSize`\n\n---\n\n## 5. realtime/product\n\n**Request:**\n- `asin`: String (required)\n- `marketplace`: String (US/UK/DE/FR/IT/ES/JP/CA/AU/IN/MX/BR, default US)\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `asin` | string | Product ID |\n| `title` | string | Full title |\n| `brandName` | string | Brand |\n| `rating` | float | Current rating |\n| `ratingCount` | int | Current review count |\n| `ratingBreakdown` | object | Star distribution {five_star: {percentage, count}, ...} |\n| `features` | list | Bullet points |\n| `description` | string | Product description |\n| `specifications` | object | Tech specs |\n| `variants` | list | All variants with dimensions |\n| `bestsellersRank` | list | BSR info [{category, rank}, ...] |\n| `buyboxWinner` | object | Buy Box: {price, fulfillment, seller} |\n| `images` | list | All image URLs |\n\n⚠️ Does NOT have: monthlySalesFloor, fbaFee, sellerCount\n\n---\n\n## 6. reviews/analysis\n\n**Request:**\n- `mode`: `\"asin\"` or `\"category\"`\n- `asins`: List<String> (when mode=asin)\n- `categoryPath`: String (when mode=category)\n- `labelType`: filter to specific dimensions. **⚠️ Only ONE value per call — do NOT comma-separate multiple types.** Make separate calls for each labelType needed.\n- `period`: e.g. `\"1m\"` / `\"3m\"` / `\"6m\"` / `\"1y\"` / `\"2y\"`\n\n**labelType values (one per call):** `scenarios`, `issues`, `positives`, `improvements`, `buyingFactors`, `painPoints`, `keywords`, `userProfiles`, `usageTimes`, `usageLocations`, `behaviors`\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `reviewCount` | int | Sample size |\n| `avgRating` | float | Overall satisfaction |\n| `sentimentDistribution` | object | Positive/neutral/negative ratio |\n| `consumerInsights` | list | Structured insights by dimension |\n| `topKeywords` | list | Trending terms |\n\n**InsightItem:** `{element, labelType, count, reviewRate, avgRating}`\n\n---\n\n## 7. products/price-band-overview\n\n**Request:** Same params as products/search (keyword, category, filters)\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `sampleSkuCount` | int | Total products analyzed |\n| `sampleMedianPrice` | float | Median price point |\n| `hottestBand` | object | Highest sales share band |\n| `bestOpportunityBand` | object | Highest opportunity index band |\n\n**Band object:** `{bandIdx, bandLabel, sampleBandMinPrice, sampleBandMaxPrice, sampleSkuCount, sampleSalesRate, sampleBrandCount, sampleTop3BrandSalesRate, sampleAvgRating, sampleOpportunityIndex}`\n\n---\n\n## 8. products/price-band-detail\n\n**Response:**\n- `sampleSkuCount`, `sampleTotalMonthlySales`\n- `priceBands`: array of 5 band objects (same structure as above)\n\n---\n\n## 9. products/brand-overview\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `sampleBrandCount` | int | Total brands |\n| `sampleTop10BrandSalesRate` | float | CR10 concentration (top 10 brands) |\n| `sampleTop10AvgRating` | float | Top 10 brand avg rating |\n| `sampleTop10AvgPrice` | float | Top 10 brand avg price |\n\n---\n\n## 10. products/brand-detail\n\n**Response:**\n- `sampleSkuCount`, `sampleTotalMonthlySales`, `sampleBrandCount`\n- `brands`: array of brand objects\n\n**BrandStats:** `{brandName, sampleSkuCount, sampleGroupMonthlySales, sampleGroupMonthlyRevenue, sampleSalesRate, sampleAvgPrice, minPrice, maxPrice, sampleAvgRating, sampleAvgRatingCount, sampleProducts}`\n\n**sampleProducts:** List of Product objects for this brand within the sample. Each product contains the full Shared Product Object fields (asin, title, price, bsr, monthlySalesFloor, rating, ratingCount, fulfillment, etc). This enables brand-level product matrix analysis without a separate products/search call.\n\n---\n\n## 11. products/history\n\n**Request:**\n- `asins`: List<String> (required)\n- `startDate`: String \"YYYY-MM-DD\" (required)\n- `endDate`: String \"YYYY-MM-DD\" (required)\n⚠️ Does NOT accept `dateRange` — must use startDate + endDate\n\n**Response (array of daily snapshots):**\n| Field | Type | Used For |\n|-------|------|----------|\n| `asin` | string | Product ID |\n| `price` | float | Price on that day |\n| `bsr` | int | BSR on that day |\n| `subBsr` | int | Sub-category BSR |\n| `recentSales` | int | Recent sales count |\n| `updatedAt` | string | Unix timestamp (string) |\n| `createdAt` | string | Unix timestamp (string) |\n\n---\n\n## Cross-Validation Matrix\n\n| Data Point | Primary Source | Validation Source |\n|-----------|---------------|-------------------|\n| Market size | markets/search | products/search (total count) |\n| Brand concentration | brand-overview (sampleTop10BrandSalesRate) | markets/search (topBrandSalesRate) |\n| Price distribution | price-band-detail | products/search (price field) |\n| Competition level | markets (topSalesRate) | brand-detail (top brand shares) |\n| Consumer demand | reviews/analysis | products (sales + growth) |\n| Avg rating quality | markets (sampleAvgRating) | brand-overview (sampleTop10AvgRating) |\n\nFile v1.0.9:scripts/allowed-commands.json\n\n{\n  \"allowedCommands\": [\n    \"check\",\n    \"competitors\",\n    \"daily-radar\",\n    \"history\",\n    \"market\",\n    \"price-band-overview\",\n    \"product\",\n    \"products\",\n    \"review-aggregate\",\n    \"review-reduce-prompt\",\n    \"review-tag-prompt\",\n    \"reviews-raw\"\n  ]\n}\n\nFile v1.0.9:skill-card.md\n\n## Description:\n\nAutomated daily Amazon market digest that monitors opted-in ASINs and competitors for price, BSR, entrant, review, and stockout changes and returns a RED/YELLOW/GREEN briefing against the previous snapshot.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[apiclaw](https://clawhub.ai/user/apiclaw)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal Amazon sellers and marketplace operators use this skill to set up explicit, opted-in daily monitoring for their own ASINs, competitors, and surrounding category. It produces day-over-day market change briefings with prioritized alerts, KPI snapshots, competitor movement, market shifts, action items, data provenance, and API usage.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: API-key and endpoint handling can expose sensitive access if the user overrides the service endpoint incorrectly.\n\nMitigation: Use only the default HTTPS ZooData endpoint, do not set ZOODATA_BASE_URL to an http:// or untrusted value, and confirm the ZOODATA_API_KEY source before execution.\n\nRisk: The README install command is mutable and may resolve different content over time.\n\nMitigation: Prefer a pinned or otherwise verified installer before installing or updating the skill.\n\nRisk: Recurring runs send tracked ASINs, keywords, categories, filters, and marketplace/date values to ZooData, consume API credits, and retain local baseline files.\n\nMitigation: Require explicit opt-in for setup and recurring execution, review expected credit use before broad scans, and delete the skill data folder to reset retained watchlists and baselines.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/apiclaw/skills/amazon-daily-market-radar)\n- [Project homepage from metadata](https://github.com/SerendipityOneInc/ZooData-Skills)\n- [ZooData API Field Reference](artifact/references/reference.md)\n- [ZooData CLI Contract](artifact/references/cli-contract.md)\n- [ZooData API key setup](https://zoodata.ai/en/api-keys)\n- [ZooData pricing](https://zoodata.ai/en/pricing)\n- [ZooData homepage](https://zoodata.ai)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown briefing with tables, alert sections, inline shell commands, and JSON-derived provenance and API usage summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Reports match the user's language while API field names and endpoint names remain in English; scheduled monitoring requires explicit opt-in and stores watchlist and baseline JSON in the skill data folder.]\n\n## Skill Version(s):\n\n1.0.9 (source: release evidence and SKILL.md frontmatter 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\nFile v1.0.9:data/last-run.json\n\n{\n  \"run_date\": \"2026-07-27\",\n  \"run_type\": \"diff_run_3 (yoga) + baseline (walking pad)\",\n  \"prev_run_date\": \"2026-07-23\",\n  \"my_asins\": [\n    \"B01LP0VI3G\",\n    \"B0FX33GJ5D\"\n  ],\n  \"competitor_asins\": [],\n  \"targets\": {\n    \"B01LP0VI3G\": {\n      \"keyword\": \"yoga mat\",\n      \"category_path\": [\n        \"Sports & Outdoors\",\n        \"Exercise & Fitness\",\n        \"Yoga\"\n      ],\n      \"realtime\": {\n        \"title\": \"Amazon Basics 1/2 Inch Extra Thick Exercise Yoga Mat with Carrying Strap, Cushioned Support, for Fitness and Gym Workouts\",\n        \"brand\": \"Amazon Basics\",\n        \"rating\": 4.6,\n        \"ratingCount\": 44318,\n        \"ratingBreakdown\": {\n          \"five_star\": {\n            \"percentage\": 77,\n            \"count\": 34124\n          },\n          \"four_star\": {\n            \"percentage\": 14,\n            \"count\": 6204\n          },\n          \"three_star\": {\n            \"percentage\": 6,\n            \"count\": 2659\n          },\n          \"two_star\": {\n            \"percentage\": 1,\n            \"count\": 443\n          },\n          \"one_star\": {\n            \"percentage\": 2,\n            \"count\": 886\n          }\n        },\n        \"bestsellersRank\": [\n          {\n            \"category\": \"Yoga Mats\",\n            \"rank\": 1301,\n            \"link\": \"/gp/bestsellers/sporting-goods/3422301/ref=pd_zg_hrsr_sporting-goods\"\n          }\n        ],\n        \"categoryPath\": [\n          \"Sports & Outdoors\",\n          \"Exercise & Fitness\",\n          \"Yoga\",\n          \"Mats\"\n        ],\n        \"price\": null,\n        \"availability\": null\n      },\n      \"market_kpi\": [\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Mats\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 4497,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 29.64,\n          \"sampleAvgMonthlySales\": 1368.0000000000011,\n          \"sampleAvgMonthlyRevenue\": 36227.54,\n          \"sampleTotalMonthlySales\": 136800,\n          \"sampleAvgBsr\": 2255.2600000000007,\n          \"sampleAvgRating\": 4.552,\n          \"sampleAvgRatingCount\": 19667.920000000006,\n          \"sampleBrandCount\": 25,\n          \"sampleSellerCount\": 18,\n          \"sampleAvgSellerCount\": 0.18,\n          \"sampleFbaRate\": 0.23,\n          \"sampleFbmRate\": 0.07,\n          \"sampleAmzRate\": 0.7,\n          \"sampleNewSkuCount\": 1,\n          \"sampleNewSkuRate\": 0.01,\n          \"sampleNewSkuAvgPrice\": 24.99,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.94,\n          \"sampleAvgPackageWeight\": 40.948969259854934,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 6100.000000000001,\n          \"topAvgMonthlyRevenue\": 142931.12,\n          \"topAvgBsr\": 234.3,\n          \"topAvgSubBsr\": 3.5,\n          \"topSalesRate\": 0.44590643274853803,\n          \"topRevenueRate\": 0.3945372076134026,\n          \"topBrandSalesRate\": 0.9203216374269005,\n          \"topSellerSalesRate\": 0.966374269005848,\n          \"sampleSellerAddresses\": [\n            \"SG\",\n            \"HK\",\n            \"CN\",\n            \"US\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Towels\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 3301,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 14.73,\n          \"sampleAvgMonthlySales\": 2470.0,\n          \"sampleAvgMonthlyRevenue\": 31489.28,\n          \"sampleTotalMonthlySales\": 247000,\n          \"sampleAvgBsr\": 1675.2899999999997,\n          \"sampleAvgRating\": 4.510999999999999,\n          \"sampleAvgRatingCount\": 7339.680000000003,\n          \"sampleBrandCount\": 38,\n          \"sampleSellerCount\": 39,\n          \"sampleAvgSellerCount\": 0.39,\n          \"sampleFbaRate\": 0.88,\n          \"sampleFbmRate\": 0.0,\n          \"sampleAmzRate\": 0.12,\n          \"sampleNewSkuCount\": 2,\n          \"sampleNewSkuRate\": 0.02,\n          \"sampleNewSkuAvgPrice\": 11.98,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.99,\n          \"sampleAvgPackageWeight\": 10.669984921485229,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 11800.0,\n          \"topAvgMonthlyRevenue\": 132221.42,\n          \"topAvgBsr\": 99.69999999999999,\n          \"topAvgSubBsr\": 3.1999999999999997,\n          \"topSalesRate\": 0.4777327935222672,\n          \"topRevenueRate\": 0.419893494777904,\n          \"topBrandSalesRate\": 0.8048582995951417,\n          \"topSellerSalesRate\": 0.7769230769230769,\n          \"sampleSellerAddresses\": [\n            \"US\",\n            \"HK\",\n            \"CN\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Blocks\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 1391,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 19.01,\n          \"sampleAvgMonthlySales\": 809.0000000000001,\n          \"sampleAvgMonthlyRevenue\": 12657.24,\n          \"sampleTotalMonthlySales\": 80900,\n          \"sampleAvgBsr\": 16033.609999999997,\n          \"sampleAvgRating\": 4.689999999999999,\n          \"sampleAvgRatingCount\": 3704.3199999999993,\n          \"sampleBrandCount\": 39,\n          \"sampleSellerCount\": 35,\n          \"sampleAvgSellerCount\": 0.35,\n          \"sampleFbaRate\": 0.69,\n          \"sampleFbmRate\": 0.0,\n          \"sampleAmzRate\": 0.31,\n          \"sampleNewSkuCount\": 4,\n          \"sampleNewSkuRate\": 0.04,\n          \"sampleNewSkuAvgPrice\": 14.62,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.94,\n          \"sampleAvgPackageWeight\": 17.633709807597167,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 4500.0,\n          \"topAvgMonthlyRevenue\": 66383.03,\n          \"topAvgBsr\": 306.5,\n          \"topAvgSubBsr\": 2.4444444444444446,\n          \"topSalesRate\": 0.5562422744128553,\n          \"topRevenueRate\": 0.5244668161967868,\n          \"topBrandSalesRate\": 0.8689740420271941,\n          \"topSellerSalesRate\": 0.9159456118665018,\n          \"sampleSellerAddresses\": [\n            \"CN\",\n            \"SG\",\n            \"US\",\n            \"GB\",\n            \"HK\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Straps\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 1327,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 17.08,\n          \"sampleAvgMonthlySales\": 447.5000000000001,\n          \"sampleAvgMonthlyRevenue\": 4909.62,\n          \"sampleTotalMonthlySales\": 44750,\n          \"sampleAvgBsr\": 21111.199999999997,\n          \"sampleAvgRating\": 4.6080000000000005,\n          \"sampleAvgRatingCount\": 4161.73,\n          \"sampleBrandCount\": 44,\n          \"sampleSellerCount\": 43,\n          \"sampleAvgSellerCount\": 0.43,\n          \"sampleFbaRate\": 0.96,\n          \"sampleFbmRate\": 0.0,\n          \"sampleAmzRate\": 0.04,\n          \"sampleNewSkuCount\": 1,\n          \"sampleNewSkuRate\": 0.01,\n          \"sampleNewSkuAvgPrice\": 3.99,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.88,\n          \"sampleAvgPackageWeight\": 9.670787668212842,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 3020.0,\n          \"topAvgMonthlyRevenue\": 24435.26,\n          \"topAvgBsr\": 2397.6,\n          \"topAvgSubBsr\": 5.2,\n          \"topSalesRate\": 0.6748603351955307,\n          \"topRevenueRate\": 0.49770140969341903,\n          \"topBrandSalesRate\": 0.8346368715083798,\n          \"topSellerSalesRate\": 0.8368715083798882,\n          \"sampleSellerAddresses\": [\n            \"HK\",\n            \"US\",\n            \"IN\",\n            \"CN\",\n            \"SG\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Foam Wedges\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 429,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 39.24,\n          \"sampleAvgMonthlySales\": 111.99999999999996,\n          \"sampleAvgMonthlyRevenue\": 2841.72,\n          \"sampleTotalMonthlySales\": 11200,\n          \"sampleAvgBsr\": 188893.8450704225,\n          \"sampleAvgRating\": 4.320779220779221,\n          \"sampleAvgRatingCount\": 520.4675324675322,\n          \"sampleBrandCount\": 44,\n          \"sampleSellerCount\": 44,\n          \"sampleAvgSellerCount\": 0.44,\n          \"sampleFbaRate\": 0.64,\n          \"sampleFbmRate\": 0.26,\n          \"sampleAmzRate\": 0.05,\n          \"sampleNewSkuCount\": 3,\n          \"sampleNewSkuRate\": 0.03,\n          \"sampleNewSkuAvgPrice\": 37.15,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.65,\n          \"sampleAvgPackageWeight\": 37.46020015402976,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": 0.059319000000000004,\n          \"sampleAvgPackageVolumeUnit\": \"in³\",\n          \"topAvgMonthlySales\": 749.9999999999999,\n          \"topAvgMonthlyRevenue\": 16578.14,\n          \"topAvgBsr\": 18841.6,\n          \"topAvgSubBsr\": 8.1,\n          \"topSalesRate\": 0.6696428571428571,\n          \"topRevenueRate\": 0.5833846231671275,\n          \"topBrandSalesRate\": 0.7857142857142857,\n          \"topSellerSalesRate\": 0.7937219730941704,\n          \"sampleSellerAddresses\": [\n            \"IL\",\n            \"CN\",\n            \"IN\",\n            \"US\",\n            \"HK\",\n            \"AU\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Mat Bags\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 1941,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 21.23,\n          \"sampleAvgMonthlySales\": 88.99999999999997,\n          \"sampleAvgMonthlyRevenue\": 1791.43,\n          \"sampleTotalMonthlySales\": 8900,\n          \"sampleAvgBsr\": 24869.95,\n          \"sampleAvgRating\": 4.571999999999997,\n          \"sampleAvgRatingCount\": 1167.3700000000006,\n          \"sampleBrandCount\": 21,\n          \"sampleSellerCount\": 21,\n          \"sampleAvgSellerCount\": 0.21,\n          \"sampleFbaRate\": 0.96,\n          \"sampleFbmRate\": 0.0,\n          \"sampleAmzRate\": 0.04,\n          \"sampleNewSkuCount\": 7,\n          \"sampleNewSkuRate\": 0.07,\n          \"sampleNewSkuAvgPrice\": 20.35,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.98,\n          \"sampleAvgPackageWeight\": 9.338355173812591,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 280.0,\n          \"topAvgMonthlyRevenue\": 5552.6,\n          \"topAvgBsr\": 9975.8,\n          \"topAvgSubBsr\": 4.699999999999999,\n          \"topSalesRate\": 0.3146067415730337,\n          \"topRevenueRate\": 0.30995324098483507,\n          \"topBrandSalesRate\": 0.8707865168539326,\n          \"topSellerSalesRate\": 0.8876404494382022,\n          \"sampleSellerAddresses\": [\n            \"CN\",\n            \"US\",\n            \"HK\",\n            \"AU\",\n            \"CA\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\"\n          ],\n          \"categoryLevel\": 3,\n          \"totalSkuCount\": 97,\n          \"sampleSkuCount\": 97,\n          \"sampleAvgPrice\": 75.75,\n          \"sampleAvgMonthlySales\": 35.05154639175259,\n          \"sampleAvgMonthlyRevenue\": 1200.41,\n          \"sampleTotalMonthlySales\": 3400,\n          \"sampleAvgBsr\": 961897.6666666663,\n          \"sampleAvgRating\": 3.593670886075949,\n          \"sampleAvgRatingCount\": 588.582278481013,\n          \"sampleBrandCount\": 48,\n          \"sampleSellerCount\": 41,\n          \"sampleAvgSellerCount\": 0.422680412371134,\n          \"sampleFbaRate\": 0.30927835051546393,\n          \"sampleFbmRate\": 0.4845360824742268,\n          \"sampleAmzRate\": 0.10309278350515463,\n          \"sampleNewSkuCount\": 2,\n          \"sampleNewSkuRate\": 0.020618556701030927,\n          \"sampleNewSkuAvgPrice\": 153.49,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.44329896907216493,\n          \"sampleAvgPackageWeight\": 64.21182166521005,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": 0.36355800000000005,\n          \"sampleAvgPackageVolumeUnit\": \"in³\",\n          \"topAvgMonthlySales\": 280.0,\n          \"topAvgMonthlyRevenue\": 9567.1,\n          \"topAvgBsr\": 15193.199999999999,\n          \"topAvgSubBsr\": 3497.3,\n          \"topSalesRate\": 0.8235294117647058,\n          \"topRevenueRate\": 0.8216334592923394,\n          \"topBrandSalesRate\": 0.9558823529411765,\n          \"topSellerSalesRate\": 1.0,\n          \"sampleSellerAddresses\": [\n            \"GB\",\n            \"NP\",\n            \"IN\",\n            \"US\",\n            \"CN\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Mat Straps\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 579,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 7.92,\n          \"sampleAvgMonthlySales\": 132.99999999999997,\n          \"sampleAvgMonthlyRevenue\": 998.39,\n          \"sampleTotalMonthlySales\": 13300,\n          \"sampleAvgBsr\": 43336.55,\n          \"sampleAvgRating\": 4.317241379310345,\n          \"sampleAvgRatingCount\": 1585.5747126436781,\n          \"sampleBrandCount\": 37,\n          \"sampleSellerCount\": 35,\n          \"sampleAvgSellerCount\": 0.35,\n          \"sampleFbaRate\": 0.78,\n          \"sampleFbmRate\": 0.18,\n          \"sampleAmzRate\": 0.02,\n          \"sampleNewSkuCount\": 5,\n          \"sampleNewSkuRate\": 0.05,\n          \"sampleNewSkuAvgPrice\": 12.43,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.7,\n          \"sampleAvgPackageWeight\": 2.7529302225728003,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 820.0,\n          \"topAvgMonthlyRevenue\": 5806.19,\n          \"topAvgBsr\": 8600.1,\n          \"topAvgSubBsr\": 5.6,\n          \"topSalesRate\": 0.6165413533834586,\n          \"topRevenueRate\": 0.5815579753495732,\n          \"topBrandSalesRate\": 0.8909774436090225,\n          \"topSellerSalesRate\": 0.8984962406015038,\n          \"sampleSellerAddresses\": [\n            \"SG\",\n            \"CN\",\n            \"US\",\n            \"HK\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Sandbags\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 299,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 47.5,\n          \"sampleAvgMonthlySales\": 13.999999999999995,\n          \"sampleAvgMonthlyRevenue\": 813.28,\n          \"sampleTotalMonthlySales\": 1400,\n          \"sampleAvgBsr\": 288248.89655172423,\n          \"sampleAvgRating\": 3.3746666666666663,\n          \"sampleAvgRatingCount\": 279.8933333333333,\n          \"sampleBrandCount\": 32,\n          \"sampleSellerCount\": 34,\n          \"sampleAvgSellerCount\": 0.34,\n          \"sampleFbaRate\": 0.44,\n          \"sampleFbmRate\": 0.47,\n          \"sampleAmzRate\": 0.03,\n          \"sampleNewSkuCount\": 5,\n          \"sampleNewSkuRate\": 0.05,\n          \"sampleNewSkuAvgPrice\": 53.78,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.51,\n          \"sampleAvgPackageWeight\": 90.03169899651688,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 95.0,\n          \"topAvgMonthlyRevenue\": 5940.48,\n          \"topAvgBsr\": 29477.2,\n          \"topAvgSubBsr\": 3.0,\n          \"topSalesRate\": 0.6785714285714286,\n          \"topRevenueRate\": 0.7304396288630477,\n          \"topBrandSalesRate\": 1.0,\n          \"topSellerSalesRate\": 1.0,\n          \"sampleSellerAddresses\": [\n            \"HK\",\n            \"CN\",\n            \"IN\",\n            \"US\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Starter Sets\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 493,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 43.08,\n          \"sampleAvgMonthlySales\": 24.499999999999993,\n          \"sampleAvgMonthlyRevenue\": 747.59,\n          \"sampleTotalMonthlySales\": 2450,\n          \"sampleAvgBsr\": 108828.19047619047,\n          \"sampleAvgRating\": 2.8790697674418606,\n          \"sampleAvgRatingCount\": 148.3023255813954,\n          \"sampleBrandCount\": 31,\n          \"sampleSellerCount\": 29,\n          \"sampleAvgSellerCount\": 0.29,\n          \"sampleFbaRate\": 0.22,\n          \"sampleFbmRate\": 0.73,\n          \"sampleAmzRate\": 0.0,\n          \"sampleNewSkuCount\": 1,\n          \"sampleNewSkuRate\": 0.01,\n          \"sampleNewSkuAvgPrice\": 23.37,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.21,\n          \"sampleAvgPackageWeight\": 46.4156608523372,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": 0.36355800000000005,\n          \"sampleAvgPackageVolumeUnit\": \"in³\",\n          \"topAvgMonthlySales\": 190.0,\n          \"topAvgMonthlyRevenue\": 5446.3,\n          \"topAvgBsr\": 67332.79999999999,\n          \"topAvgSubBsr\": 11.799999999999999,\n          \"topSalesRate\": 0.7755102040816326,\n          \"topRevenueRate\": 0.7285118563923528,\n          \"topBrandSalesRate\": 0.8367346938775511,\n          \"topSellerSalesRate\": 0.8367346938775511,\n          \"sampleSellerAddresses\": [\n            \"CN\",\n            \"VN\",\n            \"SG\",\n            \"US\",\n            \"GB\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Meditation Benches\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 662,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 39.55,\n          \"sampleAvgMonthlySales\": 17.0,\n          \"sampleAvgMonthlyRevenue\": 705.42,\n          \"sampleTotalMonthlySales\": 1700,\n          \"sampleAvgBsr\": 119519.66666666664,\n          \"sampleAvgRating\": 1.7660377358490569,\n          \"sampleAvgRatingCount\": 643.6792452830189,\n          \"sampleBrandCount\": 53,\n          \"sampleSellerCount\": 53,\n          \"sampleAvgSellerCount\": 0.53,\n          \"sampleFbaRate\": 0.2,\n          \"sampleFbmRate\": 0.52,\n          \"sampleAmzRate\": 0.0,\n          \"sampleNewSkuCount\": 2,\n          \"sampleNewSkuRate\": 0.02,\n          \"sampleNewSkuAvgPrice\": 41.34,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.25,\n          \"sampleAvgPackageWeight\": 62.4681506051379,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 115.0,\n          \"topAvgMonthlyRevenue\": 3834.92,\n          \"topAvgBsr\": 104167.7,\n          \"topAvgSubBsr\": 15.5,\n          \"topSalesRate\": 0.6764705882352942,\n          \"topRevenueRate\": 0.5436393042282863,\n          \"topBrandSalesRate\": 0.9117647058823529,\n          \"topSellerSalesRate\": 0.9117647058823529,\n          \"sampleSellerAddresses\": [\n            \"AU\",\n            \"US\",\n            \"IN\",\n            \"CA\",\n            \"CN\",\n            \"JP\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Silk Eye Bags\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 615,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 6.96,\n          \"sampleAvgMonthlySales\": 11.000000000000002,\n          \"sampleAvgMonthlyRevenue\": 163.09,\n          \"sampleTotalMonthlySales\": 1100,\n          \"sampleAvgBsr\": 120713.13333333333,\n          \"sampleAvgRating\": 0.7382352941176471,\n          \"sampleAvgRatingCount\": 94.77941176470591,\n          \"sampleBrandCount\": 28,\n          \"sampleSellerCount\": 22,\n          \"sampleAvgSellerCount\": 0.22,\n          \"sampleFbaRate\": 0.14,\n          \"sampleFbmRate\": 0.25,\n          \"sampleAmzRate\": 0.01,\n          \"sampleNewSkuCount\": 0,\n          \"sampleNewSkuRate\": 0.0,\n          \"sampleNewSkuAvgPrice\": null,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.13,\n          \"sampleAvgPackageWeight\": 6.683926537505072,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": 11.51631,\n          \"sampleAvgPackageVolumeUnit\": \"in³\",\n          \"topAvgMonthlySales\": 85.0,\n          \"topAvgMonthlyRevenue\": 1043.81,\n          \"topAvgBsr\": 167327.9,\n          \"topAvgSubBsr\": 9.899999999999999,\n          \"topSalesRate\": 0.7727272727272727,\n          \"topRevenueRate\": 0.6400300177511505,\n          \"topBrandSalesRate\": 1.0,\n          \"topSellerSalesRate\": 1.0,\n          \"sampleSellerAddresses\": [\n            \"TR\",\n            \"US\",\n            \"GB\",\n            \"AU\",\n            \"CN\"\n          ]\n        }\n      ],\n      \"top20\": [\n        {\n          \"asin\": \"B01LP0U5X0\",\n          \"title\": \"Amazon Basics Extra Thick Exercise Yoga Mat with Carrying Strap Black 1/2 Inch\",\n          \"brand\": null,\n          \"price\": 22.48,\n          \"monthlySalesFloor\": 20000,\n          \"rating\": 4.6,\n          \"ratingCount\": 69718,\n          \"bsr\": 20\n        },\n        {\n          \"asin\": \"B0C7SFV8RH\",\n          \"title\": \"CAP Barbell 1/2-Inch High Density Exercise Yoga Mat with Strap | Multiple Options Black Yoga Mat\",\n          \"brand\": null,\n          \"price\": 15.99,\n          \"monthlySalesFloor\": 9000,\n          \"rating\": 4.6,\n          \"ratingCount\": 3524,\n          \"bsr\": 418\n        },\n        {\n          \"asin\": \"B07JQCVBBZ\",\n          \"title\": \"Gruper Yoga Mat Non Slip, Eco Friendly Fitness Exercise Mat with Carrying Strap,Pro Yoga Mats for Women,Workout Mats for Home, Pilates and Floor Exercises Matcha Green / Black 0.24*24*72 Inches\",\n          \"brand\": null,\n          \"price\": 27.99,\n          \"monthlySalesFloor\": 6000,\n          \"rating\": 4.5,\n          \"ratingCount\": 10312,\n          \"bsr\": 245\n        },\n        {\n          \"asin\": \"B07H4G664R\",\n          \"title\": \"Gruper Yoga Mat Non Slip, Eco Friendly Fitness Exercise Mat with Carrying Strap,Pro Yoga Mats for Women,Workout Mats for Home, Pilates and Floor Exercises Grey Blue / Black 0.24*24*72 Inches\",\n          \"brand\": null,\n          \"price\": 27.99,\n          \"monthlySalesFloor\": 5000,\n          \"rating\": 4.4,\n          \"ratingCount\": 10300,\n          \"bsr\": 186\n        },\n        {\n          \"asin\": \"B01LP0UX9G\",\n          \"title\": \"Amazon Basics Extra Thick Exercise Yoga Mat with Carrying Strap Pink 1/2 Inch\",\n          \"brand\": null,\n          \"price\": 20.93,\n          \"monthlySalesFloor\": 4000,\n          \"rating\": 4.6,\n          \"ratingCount\": 69553,\n          \"bsr\": 24\n        },\n        {\n          \"asin\": \"B01LP0V4JY\",\n          \"title\": \"Amazon Basics Extra Thick Exercise Yoga Mat with Carrying Strap Blue 1/2 Inch\",\n          \"brand\": null,\n          \"price\": 22.48,\n          \"monthlySalesFloor\": 4000,\n          \"rating\": 4.6,\n          \"ratingCount\": 69450,\n          \"bsr\": 27\n        },\n        {\n          \"asin\": \"B07H9PDL2Y\",\n          \"title\": \"Gaiam Thick Yoga Mat with Easy-Cinch Carrying Strap Purple 2/5\\\" (10MM)\",\n          \"brand\": null,\n          \"price\": 24.99,\n          \"monthlySalesFloor\": 4000,\n          \"rating\": 4.6,\n          \"ratingCount\": 46148,\n          \"bsr\": 129\n        },\n        {\n          \"asin\": \"B07H9PZ42P\",\n          \"title\": \"Gaiam Thick Yoga Mat, Exercise & Fitness Mat with Easy-Cinch Carrying Strap | Non-Slip NBR Foam | Joint Cushioning | Yoga, Pilates, Fitness & Floor Workouts | 72\\\"L x 24\\\"W Teal 2/5\\\" (10MM)\",\n          \"brand\": null,\n          \"price\": 24.98,\n          \"monthlySalesFloor\": 3000,\n          \"rating\": 4.6,\n          \"ratingCount\": 46245,\n          \"bsr\": 148\n        },\n        {\n          \"asin\": \"B07H9PZ6MH\",\n          \"title\": \"Gaiam Thick Yoga Mat with Easy-Cinch Carrying Strap Green 2/5\\\" (10MM)\",\n          \"brand\": null,\n          \"price\": 24.98,\n          \"monthlySalesFloor\": 3000,\n          \"rating\": 4.6,\n          \"ratingCount\": 46191,\n          \"bsr\": 115\n        },\n        {\n          \"asin\": \"B07HQFLDBJ\",\n          \"title\": \"Tumaz Yoga Mat Strap Adjustable Carrier for All Yoga Mats, 2 Sizes | Extra Thick Cotton Blend |16+ colors are available | Fits Most Yoga Mats | Soft Woven Texture | Comfortable Shoulder Carry 11. Just Black 64 IN\",\n          \"brand\": null,\n          \"price\": 6.99,\n          \"monthlySalesFloor\": 3000,\n          \"rating\": 4.7,\n          \"ratingCount\": 10406,\n          \"bsr\": 556\n        },\n        {\n          \"asin\": \"B092XNCFF7\",\n          \"title\": \"Retrospec Solana Yoga Mat 1\\\" Thick w/Nylon Strap for Men & Women - Non Slip Exercise Mat for Home Yoga, Pilates, Stretching, Floor & Fitness Workouts Black 1 inch\",\n          \"brand\": null,\n          \"price\": 39.99,\n          \"monthlySalesFloor\": 3000,\n          \"rating\": 4.5,\n          \"ratingCount\": 14658,\n          \"bsr\": 103\n        },\n        {\n          \"asin\": \"B0B74MRJS3\",\n          \"title\": \"KEEP Extra Wide Yoga Mat, 7mm Thick 72\\\" x 32\\\" Exercise Mat | 7mm thick Extra wide yoga mat with carry strap for home workout, yoga, exercise and Pilates Pale Green\",\n          \"brand\": null,\n          \"price\": 29.99,\n          \"monthlySalesFloor\": 3000,\n          \"rating\": 4.5,\n          \"ratingCount\": 596,\n          \"bsr\": 1062\n        },\n        {\n          \"asin\": \"B07H9PZDQW\",\n          \"title\": \"Gaiam Thick Yoga Mat with Easy-Cinch Carrying Strap Black 2/5\\\" (10MM)\",\n          \"brand\": null,\n          \"price\": 24.98,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.6,\n          \"ratingCount\": 46209,\n          \"bsr\": 111\n        },\n        {\n          \"asin\": \"B07H9PZGSP\",\n          \"title\": \"Gaiam Thick Yoga Mat with Easy-Cinch Carrying Strap Navy 2/5\\\" (10MM)\",\n          \"brand\": null,\n          \"price\": 24.98,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.6,\n          \"ratingCount\": 46179,\n          \"bsr\": 124\n        },\n        {\n          \"asin\": \"B07XYZ3Z2Q\",\n          \"title\": \"Gaiam Yoga Mat Towel Microfiber Mat-Sized Yoga Towel for Hot Yoga Heron Lilac 24\\\"W x 68\\\"L\",\n          \"brand\": null,\n          \"price\": 17.94,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.2,\n          \"ratingCount\": 847,\n          \"bsr\": 4646\n        },\n        {\n          \"asin\": \"B091FX694F\",\n          \"title\": \"Retrospec Solana Yoga Mat Thick 1/2in Non-Slip Workout Mat with Nylon Strap - 72x24in Exercise Mat for Pilates, Stretching & Fitness - BPA Free, Easy Clean Boysenberry 1/2 inch\",\n          \"brand\": null,\n          \"price\": 24.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.4,\n          \"ratingCount\": 9043,\n          \"bsr\": 255\n        },\n        {\n          \"asin\": \"B092XMWXK7\",\n          \"title\": \"Retrospec Solana Yoga Mat 1\\\" Thick w/Nylon Strap for Men & Women - Non Slip Exercise Mat for Home Yoga, Pilates, Stretching, Floor & Fitness Workouts Ocean Blue 1 inch\",\n          \"brand\": null,\n          \"price\": 39.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.5,\n          \"ratingCount\": 14626,\n          \"bsr\": 99\n        },\n        {\n          \"asin\": \"B092XTMNCC\",\n          \"title\": \"Retrospec Solana Yoga Mat 1\\\" Thick w/Nylon Strap for Men & Women - Non Slip Exercise Mat for Home Yoga, Pilates, Stretching, Floor & Fitness Workouts Boysenberry 1 inch\",\n          \"brand\": null,\n          \"price\": 39.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.5,\n          \"ratingCount\": 14599,\n          \"bsr\": 110\n        },\n        {\n          \"asin\": \"B0CRXF962V\",\n          \"title\": \"CAP Barbell 1-Inch High Density Exercise Yoga Mat with Strap | Multiple Colors Purple\",\n          \"brand\": null,\n          \"price\": 18.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.6,\n          \"ratingCount\": 1445,\n          \"bsr\": 993\n        },\n        {\n          \"asin\": \"B0DG3WYD54\",\n          \"title\": \"CAP Barbell 1/2-Inch High Density Exercise Yoga Mat with Strap | Multiple Options Teal Yoga Mat\",\n          \"brand\": null,\n          \"price\": 18.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.7,\n          \"ratingCount\": 3478,\n          \"bsr\": 343\n        }\n      ],\n      \"price_band_overview\": {\n        \"sampleSkuCount\": 100,\n        \"sampleTotalMonthlySales\": 147500,\n        \"sampleMedianPrice\": 24.99,\n        \"sampleMinPrice\": 4.99,\n        \"sampleMaxPrice\": 128.0,\n        \"hottestBand\": {\n          \"bandIdx\": 2,\n          \"bandLabel\": \"$20-$25\",\n          \"sampleBandMinPrice\": 18.99,\n          \"sampleBandMaxPrice\": 24.95,\n          \"sampleSkuCount\": 22,\n          \"sampleSkuRate\": 0.22,\n          \"sampleMonthlySales\": 46200,\n          \"sampleSalesRate\": 0.31322033898305085,\n          \"sampleBrandCount\": 0,\n          \"sampleTop3BrandSalesRate\": null,\n          \"sampleAvgRating\": null,\n          \"sampleOpportunityIndex\": 1.423728813559322\n        },\n        \"bestOpportunityBand\": {\n          \"bandIdx\": 2,\n          \"bandLabel\": \"$20-$25\",\n          \"sampleBandMinPrice\": 18.99,\n          \"sampleBandMaxPrice\": 24.95,\n          \"sampleSkuCount\": 22,\n          \"sampleSkuRate\": 0.22,\n          \"sampleMonthlySales\": 46200,\n          \"sampleSalesRate\": 0.31322033898305085,\n          \"sampleBrandCount\": 0,\n          \"sampleTop3BrandSalesRate\": null,\n          \"sampleAvgRating\": null,\n          \"sampleOpportunityIndex\": 1.423728813559322\n        },\n        \"currency\": \"USD\",\n        \"_note\": \"carried forward from 2026-07-23; not refreshed this run (subcommand outside this run's declared set)\"\n      }\n    },\n    \"B0FX33GJ5D\": {\n      \"keyword\": \"walking pad\",\n      \"category_path\": [\n        \"Sports & Outdoors\",\n        \"Exercise & Fitness\",\n        \"Cardio Training\",\n        \"Treadmills\"\n      ],\n      \"baseline_established\": \"2026-07-27\",\n      \"realtime\": {\n        \"title\": \"Walking Pad Treadmill for Home - Folding Treadmills with Handle Bar Portable Compact Fold up Indoor Foldable Handles Electric Walk Pads Small Spaces Mini Running Quiet Under Bed Office Black\",\n        \"brand\": \"Ulfario\",\n        \"rating\": 4.2,\n        \"ratingCount\": 1870,\n        \"ratingBreakdown\": {\n          \"five_star\": {\n            \"percentage\": 68,\n            \"count\": 1271\n          },\n          \"four_star\": {\n            \"percentage\": 11,\n            \"count\": 205\n          },\n          \"three_star\": {\n            \"percentage\": 6,\n            \"count\": 112\n          },\n          \"two_star\": {\n            \"percentage\": 3,\n            \"count\": 56\n          },\n          \"one_star\": {\n            \"percentage\": 12,\n            \"count\": 224\n          }\n        },\n        \"bestsellersRank\": [\n          {\n            \"category\": \"Sports & Outdoors\",\n            \"rank\": 74,\n            \"link\": \"/gp/bestsellers/sporting-goods/ref=pd_zg_ts_sporting-goods\"\n          },\n          {\n            \"category\": \"Treadmills\",\n            \"rank\": 1,\n            \"link\": \"/gp/bestsellers/sporting-goods/3407831/ref=pd_zg_hrsr_sporting-goods\"\n          }\n        ],\n        \"categoryPath\": [\n          \"Sports & Outdoors\",\n          \"Exercise & Fitness\",\n          \"Cardio Training\",\n          \"Treadmills\"\n        ],\n        \"price\": 89.98,\n        \"availability\": \"in_stock\"\n      },\n      \"market_kpi\": [\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Cardio Training\",\n            \"Treadmills\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 3254,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 180.94,\n          \"sampleAvgMonthlySales\": 1635.0000000000005,\n          \"sampleAvgMonthlyRevenue\": 241405.38,\n          \"sampleTotalMonthlySales\": 163500,\n          \"sampleAvgBsr\": 37556.37000000002,\n          \"sampleAvgRating\": 4.249000000000001,\n          \"sampleAvgRatingCount\": 876.5800000000002,\n          \"sampleBrandCount\": 57,\n          \"sampleSellerCount\": 51,\n          \"sampleAvgSellerCount\": 0.51,\n          \"sampleFbaRate\": 0.41,\n          \"sampleFbmRate\": 0.34,\n          \"sampleAmzRate\": 0.24,\n          \"sampleNewSkuCount\": 50,\n          \"sampleNewSkuRate\": 0.5,\n          \"sampleNewSkuAvgPrice\": 139.27,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.95,\n          \"sampleAvgPackageWeight\": 748.9667862816739,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 7299.999999999999,\n          \"topAvgMonthlyRevenue\": 757117.48,\n          \"topAvgBsr\": 972.0,\n          \"topAvgSubBsr\": 6.6,\n          \"topSalesRate\": 0.44648318042813456,\n          \"topRevenueRate\": 0.31362909122995725,\n          \"topBrandSalesRate\": 0.5382262996941896,\n          \"topSellerSalesRate\": 0.6324159021406728,\n          \"sampleSellerAddresses\": [\n            \"HK\",\n            \"US\",\n            \"CN\"\n          ]\n        }\n      ],\n      \"top20\": [\n        {\n          \"asin\": \"B0GGLS9NQV\",\n          \"title\": \"Walking Pad Treadmill with Handle Bar and Adjustable Incline, Compact Portable Treadmills for Home Office, 2.5HP Quiet Anti-Slip Under Desk Treadmills, 0.6-3.8 MPH Remote Speed Control\",\n          \"brand\": null,\n          \"price\": 119.89,\n          \"monthlySalesFloor\": 10000,\n          \"rating\": 4.4,\n          \"ratingCount\": 1258,\n          \"bsr\": 328\n        },\n        {\n          \"asin\": \"B0GVNFJJSG\",\n          \"title\": \"Walking Pad Treadmill for Home - Under Desk Treadmills Mini Portable Walking Running Machine Slim Compact Motorized Electric Treadmill with Adjustable Speed Remote Black\",\n          \"brand\": null,\n          \"price\": 89.99,\n          \"monthlySalesFloor\": 10000,\n          \"rating\": 4.5,\n          \"ratingCount\": 697,\n          \"bsr\": 115\n        },\n        {\n          \"asin\": \"B0GGB9BV77\",\n          \"title\": \"Walking Pad Treadmill for Home - Under Desk Treadmills Portable Mini Compact Walk Pads for Small Spaces Office Indoor Apartment Floor Flat Running Machine with Remote Quiet Lightweight Black\",\n          \"brand\": null,\n          \"price\": 89.98,\n          \"monthlySalesFloor\": 9000,\n          \"rating\": 4.4,\n          \"ratingCount\": 493,\n          \"bsr\": 647\n        },\n        {\n          \"asin\": \"B0FX33GJ5D\",\n          \"title\": \"Walking Pad Treadmill for Home - Folding Treadmills with Handle Bar Portable Compact Fold up Indoor Foldable Handles Electric Walk Pads Small Spaces Mini Running Quiet Under Bed Office Black\",\n          \"brand\": null,\n          \"price\": 89.98,\n          \"monthlySalesFloor\": 8000,\n          \"rating\": 4.1,\n          \"ratingCount\": 1784,\n          \"bsr\": 273\n        },\n        {\n          \"asin\": \"B0G51V78YK\",\n          \"title\": \"Walking Pad with Incline and Handle Bar, 2026 Upgrade Electric Small Walking Pads Treadmills with Handles, Compact Treadmills for Home Small Spaces, 3.0HP, 0.6-7.6MPH, 350LBS Black-A1\",\n          \"brand\": null,\n          \"price\": 99.99,\n          \"monthlySalesFloor\": 8000,\n          \"rating\": 4.1,\n          \"ratingCount\": 1040,\n          \"bsr\": 1229\n        },\n        {\n          \"asin\": \"B0FXLYZSGB\",\n          \"title\": \"Walking Pad Treadmill for Home - Under Desk Walk Pads with Remote Control Mini Running Portable Electric Machine Adjustable Slim Compact with 0.6-4.0MPH Max up 220 Lbs Modes for Office Small Spaces Black\",\n          \"brand\": null,\n          \"price\": 79.99,\n          \"monthlySalesFloor\": 7000,\n          \"rating\": 4.3,\n          \"ratingCount\": 339,\n          \"bsr\": 331\n        },\n        {\n          \"asin\": \"B0GWR4874N\",\n          \"title\": \"Treadmills for Home Walking Pad - Foldable Treadmill Under Desk with Handle Bar 0.6-6.2 MPH Portable Folding Pads Compact Running Machine Quiet Lightweight | Under Desk, 0.6-6.2 MPH, Portable Folding, Compact Running Machine, Quiet Lightweight\",\n          \"brand\": null,\n          \"price\": 119.99,\n          \"monthlySalesFloor\": 7000,\n          \"rating\": 4.8,\n          \"ratingCount\": 438,\n          \"bsr\": 770\n        },\n        {\n          \"asin\": \"B0DNZ3GPB8\",\n          \"title\": \"Yagud Walking Pad, Walking Pad Treadmill for Home Office, Portable Under Desk Treadmill with Remote Control and LED Display, Walking Jogging Running Machine walking pad\",\n          \"brand\": null,\n          \"price\": 109.99,\n          \"monthlySalesFloor\": 6000,\n          \"rating\": 4.4,\n          \"ratingCount\": 2069,\n          \"bsr\": 1961\n        },\n        {\n          \"asin\": \"B0GDDRNLDG\",\n          \"title\": \"16% Incline Walking Pad Treadmills for Home Small, 4-in-1 Under Desk Treadmill with Handles, Foldable Treadmill with 2.5 HP Quiet Brushless, 330 LBS Capacity Ebony\",\n          \"brand\": null,\n          \"price\": 134.99,\n          \"monthlySalesFloor\": 4000,\n          \"rating\": 4.2,\n          \"ratingCount\": 1236,\n          \"bsr\": 2136\n        },\n        {\n          \"asin\": \"B0H14DBNN8\",\n          \"title\": \"CURSOR FITNESS 16% Incline Treadmills for Home Small with 3 LED Displays, 3.0HP Foldable Walking Pad Treadmill Up to 400LBS Capacity, Portable Treadmill 0.6-7.0MPH Deep black\",\n          \"brand\": null,\n          \"price\": 149.98,\n          \"monthlySalesFloor\": 4000,\n          \"rating\": 4.2,\n          \"ratingCount\": 2908,\n          \"bsr\": 1930\n        },\n        {\n          \"asin\": \"B0DMT1FZ3N\",\n          \"title\": \"Abonow Walking Pad Under Desk Treadmill for Home Office | 8% Manual Incline, Remote Control, LED Display, 265 LBS Capacity, 2.5HP Compact Treadmills for Walking Jogging Black Orange\",\n          \"brand\": null,\n          \"price\": 119.99,\n          \"monthlySalesFloor\": 3000,\n          \"rating\": 4.1,\n          \"ratingCount\": 1163,\n          \"bsr\": 2520\n        },\n        {\n          \"asin\": \"B0FS7ZH2M3\",\n          \"title\": \"UREVO Strol 2E Smart 2-in-1 Folding Treadmill, Compact Walking Pad with Safety Handle, Plug and Play, Standing Desk Treadmill with Dual LED Display, Smart APP, Walking or Running for Home Flaxen\",\n          \"brand\": null,\n          \"price\": 243.88,\n          \"monthlySalesFloor\": 3000,\n          \"rating\": 4.3,\n          \"ratingCount\": 840,\n          \"bsr\": 6696\n        },\n        {\n          \"asin\": \"B0FHKPZM95\",\n          \"title\": \"Portable Treadmills for Home Small, 3.5HP Walking Pad Treadmill with Handle Bar and Incline, 0.6-10MPH Electric Mini Treadmills for Exercising, 400LBS Small Treadmills for Small Spaces Black-4\",\n          \"brand\": null,\n          \"price\": 109.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.2,\n          \"ratingCount\": 45,\n          \"bsr\": 97523\n        },\n        {\n          \"asin\": \"B0FT38DHTT\",\n          \"title\": \"Cardirun Walking Pad with Incline and Stable Handle Bar, Foldable Treadmill | 3.0HP Quiet Under Desk Treadmills for Home Small, Portable Treadmill with APP, Remote Control and LED Display, Space-Saving\",\n          \"brand\": null,\n          \"price\": 139.97,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.5,\n          \"ratingCount\": 317,\n          \"bsr\": 2863\n        },\n        {\n          \"asin\": \"B0G3W39ZMG\",\n          \"title\": \"WELLFIT Folding Treadmill for Home, Walking Pad with Incline and Handle Bar | 320+lbs Capacity,Under Desk Treadmill for Home Small Office,Low Noise Treadmills with Smart Voice Control for Jogging Running Black with Blue\",\n          \"brand\": null,\n          \"price\": 139.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.6,\n          \"ratingCount\": 180,\n          \"bsr\": 3499\n        },\n        {\n          \"asin\": \"B0G519PQM5\",\n          \"title\": \"KASSADIN Walking Pad with Handle Bar, 2026 Upgrade Portable Small Treadmill with Handles for Home Small, 3.0HP Under Desk Walking Pad Treadmill with Incline, 0.6-7.6MPH, 350LBS Black-A1\",\n          \"brand\": null,\n          \"price\": 99.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.0,\n          \"ratingCount\": 976,\n          \"bsr\": 1525\n        },\n        {\n          \"asin\": \"B0G8DVSVF4\",\n          \"title\": \"Walking Pad with Incline and Handle Bar, 3.0HP Electric Protable Mini Walking Pad Treadmills for Home Small Space, Small Treadmill for Exercising, 0.6-7.6MPH, 350LB Capacity Black-A2\",\n          \"brand\": null,\n          \"price\": 89.98,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.2,\n          \"ratingCount\": 774,\n          \"bsr\": 1828\n        },\n        {\n          \"asin\": \"B0G91J48G6\",\n          \"title\": \"Walking Pad Treadmill, 6.2MPH Under Desk Walking Pad with 9% Incline, Treadmills for Home with Double Frame, 2.5HP Brushless Drive, 12 HIIT Programs, Remote Control, 330LBS Capacity Black-Blue\",\n          \"brand\": null,\n          \"price\": 169.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.5,\n          \"ratingCount\": 942,\n          \"bsr\": 7299\n        },\n        {\n          \"asin\": \"B0GTYSJ2PT\",\n          \"title\": \"Portable Walking Treadmill with Handle Bar, 3.0HP Mini Walking Pad Treadmill with Incline, 0.6-7.6MPH Compact Treadmills for Home Small, 350LBS Small Treadmills for Exercising Black-A1\",\n          \"brand\": null,\n          \"price\": 109.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.1,\n          \"ratingCount\": 185,\n          \"bsr\": 21147\n        },\n        {\n          \"asin\": \"B0H14VZ1PP\",\n          \"title\": \"Treadmills for Home Walking Pad Machine- Foldable Treadmill with Handle Bar for Running Jogging Gym Compact Portable Small Caminadora Electrica Folding Quiet Tred Mills Belt with LED Dispay Pcrignbm Black\",\n          \"brand\": null,\n          \"price\": 139.99,\n          \"monthlySalesFloor\": 2000,\n          \"rating\": 4.8,\n          \"ratingCount\": 152,\n          \"bsr\": 1187\n        }\n      ]\n    }\n  },\n  \"credits_used_this_run\": 6\n}\n\nFile v1.0.9:data/watchlist.json\n\n{\n  \"my_asins\": [\n    \"B01LP0VI3G\",\n    \"B0FX33GJ5D\"\n  ],\n  \"competitor_asins\": [],\n  \"targets\": {\n    \"B01LP0VI3G\": {\n      \"keyword\": \"yoga mat\",\n      \"category_path\": [\n        \"Sports & Outdoors\",\n        \"Exercise & Fitness\",\n        \"Yoga\"\n      ],\n      \"category_source\": \"keyword(categories API, broadened to 'yoga')\",\n      \"added\": \"2026-07-23\"\n    },\n    \"B0FX33GJ5D\": {\n      \"keyword\": \"walking pad\",\n      \"category_path\": [\n        \"Sports & Outdoors\",\n        \"Exercise & Fitness\",\n        \"Cardio Training\",\n        \"Treadmills\"\n      ],\n      \"category_source\": \"realtime/product categoryPath (no extra credit)\",\n      \"added\": \"2026-07-27\"\n    }\n  },\n  \"alert_preferences\": \"default\",\n  \"created\": \"2026-07-23\",\n  \"updated\": \"2026-07-27\"\n}\n\nArchive v1.0.8: 9 files, 62116 bytes\n\nFiles: data/last-run.json (44520b), data/watchlist.json (760b), README.md (2981b), references/cli-contract.md (8636b), references/reference.md (9267b), scripts/zoodata.py (175180b), skill-card.md (2875b), SKILL.md (14458b), _meta.json (144b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: amazon-daily-market-radar\ndescription: >\n  Automated daily Amazon market digest. Given the user's own ASINs (1-10) and\n  any competitor ASINs they want included (up to 20), produces a daily\n  change-detection briefing on Amazon: price moves, BSR shifts, new entrants\n  in the surrounding category, review wave detection, stockout signals. Output is\n  a triaged alert dashboard (RED/YELLOW/GREEN) comparing today against\n  yesterday's snapshot.\n  Designed for unattended scheduled automation (cron-style daily run) — set\n  it once, get an alert digest every day.\n  Use when the user wants ongoing OPERATIONAL daily monitoring of their\n  products and the surrounding market — a \"what changed since yesterday\"\n  digest delivered automatically every day.\n  Use when user asks: what changed in my category today, daily category\n  briefing, set up daily monitoring, emerging brands alert, BSR shifts\n  daily, stockout signals, set-it-and-forget-it market watch.\n  Requires ZOODATA_API_KEY.\nmetadata:\n  version: \"1.0.9\"\n  author: SerendipityOneInc\n  homepage: https://github.com/SerendipityOneInc/ZooData-Skills\n  openclaw: {\"requires\": {\"env\": [\"ZOODATA_API_KEY\"]}, \"primaryEnv\": \"ZOODATA_API_KEY\"}\n---\n\n# ZooData — Amazon Daily Market Radar\n\n> Set it. Forget it. Get alerted when it matters. Respond in user's language.\n\n## Files\n\n| File | Purpose |\n|------|---------|\n| `{skill_base_dir}/scripts/zoodata.py` | **Execute** for all API calls (run `--help` for params) |\n| `{skill_base_dir}/references/reference.md` | Load for exact field names or response structure |\n| `{skill_base_dir}/data/` | Runtime: watchlist.json, last-run.json (auto-created) |\n\n## Credential\n\nRequired: `ZOODATA_API_KEY`. Get free key at [zoodata.ai/api-keys](https://zoodata.ai/en/api-keys).\n\n## Capabilities & Data Flow\n\n- **Network**: only `https://api.zoodata.ai` (Bearer `ZOODATA_API_KEY`). Setting `ZOODATA_BASE_URL` to an untrusted host (anything other than `api.zoodata.ai` / `*.zoodata.ai` / localhost) makes the CLI **refuse the request and withhold the key** — the Bearer token is never sent to an untrusted host.\n- **Execution**: bundled shared ZooData CLI `{skill_base_dir}/scripts/zoodata.py` (Python 3, stdlib-only). This skill allows `daily-radar`, `market`, `products`, `competitors`, `product`, `price-band-overview`, `history`, `check`, plus the review fallback toolkit (`reviews-raw` / `review-tag-prompt` / `review-reduce-prompt` / `review-aggregate`). Do not invoke unrelated subcommands for this skill's tasks.\n- **Local files**: baseline snapshots `{skill_base_dir}/data/last-run.json` and `{skill_base_dir}/data/watchlist.json`; a temporary `/tmp/review_<ASIN>_<timestamp>/` working dir during the review fallback; reads the optional credential store `~/.zoodata/config.json`.\n- **Sent to the API**: keywords, category paths, ASINs, marketplace/date and numeric filter values only. **Never sent**: budget, experience level, risk tolerance, or any other user-profile text — profile inputs map client-side to numeric filters.\n- **Credits**: every API call consumes account credits. For broad or ambiguous requests, state the estimated credit cost and confirm with the user before running multi-call scans. The composite `daily-radar` command executes ~14+ API calls (~15-30 credits) in ONE invocation and has NO skip/trim flags — under a credit cap, use the granular commands instead.\n\n## Shared CLI Contract\n\nBefore selecting or invoking the first command, read and apply the local `references/cli-contract.md`. Reapply it after every granular or composite result and before any fallback, additional call, state write, interpretation, or user-facing report. Use this skill's fallback logic only when the shared contract classifies the result as non-terminal.\n\n### Local Interface Failure Output\n\nFor a terminal interface failure, respond in the user's language that today's radar could not be completed, then list succeeded and failed endpoint identifiers and state that the previous baseline remains unchanged. Do not emit RED/YELLOW/GREEN alerts or write `last-run.json`, watchlists, history, or baselines. Keep control tokens, parameters, and retry logs internal unless diagnostics are requested.\n\n## Input (First Run)\n\nCollect in ONE message: ✅ my_asins (1-10) | 💡 competitor_asins (up to 20) | 📌 alert_preferences. Optional: keyword, category. Category is auto-detected from first tracked ASIN if not provided.\n\n## API Pitfalls (CRITICAL)\n\n1. **Category auto-detection**: categoryPath is auto-detected from tracked ASINs. If `category_source` in output is `inferred_from_search`, confirm with user\n2. **All keyword-based endpoints MUST include `--category`**; ASIN-specific endpoints do NOT\n3. **Use API fields directly**: revenue=`sampleAvgMonthlyRevenue` (NEVER price×sales), sales=`monthlySalesFloor`, concentration=`sampleTop10BrandSalesRate`\n4. **reviews/analysis**: needs 50+ reviews. Fallback chain when sample is insufficient:\n   1. **Lightweight**: `realtime/product` ratingBreakdown — only star distribution, no themes\n   2. **Full 11-dim insights** — bypass `/reviews/analysis` entirely:\n      a. `zoodata.py reviews-raw --asin X` → fetch up to 100 raw reviews (10 credits, ~60s)\n      b. For each review: render Map prompt via `zoodata.py review-tag-prompt --review '<json>'`\n         and have your own LLM produce JSON tags (sentiment + 11 dimensions)\n      c. Collect candidate phrases per dimension; for each dimension render\n         Reduce prompt via `zoodata.py review-reduce-prompt --label-type X --candidates '[...]'`\n         and have your LLM produce semantic clusters\n      d. `zoodata.py review-aggregate --reviews R --tagged T --clusters C`\n         → consumerInsights output compatible with `/reviews/analysis`\n   3. **Fallback caveats** (apply to the 4-step chain above — lessons from end-to-end validation):\n      - **Working dir**: `WORK=/tmp/review_<ASIN>_$(date +%s) && mkdir -p $WORK`\n      - **Step b CLI behavior**: `review-tag-prompt` RENDERS the prompt only; YOUR LLM produces the JSON. Render once to learn the schema, then produce tags for all N reviews in one in-context pass (don't call the CLI N times).\n      - **Step c candidate extraction** (Python one-liner):\n        `candidates = {d: sorted({el.strip().lower() for t in tagged for el in (t.get(d) or [])}) for d in DIMS}`\n      - **Small-sample rule (reviewCount<50)**: demote single-mention items 📊→🔍; NEVER attach table-level or section-header 📊 when any row inside is 🔍; suppress \"🔴 Critical\" verdicts on count=1\n      - **Scope**: fallback replaces ONLY the `/reviews/analysis` aggregation. This skill's primary workflow outputs (price/BSR/sales deltas, alerts, watchlist baseline) remain valid — do not re-run them.\n5. **Aggregation without categoryPath**: severely distorted data\n\n## On Missing Key\n\nWhen `ZOODATA_API_KEY` is not set (verify via `python {skill_base_dir}/scripts/zoodata.py check` — exits 2 if no key in env or `~/.zoodata/config.json`), stop before any evidence call. Tell the user that a ZooData API key is required, link to https://zoodata.ai/en/api-keys, and explain that the key may be set in the environment or local config. Do not substitute public knowledge or a \"for reference only\" analysis.\n## On 401 Invalid Key\n\nWhen `_transport.status=401`, stop further calls, tell the user that the configured key was rejected, direct them to https://zoodata.ai/en/api-keys, and do not fabricate missing data.\n\n## On 402 Credit Exhausted\n\nWhen `_transport.status=402`, stop further calls. Report where the workflow stopped, any compatible partial findings already gathered, and returned credit metadata when present; direct the user to https://zoodata.ai/en/pricing and do not fabricate missing data.\n\n## Execution\n\n1. `daily-radar --asins \"asin1,asin2,...\" [--keyword X] [--category Y]` (composite, auto-detects category from ASINs)\n3. Compare against `{skill_base_dir}/data/last-run.json` for change detection (first run = baseline only, no alerts)\n4. Generate alert-prioritized briefing → save snapshot to `{skill_base_dir}/data/last-run.json`\n\n## Alert Rules\n\n| Level | Triggers |\n|-------|----------|\n| 🔴 RED | Price drop >10% by competitor; BSR crash >50% (yours); 1-star spike (3+ in 24h) |\n| 🟡 YELLOW | New competitor in Top 20; competitor price change 5-10%; BSR change 20-50%; brand share shift >2% |\n| 🟢 GREEN | Competitor stock-out; your review velocity up; price band opportunity shift |\n\n## Change Detection Logic\n\n- Price change >5% → 🔴\n- BSR move >20% → 🟡\n- New ASINs in top 20 (vs last run) → 🟡\n\nGrowth signal validation:\n- 📊 Sustained: 7+ days consistent direction\n- 🔍 Possible signal: 2-3 days of change\n- 💡 Single-day spike: could be promotion/restock\n\n### Change Interpretation Guide\n| Metric | Normal Range | Action Trigger | Likely Cause |\n|--------|-------------|----------------|-------------|\n| Price change | ±3% | >5% sustained 3+ days | Repricing strategy or promotion 🔍 |\n| BSR shift | ±15% daily | >30% sustained or >50% single day | Stockout, promotion, or algorithm change 🔍 |\n| Rating drop | ±0.1 | >0.2 in 7 days | Product quality issue or review attack 🔍 |\n| Review velocity | ±20% | >50% spike | Vine program, review manipulation, or viral moment 🔍 |\n| New entrant in Top 20 | 0-1/week | 3+ in one week | Market shift or seasonal demand 🔍 |\n\n### Action Recommendations by Alert Level\n- **🔴 RED**: Require immediate response — check inventory, match price if needed, investigate quality issues 💡\n- **🟡 YELLOW**: Monitor for 3-5 days before acting — may be temporary fluctuation 💡\n- **🟢 GREEN**: Opportunity window — act within 1-2 weeks before competitors notice 💡\n\n## Output Spec\n\nFirst run: \"Baseline Established\" — KPI Dashboard (current snapshot) only, no alerts.\n\nSubsequent runs: Alert Summary → RED Alerts → YELLOW Alerts → GREEN Opportunities → KPI Dashboard (today vs yesterday) → Competitor Movement → Market Shifts → Action Items → Data Provenance → API Usage.\n\n### Language (required)\n\nOutput language MUST match the user's input language. If the user asks in Chinese, the entire report is in Chinese. If in English, output in English. Exception: API field names (e.g. `monthlySalesFloor`, `categoryPath`), endpoint names, technical terms (e.g. ASIN, BSR, CR10, FBA, credits) remain in English.\n\n### Disclaimer (required, at the top of every report)\n\n> Data is based on ZooData API sampling as of [date]. Monthly sales (`monthlySalesFloor`) are lower-bound estimates. This analysis is for reference only and should not be the sole basis for business decisions. Validate with additional sources before acting.\n\n### Confidence Labels (required, tag EVERY conclusion)\n\n- 📊 **Data-backed** — direct API data (e.g. \"CR10 = 54.8% 📊\")\n- 🔍 **Inferred** — logical reasoning from data (e.g. \"brand concentration is moderate 🔍\")\n- 💡 **Directional** — suggestions, predictions, strategy (e.g. \"consider entering $10-15 band 💡\")\n\nRules: Strategy recommendations are NEVER 📊. Anomalies (>200% growth) are always 💡. User criteria override AI judgment.\n\n**Aggregate-label rule (applies to ALL report output, not just fallback)**: NEVER attach 📊 to ANY element that aggregates or groups underlying content when ANY piece of that content is 🔍 or 💡. \"Aggregate/grouping elements\" include:\n- Section headers at EVERY level (`#`, `##`, `###`, `####`) — including top-level summary sections like \"Overall Score\", \"Verdict\", \"Executive Summary\"\n- Summary/score lines anywhere in the report (e.g. `## Overall Score — 27/100 · Grade F 📊` is WRONG if any Basis row inside is 🔍)\n- Table **column** headers in comparison tables (e.g. `**Target ASIN** 📊` as a column label is WRONG if any cell in that column contains 🔍)\n- Table row headers or row-aggregation labels (when the row aggregates multiple cells of mixed confidence)\n- Any other visual grouping label — bullet-list group titles, callout box titles, etc.\n\nA group-level 📊 implies the whole block/column/row is data-backed, which smuggles inferred/directional content into the 📊 tier via visual grouping. Either (a) **omit the group-level label entirely** (preferred when content mixes tiers), or (b) use the LOWEST confidence present inside (🔍 if any underlying content is 🔍; 💡 if any is 💡). This is a universal output-quality rule — it applies regardless of which fallback path (if any) was triggered.\n\n**Emoji reservation rule (closely related)**: The three confidence symbols `📊 🔍 💡` are RESERVED for confidence labeling. NEVER use them as decorative prefixes on section headers, table headers, or any aggregate element — even when you also include a correct confidence suffix on the same line. Example:\n- ❌ WRONG: `## 📊 Overall Score — 27/100 · Grade F 🔍` (the leading 📊 reads as a data-backed claim even though the trailing 🔍 is correct)\n- ✅ RIGHT: `## Overall Score — 27/100 · Grade F 🔍` (no decorative emoji, just the proper confidence suffix)\n- ✅ RIGHT: `## 🎯 Overall Score — 27/100 · Grade F 🔍` (use non-reserved decorative icons like 🎯 🧭 📋 📝 📂 🏁 🚨 🏆 🔔 when a visual prefix is desired)\n\nDecorative emoji ≠ confidence label — but from a reader's perspective, a leading `📊/🔍/💡` is indistinguishable from a confidence claim. Reserve these three symbols EXCLUSIVELY for confidence annotation to avoid ambiguity.\n\nSample bias: \"Based on Top [N] by sales volume; niche/new products may be underrepresented.\"\n\n### Data Provenance (required)\n\nInclude a table at the end of every report:\n\n| Data | Endpoint | Key Params | Notes |\n|------|----------|------------|-------|\n| (e.g. Market Overview) | `markets/search` | categoryPath, topN=10 | 📊 Top N sampling, sales are lower-bound |\n| ... | ... | ... | ... |\n\nExtract endpoint and params from `_query` in JSON output. Add notes: sampling method, T+1 delay, realtime vs DB, minimum review threshold, etc.\n\n### API Usage (required)\n\n| Endpoint | Calls | Credits |\n|----------|-------|---------|\n| (each endpoint used) | N | N |\n| **Total** | **N** | **N** |\n\nExtract from `meta.creditsConsumed` per response. End with `Credits remaining: N`.\n\n## API Budget: ~15-30 credits\n\nRealtime×ASINs(5-15) + History(1-2) + Market/Brand(3) + Products(1) + Price(2) + Categories(1) + Reviews(1-3).\n\nFile v1.0.8:README.md\n\n# Amazon Daily Market Radar — ZooData Agent Skill\n\n> Set it. Forget it. Get alerted when it matters.\n\n## What This Skill Does\n\nAutomated daily monitoring and alert system for Amazon sellers. Tracks your ASINs and competitors, detects price changes, BSR movements, new entrants, review spikes, and stock-out signals. First run establishes a baseline; subsequent runs compare against it and fire tiered alerts. Designed for unattended agent automation.\n\n### What Makes This Different\n\n- **Set-and-forget**: First run = baseline, every run after = smart change detection\n- **Three-tier alerts**: 🔴 RED (price crash, BSR collapse, 1-star spike), 🟡 YELLOW (new competitors, moderate shifts), 🟢 GREEN (opportunities like competitor stock-outs)\n- **Signal validation**: Distinguishes sustained trends (📊 7+ days) from single-day spikes (💡)\n- **Cron-ready**: Built for scheduled execution with auto-monitor setup\n\n## Install\n\n```bash\nnpx skills add SerendipityOneInc/ZooData-Skills\n```\n\nSelect **Amazon Daily Market Radar** when prompted.\n\n## API Key Setup\n\n1. Get a free key at [zoodata.ai/api-keys](https://zoodata.ai/en/api-keys) — 1,000 free credits, no credit card\n2. Set the environment variable:\n   ```bash\n   export ZOODATA_API_KEY='hms_live_xxxxxx'\n   ```\n\n## Example Prompts\n\n- *\"Set up daily monitoring for my ASINs: B0XXXXXXXX, B0YYYYYYYY\"*\n- *\"Set up daily market monitoring for keyword 'yoga mat', track these 3 ASINs\"*\n- *\"What changed in my market since yesterday?\"*\n- *\"Run a daily radar check on my tracked products\"*\n- *\"Any updates on my competitors?\"*\n\n## What You Get\n\n| Section | Description |\n|---------|-------------|\n| 🚨 Alert Summary | RED / YELLOW / GREEN alert counts |\n| 🔴 RED Alerts | Critical changes requiring immediate action |\n| 🟡 YELLOW Alerts | Watch-worthy shifts in competitors or market |\n| 🟢 GREEN Opportunities | Favorable changes to capitalize on |\n| 📊 KPI Dashboard | Today vs yesterday comparison |\n| 🏃 Competitor Movement | Price, BSR, listing changes per competitor |\n| 🌊 Market Shifts | Brand share, new entrants, price band migration |\n| ✅ Action Items | Prioritized next steps |\n\n## API Endpoints Used\n\n| Endpoint | Purpose |\n|----------|---------|\n| `categories` | Category resolution |\n| `markets/search` | Market-level metrics |\n| `products/search` | Product landscape |\n| `products/competitors` | Competitor discovery |\n| `realtime/product` | Live ASIN polling |\n| `reviews/analysis` | Review spike detection |\n| `products/price-band-overview` | Price band shifts |\n| `products/price-band-detail` | Detailed price analysis |\n| `products/brand-overview` | Brand share changes |\n| `products/brand-detail` | Per-brand tracking |\n| `products/history` | Trend validation |\n\n## Credit Cost\n\n~15-30 credits per run (depends on number of tracked ASINs).\n\n## Powered By\n\n[ZooData](https://zoodata.ai) — The data infrastructure built for agents. 200M+ Amazon products, 1B+ reviews, real-time signals.\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn78k155f6rbh2j8r8yjx8r2e18304q9\",\n  \"slug\": \"amazon-daily-market-radar\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1785806920591\n}\n\nFile v1.0.8:references/cli-contract.md\n\n<!-- Canonical source - do not edit copies under amazon-* skill directories directly -->\n\n# ZooData CLI Contract\n\n## Ownership and application\n\nThis file owns the project-wide caller contract before and after every bundled `{skill_base_dir}/scripts/zoodata.py` invocation. Read it before selecting the first command, then apply it after each granular or composite result and before any additional API/tool call, fallback, state write, interpretation, or user-facing report.\n\nIt owns the shared invocation form, command-identity validation, execution-environment permission handling, caller/CLI responsibilities, composite-result reuse, result acquisition, transport-status precedence, terminal-interface classification, retry ownership, and partial-result handling. It does not own skill-specific command allowlists, endpoint request/response fields, business interpretation, scenario selection, conclusion authority, or any user-facing failure/report rendering.\n\n## Invocation interface\n\n1. Invoke the bundled client as `python {skill_base_dir}/scripts/zoodata.py [global options] <subcommand> [subcommand options]` using the active skill's local copy.\n2. Place global options before the subcommand. Treat top-level and subcommand `--help` as the live invocation contract; help inspection makes no API request and consumes no credits.\n3. Use the active skill to select the allowed workflow and command scope. Use this contract to validate and execute that selection; do not let this shared file select a business workflow.\n4. Distinguish API/evidence commands from local-only diagnostic, prompt-rendering, and aggregation commands according to the selected subcommand's help. Do not attribute an API call or credit use to a local-only command.\n5. Credential resolution is owned by the bundled CLI. Invoke it directly; do not inspect local credential stores or pre-resolve, compare, export, or override credential values in the caller.\n\n## Command identity and composite reuse\n\n1. Inspect the bundled CLI's top-level `--help` and the selected subcommand's `--help` before invocation. Execute only an exact literal subcommand exposed by the current client and allowed by the active skill.\n2. Treat API endpoint identifiers and composite result keys as data identities, not CLI command names. Never derive a subcommand from either identity or invent an alias.\n3. Treat a successful composite command's structured output as the evidence bundle for that run. Perform selection, narrowing, transformation, extraction, and formatting locally.\n4. Do not make an additional API call solely to reread, reshape, or narrow evidence already present in the composite bundle.\n5. A granular call after a composite is allowed only for evidence absent from the bundle when the active skill's workflow or an explicit non-terminal fallback requires it.\n\n## Execution-environment permission gate\n\nApply this gate before classifying a connection or network failure as a CLI/API interface failure.\n\n1. Inspect the execution tool's permission profile and diagnostics. When they indicate, or strongly suggest, that a host sandbox or network policy blocked the request, treat the result as unresolved execution permission rather than endpoint failure.\n2. Use the execution tool's permission or escalation mechanism to request access and rerun the exact unchanged CLI command. Do not first emit the skill's interface-failure notice or a succeeded/failed endpoint ledger.\n3. A permission-approved rerun is environment recovery, not an external transport retry. Do not mutate the command, parameters, endpoint, or acquisition surface while requesting access.\n4. If access is declined or no permission mechanism is available, state only that the required network access was not granted and the task could not continue. Do not label endpoints as failed or imply that API requests consumed credits when no request reached the service.\n5. After the permission issue is resolved, classify the rerun normally through the sections below. Do not use this gate to bypass a returned HTTP status, credential failure, credit failure, validation failure, rate limit, or confirmed service outage.\n\n## Result acquisition\n\n1. Always inspect stdout, even when the process exits non-zero. Exit `1` with valid structured JSON means at least one API call failed; it does not make the JSON unreadable.\n2. Treat `_transport.status` as the authoritative outer HTTP status. Response-body or nested status-like fields never override it.\n3. For a composite payload, inspect nested endpoint results before classifying the whole workflow. Preserve returned `_query`, credit metadata, successful sections, and failure details internally.\n\n## Classification order\n\nAfter the execution-environment permission gate is resolved or found inapplicable, apply these routes in order:\n\n1. Missing credentials before an evidence call follow the local skill's missing-key procedure.\n2. `_transport.status=401` and `_transport.status=402` follow the local skill's credential and credit procedures. Do not retry, switch endpoints, or change credential sources.\n3. `_transport.status=422` is validation failure. Preserve the structured server error and `_query.params`; do not retry the unchanged request. Correct only fields identified by the server contract.\n4. A terminal interface failure is present when the result carries `error.action=\"STOP_CURRENT_TURN. APPLY_SKILL_INTERFACE_FAILURE_TEMPLATE. DO_NOT_SELECT_ANOTHER_COMMAND.\"`, or represents exhausted HTTP 5xx, exhausted 429, exhausted non-HTTP transport failure after host permission restrictions have been ruled out or resolved, endpoint unavailability, `MALFORMED_RESPONSE`, or non-zero execution without valid structured JSON.\n5. A valid `status=empty` or a documented business/coverage error is not automatically terminal. A local skill fallback is allowed only when its contract explicitly supports that result and no terminal interface-failure signal is present.\n\n## Retry and terminal behavior\n\nThe shared CLI owns transport retries. Once the execution-environment permission gate is resolved or found inapplicable, a terminal interface failure requires:\n\n1. Stop the current workflow turn. Do not retry externally, mutate parameters, switch endpoints or acquisition surfaces, start another tool command, or continue to a later workflow step.\n2. Do not reinterpret an HTTP 5xx body as validation, credential, credit, empty coverage, or permission to try another date, subject, marketplace, filter, or page.\n3. Retain earlier successful data for compatible later reuse, but do not produce the normal analysis, update monitoring/baseline state, or request the next workflow input.\n4. Keep detailed messages, request parameters, retry logs, and control tokens internal unless the user explicitly requests diagnostics.\n5. Hand off rendering to the active skill's local interface-failure template. This shared contract intentionally defines no user-facing wording.\n\n## Composite and partial results\n\n- A non-zero composite result may still contain successful sections. If any nested result is a terminal interface failure, stop after inventorying succeeded and failed interfaces; do not turn the surviving sections into the normal conclusion.\n- If all failures are documented non-terminal business/coverage failures, a local skill may use its explicit fallback and the compatible successful sections. Label coverage precisely and never present the composite as fully successful.\n- Process exit status and JSON status must agree for a single-result command. A partial pagination failure must return `success=false` while preserving already collected rows under `data`.\n\n## Realtime unavailable — offline fallback\n\n`realtime/product` is a live scrape endpoint that can return a transient 200-success with an empty payload. Composites retry it a few times; if it is still empty, that item's result carries `_realtimeStatus=\"empty_after_retries\"`, and the composite `meta` carries `realtimeUnavailable` (count) plus `realtimeFallbackHint`. When `realtimeFallbackHint` is present, tell the user realtime lookup is temporarily unavailable for those items, then continue the analysis using the offline snapshot data already gathered (products/search fields, history, price/BSR/rating). Do not stall, silently re-run, or fabricate the missing realtime detail.\n\n## Partial review pagination\n\nWhen `reviews-raw` fails after one or more successful pages, it returns `success=false`, preserves collected reviews and page count under `data`, and exposes the failed page request through `_failedQuery`. Never treat that payload as a complete review sample.\n\nFile v1.0.8:references/reference.md\n\n# ZooData API Field Reference\n\n> Load this file only when you need exact field names or response structure.\n\n## ZooData Endpoint Field Reference\n\n> Shared field reference. This skill's workflows use ONLY the subcommands\n> listed in its SKILL.md; the endpoints below are documented for field-name /\n> response-structure lookup, not as a claim that this skill invokes all of them.\n\n| # | Endpoint | Purpose |\n|---|----------|---------|\n| 1 | `categories` | Category path lookup |\n| 2 | `markets/search` | Market size, competition metrics, new-product rate |\n| 3 | `products/search` | Product supply (100+ via pagination), brand/price drill |\n| 4 | `products/competitors` | Top competitor list |\n| 5 | `realtime/product` | Live product detail |\n| 6 | `reviews/analysis` | Consumer pain points, buying factors |\n| 7 | `products/price-band-overview` | Price-band opportunity overview |\n| 8 | `products/price-band-detail` | Per-band SKU/sales/brand/rating breakdown |\n| 9 | `products/brand-overview` | Brand count, CR10, top-brand avg price/rating |\n| 10 | `products/brand-detail` | Per-brand SKU/sales/revenue/share ranking |\n| 11 | `products/history` | 30-day price/BSR/sales trend |\n\nBase URL: `https://api.zoodata.ai/openapi/v2`\nAuth: `Bearer $ZOODATA_API_KEY`\nMethod: All POST with JSON body\nAll endpoints return: `{success, data, error, meta}` with `meta.creditsRemaining`\n\n---\n\n## 1. categories\n\n**Request:** (mutually exclusive modes)\n- No params → root categories\n- `categoryKeyword`: String → search by keyword\n- `categoryPath`: List<String> → exact path\n- `parentCategoryPath`: List<String> → child categories\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `categoryId` | string | Category ID |\n| `categoryName` | string | Category name |\n| `categoryPath` | list | Full path from root |\n| `hasChildren` | bool | Has subcategories |\n| `level` | int | Depth (1=root) |\n| `productCount` | int | Products in category |\n\n---\n\n## 2. markets/search\n\n**Key Request Params:**\n- `categoryPath`: List<String> (e.g. `[\"Pet Supplies\", \"Dogs\"]`)\n- `categoryKeyword`: String\n- `topN`: **String** (`\"10\"` not `10`)\n- `sampleType`: `by_sale_100` / `by_bsr_100` / `avg`\n- `pageSize`: Integer (max 20)\n\n**Key Response Fields:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `totalSkuCount` | int | Market size |\n| `sampleAvgMonthlySales` | float | Demand level |\n| `sampleAvgMonthlyRevenue` | float | Market value |\n| `sampleAvgPrice` | float | Price benchmark |\n| `sampleAvgRating` | float | Quality benchmark |\n| `sampleBrandCount` | int | Brand diversity |\n| `sampleSellerCount` | int | Seller diversity |\n| `sampleFbaRate` | float | FBA adoption (decimal) |\n| `sampleNewSkuRate` | float | New entrant rate (decimal) |\n| `topSalesRate` | float | Product concentration (CR_topN) |\n| `topBrandSalesRate` | float | Brand concentration |\n| `topSellerSalesRate` | float | Seller concentration |\n| `sampleAPlusRate` | float | Margin benchmark |\n\n---\n\n## 3. products/search — Shared Product Object\n\n**Key Request Params:**\n- `keyword`, `categoryPath`, `keywordMatchType` (`mode` is a CLI-only preset — `zoodata.py` expands it into the filter pairs below client-side; it is NOT an API field and returns 422 if sent raw)\n- Filter pairs: `monthlySalesMin/Max`, `priceMin/Max`, `ratingMin/Max`, etc.\n- `pageSize` (max 20), `page`, `sortBy`, `sortOrder`\n- `includeBrands`, `excludeBrands`\n\n**Key Response Fields (per product):**\n| Field | Type | Used For |\n|-------|------|----------|\n| `asin` | string | Product ID |\n| `title` | string | Product name |\n| `brandName` | string | Brand |\n| `price` | float | Price |\n| `monthlySalesFloor` | int | Monthly sales (lower bound) |\n| `monthlyRevenueFloor` | float | Monthly revenue lower bound |\n| `rating` | float | Rating (0-5) |\n| `ratingCount` | int | Review count |\n| `bsr` | int | BSR (NOT `bestsellersRank`) |\n| `fbaFee` | float | FBA cost |\n| `sellerCount` | int | Sellers on listing |\n| `fulfillment` | string | FBA/FBM/AMZ |\n| `listingDate` | string | When listed |\n| `salesGrowthRate` | float | Growth rate |\n| `variantCount` | int | Variants |\n\n---\n\n## 4. products/competitors\n\nSame response as products/search. Different use: discovery by keyword/brand/asin.\nRequest params: `keyword`, `brand`, `asin`, `categoryPath`, `sortBy`, `pageSize`\n\n---\n\n## 5. realtime/product\n\n**Request:**\n- `asin`: String (required)\n- `marketplace`: String (US/UK/DE/FR/IT/ES/JP/CA/AU/IN/MX/BR, default US)\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `asin` | string | Product ID |\n| `title` | string | Full title |\n| `brandName` | string | Brand |\n| `rating` | float | Current rating |\n| `ratingCount` | int | Current review count |\n| `ratingBreakdown` | object | Star distribution {five_star: {percentage, count}, ...} |\n| `features` | list | Bullet points |\n| `description` | string | Product description |\n| `specifications` | object | Tech specs |\n| `variants` | list | All variants with dimensions |\n| `bestsellersRank` | list | BSR info [{category, rank}, ...] |\n| `buyboxWinner` | object | Buy Box: {price, fulfillment, seller} |\n| `images` | list | All image URLs |\n\n⚠️ Does NOT have: monthlySalesFloor, fbaFee, sellerCount\n\n---\n\n## 6. reviews/analysis\n\n**Request:**\n- `mode`: `\"asin\"` or `\"category\"`\n- `asins`: List<String> (when mode=asin)\n- `categoryPath`: String (when mode=category)\n- `labelType`: filter to specific dimensions. **⚠️ Only ONE value per call — do NOT comma-separate multiple types.** Make separate calls for each labelType needed.\n- `period`: e.g. `\"1m\"` / `\"3m\"` / `\"6m\"` / `\"1y\"` / `\"2y\"`\n\n**labelType values (one per call):** `scenarios`, `issues`, `positives`, `improvements`, `buyingFactors`, `painPoints`, `keywords`, `userProfiles`, `usageTimes`, `usageLocations`, `behaviors`\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `reviewCount` | int | Sample size |\n| `avgRating` | float | Overall satisfaction |\n| `sentimentDistribution` | object | Positive/neutral/negative ratio |\n| `consumerInsights` | list | Structured insights by dimension |\n| `topKeywords` | list | Trending terms |\n\n**InsightItem:** `{element, labelType, count, reviewRate, avgRating}`\n\n---\n\n## 7. products/price-band-overview\n\n**Request:** Same params as products/search (keyword, category, filters)\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `sampleSkuCount` | int | Total products analyzed |\n| `sampleMedianPrice` | float | Median price point |\n| `hottestBand` | object | Highest sales share band |\n| `bestOpportunityBand` | object | Highest opportunity index band |\n\n**Band object:** `{bandIdx, bandLabel, sampleBandMinPrice, sampleBandMaxPrice, sampleSkuCount, sampleSalesRate, sampleBrandCount, sampleTop3BrandSalesRate, sampleAvgRating, sampleOpportunityIndex}`\n\n---\n\n## 8. products/price-band-detail\n\n**Response:**\n- `sampleSkuCount`, `sampleTotalMonthlySales`\n- `priceBands`: array of 5 band objects (same structure as above)\n\n---\n\n## 9. products/brand-overview\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `sampleBrandCount` | int | Total brands |\n| `sampleTop10BrandSalesRate` | float | CR10 concentration (top 10 brands) |\n| `sampleTop10AvgRating` | float | Top 10 brand avg rating |\n| `sampleTop10AvgPrice` | float | Top 10 brand avg price |\n\n---\n\n## 10. products/brand-detail\n\n**Response:**\n- `sampleSkuCount`, `sampleTotalMonthlySales`, `sampleBrandCount`\n- `brands`: array of brand objects\n\n**BrandStats:** `{brandName, sampleSkuCount, sampleGroupMonthlySales, sampleGroupMonthlyRevenue, sampleSalesRate, sampleAvgPrice, minPrice, maxPrice, sampleAvgRating, sampleAvgRatingCount, sampleProducts}`\n\n**sampleProducts:** List of Product objects for this brand within the sample. Each product contains the full Shared Product Object fields (asin, title, price, bsr, monthlySalesFloor, rating, ratingCount, fulfillment, etc). This enables brand-level product matrix analysis without a separate products/search call.\n\n---\n\n## 11. products/history\n\n**Request:**\n- `asins`: List<String> (required)\n- `startDate`: String \"YYYY-MM-DD\" (required)\n- `endDate`: String \"YYYY-MM-DD\" (required)\n⚠️ Does NOT accept `dateRange` — must use startDate + endDate\n\n**Response (array of daily snapshots):**\n| Field | Type | Used For |\n|-------|------|----------|\n| `asin` | string | Product ID |\n| `price` | float | Price on that day |\n| `bsr` | int | BSR on that day |\n| `subBsr` | int | Sub-category BSR |\n| `recentSales` | int | Recent sales count |\n| `updatedAt` | string | Unix timestamp (string) |\n| `createdAt` | string | Unix timestamp (string) |\n\n---\n\n## Cross-Validation Matrix\n\n| Data Point | Primary Source | Validation Source |\n|-----------|---------------|-------------------|\n| Market size | markets/search | products/search (total count) |\n| Brand concentration | brand-overview (sampleTop10BrandSalesRate) | markets/search (topBrandSalesRate) |\n| Price distribution | price-band-detail | products/search (price field) |\n| Competition level | markets (topSalesRate) | brand-detail (top brand shares) |\n| Consumer demand | reviews/analysis | products (sales + growth) |\n| Avg rating quality | markets (sampleAvgRating) | brand-overview (sampleTop10AvgRating) |\n\nFile v1.0.8:skill-card.md\n\n## Description: <br>\nAutomates daily Amazon market monitoring for tracked ASINs and competitors, producing change-detection briefings for price moves, BSR shifts, new entrants, review spikes, and stockout signals. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[apiclaw](https://clawhub.ai/user/apiclaw) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal Amazon sellers and ecommerce operators use this skill to run scheduled daily monitoring for their own ASINs, selected competitors, and category movement. It helps agents produce alert-prioritized Markdown briefings with KPI comparisons, market shifts, action items, data provenance, and API usage. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires a ZooData/APIClaw-compatible API key and spends ZooData credits during monitoring runs. <br>\nMitigation: Set ZOODATA_API_KEY explicitly, review configured legacy credential stores before use, and confirm expected credit cost before broad or ambiguous multi-call scans. <br>\nRisk: The bundled CLI includes broader ZooData tooling than the Amazon daily radar workflow requires. <br>\nMitigation: Use only the documented daily radar and supporting subcommands needed for this skill, and avoid unrelated research or keyword commands unless intentionally requested. <br>\nRisk: The skill keeps local monitoring baselines and may use temporary review-processing files. <br>\nMitigation: Review local data retention expectations for watchlist, last-run, and temporary review files before deploying scheduled automation. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/apiclaw/skills/amazon-daily-market-radar) <br>\n- [Publisher Profile](https://clawhub.ai/user/apiclaw) <br>\n- [ZooData Homepage](https://zoodata.ai) <br>\n- [ZooData API Documentation](https://api.zoodata.ai/api-docs) <br>\n- [ZooData API Key Setup](https://zoodata.ai/en/api-keys) <br>\n- [CLI Contract](references/cli-contract.md) <br>\n- [ZooData API Field Reference](references/reference.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Markdown, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown briefing with tables, alert sections, inline endpoint provenance, and API usage summaries] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires ZOODATA_API_KEY and may write local watchlist and baseline JSON files for scheduled monitoring.] <br>\n\n## Skill Version(s): <br>\n1.0.8 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.8:data/last-run.json\n\n{\n  \"run_date\": \"2026-07-27\",\n  \"run_type\": \"diff_run_3 (yoga) + baseline (walking pad)\",\n  \"prev_run_date\": \"2026-07-23\",\n  \"my_asins\": [\n    \"B01LP0VI3G\",\n    \"B0FX33GJ5D\"\n  ],\n  \"competitor_asins\": [],\n  \"targets\": {\n    \"B01LP0VI3G\": {\n      \"keyword\": \"yoga mat\",\n      \"category_path\": [\n        \"Sports & Outdoors\",\n        \"Exercise & Fitness\",\n        \"Yoga\"\n      ],\n      \"realtime\": {\n        \"title\": \"Amazon Basics 1/2 Inch Extra Thick Exercise Yoga Mat with Carrying Strap, Cushioned Support, for Fitness and Gym Workouts\",\n        \"brand\": \"Amazon Basics\",\n        \"rating\": 4.6,\n        \"ratingCount\": 44318,\n        \"ratingBreakdown\": {\n          \"five_star\": {\n            \"percentage\": 77,\n            \"count\": 34124\n          },\n          \"four_star\": {\n            \"percentage\": 14,\n            \"count\": 6204\n          },\n          \"three_star\": {\n            \"percentage\": 6,\n            \"count\": 2659\n          },\n          \"two_star\": {\n            \"percentage\": 1,\n            \"count\": 443\n          },\n          \"one_star\": {\n            \"percentage\": 2,\n            \"count\": 886\n          }\n        },\n        \"bestsellersRank\": [\n          {\n            \"category\": \"Yoga Mats\",\n            \"rank\": 1301,\n            \"link\": \"/gp/bestsellers/sporting-goods/3422301/ref=pd_zg_hrsr_sporting-goods\"\n          }\n        ],\n        \"categoryPath\": [\n          \"Sports & Outdoors\",\n          \"Exercise & Fitness\",\n          \"Yoga\",\n          \"Mats\"\n        ],\n        \"price\": null,\n        \"availability\": null\n      },\n      \"market_kpi\": [\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Mats\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 4497,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 29.64,\n          \"sampleAvgMonthlySales\": 1368.0000000000011,\n          \"sampleAvgMonthlyRevenue\": 36227.54,\n          \"sampleTotalMonthlySales\": 136800,\n          \"sampleAvgBsr\": 2255.2600000000007,\n          \"sampleAvgRating\": 4.552,\n          \"sampleAvgRatingCount\": 19667.920000000006,\n          \"sampleBrandCount\": 25,\n          \"sampleSellerCount\": 18,\n          \"sampleAvgSellerCount\": 0.18,\n          \"sampleFbaRate\": 0.23,\n          \"sampleFbmRate\": 0.07,\n          \"sampleAmzRate\": 0.7,\n          \"sampleNewSkuCount\": 1,\n          \"sampleNewSkuRate\": 0.01,\n          \"sampleNewSkuAvgPrice\": 24.99,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.94,\n          \"sampleAvgPackageWeight\": 40.948969259854934,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 6100.000000000001,\n          \"topAvgMonthlyRevenue\": 142931.12,\n          \"topAvgBsr\": 234.3,\n          \"topAvgSubBsr\": 3.5,\n          \"topSalesRate\": 0.44590643274853803,\n          \"topRevenueRate\": 0.3945372076134026,\n          \"topBrandSalesRate\": 0.9203216374269005,\n          \"topSellerSalesRate\": 0.966374269005848,\n          \"sampleSellerAddresses\": [\n            \"SG\",\n            \"HK\",\n            \"CN\",\n            \"US\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Towels\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 3301,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 14.73,\n          \"sampleAvgMonthlySales\": 2470.0,\n          \"sampleAvgMonthlyRevenue\": 31489.28,\n          \"sampleTotalMonthlySales\": 247000,\n          \"sampleAvgBsr\": 1675.2899999999997,\n          \"sampleAvgRating\": 4.510999999999999,\n          \"sampleAvgRatingCount\": 7339.680000000003,\n          \"sampleBrandCount\": 38,\n          \"sampleSellerCount\": 39,\n          \"sampleAvgSellerCount\": 0.39,\n          \"sampleFbaRate\": 0.88,\n          \"sampleFbmRate\": 0.0,\n          \"sampleAmzRate\": 0.12,\n          \"sampleNewSkuCount\": 2,\n          \"sampleNewSkuRate\": 0.02,\n          \"sampleNewSkuAvgPrice\": 11.98,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.99,\n          \"sampleAvgPackageWeight\": 10.669984921485229,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 11800.0,\n          \"topAvgMonthlyRevenue\": 132221.42,\n          \"topAvgBsr\": 99.69999999999999,\n          \"topAvgSubBsr\": 3.1999999999999997,\n          \"topSalesRate\": 0.4777327935222672,\n          \"topRevenueRate\": 0.419893494777904,\n          \"topBrandSalesRate\": 0.8048582995951417,\n          \"topSellerSalesRate\": 0.7769230769230769,\n          \"sampleSellerAddresses\": [\n            \"US\",\n            \"HK\",\n            \"CN\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Blocks\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 1391,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 19.01,\n          \"sampleAvgMonthlySales\": 809.0000000000001,\n          \"sampleAvgMonthlyRevenue\": 12657.24,\n          \"sampleTotalMonthlySales\": 80900,\n          \"sampleAvgBsr\": 16033.609999999997,\n          \"sampleAvgRating\": 4.689999999999999,\n          \"sampleAvgRatingCount\": 3704.3199999999993,\n          \"sampleBrandCount\": 39,\n          \"sampleSellerCount\": 35,\n          \"sampleAvgSellerCount\": 0.35,\n          \"sampleFbaRate\": 0.69,\n          \"sampleFbmRate\": 0.0,\n          \"sampleAmzRate\": 0.31,\n          \"sampleNewSkuCount\": 4,\n          \"sampleNewSkuRate\": 0.04,\n          \"sampleNewSkuAvgPrice\": 14.62,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.94,\n          \"sampleAvgPackageWeight\": 17.633709807597167,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 4500.0,\n          \"topAvgMonthlyRevenue\": 66383.03,\n          \"topAvgBsr\": 306.5,\n          \"topAvgSubBsr\": 2.4444444444444446,\n          \"topSalesRate\": 0.5562422744128553,\n          \"topRevenueRate\": 0.5244668161967868,\n          \"topBrandSalesRate\": 0.8689740420271941,\n          \"topSellerSalesRate\": 0.9159456118665018,\n          \"sampleSellerAddresses\": [\n            \"CN\",\n            \"SG\",\n            \"US\",\n            \"GB\",\n            \"HK\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Straps\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 1327,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 17.08,\n          \"sampleAvgMonthlySales\": 447.5000000000001,\n          \"sampleAvgMonthlyRevenue\": 4909.62,\n          \"sampleTotalMonthlySales\": 44750,\n          \"sampleAvgBsr\": 21111.199999999997,\n          \"sampleAvgRating\": 4.6080000000000005,\n          \"sampleAvgRatingCount\": 4161.73,\n          \"sampleBrandCount\": 44,\n          \"sampleSellerCount\": 43,\n          \"sampleAvgSellerCount\": 0.43,\n          \"sampleFbaRate\": 0.96,\n          \"sampleFbmRate\": 0.0,\n          \"sampleAmzRate\": 0.04,\n          \"sampleNewSkuCount\": 1,\n          \"sampleNewSkuRate\": 0.01,\n          \"sampleNewSkuAvgPrice\": 3.99,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.88,\n          \"sampleAvgPackageWeight\": 9.670787668212842,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 3020.0,\n          \"topAvgMonthlyRevenue\": 24435.26,\n          \"topAvgBsr\": 2397.6,\n          \"topAvgSubBsr\": 5.2,\n          \"topSalesRate\": 0.6748603351955307,\n          \"topRevenueRate\": 0.49770140969341903,\n          \"topBrandSalesRate\": 0.8346368715083798,\n          \"topSellerSalesRate\": 0.8368715083798882,\n          \"sampleSellerAddresses\": [\n            \"HK\",\n            \"US\",\n            \"IN\",\n            \"CN\",\n            \"SG\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Foam Wedges\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 429,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 39.24,\n          \"sampleAvgMonthlySales\": 111.99999999999996,\n          \"sampleAvgMonthlyRevenue\": 2841.72,\n          \"sampleTotalMonthlySales\": 11200,\n          \"sampleAvgBsr\": 188893.8450704225,\n          \"sampleAvgRating\": 4.320779220779221,\n          \"sampleAvgRatingCount\": 520.4675324675322,\n          \"sampleBrandCount\": 44,\n          \"sampleSellerCount\": 44,\n          \"sampleAvgSellerCount\": 0.44,\n          \"sampleFbaRate\": 0.64,\n          \"sampleFbmRate\": 0.26,\n          \"sampleAmzRate\": 0.05,\n          \"sampleNewSkuCount\": 3,\n          \"sampleNewSkuRate\": 0.03,\n          \"sampleNewSkuAvgPrice\": 37.15,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.65,\n          \"sampleAvgPackageWeight\": 37.46020015402976,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": 0.059319000000000004,\n          \"sampleAvgPackageVolumeUnit\": \"in³\",\n          \"topAvgMonthlySales\": 749.9999999999999,\n          \"topAvgMonthlyRevenue\": 16578.14,\n          \"topAvgBsr\": 18841.6,\n          \"topAvgSubBsr\": 8.1,\n          \"topSalesRate\": 0.6696428571428571,\n          \"topRevenueRate\": 0.5833846231671275,\n          \"topBrandSalesRate\": 0.7857142857142857,\n          \"topSellerSalesRate\": 0.7937219730941704,\n          \"sampleSellerAddresses\": [\n            \"IL\",\n            \"CN\",\n            \"IN\",\n            \"US\",\n            \"HK\",\n            \"AU\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Mat Bags\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 1941,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 21.23,\n          \"sampleAvgMonthlySales\": 88.99999999999997,\n          \"sampleAvgMonthlyRevenue\": 1791.43,\n          \"sampleTotalMonthlySales\": 8900,\n          \"sampleAvgBsr\": 24869.95,\n          \"sampleAvgRating\": 4.571999999999997,\n          \"sampleAvgRatingCount\": 1167.3700000000006,\n          \"sampleBrandCount\": 21,\n          \"sampleSellerCount\": 21,\n          \"sampleAvgSellerCount\": 0.21,\n          \"sampleFbaRate\": 0.96,\n          \"sampleFbmRate\": 0.0,\n          \"sampleAmzRate\": 0.04,\n          \"sampleNewSkuCount\": 7,\n          \"sampleNewSkuRate\": 0.07,\n          \"sampleNewSkuAvgPrice\": 20.35,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.98,\n          \"sampleAvgPackageWeight\": 9.338355173812591,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 280.0,\n          \"topAvgMonthlyRevenue\": 5552.6,\n          \"topAvgBsr\": 9975.8,\n          \"topAvgSubBsr\": 4.699999999999999,\n          \"topSalesRate\": 0.3146067415730337,\n          \"topRevenueRate\": 0.30995324098483507,\n          \"topBrandSalesRate\": 0.8707865168539326,\n          \"topSellerSalesRate\": 0.8876404494382022,\n          \"sampleSellerAddresses\": [\n            \"CN\",\n            \"US\",\n            \"HK\",\n            \"AU\",\n            \"CA\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\"\n          ],\n          \"categoryLevel\": 3,\n          \"totalSkuCount\": 97,\n          \"sampleSkuCount\": 97,\n          \"sampleAvgPrice\": 75.75,\n          \"sampleAvgMonthlySales\": 35.05154639175259,\n          \"sampleAvgMonthlyRevenue\": 1200.41,\n          \"sampleTotalMonthlySales\": 3400,\n          \"sampleAvgBsr\": 961897.6666666663,\n          \"sampleAvgRating\": 3.593670886075949,\n          \"sampleAvgRatingCount\": 588.582278481013,\n          \"sampleBrandCount\": 48,\n          \"sampleSellerCount\": 41,\n          \"sampleAvgSellerCount\": 0.422680412371134,\n          \"sampleFbaRate\": 0.30927835051546393,\n          \"sampleFbmRate\": 0.4845360824742268,\n          \"sampleAmzRate\": 0.10309278350515463,\n          \"sampleNewSkuCount\": 2,\n          \"sampleNewSkuRate\": 0.020618556701030927,\n          \"sampleNewSkuAvgPrice\": 153.49,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.44329896907216493,\n          \"sampleAvgPackageWeight\": 64.21182166521005,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": 0.36355800000000005,\n          \"sampleAvgPackageVolumeUnit\": \"in³\",\n          \"topAvgMonthlySales\": 280.0,\n          \"topAvgMonthlyRevenue\": 9567.1,\n          \"topAvgBsr\": 15193.199999999999,\n          \"topAvgSubBsr\": 3497.3,\n          \"topSalesRate\": 0.8235294117647058,\n          \"topRevenueRate\": 0.8216334592923394,\n          \"topBrandSalesRate\": 0.9558823529411765,\n          \"topSellerSalesRate\": 1.0,\n          \"sampleSellerAddresses\": [\n            \"GB\",\n            \"NP\",\n            \"IN\",\n            \"US\",\n            \"CN\"\n          ]\n        },\n        {\n          \"currency\": \"USD\",\n          \"categoryPath\": [\n            \"Sports & Outdoors\",\n            \"Exercise & Fitness\",\n            \"Yoga\",\n            \"Mat Straps\"\n          ],\n          \"categoryLevel\": 4,\n          \"totalSkuCount\": 579,\n          \"sampleSkuCount\": 100,\n          \"sampleAvgPrice\": 7.92,\n          \"sampleAvgMonthlySales\": 132.99999999999997,\n          \"sampleAvgMonthlyRevenue\": 998.39,\n          \"sampleTotalMonthlySales\": 13300,\n          \"sampleAvgBsr\": 43336.55,\n          \"sampleAvgRating\": 4.317241379310345,\n          \"sampleAvgRatingCount\": 1585.5747126436781,\n          \"sampleBrandCount\": 37,\n          \"sampleSellerCount\": 35,\n          \"sampleAvgSellerCount\": 0.35,\n          \"sampleFbaRate\": 0.78,\n          \"sampleFbmRate\": 0.18,\n          \"sampleAmzRate\": 0.02,\n          \"sampleNewSkuCount\": 5,\n          \"sampleNewSkuRate\": 0.05,\n          \"sampleNewSkuAvgPrice\": 12.43,\n          \"sampleNewSkuAvgRatingCount\": null,\n          \"sampleNewSkuAvgRating\": null,\n          \"sampleNewSkuAvgMonthlySales\": null,\n          \"sampleNewSkuAvgMonthlyRevenue\": null,\n          \"sampleAPlusRate\": 0.7,\n          \"sampleAvgPackageWeight\": 2.7529302225728003,\n          \"sampleAvgPackageWeightUnit\": \"oz\",\n          \"sampleAvgPackageVolume\": null,\n          \"sampleAvgPackageVolumeUnit\": null,\n          \"topAvgMonthlySales\": 820.0,\n          \"topAvgMonthlyRevenue\": 5806.19,\n          \"topAvgBsr\": 8600.1,\n          \"topAvgSubBsr\": 5.6,\n    \n\nArchive v1.0.7: 8 files, 53368 bytes\n\nFiles: data/last-run.json (44520b), data/watchlist.json (760b), README.md (2981b), references/reference.md (9267b), scripts/zoodata.py (153321b), skill-card.md (3210b), SKILL.md (13679b), _meta.json (144b)\n\nArchive v1.0.6: 8 files, 53257 bytes\n\nFiles: data/last-run.json (44520b), data/watchlist.json (760b), README.md (2981b), references/reference.md (9262b), scripts/zoodata.py (153321b), skill-card.md (2891b), SKILL.md (13679b), _meta.json (144b)\n\nArchive v1.0.5: 8 files, 51844 bytes\n\nFiles: data/last-run.json (44520b), data/watchlist.json (760b), README.md (2981b), references/reference.md (9262b), scripts/zoodata.py (149089b), skill-card.md (3250b), SKILL.md (13562b), _meta.json (144b)\n\nArchive v1.0.4: 8 files, 48218 bytes\n\nFiles: data/last-run.json (28793b), data/watchlist.json (240b), README.md (2981b), references/reference.md (9262b), scripts/zoodata.py (147843b), skill-card.md (2738b), SKILL.md (11987b), _meta.json (144b)\n\nArchive v1.0.1: 6 files, 31400 bytes\n\nFiles: README.md (2981b), references/reference.md (9133b), scripts/apiclaw.py (105922b), skill-card.md (2659b), SKILL.md (6558b), _meta.json (144b)\n\nArchive v1.0.0: 5 files, 30012 bytes\n\nFiles: README.md (2981b), references/reference.md (9133b), scripts/apiclaw.py (105921b), SKILL.md (6558b), _meta.json (144b)","readmeExcerpt":"Skill: amazon-daily-market-radar Owner: apiclaw Summary: Automated daily Amazon market digest. Given the user's own ASINs (1-10) and any competitor ASINs (up to 20), produces a daily change-detection briefing: price moves, BSR shifts, new entrants in the surrounding category, review wave detection, stockout signals. Output is a triaged alert dashboard (RED/YELLOW/GREEN) comparing today against yesterday's snapshot. D","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"npx skills add SerendipityOneInc/ZooData-Skills"},{"language":"bash","snippet":"export ZOODATA_API_KEY='hms_live_xxxxxx'"},{"language":"bash","snippet":"npx skills add SerendipityOneInc/ZooData-Skills"},{"language":"bash","snippet":"export ZOODATA_API_KEY='hms_live_xxxxxx'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: amazon-daily-market-radar\ndescription: >\n  Automated daily Amazon market digest. Given the user's own ASINs (1-10)\n  and any competitor ASINs (up to 20), produces a daily change-detection\n  briefing: price moves, BSR shifts, new entrants in the surrounding\n  category, review wave detection, stockout signals. Output is a triaged\n  alert dashboard (RED/YELLOW/GREEN) comparing today against yesterday's\n  snapshot. Designed for unattended scheduled automation (cron-style daily\n  run).\n  Use when the user EXPLICITLY requests ongoing OPERATIONAL daily\n  monitoring of their products and the surrounding market — a \"what\n  changed since yesterday\" digest.\n  Use when user asks: set up daily market monitoring for my ASINs, run\n  my daily radar, what changed in my tracked market since yesterday,\n  daily briefing on my tracked ASINs and competitors, emerging-brand or\n  stockout alerts on my watchlist. Establishing monitoring and recurring\n  runs always require the user's explicit opt-in — do not activate on\n  vague update questions.\n  Requires ZOODATA_API_KEY.\nmetadata:\n  version: \"1.0.9\"\n  author: SerendipityOneInc\n  homepage: https://github.com/SerendipityOneInc/ZooData-Skills\n  openclaw: {\"requires\": {\"env\": [\"ZOODATA_API_KEY\"]}, \"primaryEnv\": \"ZOODATA_API_KEY\"}\n---\n\n# ZooData — Amazon Daily Market Radar\n\n> Set it. Forget it. Get alerted when it matters. Respond in user's language.\n\n## Files\n\n| File | Purpose |\n|------|---------|\n| `{skill_base_dir}/scripts/zoodata.py` | **Execute** for all API calls (run `--help` for params) |\n| `{skill_base_dir}/references/reference.md` | Load for exact field names or response structure |\n| `{skill_base_dir}/data/` | Runtime: watchlist.json, last-run.json (auto-created) |\n\n## Credential\n\nRequired: `ZOODATA_API_KEY`. Get free key at [zoodata.ai/api-keys](https://zoodata.ai/en/api-keys).\n\n## Capabilities & Data Flow\n\n- **Network**: only `https://api.zoodata.ai` (Bearer `ZOODATA_API_KEY`). Setting `ZOODATA_BASE_URL` to an untrusted host (anything other than `api.zoodata.ai` / `*.zoodata.ai` / localhost) makes the CLI **refuse the request and withhold the key** — the Bearer token is never sent to an untrusted host.\n- **Execution**: bundled shared ZooData CLI `{skill_base_dir}/scripts/zoodata.py` (Python 3, stdlib-only). This skill allows `daily-radar`, `market`, `products`, `competitors`, `product`, `price-band-overview`, `history`, `check`, plus the review fallback toolkit (`reviews-raw` / `review-tag-prompt` / `review-reduce-prompt` / `review-aggregate`). Do not invoke unrelated subcommands for this skill's tasks — the bundled manifest `{skill_base_dir}/scripts/allowed-commands.json` enforces this: the CLI refuses out-of-scope subcommands with a structured `COMMAND_NOT_ALLOWED` error before any API request.\n- **Local files**: baseline snapshots `{skill_base_dir}/data/last-run.json` and `{skill_base_dir}/data/watchlist.json`; a private temporary working dir (created with `mktemp -d`, removed when the fallback comp"},{"path":"README.md","content":"# Amazon Daily Market Radar — ZooData Agent Skill\n\n> Set it. Forget it. Get alerted when it matters.\n\n## What This Skill Does\n\nAutomated daily monitoring and alert system for Amazon sellers. Tracks your ASINs and competitors, detects price changes, BSR movements, new entrants, review spikes, and stock-out signals. First run establishes a baseline; subsequent runs compare against it and fire tiered alerts. Designed for unattended agent automation.\n\n### What Makes This Different\n\n- **Set-and-forget**: First run = baseline, every run after = smart change detection\n- **Three-tier alerts**: 🔴 RED (price crash, BSR collapse, 1-star spike), 🟡 YELLOW (new competitors, moderate shifts), 🟢 GREEN (opportunities like competitor stock-outs)\n- **Signal validation**: Distinguishes sustained trends (📊 7+ days) from single-day spikes (💡)\n- **Cron-ready**: Built for scheduled execution with auto-monitor setup\n\n## Install\n\n```bash\nnpx skills add SerendipityOneInc/ZooData-Skills\n```\n\nSelect **Amazon Daily Market Radar** when prompted.\n\n## API Key Setup\n\n1. Get a free key at [zoodata.ai/api-keys](https://zoodata.ai/en/api-keys) — 1,000 free credits, no credit card\n2. Set the environment variable:\n   ```bash\n   export ZOODATA_API_KEY='hms_live_xxxxxx'\n   ```\n\n## Data & Privacy\n\n- Each run sends your tracked ASINs, competitor ASINs, keywords, category paths, and marketplace/date/numeric filters to the ZooData API (`api.zoodata.ai`). Because this skill is designed for scheduled, unattended execution, that transmission recurs on every scheduled run.\n- Nothing else is transmitted: no budget, seller-account, or free-text profile data leaves your machine.\n- Local state: `watchlist.json` and the `last-run.json` baseline under the skill's `data/` folder persist between runs for day-over-day comparison. Delete the folder anytime to reset monitoring and remove the retained data.\n- Baselines and scheduled runs are only established on your explicit request — never from a vague or merely related question — and recurring monitoring always requires your explicit opt-in. Every API call consumes account credits.\n\n## Example Prompts\n\nThe skill activates on explicit monitoring requests like these — it does not\nself-trigger on vague update questions, and recurring monitoring always\nrequires your explicit opt-in:\n\n- *\"Set up daily market monitoring for my ASINs: B0XXXXXXXX, B0YYYYYYYY\"*\n- *\"Set up daily market monitoring for keyword 'yoga mat', track these 3 ASINs\"*\n- *\"Run my daily market radar — what changed since yesterday?\"*\n- *\"Run a daily radar check on my tracked products\"*\n- *\"Run the daily radar and report competitor changes\"*\n\n## What You Get\n\n| Section | Description |\n|---------|-------------|\n| 🚨 Alert Summary | RED / YELLOW / GREEN alert counts |\n| 🔴 RED Alerts | Critical changes requiring immediate action |\n| 🟡 YELLOW Alerts | Watch-worthy shifts in competitors or market |\n| 🟢 GREEN Opportunities | Favorable changes to capitalize on |\n| 📊 KPI Dashboard | Today vs y"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn78k155f6rbh2j8r8yjx8r2e18304q9\",\n  \"slug\": \"amazon-daily-market-radar\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1786068518907\n}"},{"path":"references/cli-contract.md","content":"<!-- Canonical source - do not edit copies under amazon-* skill directories directly -->\n\n# ZooData CLI Contract\n\n## Ownership and application\n\nThis file owns the project-wide caller contract before and after every bundled `{skill_base_dir}/scripts/zoodata.py` invocation. Read it before selecting the first command, then apply it after each granular or composite result and before any additional API/tool call, fallback, state write, interpretation, or user-facing report.\n\nIt owns the shared invocation form, command-identity validation, execution-environment permission handling, caller/CLI responsibilities, composite-result reuse, result acquisition, transport-status precedence, terminal-interface classification, retry ownership, and partial-result handling. It does not own skill-specific command allowlists, endpoint request/response fields, business interpretation, scenario selection, conclusion authority, or any user-facing failure/report rendering.\n\n## Invocation interface\n\n1. Invoke the bundled client as `python {skill_base_dir}/scripts/zoodata.py [global options] <subcommand> [subcommand options]` using the active skill's local copy.\n2. Place global options before the subcommand. Treat top-level and subcommand `--help` as the live invocation contract; help inspection makes no API request and consumes no credits.\n3. Use the active skill to select the allowed workflow and command scope. Use this contract to validate and execute that selection; do not let this shared file select a business workflow.\n4. Distinguish API/evidence commands from local-only diagnostic, prompt-rendering, and aggregation commands according to the selected subcommand's help. Do not attribute an API call or credit use to a local-only command.\n5. Credential resolution is owned by the bundled CLI. Invoke it directly; do not inspect local credential stores or pre-resolve, compare, export, or override credential values in the caller.\n\n## Command identity and composite reuse\n\n1. Inspect the bundled CLI's top-level `--help` and the selected subcommand's `--help` before invocation. Execute only an exact literal subcommand exposed by the current client and allowed by the active skill.\n2. Treat API endpoint identifiers and composite result keys as data identities, not CLI command names. Never derive a subcommand from either identity or invent an alias.\n3. Treat a successful composite command's structured output as the evidence bundle for that run. Perform selection, narrowing, transformation, extraction, and formatting locally.\n4. Do not make an additional API call solely to reread, reshape, or narrow evidence already present in the composite bundle.\n5. A granular call after a composite is allowed only for evidence absent from the bundle when the active skill's workflow or an explicit non-terminal fallback requires it.\n6. A keyword-driven composite resolves the working category through a fallback chain and records the outcome in `meta`: `meta.category_source` states how it resolved "},{"path":"references/reference.md","content":"# ZooData API Field Reference\n\n> Load this file only when you need exact field names or response structure.\n\n## ZooData Endpoint Field Reference\n\n> Shared field reference. This skill's workflows use ONLY the subcommands\n> listed in its SKILL.md; the endpoints below are documented for field-name /\n> response-structure lookup, not as a claim that this skill invokes all of them.\n\n| # | Endpoint | Purpose |\n|---|----------|---------|\n| 1 | `categories` | Category path lookup |\n| 2 | `markets/search` | Market size, competition metrics, new-product rate |\n| 3 | `products/search` | Product supply (100+ via pagination), brand/price drill |\n| 4 | `products/competitors` | Top competitor list |\n| 5 | `realtime/product` | Live product detail |\n| 6 | `reviews/analysis` | Consumer pain points, buying factors |\n| 7 | `products/price-band-overview` | Price-band opportunity overview |\n| 8 | `products/price-band-detail` | Per-band SKU/sales/brand/rating breakdown |\n| 9 | `products/brand-overview` | Brand count, CR10, top-brand avg price/rating |\n| 10 | `products/brand-detail` | Per-brand SKU/sales/revenue/share ranking |\n| 11 | `products/history` | 30-day price/BSR/sales trend |\n\nBase URL: `https://api.zoodata.ai/openapi/v2`\nAuth: `Bearer $ZOODATA_API_KEY`\nMethod: All POST with JSON body\nAll endpoints return: `{success, data, error, meta}` with `meta.creditsRemaining`\n\n---\n\n## 1. categories\n\n**Request:** (mutually exclusive modes)\n- No params → root categories\n- `categoryKeyword`: String → search by keyword\n- `categoryPath`: List<String> → exact path\n- `parentCategoryPath`: List<String> → child categories\n\n**Response:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `categoryId` | string | Category ID |\n| `categoryName` | string | Category name |\n| `categoryPath` | list | Full path from root |\n| `hasChildren` | bool | Has subcategories |\n| `level` | int | Depth (1=root) |\n| `productCount` | int | Products in category |\n\n---\n\n## 2. markets/search\n\n**Key Request Params:**\n- `categoryPath`: List<String> (e.g. `[\"Pet Supplies\", \"Dogs\"]`)\n- `categoryKeyword`: String\n- `topN`: **String** (`\"10\"` not `10`)\n- `sampleType`: `by_sale_100` / `by_bsr_100` / `avg`\n- `pageSize`: Integer (max 20)\n\n**Key Response Fields:**\n| Field | Type | Used For |\n|-------|------|----------|\n| `totalSkuCount` | int | Market size |\n| `sampleAvgMonthlySales` | float | Demand level |\n| `sampleAvgMonthlyRevenue` | float | Market value |\n| `sampleAvgPrice` | float | Price benchmark |\n| `sampleAvgRating` | float | Quality benchmark |\n| `sampleBrandCount` | int | Brand diversity |\n| `sampleSellerCount` | int | Seller diversity |\n| `sampleFbaRate` | float | FBA adoption (decimal) |\n| `sampleNewSkuRate` | float | New entrant rate (decimal) |\n| `topSalesRate` | float | Product concentration (CR_topN) |\n| `topBrandSalesRate` | float | Brand concentration |\n| `topSellerSalesRate` | float | Seller concentration |\n| `sampleAPlusRate` | float | Margin benchmark |\n\n---\n\n## 3. products/search — Shar"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":2296,"uniquenessScore":41,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T05:35:24.860Z","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-10T05:35:24.860Z","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-10T09:00:41.599Z","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"}]}}}