{"id":"a0235fa0-d04e-4712-aba4-a917dcbc6515","entityType":"agent","slug":"clawhub-linkfox-ai-linkfox-amazon-store-pricing","name":"亚马逊-店铺定价","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linkfox-ai-linkfox-amazon-store-pricing","canonicalPath":"/agent/clawhub-linkfox-ai-linkfox-amazon-store-pricing","generatedAt":"2026-10-10T10:43:51.957Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T07:55:39.102Z","emptyReason":null},"description":"亚马逊商品报价与竞争定价查询。用于按 ASIN 或卖家 SKU 获取商品价格、竞争价格、Listing Offers、Item Offers、批量报价、Featured Offer Expected Price（FOEP）和竞争摘要。用户提到亚马逊定价、商品报价、竞品价格、最低报价、购物车价格、Buy Box、Featured Offer、listing offers、item offers、batch pricing、FOEP、competitive summary、Product Pricing API 时触发。即使未明确提及 SP-API，只要希望比较亚马逊商品报价、判断竞争力或估算赢得 Featured Offer 的价格，也应触发此技能；修改 Listing 售价使用 linkfox-amazon-store-listings 或批量 Feed。 Skill: 亚马逊-店铺定价 Owner: linkfox-ai Summary: 亚马逊商品报价与竞争定价查询。用于按 ASIN 或卖家 SKU 获取商品价格、竞争价格、Listing Offers、Item Offers、批量报价、Featured Offer Expected Price（FOEP）和竞争摘要。用户提到亚马逊定价、商品报价、竞品价格、最低报价、购物车价格、Buy Box、Featured Offer、listing offers、item offers、batch pricing、FOEP、competitive summary、Product Pricing API 时触发。即使未明确提及 SP-API，只要希望比较亚马逊商品报价、判断竞争力或估算赢得 Featured Offer 的价格，也应触发此技能；修改 Listing 售价使用 linkfox-amazon-store-listings 或批量","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-amazon-store-pricing","sourceUrl":"https://clawhub.ai/linkfox-ai/linkfox-amazon-store-pricing","homepage":"https://clawhub.ai/linkfox-ai/skills/linkfox-amazon-store-pricing","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linkfox-ai/linkfox-amazon-store-pricing","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linkfox-ai/skills/linkfox-amazon-store-pricing","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"亚马逊商品报价与竞争定价查询。用于按 ASIN 或卖家 SKU 获取商品价格、竞争价格、Listing Offers、Item Offers、批量报价、Featured Offer Expected Price（FOEP）和竞争摘要。用户提到亚马逊定价、商品报价、竞品价格、最低报价、购物车价格、Buy Box、Feat"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:55:39.102Z","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-10T07:55:39.102Z","emptyReason":null},"stars":null,"forks":null,"downloads":1577,"packageName":null,"latestVersion":"1.0.8","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:55:39.017Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T07:55:39.102Z","lastCrawledAt":"2026-10-10T07:55:39.017Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T07:55:39.017Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.8","createdAt":"2026-09-14T04:58:16.533Z","changelog":"Update from 1.0.7 to 1.0.8","fileCount":16,"zipByteSize":48355},{"version":"1.0.7","createdAt":"2026-08-14T14:47:50.517Z","changelog":"Update from 1.0.6 to 1.0.7","fileCount":16,"zipByteSize":47164},{"version":"1.0.6","createdAt":"2026-08-07T10:44:57.396Z","changelog":"Update from 1.0.5 to 1.0.6","fileCount":16,"zipByteSize":46978},{"version":"1.0.5","createdAt":"2026-07-13T12:05:33.696Z","changelog":"Update from 1.0.4 to 1.0.5","fileCount":14,"zipByteSize":38594},{"version":"1.0.4","createdAt":"2026-07-06T11:14:01.089Z","changelog":"Update from 1.0.3 to 1.0.4","fileCount":14,"zipByteSize":37718},{"version":"1.0.3","createdAt":"2026-07-03T08:12:28.621Z","changelog":"Update from 1.0.2 to 1.0.3","fileCount":13,"zipByteSize":36219},{"version":"1.0.2","createdAt":"2026-07-03T04:37:33.982Z","changelog":"Update from 1.0.1 to 1.0.2","fileCount":13,"zipByteSize":36174},{"version":"1.0.1","createdAt":"2026-06-29T10:46:25.167Z","changelog":"Update from 0.0.1 to 1.0.1","fileCount":15,"zipByteSize":41541}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-amazon-store-pricing","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:43:51.953Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-amazon-store-pricing/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T07:55:39.102Z","emptyReason":null},"readme":"Skill: 亚马逊-店铺定价\n\nOwner: linkfox-ai\n\nSummary: 亚马逊商品报价与竞争定价查询。用于按 ASIN 或卖家 SKU 获取商品价格、竞争价格、Listing Offers、Item Offers、批量报价、Featured Offer Expected Price（FOEP）和竞争摘要。用户提到亚马逊定价、商品报价、竞品价格、最低报价、购物车价格、Buy Box、Featured Offer、listing offers、item offers、batch pricing、FOEP、competitive summary、Product Pricing API 时触发。即使未明确提及 SP-API，只要希望比较亚马逊商品报价、判断竞争力或估算赢得 Featured Offer 的价格，也应触发此技能；修改 Listing 售价使用 linkfox-amazon-store-listings 或批量 Feed。\n\nTags: latest:1.0.8\n\nVersion history:\n\nv1.0.8 | 2026-09-14T04:58:16.533Z | user\n\nUpdate from 1.0.7 to 1.0.8\n\nv1.0.7 | 2026-08-14T14:47:50.517Z | user\n\nUpdate from 1.0.6 to 1.0.7\n\nv1.0.6 | 2026-08-07T10:44:57.396Z | user\n\nUpdate from 1.0.5 to 1.0.6\n\nv1.0.5 | 2026-07-13T12:05:33.696Z | user\n\nUpdate from 1.0.4 to 1.0.5\n\nv1.0.4 | 2026-07-06T11:14:01.089Z | user\n\nUpdate from 1.0.3 to 1.0.4\n\nv1.0.3 | 2026-07-03T08:12:28.621Z | user\n\nUpdate from 1.0.2 to 1.0.3\n\nv1.0.2 | 2026-07-03T04:37:33.982Z | user\n\nUpdate from 1.0.1 to 1.0.2\n\nv1.0.1 | 2026-06-29T10:46:25.167Z | user\n\nUpdate from 0.0.1 to 1.0.1\n\nv0.0.1 | 2026-05-20T08:04:56.416Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.8: 16 files, 48355 bytes\n\nFiles: references/api.md (15447b), references/onboarding.md (1999b), scripts/_spapi_pricing_common.py (11322b), scripts/check_auth_dependency.py (10114b), scripts/get_competitive_pricing.py (9573b), scripts/get_item_offers.py (3335b), scripts/get_listing_offers.py (7938b), scripts/get_pricing.py (9893b), scripts/onboarding.py (24027b), scripts/post_competitive_summary_batch.py (3811b), scripts/post_featured_offer_expected_price_batch.py (3671b), scripts/post_item_offers_batch.py (3945b), scripts/post_listing_offers_batch.py (3714b), skill-card.md (3644b), SKILL.md (10687b), _meta.json (147b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: linkfox-amazon-store-pricing\ndescription: 亚马逊商品报价与竞争定价查询。用于按 ASIN 或卖家 SKU 获取商品价格、竞争价格、Listing Offers、Item Offers、批量报价、Featured Offer Expected Price（FOEP）和竞争摘要。用户提到亚马逊定价、商品报价、竞品价格、最低报价、购物车价格、Buy Box、Featured Offer、listing offers、item offers、batch pricing、FOEP、competitive summary、Product Pricing API 时触发。即使未明确提及 SP-API，只要希望比较亚马逊商品报价、判断竞争力或估算赢得 Featured Offer 的价格，也应触发此技能；修改 Listing 售价使用 linkfox-amazon-store-listings 或批量 Feed。\n---\n\n# Amazon 店铺 Product Pricing\n\n本 skill 与 **`linkfox-amazon-store-auth`**、**`linkfox-amazon-store-report`**、**`linkfox-amazon-store-listings`** 同属 **Amazon Store** 系列：依赖 **`linkfox-amazon-store-auth`** 选店（`sellerId`+`region`）；直接 **`POST /spApi/developerProxy`** 传入 `sellerId`+`region`，由服务端解析 token（勿传 `amzAccessToken`，除非兼容旧调用）。转发上游 **GET** 或 **POST**。\n\n## 调用方式\n\n- **API 端点**：`POST /spApi/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗算力；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和算力问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示算力或余额不足**：消息含\"算力余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 官方参考索引\n\n| 能力 | 文档 |\n|------|------|\n| getPricing | [getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) |\n| getCompetitivePricing | [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) |\n| getListingOffers | [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) |\n| getItemOffers | [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) |\n| getItemOffersBatch | [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) |\n| getListingOffersBatch | [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) |\n| getFeaturedOfferExpectedPriceBatch | [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) |\n| getCompetitiveSummary | [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary) |\n\n---\n\n## Prerequisites（必须先读）\n\n本 skill **依赖** **`linkfox-amazon-store-auth`**。\n\n1. 运行 `python scripts/check_auth_dependency.py`；若 exit code **42** 且 stderr 含 `DEPENDENCY_MISSING:`，请先安装 **`linkfox-amazon-store-auth`**。\n2. **不要**在本 skill 内绕过依赖实现授权或令牌逻辑。\n\n---\n\n## Current Capabilities（脚本一览）\n\n| 能力 | developerProxy `path`（要点） | 脚本 |\n|------|------------------------------|------|\n| getPricing | `products/pricing/v0/price` + Query | `get_pricing.py` |\n| getCompetitivePricing | `products/pricing/v0/competitivePrice` + Query | `get_competitive_pricing.py` |\n| getListingOffers | `products/pricing/v0/listings/{sku}/offers` + Query | `get_listing_offers.py` |\n| getItemOffers | `products/pricing/v0/items/{asin}/offers` + Query | `get_item_offers.py` |\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers`，POST JSON body | `post_item_offers_batch.py` |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers`，POST JSON body | `post_listing_offers_batch.py` |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice`，POST | `post_featured_offer_expected_price_batch.py` |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary`，POST | `post_competitive_summary_batch.py` |\n\n批量脚本（`post_*_batch.py`）在默认模式下会按 Amazon 要求**组装**子请求；高级用法可设 **`useAmazonRequestShape`: true**，直接传 **`requests`** 为官方原始数组（仍受条数上限约束）。共享逻辑见 **`scripts/_spapi_pricing_common.py`**（仅供同目录脚本 import，非独立 CLI）。\n\n---\n\n## Quick Parameters（摘要）\n\n- **getPricing / getCompetitivePricing**：`sellerId`、`region`、`marketplaceId`（或 `marketplaceIds` 取首）、`itemType`、`asins` 或 `skus`（≤20）；getPricing 另有 `itemCondition`、`offerType`；getCompetitivePricing 另有 `customerType`。\n- **getListingOffers / getItemOffers**：`sku`+path 或 **`asin`**+path；**`itemCondition` 必填**；可选 `customerType`。\n- **Item / Listing Offers Batch**：`requests` 数组，默认每项为简化对象（见 `references/api.md`）；**1～20** 条（FOEP 批量脚本为 **最多 40** 条）。\n- **getCompetitiveSummary 批量**：每项需 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组）；可选 **`lowestPricedOffersInputs`**。\n- **getFeaturedOfferExpectedPriceBatch**：每项需 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构以官方为准）。\n\n---\n\n## Scripts\n\n- `get_pricing.py` · `get_competitive_pricing.py` · `get_listing_offers.py` · `get_item_offers.py`\n- `post_item_offers_batch.py` · `post_listing_offers_batch.py` · `post_featured_offer_expected_price_batch.py` · `post_competitive_summary_batch.py`\n- `check_auth_dependency.py` · `_spapi_pricing_common.py`（内部模块）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_item_offers.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}'\n\npython scripts/post_item_offers_batch.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"requests\":[{\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}]}'\n```\n\n---\n\n## Display Rules\n\n1. **`MarketplaceId`**（单数）与 Listings 的 `marketplaceIds` 勿混用。\n2. 先看网关 **`errcode` / `httpStatus`**，再解析各脚本对应的解析字段（如 **`itemOffers`**、**`itemOffersBatch`**、**`competitiveSummary`** 等）。\n3. **POST** 类接口：`stdout` 中含 **`requestBody`**（脚本组装的 Amazon 请求体），便于排查。\n4. **白名单**：除 `products/pricing/...` 外，批量路径以 **`batches/products/pricing/...`** 开头；**1005** 时需后端放行对应前缀。\n5. 各接口 **Usage plan** 不同（尤其 2022-05-01 批量约 **0.033 req/s**），注意 **429**。\n\n---\n\n## Important Limitations\n\n- 权限：**Product Pricing** 及相关角色；部分 2022-05-01 能力可能另有应用内配置要求，以 Amazon 为准。\n- **FOEP 批量**：`segment` 须符合官方模型；条数上限脚本按 **40** 校验（与文档「up to 40」一致）。\n- 返回结构以 Amazon schema 为准；详见 **`references/api.md`**。\n\n## Amazon SP-API 接口保护与重试指引\n\n同一店铺连续收到 Amazon SP-API 的 400、403、404 或 429 时，网关会返回 450、453、454 或 459 并短暂冷却。这些自定义状态码不是 Amazon 原生状态，也不表示封号；目的是避免持续异常或高频调用扩大店铺风险。\n\n| 状态与 message | 范围 | 触发与冷却 | 处理 |\n|---|---|---|---|\n| `450`：`400，请求异常，请优化您的参数` | 店铺+接口 | 60 秒内超过 3 次：5 分钟；10 分钟内超过 4 次：20 分钟 | 停止原参数重试，检查必填字段、marketplace、ID、日期和请求体 |\n| `453`：`403，店铺未授权，请先授权` | 店铺全部接口 | 60 秒内超过 2 次：5 分钟；10 分钟内超过 4 次：30 分钟 | 停止该店铺调用，检查授权、权限、店铺归属和区域 |\n| `454`：`404，资源不存在，请优化您的参数` | 店铺+接口 | 60 秒内超过 3 次：5 分钟；10 分钟内超过 4 次：30 分钟 | 确认资源 ID、所属店铺/站点、资源状态和接口路径 |\n| `459`：`429限流中，请降低频率` | 店铺+接口 | 首次：15 秒；2 分钟内超过 2 次：30 秒；3 分钟内超过 4 次：2 分钟 | 降低并发、分页和轮询频率并逐级退避 |\n\n- 立即停止自动或并发重试，不得通过换脚本或重复创建任务绕过保护；优先遵循 `retryAfter`、`blockedUntil`，没有时按表中时长说明。\n- 450/453/454 必须先修正参数、授权或资源标识，冷却后最多谨慎重试一次；再次触发则停止调用。453 期间停止该店铺全部 SP-API。\n- 保留已有 `reportId`、`feedId` 等任务 ID；写操作结果不确定时先查询状态，不直接重放。\n- 向用户先说明店铺保护，再给原因、处理和等待时间。可回复：“为保护您的亚马逊店铺安全，检测到 Amazon SP-API 连续返回{原因}，当前已进入短暂保护。请先{处理动作}，预计{等待时间}后再试；这不代表封号，也不是套餐或算力限制。”不要只说“LinkFox 限流”或“服务器繁忙”。\n\n## 算力消耗规则\n\n不消耗算力。\n\n**Feedback：** 见 `references/api.md`，`skillName`：`linkfox-amazon-store-pricing`。\n\n---\n*更多跨境 skill：[LinkFox Skills](https://skill.linkfox.com/)*\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-amazon-store-pricing\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1789361896533\n}\n\nFile v1.0.8:references/api.md\n\n# Amazon 店铺 Product Pricing API 参考（v0 + 2022-05-01 批量）\n\n本文档描述通过 **LinkFox 店铺网关** 调用 Selling Partner API **Product Pricing**（**v0** 与 **2022-05-01** 批量）：与 `linkfox-amazon-store-report`、`linkfox-amazon-store-listings` **一致**——先 **`POST /spApi/storeTokens`** 取 `accessToken`，再经 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**。\n\n> 官方入口：[getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) · [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) · [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) · [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) · [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) · [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) · [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) · [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n> ⚠️ **依赖**：需已安装并完成授权 **`linkfox-amazon-store-auth`**。应用需具备 **Product Pricing** 等相关角色/权限，否则上游可能返回 403。\n\n---\n\n## 调用规范（与 store-report 相同）\n\n| 项 | 说明 |\n|----|------|\n| **Base URL** | `${LINKFOX_TOOL_GATEWAY}`（默认 `https://tool-gateway.linkfox.com`；可用 `STORE_API_BASE_URL` 或 `SPAPI_BASE_URL` 覆盖） |\n| **网关认证** | Header `Authorization: <api_key>`，环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY`（如未配置 按 SKILL.md 的 **## 解决认证和算力问题** 处理） |\n| **店铺令牌** | `POST /spApi/storeTokens`，Body：`{\"sellerId\":\"...\",\"region\":\"NA|EU|FE\"}` → `accessToken` |\n| **SP-API 转发** | `POST /spApi/developerProxy`，Body 见下节 |\n\n---\n\n## `POST /spApi/developerProxy`（定价类 GET / POST）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| region | string | 是 | `NA` / `EU` / `FE` |\n| path | string | 是 | 不含主机名。示例：**`products/pricing/v0/price`**、**`products/pricing/v0/items/{Asin}/offers`**、**`batches/products/pricing/v0/itemOffers`**、**`batches/products/pricing/2022-05-01/items/competitiveSummary`** 等（见各节） |\n| method | string | 是 | **`GET`** 或 **`POST`**（与上游一致） |\n| amzAccessToken | string | 是 | `/spApi/storeTokens` 返回的 `accessToken` |\n| queryString | string | 视操作 | **无 `?` 前缀**。GET 定价类多 **必填**；POST 批量通常 **无** query，以 Amazon 为准 |\n| body | string | 视操作 | **POST** 时多为 **JSON 字符串**（与 `put_listings_item` 相同，见 listings `references/api.md`） |\n| contentType | string | 视操作 | POST 带 `body` 时一般为 **`application/json`** |\n\n**网关响应**：`errcode`、`errmsg`、`httpStatus`、`contentType`、`body`（字符串）。先 **`errcode`**，再 **`httpStatus`**，再解析 **`body`**。\n\n### 白名单与错误码\n\n- `path` 须在网关 **`sp-api.developer-proxy.allowed-path-prefixes`** 内。若 **`errcode=1005`**，需联系后端放行 **`products/pricing/`** 与 **`batches/products/pricing/`** 等前缀（以运维配置为准）。\n- 其它错误与 `linkfox-amazon-store-report` 的 Developer Proxy 说明一致。\n- HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和算力问题** 处理。\n- HTTP 402：按 SKILL.md 的 **## 解决认证和算力问题** 处理。\n\n---\n\n## getPricing — Query 参数（写入 `queryString`）\n\n官方参数名 **大小写敏感**。多值 **`Asins`** / **`Skus`** 采用重复键形式：`Asins=B0...&Asins=B0...`（本仓库脚本按此拼接）。\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id，例如美国 `ATVPDKIKX0DER`。与 Listings API 的 `marketplaceIds` 不同，此处为 **单数键名** |\n| **ItemType** | 是 | `Asin` 或 `Sku`（与下方 `Asins` / `Skus` 二选一对应） |\n| **Asins** | 与 ItemType 对应 | 当 `ItemType=Asin` 时必填；**最多 20** 个 ASIN |\n| **Skus** | 与 ItemType 对应 | 当 `ItemType=Sku` 时必填；**最多 20** 个卖家 SKU（注意 [URL 编码](https://developer-docs.amazon.com/sp-api/docs/url-encoding)） |\n| **ItemCondition** | 否 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **OfferType** | 否 | `B2C` 或 `B2B`；默认多为 B2C（以上游为准） |\n\n### 速率（文档默认值，以账号实际为准）\n\n- 约 **0.5 req/s**，burst **1**（见官方 Usage plan 表）。\n\n---\n\n## getCompetitivePricing — Query 参数（写入 `queryString`）\n\n与 getPricing 相同：**`MarketplaceId`**、**`ItemType`**（`Asin` / `Sku`）、**`Asins`** 或 **`Skus`**（每请求最多 **20** 个，重复键拼接）。差异如下：\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **CustomerType** | 否 | `Consumer` 或 `Business`；从 **消费者 / 企业买家** 视角看定价信息，默认多为 Consumer（以上游为准） |\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getCompetitivePricing Usage plan](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)）。\n\n> getCompetitivePricing **没有** getPricing 的 `ItemCondition`、`OfferType` 参数；二者用途不同，勿混用字段名。\n\n---\n\n## getListingOffers — Path 与 Query\n\n- **Path 模板**（写入 `developerProxy.path`）：\n\n```text\nproducts/pricing/v0/listings/{SellerSKU}/offers\n```\n\n其中 **`{SellerSKU}`** 为卖家 SKU，路径段须 **百分号编码**（与 `get_listings_item` 同理；脚本使用 `urllib.parse.quote(..., safe=\"\")`）。\n\n### Query（写入 `queryString`）\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id |\n| **ItemCondition** | 是 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **CustomerType** | 否 | `Consumer` 或 `Business`（默认多为 Consumer，以上游为准） |\n\n**语义**：针对**单个 SKU 刊登**返回较低报价类信息（官方描述为 lowest priced offers；具体结构见 [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)）。\n\n**速率（文档默认值）**：约 **1 req/s**，burst **2**（见官方 Usage plan）。\n\n### 成功响应（摘要）\n\n- **`httpStatus=200`** 时解析 `body`：`get_pricing.py` → **`pricing`**；`get_competitive_pricing.py` → **`competitivePricing`**；`get_listing_offers.py` → **`listingOffers`**；`get_item_offers.py` → **`itemOffers`**；`post_item_offers_batch.py` → **`itemOffersBatch`**；`post_listing_offers_batch.py` → **`listingOffersBatch`**；`post_featured_offer_expected_price_batch.py` → **`featuredOfferExpectedPriceBatch`**；`post_competitive_summary_batch.py` → **`competitiveSummary`**。\n\n---\n\n## getItemOffers — Path 与 Query\n\n- **Path**：`products/pricing/v0/items/{Asin}/offers`（`{Asin}` 路径编码）\n- **Query**：**`MarketplaceId`**（必填）、**`ItemCondition`**（必填）、**`CustomerType`**（可选）\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)）。\n\n---\n\n## 批量 POST（ItemOffers / ListingOffers / FOEP / CompetitiveSummary）\n\n上游均为 **`POST`** + **JSON body**，根字段为 **`requests`** 数组。子请求字段以 Amazon 模型为准；本仓库脚本在**默认模式**下将简化 JSON 展开为官方形状；若传 **`useAmazonRequestShape`: true**，则 **`requests`** 须已是 Amazon 原始对象（脚本只做条数校验）。\n\n| 操作 | `path` | 子请求条数（脚本校验） | 文档速率（默认，以账号为准） |\n|------|--------|------------------------|------------------------------|\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers` | 1～20 | 约 0.1 req/s，burst 1 |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers` | 1～20 | 约 0.5 req/s，burst 1 |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice` | 1～40 | 约 0.033 req/s，burst 1 |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary` | 1～20 | 约 0.033 req/s，burst 1 |\n\n**Item / Listing Offers 批量子请求（简化 → 官方）**：每条展开为 **`uri`**（以 `/` 开头的资源路径，**无** query）、**`method`:** `GET`、**`MarketplaceId`**、**`ItemCondition`**，以及可选 **`CustomerType`**、**`headers`**。Item 的 `uri` 形如 **`/products/pricing/v0/items/{Asin}/offers`**；Listing 的 `uri` 形如 **`/products/pricing/v0/listings/{SellerSKU}/offers`**（SKU 路径编码）。\n\n**getFeaturedOfferExpectedPriceBatch（简化）**：每条含 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构见官方）；脚本补充 **`uri`**、**`method`:** `POST`。\n\n**getCompetitiveSummary（简化）**：每条含 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组，如 `featuredBuyingOptions`），以及可选 **`lowestPricedOffersInputs`**；脚本补充 **`uri`**、**`method`:** `POST`。\n\n---\n\n## 脚本 JSON 入参（`get_pricing.py`）\n\n与 Amazon Query 的对应关系：\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | 仅用于 `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`。若只提供 **`marketplaceIds`** 数组，则取 **第一个** 并 stderr 警告（与同系列 listing 脚本习惯一致） |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins | 条件 | `itemType=Asin` 时至少 1 个、≤20 |\n| skus | 条件 | `itemType=Sku` 时至少 1 个、≤20 |\n| itemCondition | 否 | → `ItemCondition` |\n| offerType | 否 | → `OfferType` |\n| skipDepCheck | 否 | `true` 时跳过 `check_auth_dependency.py` |\n\n---\n\n## 脚本 JSON 入参（`get_competitive_pricing.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins / skus | 条件 | 与 getPricing 相同（1～20） |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_listing_offers.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| sku | 是 | 卖家 SKU → path 中的 `{SellerSKU}` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemCondition | 是 | → `ItemCondition` |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_item_offers.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| asin | 是 | path 中的 ASIN |\n| marketplaceId | 是* | Query `MarketplaceId` |\n| itemCondition | 是 | Query `ItemCondition` |\n| customerType | 否 | Query `CustomerType` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`post_item_offers_batch.py` / `post_listing_offers_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；默认每项 **item batch**：`asin`+`marketplaceId`+`itemCondition` 或 **listing batch**：`sku`+`marketplaceId`+`itemCondition` |\n| useAmazonRequestShape | 否 | `true` 时 `requests` 为 Amazon 原始子请求 |\n| skipDepCheck | 否 | 同左 |\n\n成功时 stdout 含 **`requestBody`**（已发送的 JSON 对象）。\n\n---\n\n## 脚本 JSON 入参（`post_featured_offer_expected_price_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～40；每项 `marketplaceId`、`sku`、`segment`（或 `useAmazonRequestShape`） |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## 脚本 JSON 入参（`post_competitive_summary_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；每项 `asin`、`marketplaceId`、`includedData`（数组），可选 `lowestPricedOffersInputs` |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## curl 示例\n\n**1）取 `accessToken`**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/storeTokens\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"sellerId\":\"A1BCDEFGHIJK2\",\"region\":\"NA\"}'\n```\n\n**2）getPricing（按 ASIN）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/price\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&ItemCondition=New\"\n  }'\n```\n\n> 请将示例 ASIN / token 换为真实值；多 ASIN 时重复 `Asins=` 键。\n\n**3）getCompetitivePricing（按 ASIN + 企业买家视角）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/competitivePrice\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&CustomerType=Business\"\n  }'\n```\n\n**4）getListingOffers（单 SKU；path 中 SKU 若含特殊字符须先编码）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/listings/My-Seller-SKU-001/offers\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemCondition=New\"\n  }'\n```\n\n**5）getItemOffersBatch（POST body 示意；`requests` 以实网为准）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"batches/products/pricing/v0/itemOffers\",\n    \"method\": \"POST\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"contentType\": \"application/json\",\n    \"body\": \"{\\\"requests\\\":[{\\\"uri\\\":\\\"/products/pricing/v0/items/B08N5WRWNW/offers\\\",\\\"method\\\":\\\"GET\\\",\\\"MarketplaceId\\\":\\\"ATVPDKIKX0DER\\\",\\\"ItemCondition\\\":\\\"New\\\"}]}\"\n  }'\n```\n\n---\n\n## Feedback API\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-amazon-store-pricing\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Product Pricing（含批量与 2022-05-01）结果符合预期。\"\n}\n```\n\nFile v1.0.8:references/onboarding.md\n\n# 解决认证和算力问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `算力/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.8:skill-card.md\n\n## Description:\n\nQueries Amazon seller Product Pricing data through LinkFox, including ASIN/SKU prices, competitive pricing, listing and item offers, Featured Offer Expected Price, and competitive summaries.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal developers and Amazon sellers use this skill to query Amazon Product Pricing information for individual or batched ASIN and seller SKU workflows. It helps compare offers, inspect Buy Box and Featured Offer signals, and estimate competitive pricing while using LinkFox account and authorization flows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can access Amazon seller pricing data and saves pricing responses to local JSON files.\n\nMitigation: Install only in workspaces where saved pricing output is acceptable, review the output directory, and treat generated files as sensitive business data.\n\nRisk: Authentication and onboarding flows may involve LinkFox API keys, SMS codes, account login, billing orders, or payment QR files.\n\nMitigation: Avoid passing secrets in logged command lines, verify account and billing actions before execution, and keep generated payment artifacts private.\n\nRisk: Endpoint override environment variables can redirect requests away from the expected LinkFox service.\n\nMitigation: Use default endpoints unless the override target is fully trusted and intentionally configured.\n\nRisk: Repeated invalid or high-rate Amazon SP-API calls can trigger temporary store-level protection or throttling.\n\nMitigation: Follow the documented cooldown and retry guidance, correct bad parameters or authorization issues before retrying, and avoid automatic repeated calls.\n\n## Reference(s):\n\n- [Amazon Store Product Pricing API Reference](artifact/references/api.md)\n- [Authentication and Billing Onboarding](artifact/references/onboarding.md)\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-amazon-store-pricing)\n- [Amazon getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing)\n- [Amazon getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)\n- [Amazon getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)\n- [Amazon getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)\n- [Amazon getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch)\n- [Amazon getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch)\n- [Amazon getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch)\n- [Amazon getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, JSON files]\n\n**Output Format:** [Markdown guidance with shell commands and JSON response files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Scripts save full JSON responses under the working directory and may print either full JSON or a summary depending on response size.]\n\n## Skill Version(s):\n\n1.0.8 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.7: 16 files, 47164 bytes\n\nFiles: references/api.md (15447b), references/onboarding.md (2046b), scripts/_spapi_pricing_common.py (11092b), scripts/check_auth_dependency.py (10114b), scripts/get_competitive_pricing.py (9343b), scripts/get_item_offers.py (3335b), scripts/get_listing_offers.py (7708b), scripts/get_pricing.py (9663b), scripts/onboarding.py (24089b), scripts/post_competitive_summary_batch.py (3811b), scripts/post_featured_offer_expected_price_batch.py (3671b), scripts/post_item_offers_batch.py (3945b), scripts/post_listing_offers_batch.py (3714b), skill-card.md (3838b), SKILL.md (8543b), _meta.json (147b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: linkfox-amazon-store-pricing\ndescription: 亚马逊店铺商品定价（与 linkfox-amazon-store-auth / linkfox-amazon-store-report / linkfox-amazon-store-listings 同系列），经 /spApi/developerProxy 调用 SP-API Product Pricing：v0 的 getPricing、getCompetitivePricing、getListingOffers、getItemOffers、getItemOffersBatch、getListingOffersBatch；2022-05-01 的 getFeaturedOfferExpectedPriceBatch、getCompetitiveSummary。含 ASIN/SKU 单条与批量、FOEP、竞争摘要。当用户提到亚马逊定价、比价、低价报价、listing/item offers、batch pricing、FOEP、featured offer、competitive summary、Product Pricing、SP-API 价格 时触发。\n---\n\n# Amazon 店铺 Product Pricing\n\n本 skill 与 **`linkfox-amazon-store-auth`**、**`linkfox-amazon-store-report`**、**`linkfox-amazon-store-listings`** 同属 **Amazon Store** 系列：依赖 **`linkfox-amazon-store-auth`** 选店（`sellerId`+`region`）；直接 **`POST /spApi/developerProxy`** 传入 `sellerId`+`region`，由服务端解析 token（勿传 `amzAccessToken`，除非兼容旧调用）。转发上游 **GET** 或 **POST**。\n\n## 调用方式\n\n- **API 端点**：`POST /spApi/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 官方参考索引\n\n| 能力 | 文档 |\n|------|------|\n| getPricing | [getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) |\n| getCompetitivePricing | [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) |\n| getListingOffers | [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) |\n| getItemOffers | [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) |\n| getItemOffersBatch | [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) |\n| getListingOffersBatch | [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) |\n| getFeaturedOfferExpectedPriceBatch | [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) |\n| getCompetitiveSummary | [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary) |\n\n---\n\n## Prerequisites（必须先读）\n\n本 skill **依赖** **`linkfox-amazon-store-auth`**。\n\n1. 运行 `python scripts/check_auth_dependency.py`；若 exit code **42** 且 stderr 含 `DEPENDENCY_MISSING:`，请先安装 **`linkfox-amazon-store-auth`**。\n2. **不要**在本 skill 内绕过依赖实现授权或令牌逻辑。\n\n---\n\n## Current Capabilities（脚本一览）\n\n| 能力 | developerProxy `path`（要点） | 脚本 |\n|------|------------------------------|------|\n| getPricing | `products/pricing/v0/price` + Query | `get_pricing.py` |\n| getCompetitivePricing | `products/pricing/v0/competitivePrice` + Query | `get_competitive_pricing.py` |\n| getListingOffers | `products/pricing/v0/listings/{sku}/offers` + Query | `get_listing_offers.py` |\n| getItemOffers | `products/pricing/v0/items/{asin}/offers` + Query | `get_item_offers.py` |\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers`，POST JSON body | `post_item_offers_batch.py` |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers`，POST JSON body | `post_listing_offers_batch.py` |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice`，POST | `post_featured_offer_expected_price_batch.py` |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary`，POST | `post_competitive_summary_batch.py` |\n\n批量脚本（`post_*_batch.py`）在默认模式下会按 Amazon 要求**组装**子请求；高级用法可设 **`useAmazonRequestShape`: true**，直接传 **`requests`** 为官方原始数组（仍受条数上限约束）。共享逻辑见 **`scripts/_spapi_pricing_common.py`**（仅供同目录脚本 import，非独立 CLI）。\n\n---\n\n## Quick Parameters（摘要）\n\n- **getPricing / getCompetitivePricing**：`sellerId`、`region`、`marketplaceId`（或 `marketplaceIds` 取首）、`itemType`、`asins` 或 `skus`（≤20）；getPricing 另有 `itemCondition`、`offerType`；getCompetitivePricing 另有 `customerType`。\n- **getListingOffers / getItemOffers**：`sku`+path 或 **`asin`**+path；**`itemCondition` 必填**；可选 `customerType`。\n- **Item / Listing Offers Batch**：`requests` 数组，默认每项为简化对象（见 `references/api.md`）；**1～20** 条（FOEP 批量脚本为 **最多 40** 条）。\n- **getCompetitiveSummary 批量**：每项需 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组）；可选 **`lowestPricedOffersInputs`**。\n- **getFeaturedOfferExpectedPriceBatch**：每项需 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构以官方为准）。\n\n---\n\n## Scripts\n\n- `get_pricing.py` · `get_competitive_pricing.py` · `get_listing_offers.py` · `get_item_offers.py`\n- `post_item_offers_batch.py` · `post_listing_offers_batch.py` · `post_featured_offer_expected_price_batch.py` · `post_competitive_summary_batch.py`\n- `check_auth_dependency.py` · `_spapi_pricing_common.py`（内部模块）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_item_offers.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}'\n\npython scripts/post_item_offers_batch.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"requests\":[{\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}]}'\n```\n\n---\n\n## Display Rules\n\n1. **`MarketplaceId`**（单数）与 Listings 的 `marketplaceIds` 勿混用。\n2. 先看网关 **`errcode` / `httpStatus`**，再解析各脚本对应的解析字段（如 **`itemOffers`**、**`itemOffersBatch`**、**`competitiveSummary`** 等）。\n3. **POST** 类接口：`stdout` 中含 **`requestBody`**（脚本组装的 Amazon 请求体），便于排查。\n4. **白名单**：除 `products/pricing/...` 外，批量路径以 **`batches/products/pricing/...`** 开头；**1005** 时需后端放行对应前缀。\n5. 各接口 **Usage plan** 不同（尤其 2022-05-01 批量约 **0.033 req/s**），注意 **429**。\n\n---\n\n## Important Limitations\n\n- 权限：**Product Pricing** 及相关角色；部分 2022-05-01 能力可能另有应用内配置要求，以 Amazon 为准。\n- **FOEP 批量**：`segment` 须符合官方模型；条数上限脚本按 **40** 校验（与文档「up to 40」一致）。\n- 返回结构以 Amazon schema 为准；详见 **`references/api.md`**。\n\n## 积分消耗规则\n\n不消耗积分。\n\n**Feedback：** 见 `references/api.md`，`skillName`：`linkfox-amazon-store-pricing`。\n\n---\n*更多跨境 skill：[LinkFox Skills](https://skill.linkfox.com/)*\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-amazon-store-pricing\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1786718870517\n}\n\nFile v1.0.7:references/api.md\n\n# Amazon 店铺 Product Pricing API 参考（v0 + 2022-05-01 批量）\n\n本文档描述通过 **LinkFox 店铺网关** 调用 Selling Partner API **Product Pricing**（**v0** 与 **2022-05-01** 批量）：与 `linkfox-amazon-store-report`、`linkfox-amazon-store-listings` **一致**——先 **`POST /spApi/storeTokens`** 取 `accessToken`，再经 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**。\n\n> 官方入口：[getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) · [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) · [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) · [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) · [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) · [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) · [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) · [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n> ⚠️ **依赖**：需已安装并完成授权 **`linkfox-amazon-store-auth`**。应用需具备 **Product Pricing** 等相关角色/权限，否则上游可能返回 403。\n\n---\n\n## 调用规范（与 store-report 相同）\n\n| 项 | 说明 |\n|----|------|\n| **Base URL** | `${LINKFOX_TOOL_GATEWAY}`（默认 `https://tool-gateway.linkfox.com`；可用 `STORE_API_BASE_URL` 或 `SPAPI_BASE_URL` 覆盖） |\n| **网关认证** | Header `Authorization: <api_key>`，环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **店铺令牌** | `POST /spApi/storeTokens`，Body：`{\"sellerId\":\"...\",\"region\":\"NA|EU|FE\"}` → `accessToken` |\n| **SP-API 转发** | `POST /spApi/developerProxy`，Body 见下节 |\n\n---\n\n## `POST /spApi/developerProxy`（定价类 GET / POST）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| region | string | 是 | `NA` / `EU` / `FE` |\n| path | string | 是 | 不含主机名。示例：**`products/pricing/v0/price`**、**`products/pricing/v0/items/{Asin}/offers`**、**`batches/products/pricing/v0/itemOffers`**、**`batches/products/pricing/2022-05-01/items/competitiveSummary`** 等（见各节） |\n| method | string | 是 | **`GET`** 或 **`POST`**（与上游一致） |\n| amzAccessToken | string | 是 | `/spApi/storeTokens` 返回的 `accessToken` |\n| queryString | string | 视操作 | **无 `?` 前缀**。GET 定价类多 **必填**；POST 批量通常 **无** query，以 Amazon 为准 |\n| body | string | 视操作 | **POST** 时多为 **JSON 字符串**（与 `put_listings_item` 相同，见 listings `references/api.md`） |\n| contentType | string | 视操作 | POST 带 `body` 时一般为 **`application/json`** |\n\n**网关响应**：`errcode`、`errmsg`、`httpStatus`、`contentType`、`body`（字符串）。先 **`errcode`**，再 **`httpStatus`**，再解析 **`body`**。\n\n### 白名单与错误码\n\n- `path` 须在网关 **`sp-api.developer-proxy.allowed-path-prefixes`** 内。若 **`errcode=1005`**，需联系后端放行 **`products/pricing/`** 与 **`batches/products/pricing/`** 等前缀（以运维配置为准）。\n- 其它错误与 `linkfox-amazon-store-report` 的 Developer Proxy 说明一致。\n- HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和积分问题** 处理。\n- HTTP 402：按 SKILL.md 的 **## 解决认证和积分问题** 处理。\n\n---\n\n## getPricing — Query 参数（写入 `queryString`）\n\n官方参数名 **大小写敏感**。多值 **`Asins`** / **`Skus`** 采用重复键形式：`Asins=B0...&Asins=B0...`（本仓库脚本按此拼接）。\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id，例如美国 `ATVPDKIKX0DER`。与 Listings API 的 `marketplaceIds` 不同，此处为 **单数键名** |\n| **ItemType** | 是 | `Asin` 或 `Sku`（与下方 `Asins` / `Skus` 二选一对应） |\n| **Asins** | 与 ItemType 对应 | 当 `ItemType=Asin` 时必填；**最多 20** 个 ASIN |\n| **Skus** | 与 ItemType 对应 | 当 `ItemType=Sku` 时必填；**最多 20** 个卖家 SKU（注意 [URL 编码](https://developer-docs.amazon.com/sp-api/docs/url-encoding)） |\n| **ItemCondition** | 否 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **OfferType** | 否 | `B2C` 或 `B2B`；默认多为 B2C（以上游为准） |\n\n### 速率（文档默认值，以账号实际为准）\n\n- 约 **0.5 req/s**，burst **1**（见官方 Usage plan 表）。\n\n---\n\n## getCompetitivePricing — Query 参数（写入 `queryString`）\n\n与 getPricing 相同：**`MarketplaceId`**、**`ItemType`**（`Asin` / `Sku`）、**`Asins`** 或 **`Skus`**（每请求最多 **20** 个，重复键拼接）。差异如下：\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **CustomerType** | 否 | `Consumer` 或 `Business`；从 **消费者 / 企业买家** 视角看定价信息，默认多为 Consumer（以上游为准） |\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getCompetitivePricing Usage plan](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)）。\n\n> getCompetitivePricing **没有** getPricing 的 `ItemCondition`、`OfferType` 参数；二者用途不同，勿混用字段名。\n\n---\n\n## getListingOffers — Path 与 Query\n\n- **Path 模板**（写入 `developerProxy.path`）：\n\n```text\nproducts/pricing/v0/listings/{SellerSKU}/offers\n```\n\n其中 **`{SellerSKU}`** 为卖家 SKU，路径段须 **百分号编码**（与 `get_listings_item` 同理；脚本使用 `urllib.parse.quote(..., safe=\"\")`）。\n\n### Query（写入 `queryString`）\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id |\n| **ItemCondition** | 是 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **CustomerType** | 否 | `Consumer` 或 `Business`（默认多为 Consumer，以上游为准） |\n\n**语义**：针对**单个 SKU 刊登**返回较低报价类信息（官方描述为 lowest priced offers；具体结构见 [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)）。\n\n**速率（文档默认值）**：约 **1 req/s**，burst **2**（见官方 Usage plan）。\n\n### 成功响应（摘要）\n\n- **`httpStatus=200`** 时解析 `body`：`get_pricing.py` → **`pricing`**；`get_competitive_pricing.py` → **`competitivePricing`**；`get_listing_offers.py` → **`listingOffers`**；`get_item_offers.py` → **`itemOffers`**；`post_item_offers_batch.py` → **`itemOffersBatch`**；`post_listing_offers_batch.py` → **`listingOffersBatch`**；`post_featured_offer_expected_price_batch.py` → **`featuredOfferExpectedPriceBatch`**；`post_competitive_summary_batch.py` → **`competitiveSummary`**。\n\n---\n\n## getItemOffers — Path 与 Query\n\n- **Path**：`products/pricing/v0/items/{Asin}/offers`（`{Asin}` 路径编码）\n- **Query**：**`MarketplaceId`**（必填）、**`ItemCondition`**（必填）、**`CustomerType`**（可选）\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)）。\n\n---\n\n## 批量 POST（ItemOffers / ListingOffers / FOEP / CompetitiveSummary）\n\n上游均为 **`POST`** + **JSON body**，根字段为 **`requests`** 数组。子请求字段以 Amazon 模型为准；本仓库脚本在**默认模式**下将简化 JSON 展开为官方形状；若传 **`useAmazonRequestShape`: true**，则 **`requests`** 须已是 Amazon 原始对象（脚本只做条数校验）。\n\n| 操作 | `path` | 子请求条数（脚本校验） | 文档速率（默认，以账号为准） |\n|------|--------|------------------------|------------------------------|\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers` | 1～20 | 约 0.1 req/s，burst 1 |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers` | 1～20 | 约 0.5 req/s，burst 1 |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice` | 1～40 | 约 0.033 req/s，burst 1 |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary` | 1～20 | 约 0.033 req/s，burst 1 |\n\n**Item / Listing Offers 批量子请求（简化 → 官方）**：每条展开为 **`uri`**（以 `/` 开头的资源路径，**无** query）、**`method`:** `GET`、**`MarketplaceId`**、**`ItemCondition`**，以及可选 **`CustomerType`**、**`headers`**。Item 的 `uri` 形如 **`/products/pricing/v0/items/{Asin}/offers`**；Listing 的 `uri` 形如 **`/products/pricing/v0/listings/{SellerSKU}/offers`**（SKU 路径编码）。\n\n**getFeaturedOfferExpectedPriceBatch（简化）**：每条含 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构见官方）；脚本补充 **`uri`**、**`method`:** `POST`。\n\n**getCompetitiveSummary（简化）**：每条含 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组，如 `featuredBuyingOptions`），以及可选 **`lowestPricedOffersInputs`**；脚本补充 **`uri`**、**`method`:** `POST`。\n\n---\n\n## 脚本 JSON 入参（`get_pricing.py`）\n\n与 Amazon Query 的对应关系：\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | 仅用于 `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`。若只提供 **`marketplaceIds`** 数组，则取 **第一个** 并 stderr 警告（与同系列 listing 脚本习惯一致） |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins | 条件 | `itemType=Asin` 时至少 1 个、≤20 |\n| skus | 条件 | `itemType=Sku` 时至少 1 个、≤20 |\n| itemCondition | 否 | → `ItemCondition` |\n| offerType | 否 | → `OfferType` |\n| skipDepCheck | 否 | `true` 时跳过 `check_auth_dependency.py` |\n\n---\n\n## 脚本 JSON 入参（`get_competitive_pricing.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins / skus | 条件 | 与 getPricing 相同（1～20） |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_listing_offers.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| sku | 是 | 卖家 SKU → path 中的 `{SellerSKU}` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemCondition | 是 | → `ItemCondition` |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_item_offers.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| asin | 是 | path 中的 ASIN |\n| marketplaceId | 是* | Query `MarketplaceId` |\n| itemCondition | 是 | Query `ItemCondition` |\n| customerType | 否 | Query `CustomerType` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`post_item_offers_batch.py` / `post_listing_offers_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；默认每项 **item batch**：`asin`+`marketplaceId`+`itemCondition` 或 **listing batch**：`sku`+`marketplaceId`+`itemCondition` |\n| useAmazonRequestShape | 否 | `true` 时 `requests` 为 Amazon 原始子请求 |\n| skipDepCheck | 否 | 同左 |\n\n成功时 stdout 含 **`requestBody`**（已发送的 JSON 对象）。\n\n---\n\n## 脚本 JSON 入参（`post_featured_offer_expected_price_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～40；每项 `marketplaceId`、`sku`、`segment`（或 `useAmazonRequestShape`） |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## 脚本 JSON 入参（`post_competitive_summary_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；每项 `asin`、`marketplaceId`、`includedData`（数组），可选 `lowestPricedOffersInputs` |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## curl 示例\n\n**1）取 `accessToken`**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/storeTokens\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"sellerId\":\"A1BCDEFGHIJK2\",\"region\":\"NA\"}'\n```\n\n**2）getPricing（按 ASIN）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/price\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&ItemCondition=New\"\n  }'\n```\n\n> 请将示例 ASIN / token 换为真实值；多 ASIN 时重复 `Asins=` 键。\n\n**3）getCompetitivePricing（按 ASIN + 企业买家视角）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/competitivePrice\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&CustomerType=Business\"\n  }'\n```\n\n**4）getListingOffers（单 SKU；path 中 SKU 若含特殊字符须先编码）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/listings/My-Seller-SKU-001/offers\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemCondition=New\"\n  }'\n```\n\n**5）getItemOffersBatch（POST body 示意；`requests` 以实网为准）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"batches/products/pricing/v0/itemOffers\",\n    \"method\": \"POST\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"contentType\": \"application/json\",\n    \"body\": \"{\\\"requests\\\":[{\\\"uri\\\":\\\"/products/pricing/v0/items/B08N5WRWNW/offers\\\",\\\"method\\\":\\\"GET\\\",\\\"MarketplaceId\\\":\\\"ATVPDKIKX0DER\\\",\\\"ItemCondition\\\":\\\"New\\\"}]}\"\n  }'\n```\n\n---\n\n## Feedback API\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-amazon-store-pricing\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Product Pricing（含批量与 2022-05-01）结果符合预期。\"\n}\n```\n\nFile v1.0.7:references/onboarding.md\n\n# 解决认证和积分问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`（workbuddy 宿主加 `--channel workbuddy`）\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `积分/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.7:skill-card.md\n\n## Description:\n\n亚马逊店铺商品定价 skill that helps agents call Amazon SP-API Product Pricing operations through LinkFox, including pricing, competitive pricing, listing and item offers, batch offers, featured offer expected price, and competitive summary workflows.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal sellers, operators, and developers use this skill to retrieve Amazon store pricing and offer data for ASIN and SKU workflows, including single-item, batch, FOEP, and competitive-summary queries. It is intended for authorized LinkFox and Amazon store contexts where the user understands account, billing, and local data persistence implications.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The release evidence marks the package suspicious because a pricing-focused skill includes account login and payment helpers.\n\nMitigation: Install only when LinkFox is trusted for the related Amazon account, store, and billing workflows, and prefer API-key setup through the dedicated auth skill or the official LinkFox site.\n\nRisk: SMS-code login and payment-order flows can affect account access or billing if invoked unintentionally.\n\nMitigation: Do not enter SMS codes or initiate payment orders from this skill unless the user explicitly intended that onboarding or billing flow.\n\nRisk: Configurable LinkFox endpoint environment variables can redirect requests to non-default services.\n\nMitigation: Do not set custom LinkFox endpoint variables unless the endpoint is controlled and trusted.\n\nRisk: Full pricing responses are saved locally by the scripts.\n\nMitigation: Treat saved response files as sensitive store data and review the local linkfox session data directory before sharing or retaining outputs.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-amazon-store-pricing)\n- [LinkFox Publisher Profile](https://clawhub.ai/user/linkfox-ai)\n- [Artifact API Reference](artifact/references/api.md)\n- [Artifact Onboarding Reference](artifact/references/onboarding.md)\n- [Amazon SP-API getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing)\n- [Amazon SP-API getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)\n- [Amazon SP-API getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)\n- [Amazon SP-API getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)\n- [Amazon SP-API getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch)\n- [Amazon SP-API getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch)\n- [Amazon SP-API getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch)\n- [Amazon SP-API getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance, shell commands, and JSON responses saved to local files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Scripts write full pricing responses under a local linkfox session data directory and may print either full JSON or a summary depending on response size.]\n\n## Skill Version(s):\n\n1.0.7 (source: evidence.release.version)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.6: 16 files, 46978 bytes\n\nFiles: references/api.md (15447b), references/onboarding.md (2046b), scripts/_spapi_pricing_common.py (11092b), scripts/check_auth_dependency.py (10114b), scripts/get_competitive_pricing.py (9342b), scripts/get_item_offers.py (3335b), scripts/get_listing_offers.py (7707b), scripts/get_pricing.py (9662b), scripts/onboarding.py (24089b), scripts/post_competitive_summary_batch.py (3811b), scripts/post_featured_offer_expected_price_batch.py (3671b), scripts/post_item_offers_batch.py (3945b), scripts/post_listing_offers_batch.py (3714b), skill-card.md (3425b), SKILL.md (8543b), _meta.json (147b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: linkfox-amazon-store-pricing\ndescription: 亚马逊店铺商品定价（与 linkfox-amazon-store-auth / linkfox-amazon-store-report / linkfox-amazon-store-listings 同系列），经 /spApi/developerProxy 调用 SP-API Product Pricing：v0 的 getPricing、getCompetitivePricing、getListingOffers、getItemOffers、getItemOffersBatch、getListingOffersBatch；2022-05-01 的 getFeaturedOfferExpectedPriceBatch、getCompetitiveSummary。含 ASIN/SKU 单条与批量、FOEP、竞争摘要。当用户提到亚马逊定价、比价、低价报价、listing/item offers、batch pricing、FOEP、featured offer、competitive summary、Product Pricing、SP-API 价格 时触发。\n---\n\n# Amazon 店铺 Product Pricing\n\n本 skill 与 **`linkfox-amazon-store-auth`**、**`linkfox-amazon-store-report`**、**`linkfox-amazon-store-listings`** 同属 **Amazon Store** 系列：依赖 **`linkfox-amazon-store-auth`** 选店（`sellerId`+`region`）；直接 **`POST /spApi/developerProxy`** 传入 `sellerId`+`region`，由服务端解析 token（勿传 `amzAccessToken`，除非兼容旧调用）。转发上游 **GET** 或 **POST**。\n\n## 调用方式\n\n- **API 端点**：`POST /spApi/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 官方参考索引\n\n| 能力 | 文档 |\n|------|------|\n| getPricing | [getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) |\n| getCompetitivePricing | [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) |\n| getListingOffers | [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) |\n| getItemOffers | [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) |\n| getItemOffersBatch | [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) |\n| getListingOffersBatch | [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) |\n| getFeaturedOfferExpectedPriceBatch | [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) |\n| getCompetitiveSummary | [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary) |\n\n---\n\n## Prerequisites（必须先读）\n\n本 skill **依赖** **`linkfox-amazon-store-auth`**。\n\n1. 运行 `python scripts/check_auth_dependency.py`；若 exit code **42** 且 stderr 含 `DEPENDENCY_MISSING:`，请先安装 **`linkfox-amazon-store-auth`**。\n2. **不要**在本 skill 内绕过依赖实现授权或令牌逻辑。\n\n---\n\n## Current Capabilities（脚本一览）\n\n| 能力 | developerProxy `path`（要点） | 脚本 |\n|------|------------------------------|------|\n| getPricing | `products/pricing/v0/price` + Query | `get_pricing.py` |\n| getCompetitivePricing | `products/pricing/v0/competitivePrice` + Query | `get_competitive_pricing.py` |\n| getListingOffers | `products/pricing/v0/listings/{sku}/offers` + Query | `get_listing_offers.py` |\n| getItemOffers | `products/pricing/v0/items/{asin}/offers` + Query | `get_item_offers.py` |\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers`，POST JSON body | `post_item_offers_batch.py` |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers`，POST JSON body | `post_listing_offers_batch.py` |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice`，POST | `post_featured_offer_expected_price_batch.py` |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary`，POST | `post_competitive_summary_batch.py` |\n\n批量脚本（`post_*_batch.py`）在默认模式下会按 Amazon 要求**组装**子请求；高级用法可设 **`useAmazonRequestShape`: true**，直接传 **`requests`** 为官方原始数组（仍受条数上限约束）。共享逻辑见 **`scripts/_spapi_pricing_common.py`**（仅供同目录脚本 import，非独立 CLI）。\n\n---\n\n## Quick Parameters（摘要）\n\n- **getPricing / getCompetitivePricing**：`sellerId`、`region`、`marketplaceId`（或 `marketplaceIds` 取首）、`itemType`、`asins` 或 `skus`（≤20）；getPricing 另有 `itemCondition`、`offerType`；getCompetitivePricing 另有 `customerType`。\n- **getListingOffers / getItemOffers**：`sku`+path 或 **`asin`**+path；**`itemCondition` 必填**；可选 `customerType`。\n- **Item / Listing Offers Batch**：`requests` 数组，默认每项为简化对象（见 `references/api.md`）；**1～20** 条（FOEP 批量脚本为 **最多 40** 条）。\n- **getCompetitiveSummary 批量**：每项需 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组）；可选 **`lowestPricedOffersInputs`**。\n- **getFeaturedOfferExpectedPriceBatch**：每项需 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构以官方为准）。\n\n---\n\n## Scripts\n\n- `get_pricing.py` · `get_competitive_pricing.py` · `get_listing_offers.py` · `get_item_offers.py`\n- `post_item_offers_batch.py` · `post_listing_offers_batch.py` · `post_featured_offer_expected_price_batch.py` · `post_competitive_summary_batch.py`\n- `check_auth_dependency.py` · `_spapi_pricing_common.py`（内部模块）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_item_offers.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}'\n\npython scripts/post_item_offers_batch.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"requests\":[{\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}]}'\n```\n\n---\n\n## Display Rules\n\n1. **`MarketplaceId`**（单数）与 Listings 的 `marketplaceIds` 勿混用。\n2. 先看网关 **`errcode` / `httpStatus`**，再解析各脚本对应的解析字段（如 **`itemOffers`**、**`itemOffersBatch`**、**`competitiveSummary`** 等）。\n3. **POST** 类接口：`stdout` 中含 **`requestBody`**（脚本组装的 Amazon 请求体），便于排查。\n4. **白名单**：除 `products/pricing/...` 外，批量路径以 **`batches/products/pricing/...`** 开头；**1005** 时需后端放行对应前缀。\n5. 各接口 **Usage plan** 不同（尤其 2022-05-01 批量约 **0.033 req/s**），注意 **429**。\n\n---\n\n## Important Limitations\n\n- 权限：**Product Pricing** 及相关角色；部分 2022-05-01 能力可能另有应用内配置要求，以 Amazon 为准。\n- **FOEP 批量**：`segment` 须符合官方模型；条数上限脚本按 **40** 校验（与文档「up to 40」一致）。\n- 返回结构以 Amazon schema 为准；详见 **`references/api.md`**。\n\n## 积分消耗规则\n\n不消耗积分。\n\n**Feedback：** 见 `references/api.md`，`skillName`：`linkfox-amazon-store-pricing`。\n\n---\n*更多跨境 skill：[LinkFox Skills](https://skill.linkfox.com/)*\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-amazon-store-pricing\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1786099497396\n}\n\nFile v1.0.6:references/api.md\n\n# Amazon 店铺 Product Pricing API 参考（v0 + 2022-05-01 批量）\n\n本文档描述通过 **LinkFox 店铺网关** 调用 Selling Partner API **Product Pricing**（**v0** 与 **2022-05-01** 批量）：与 `linkfox-amazon-store-report`、`linkfox-amazon-store-listings` **一致**——先 **`POST /spApi/storeTokens`** 取 `accessToken`，再经 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**。\n\n> 官方入口：[getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) · [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) · [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) · [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) · [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) · [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) · [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) · [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n> ⚠️ **依赖**：需已安装并完成授权 **`linkfox-amazon-store-auth`**。应用需具备 **Product Pricing** 等相关角色/权限，否则上游可能返回 403。\n\n---\n\n## 调用规范（与 store-report 相同）\n\n| 项 | 说明 |\n|----|------|\n| **Base URL** | `${LINKFOX_TOOL_GATEWAY}`（默认 `https://tool-gateway.linkfox.com`；可用 `STORE_API_BASE_URL` 或 `SPAPI_BASE_URL` 覆盖） |\n| **网关认证** | Header `Authorization: <api_key>`，环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **店铺令牌** | `POST /spApi/storeTokens`，Body：`{\"sellerId\":\"...\",\"region\":\"NA|EU|FE\"}` → `accessToken` |\n| **SP-API 转发** | `POST /spApi/developerProxy`，Body 见下节 |\n\n---\n\n## `POST /spApi/developerProxy`（定价类 GET / POST）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| region | string | 是 | `NA` / `EU` / `FE` |\n| path | string | 是 | 不含主机名。示例：**`products/pricing/v0/price`**、**`products/pricing/v0/items/{Asin}/offers`**、**`batches/products/pricing/v0/itemOffers`**、**`batches/products/pricing/2022-05-01/items/competitiveSummary`** 等（见各节） |\n| method | string | 是 | **`GET`** 或 **`POST`**（与上游一致） |\n| amzAccessToken | string | 是 | `/spApi/storeTokens` 返回的 `accessToken` |\n| queryString | string | 视操作 | **无 `?` 前缀**。GET 定价类多 **必填**；POST 批量通常 **无** query，以 Amazon 为准 |\n| body | string | 视操作 | **POST** 时多为 **JSON 字符串**（与 `put_listings_item` 相同，见 listings `references/api.md`） |\n| contentType | string | 视操作 | POST 带 `body` 时一般为 **`application/json`** |\n\n**网关响应**：`errcode`、`errmsg`、`httpStatus`、`contentType`、`body`（字符串）。先 **`errcode`**，再 **`httpStatus`**，再解析 **`body`**。\n\n### 白名单与错误码\n\n- `path` 须在网关 **`sp-api.developer-proxy.allowed-path-prefixes`** 内。若 **`errcode=1005`**，需联系后端放行 **`products/pricing/`** 与 **`batches/products/pricing/`** 等前缀（以运维配置为准）。\n- 其它错误与 `linkfox-amazon-store-report` 的 Developer Proxy 说明一致。\n- HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和积分问题** 处理。\n- HTTP 402：按 SKILL.md 的 **## 解决认证和积分问题** 处理。\n\n---\n\n## getPricing — Query 参数（写入 `queryString`）\n\n官方参数名 **大小写敏感**。多值 **`Asins`** / **`Skus`** 采用重复键形式：`Asins=B0...&Asins=B0...`（本仓库脚本按此拼接）。\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id，例如美国 `ATVPDKIKX0DER`。与 Listings API 的 `marketplaceIds` 不同，此处为 **单数键名** |\n| **ItemType** | 是 | `Asin` 或 `Sku`（与下方 `Asins` / `Skus` 二选一对应） |\n| **Asins** | 与 ItemType 对应 | 当 `ItemType=Asin` 时必填；**最多 20** 个 ASIN |\n| **Skus** | 与 ItemType 对应 | 当 `ItemType=Sku` 时必填；**最多 20** 个卖家 SKU（注意 [URL 编码](https://developer-docs.amazon.com/sp-api/docs/url-encoding)） |\n| **ItemCondition** | 否 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **OfferType** | 否 | `B2C` 或 `B2B`；默认多为 B2C（以上游为准） |\n\n### 速率（文档默认值，以账号实际为准）\n\n- 约 **0.5 req/s**，burst **1**（见官方 Usage plan 表）。\n\n---\n\n## getCompetitivePricing — Query 参数（写入 `queryString`）\n\n与 getPricing 相同：**`MarketplaceId`**、**`ItemType`**（`Asin` / `Sku`）、**`Asins`** 或 **`Skus`**（每请求最多 **20** 个，重复键拼接）。差异如下：\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **CustomerType** | 否 | `Consumer` 或 `Business`；从 **消费者 / 企业买家** 视角看定价信息，默认多为 Consumer（以上游为准） |\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getCompetitivePricing Usage plan](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)）。\n\n> getCompetitivePricing **没有** getPricing 的 `ItemCondition`、`OfferType` 参数；二者用途不同，勿混用字段名。\n\n---\n\n## getListingOffers — Path 与 Query\n\n- **Path 模板**（写入 `developerProxy.path`）：\n\n```text\nproducts/pricing/v0/listings/{SellerSKU}/offers\n```\n\n其中 **`{SellerSKU}`** 为卖家 SKU，路径段须 **百分号编码**（与 `get_listings_item` 同理；脚本使用 `urllib.parse.quote(..., safe=\"\")`）。\n\n### Query（写入 `queryString`）\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id |\n| **ItemCondition** | 是 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **CustomerType** | 否 | `Consumer` 或 `Business`（默认多为 Consumer，以上游为准） |\n\n**语义**：针对**单个 SKU 刊登**返回较低报价类信息（官方描述为 lowest priced offers；具体结构见 [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)）。\n\n**速率（文档默认值）**：约 **1 req/s**，burst **2**（见官方 Usage plan）。\n\n### 成功响应（摘要）\n\n- **`httpStatus=200`** 时解析 `body`：`get_pricing.py` → **`pricing`**；`get_competitive_pricing.py` → **`competitivePricing`**；`get_listing_offers.py` → **`listingOffers`**；`get_item_offers.py` → **`itemOffers`**；`post_item_offers_batch.py` → **`itemOffersBatch`**；`post_listing_offers_batch.py` → **`listingOffersBatch`**；`post_featured_offer_expected_price_batch.py` → **`featuredOfferExpectedPriceBatch`**；`post_competitive_summary_batch.py` → **`competitiveSummary`**。\n\n---\n\n## getItemOffers — Path 与 Query\n\n- **Path**：`products/pricing/v0/items/{Asin}/offers`（`{Asin}` 路径编码）\n- **Query**：**`MarketplaceId`**（必填）、**`ItemCondition`**（必填）、**`CustomerType`**（可选）\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)）。\n\n---\n\n## 批量 POST（ItemOffers / ListingOffers / FOEP / CompetitiveSummary）\n\n上游均为 **`POST`** + **JSON body**，根字段为 **`requests`** 数组。子请求字段以 Amazon 模型为准；本仓库脚本在**默认模式**下将简化 JSON 展开为官方形状；若传 **`useAmazonRequestShape`: true**，则 **`requests`** 须已是 Amazon 原始对象（脚本只做条数校验）。\n\n| 操作 | `path` | 子请求条数（脚本校验） | 文档速率（默认，以账号为准） |\n|------|--------|------------------------|------------------------------|\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers` | 1～20 | 约 0.1 req/s，burst 1 |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers` | 1～20 | 约 0.5 req/s，burst 1 |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice` | 1～40 | 约 0.033 req/s，burst 1 |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary` | 1～20 | 约 0.033 req/s，burst 1 |\n\n**Item / Listing Offers 批量子请求（简化 → 官方）**：每条展开为 **`uri`**（以 `/` 开头的资源路径，**无** query）、**`method`:** `GET`、**`MarketplaceId`**、**`ItemCondition`**，以及可选 **`CustomerType`**、**`headers`**。Item 的 `uri` 形如 **`/products/pricing/v0/items/{Asin}/offers`**；Listing 的 `uri` 形如 **`/products/pricing/v0/listings/{SellerSKU}/offers`**（SKU 路径编码）。\n\n**getFeaturedOfferExpectedPriceBatch（简化）**：每条含 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构见官方）；脚本补充 **`uri`**、**`method`:** `POST`。\n\n**getCompetitiveSummary（简化）**：每条含 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组，如 `featuredBuyingOptions`），以及可选 **`lowestPricedOffersInputs`**；脚本补充 **`uri`**、**`method`:** `POST`。\n\n---\n\n## 脚本 JSON 入参（`get_pricing.py`）\n\n与 Amazon Query 的对应关系：\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | 仅用于 `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`。若只提供 **`marketplaceIds`** 数组，则取 **第一个** 并 stderr 警告（与同系列 listing 脚本习惯一致） |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins | 条件 | `itemType=Asin` 时至少 1 个、≤20 |\n| skus | 条件 | `itemType=Sku` 时至少 1 个、≤20 |\n| itemCondition | 否 | → `ItemCondition` |\n| offerType | 否 | → `OfferType` |\n| skipDepCheck | 否 | `true` 时跳过 `check_auth_dependency.py` |\n\n---\n\n## 脚本 JSON 入参（`get_competitive_pricing.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins / skus | 条件 | 与 getPricing 相同（1～20） |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_listing_offers.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| sku | 是 | 卖家 SKU → path 中的 `{SellerSKU}` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemCondition | 是 | → `ItemCondition` |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_item_offers.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| asin | 是 | path 中的 ASIN |\n| marketplaceId | 是* | Query `MarketplaceId` |\n| itemCondition | 是 | Query `ItemCondition` |\n| customerType | 否 | Query `CustomerType` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`post_item_offers_batch.py` / `post_listing_offers_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；默认每项 **item batch**：`asin`+`marketplaceId`+`itemCondition` 或 **listing batch**：`sku`+`marketplaceId`+`itemCondition` |\n| useAmazonRequestShape | 否 | `true` 时 `requests` 为 Amazon 原始子请求 |\n| skipDepCheck | 否 | 同左 |\n\n成功时 stdout 含 **`requestBody`**（已发送的 JSON 对象）。\n\n---\n\n## 脚本 JSON 入参（`post_featured_offer_expected_price_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～40；每项 `marketplaceId`、`sku`、`segment`（或 `useAmazonRequestShape`） |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## 脚本 JSON 入参（`post_competitive_summary_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；每项 `asin`、`marketplaceId`、`includedData`（数组），可选 `lowestPricedOffersInputs` |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## curl 示例\n\n**1）取 `accessToken`**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/storeTokens\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"sellerId\":\"A1BCDEFGHIJK2\",\"region\":\"NA\"}'\n```\n\n**2）getPricing（按 ASIN）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/price\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&ItemCondition=New\"\n  }'\n```\n\n> 请将示例 ASIN / token 换为真实值；多 ASIN 时重复 `Asins=` 键。\n\n**3）getCompetitivePricing（按 ASIN + 企业买家视角）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/competitivePrice\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&CustomerType=Business\"\n  }'\n```\n\n**4）getListingOffers（单 SKU；path 中 SKU 若含特殊字符须先编码）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/listings/My-Seller-SKU-001/offers\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemCondition=New\"\n  }'\n```\n\n**5）getItemOffersBatch（POST body 示意；`requests` 以实网为准）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"batches/products/pricing/v0/itemOffers\",\n    \"method\": \"POST\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"contentType\": \"application/json\",\n    \"body\": \"{\\\"requests\\\":[{\\\"uri\\\":\\\"/products/pricing/v0/items/B08N5WRWNW/offers\\\",\\\"method\\\":\\\"GET\\\",\\\"MarketplaceId\\\":\\\"ATVPDKIKX0DER\\\",\\\"ItemCondition\\\":\\\"New\\\"}]}\"\n  }'\n```\n\n---\n\n## Feedback API\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-amazon-store-pricing\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Product Pricing（含批量与 2022-05-01）结果符合预期。\"\n}\n```\n\nFile v1.0.6:references/onboarding.md\n\n# 解决认证和积分问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`（workbuddy 宿主加 `--channel workbuddy`）\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `积分/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.6:skill-card.md\n\n## Description:\n\nEnables agents to retrieve Amazon store Product Pricing data through LinkFox, including getPricing, competitive pricing, listing/item offers, featured offer expected price, and competitive summary operations for single-item and batch workflows.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal sellers, operators, and developers use this skill to query Amazon Product Pricing data for pricing checks, competitive offer review, featured-offer analysis, and batch pricing workflows from an agent session.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill includes account login, API-key generation, and billing or payment-order flows.\n\nMitigation: Provide phone numbers, SMS codes, API keys, plan selections, or payment choices only when intentionally resolving LinkFox authentication or billing, and review each payment step before proceeding.\n\nRisk: Credential-bearing LinkFox endpoints can be configured through environment variables.\n\nMitigation: Keep endpoint override variables unset unless you control and trust the destination.\n\nRisk: Saved response files may contain sensitive Amazon seller, pricing, or business data.\n\nMitigation: Run the skill in a trusted workspace and review local linkfox session files before sharing logs or project directories.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-amazon-store-pricing)\n- [Publisher profile](https://clawhub.ai/user/linkfox-ai)\n- [Amazon Product Pricing API reference](references/api.md)\n- [Authentication and billing onboarding](references/onboarding.md)\n- [Amazon SP-API getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing)\n- [Amazon SP-API getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)\n- [Amazon SP-API getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)\n- [Amazon SP-API getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)\n- [Amazon SP-API getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch)\n- [Amazon SP-API getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch)\n- [Amazon SP-API getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch)\n- [Amazon SP-API getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Files]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON API responses saved as local files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Full responses are written under a local linkfox session data directory; small responses may also be printed inline, while larger responses are summarized unless inline output is requested.]\n\n## Skill Version(s):\n\n1.0.6 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.5: 14 files, 38594 bytes\n\nFiles: references/api.md (15447b), scripts/_spapi_pricing_common.py (11116b), scripts/check_auth_dependency.py (10114b), scripts/get_competitive_pricing.py (9589b), scripts/get_item_offers.py (3556b), scripts/get_listing_offers.py (7954b), scripts/get_pricing.py (9909b), scripts/post_competitive_summary_batch.py (4032b), scripts/post_featured_offer_expected_price_batch.py (3892b), scripts/post_item_offers_batch.py (4166b), scripts/post_listing_offers_batch.py (3935b), skill-card.md (3185b), SKILL.md (9080b), _meta.json (147b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkfox-amazon-store-pricing\ndescription: 亚马逊店铺商品定价（与 linkfox-amazon-store-auth / linkfox-amazon-store-report / linkfox-amazon-store-listings 同系列），经 /spApi/developerProxy 调用 SP-API Product Pricing：v0 的 getPricing、getCompetitivePricing、getListingOffers、getItemOffers、getItemOffersBatch、getListingOffersBatch；2022-05-01 的 getFeaturedOfferExpectedPriceBatch、getCompetitiveSummary。含 ASIN/SKU 单条与批量、FOEP、竞争摘要。当用户提到亚马逊定价、比价、低价报价、listing/item offers、batch pricing、FOEP、featured offer、competitive summary、Product Pricing、SP-API 价格 时触发。\n---\n\n# Amazon 店铺 Product Pricing\n\n本 skill 与 **`linkfox-amazon-store-auth`**、**`linkfox-amazon-store-report`**、**`linkfox-amazon-store-listings`** 同属 **Amazon Store** 系列：先 **`POST /spApi/storeTokens`** 取 `accessToken`，再 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**（与 listings 的 PUT/PATCH 代理方式一致）。\n\n## 调用方式\n\n- **API 端点**：`POST /spApi/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用以下措施来处理：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n### 措施\n- 优先采用skill内的 onboarding.md 引导解决问题。\n- 如找不到 onboarding.md 文件，则加载 /linkfox-onboarding 这个skill并根据它的引导来处理。如未安装请先安装：\n    - 下载 https://agent-files.linkfox.com/skills/linkfox-onboarding/release.zip，解压后安装这个skill。如需用户授权才可下载，要询问用户获得授权，你不能自己放弃下载。\n- 兜底措施：仅当前面两个措施经过所有努力都走不通时，才提示用户依据 https://skill.linkfox.com/linkfoxskills/guide.htm 指引获取API Key，或去 https://os.linkfox.com/ 补充积分。\n\n## 官方参考索引\n\n| 能力 | 文档 |\n|------|------|\n| getPricing | [getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) |\n| getCompetitivePricing | [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) |\n| getListingOffers | [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) |\n| getItemOffers | [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) |\n| getItemOffersBatch | [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) |\n| getListingOffersBatch | [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) |\n| getFeaturedOfferExpectedPriceBatch | [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) |\n| getCompetitiveSummary | [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary) |\n\n---\n\n## Prerequisites（必须先读）\n\n本 skill **依赖** **`linkfox-amazon-store-auth`**。\n\n1. 运行 `python scripts/check_auth_dependency.py`；若 exit code **42** 且 stderr 含 `DEPENDENCY_MISSING:`，请先安装 **`linkfox-amazon-store-auth`**。\n2. **不要**在本 skill 内绕过依赖实现授权或令牌逻辑。\n\n---\n\n## Current Capabilities（脚本一览）\n\n| 能力 | developerProxy `path`（要点） | 脚本 |\n|------|------------------------------|------|\n| getPricing | `products/pricing/v0/price` + Query | `get_pricing.py` |\n| getCompetitivePricing | `products/pricing/v0/competitivePrice` + Query | `get_competitive_pricing.py` |\n| getListingOffers | `products/pricing/v0/listings/{sku}/offers` + Query | `get_listing_offers.py` |\n| getItemOffers | `products/pricing/v0/items/{asin}/offers` + Query | `get_item_offers.py` |\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers`，POST JSON body | `post_item_offers_batch.py` |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers`，POST JSON body | `post_listing_offers_batch.py` |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice`，POST | `post_featured_offer_expected_price_batch.py` |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary`，POST | `post_competitive_summary_batch.py` |\n\n批量脚本（`post_*_batch.py`）在默认模式下会按 Amazon 要求**组装**子请求；高级用法可设 **`useAmazonRequestShape`: true**，直接传 **`requests`** 为官方原始数组（仍受条数上限约束）。共享逻辑见 **`scripts/_spapi_pricing_common.py`**（仅供同目录脚本 import，非独立 CLI）。\n\n---\n\n## Quick Parameters（摘要）\n\n- **getPricing / getCompetitivePricing**：`sellerId`、`region`、`marketplaceId`（或 `marketplaceIds` 取首）、`itemType`、`asins` 或 `skus`（≤20）；getPricing 另有 `itemCondition`、`offerType`；getCompetitivePricing 另有 `customerType`。\n- **getListingOffers / getItemOffers**：`sku`+path 或 **`asin`**+path；**`itemCondition` 必填**；可选 `customerType`。\n- **Item / Listing Offers Batch**：`requests` 数组，默认每项为简化对象（见 `references/api.md`）；**1～20** 条（FOEP 批量脚本为 **最多 40** 条）。\n- **getCompetitiveSummary 批量**：每项需 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组）；可选 **`lowestPricedOffersInputs`**。\n- **getFeaturedOfferExpectedPriceBatch**：每项需 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构以官方为准）。\n\n---\n\n## Scripts\n\n- `get_pricing.py` · `get_competitive_pricing.py` · `get_listing_offers.py` · `get_item_offers.py`\n- `post_item_offers_batch.py` · `post_listing_offers_batch.py` · `post_featured_offer_expected_price_batch.py` · `post_competitive_summary_batch.py`\n- `check_auth_dependency.py` · `_spapi_pricing_common.py`（内部模块）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_item_offers.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}'\n\npython scripts/post_item_offers_batch.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"requests\":[{\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}]}'\n```\n\n---\n\n## Display Rules\n\n1. **`MarketplaceId`**（单数）与 Listings 的 `marketplaceIds` 勿混用。\n2. 先看网关 **`errcode` / `httpStatus`**，再解析各脚本对应的解析字段（如 **`itemOffers`**、**`itemOffersBatch`**、**`competitiveSummary`** 等）。\n3. **POST** 类接口：`stdout` 中含 **`requestBody`**（脚本组装的 Amazon 请求体），便于排查。\n4. **白名单**：除 `products/pricing/...` 外，批量路径以 **`batches/products/pricing/...`** 开头；**1005** 时需后端放行对应前缀。\n5. 各接口 **Usage plan** 不同（尤其 2022-05-01 批量约 **0.033 req/s**），注意 **429**。\n\n---\n\n## Important Limitations\n\n- 权限：**Product Pricing** 及相关角色；部分 2022-05-01 能力可能另有应用内配置要求，以 Amazon 为准。\n- **FOEP 批量**：`segment` 须符合官方模型；条数上限脚本按 **40** 校验（与文档「up to 40」一致）。\n- 返回结构以 Amazon schema 为准；详见 **`references/api.md`**。\n\n## 积分消耗规则\n\n不消耗积分。\n\n**Feedback：** 见 `references/api.md`，`skillName`：`linkfox-amazon-store-pricing`。\n\n---\n*更多跨境 skill：[LinkFox Skills](https://skill.linkfox.com/)*\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-amazon-store-pricing\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1783944333696\n}\n\nFile v1.0.5:references/api.md\n\n# Amazon 店铺 Product Pricing API 参考（v0 + 2022-05-01 批量）\n\n本文档描述通过 **LinkFox 店铺网关** 调用 Selling Partner API **Product Pricing**（**v0** 与 **2022-05-01** 批量）：与 `linkfox-amazon-store-report`、`linkfox-amazon-store-listings` **一致**——先 **`POST /spApi/storeTokens`** 取 `accessToken`，再经 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**。\n\n> 官方入口：[getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) · [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) · [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) · [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) · [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) · [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) · [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) · [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n> ⚠️ **依赖**：需已安装并完成授权 **`linkfox-amazon-store-auth`**。应用需具备 **Product Pricing** 等相关角色/权限，否则上游可能返回 403。\n\n---\n\n## 调用规范（与 store-report 相同）\n\n| 项 | 说明 |\n|----|------|\n| **Base URL** | `${LINKFOX_TOOL_GATEWAY}`（默认 `https://tool-gateway.linkfox.com`；可用 `STORE_API_BASE_URL` 或 `SPAPI_BASE_URL` 覆盖） |\n| **网关认证** | Header `Authorization: <api_key>`，环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **店铺令牌** | `POST /spApi/storeTokens`，Body：`{\"sellerId\":\"...\",\"region\":\"NA|EU|FE\"}` → `accessToken` |\n| **SP-API 转发** | `POST /spApi/developerProxy`，Body 见下节 |\n\n---\n\n## `POST /spApi/developerProxy`（定价类 GET / POST）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| region | string | 是 | `NA` / `EU` / `FE` |\n| path | string | 是 | 不含主机名。示例：**`products/pricing/v0/price`**、**`products/pricing/v0/items/{Asin}/offers`**、**`batches/products/pricing/v0/itemOffers`**、**`batches/products/pricing/2022-05-01/items/competitiveSummary`** 等（见各节） |\n| method | string | 是 | **`GET`** 或 **`POST`**（与上游一致） |\n| amzAccessToken | string | 是 | `/spApi/storeTokens` 返回的 `accessToken` |\n| queryString | string | 视操作 | **无 `?` 前缀**。GET 定价类多 **必填**；POST 批量通常 **无** query，以 Amazon 为准 |\n| body | string | 视操作 | **POST** 时多为 **JSON 字符串**（与 `put_listings_item` 相同，见 listings `references/api.md`） |\n| contentType | string | 视操作 | POST 带 `body` 时一般为 **`application/json`** |\n\n**网关响应**：`errcode`、`errmsg`、`httpStatus`、`contentType`、`body`（字符串）。先 **`errcode`**，再 **`httpStatus`**，再解析 **`body`**。\n\n### 白名单与错误码\n\n- `path` 须在网关 **`sp-api.developer-proxy.allowed-path-prefixes`** 内。若 **`errcode=1005`**，需联系后端放行 **`products/pricing/`** 与 **`batches/products/pricing/`** 等前缀（以运维配置为准）。\n- 其它错误与 `linkfox-amazon-store-report` 的 Developer Proxy 说明一致。\n- HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和积分问题** 处理。\n- HTTP 402：按 SKILL.md 的 **## 解决认证和积分问题** 处理。\n\n---\n\n## getPricing — Query 参数（写入 `queryString`）\n\n官方参数名 **大小写敏感**。多值 **`Asins`** / **`Skus`** 采用重复键形式：`Asins=B0...&Asins=B0...`（本仓库脚本按此拼接）。\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id，例如美国 `ATVPDKIKX0DER`。与 Listings API 的 `marketplaceIds` 不同，此处为 **单数键名** |\n| **ItemType** | 是 | `Asin` 或 `Sku`（与下方 `Asins` / `Skus` 二选一对应） |\n| **Asins** | 与 ItemType 对应 | 当 `ItemType=Asin` 时必填；**最多 20** 个 ASIN |\n| **Skus** | 与 ItemType 对应 | 当 `ItemType=Sku` 时必填；**最多 20** 个卖家 SKU（注意 [URL 编码](https://developer-docs.amazon.com/sp-api/docs/url-encoding)） |\n| **ItemCondition** | 否 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **OfferType** | 否 | `B2C` 或 `B2B`；默认多为 B2C（以上游为准） |\n\n### 速率（文档默认值，以账号实际为准）\n\n- 约 **0.5 req/s**，burst **1**（见官方 Usage plan 表）。\n\n---\n\n## getCompetitivePricing — Query 参数（写入 `queryString`）\n\n与 getPricing 相同：**`MarketplaceId`**、**`ItemType`**（`Asin` / `Sku`）、**`Asins`** 或 **`Skus`**（每请求最多 **20** 个，重复键拼接）。差异如下：\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **CustomerType** | 否 | `Consumer` 或 `Business`；从 **消费者 / 企业买家** 视角看定价信息，默认多为 Consumer（以上游为准） |\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getCompetitivePricing Usage plan](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)）。\n\n> getCompetitivePricing **没有** getPricing 的 `ItemCondition`、`OfferType` 参数；二者用途不同，勿混用字段名。\n\n---\n\n## getListingOffers — Path 与 Query\n\n- **Path 模板**（写入 `developerProxy.path`）：\n\n```text\nproducts/pricing/v0/listings/{SellerSKU}/offers\n```\n\n其中 **`{SellerSKU}`** 为卖家 SKU，路径段须 **百分号编码**（与 `get_listings_item` 同理；脚本使用 `urllib.parse.quote(..., safe=\"\")`）。\n\n### Query（写入 `queryString`）\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id |\n| **ItemCondition** | 是 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **CustomerType** | 否 | `Consumer` 或 `Business`（默认多为 Consumer，以上游为准） |\n\n**语义**：针对**单个 SKU 刊登**返回较低报价类信息（官方描述为 lowest priced offers；具体结构见 [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)）。\n\n**速率（文档默认值）**：约 **1 req/s**，burst **2**（见官方 Usage plan）。\n\n### 成功响应（摘要）\n\n- **`httpStatus=200`** 时解析 `body`：`get_pricing.py` → **`pricing`**；`get_competitive_pricing.py` → **`competitivePricing`**；`get_listing_offers.py` → **`listingOffers`**；`get_item_offers.py` → **`itemOffers`**；`post_item_offers_batch.py` → **`itemOffersBatch`**；`post_listing_offers_batch.py` → **`listingOffersBatch`**；`post_featured_offer_expected_price_batch.py` → **`featuredOfferExpectedPriceBatch`**；`post_competitive_summary_batch.py` → **`competitiveSummary`**。\n\n---\n\n## getItemOffers — Path 与 Query\n\n- **Path**：`products/pricing/v0/items/{Asin}/offers`（`{Asin}` 路径编码）\n- **Query**：**`MarketplaceId`**（必填）、**`ItemCondition`**（必填）、**`CustomerType`**（可选）\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)）。\n\n---\n\n## 批量 POST（ItemOffers / ListingOffers / FOEP / CompetitiveSummary）\n\n上游均为 **`POST`** + **JSON body**，根字段为 **`requests`** 数组。子请求字段以 Amazon 模型为准；本仓库脚本在**默认模式**下将简化 JSON 展开为官方形状；若传 **`useAmazonRequestShape`: true**，则 **`requests`** 须已是 Amazon 原始对象（脚本只做条数校验）。\n\n| 操作 | `path` | 子请求条数（脚本校验） | 文档速率（默认，以账号为准） |\n|------|--------|------------------------|------------------------------|\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers` | 1～20 | 约 0.1 req/s，burst 1 |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers` | 1～20 | 约 0.5 req/s，burst 1 |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice` | 1～40 | 约 0.033 req/s，burst 1 |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary` | 1～20 | 约 0.033 req/s，burst 1 |\n\n**Item / Listing Offers 批量子请求（简化 → 官方）**：每条展开为 **`uri`**（以 `/` 开头的资源路径，**无** query）、**`method`:** `GET`、**`MarketplaceId`**、**`ItemCondition`**，以及可选 **`CustomerType`**、**`headers`**。Item 的 `uri` 形如 **`/products/pricing/v0/items/{Asin}/offers`**；Listing 的 `uri` 形如 **`/products/pricing/v0/listings/{SellerSKU}/offers`**（SKU 路径编码）。\n\n**getFeaturedOfferExpectedPriceBatch（简化）**：每条含 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构见官方）；脚本补充 **`uri`**、**`method`:** `POST`。\n\n**getCompetitiveSummary（简化）**：每条含 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组，如 `featuredBuyingOptions`），以及可选 **`lowestPricedOffersInputs`**；脚本补充 **`uri`**、**`method`:** `POST`。\n\n---\n\n## 脚本 JSON 入参（`get_pricing.py`）\n\n与 Amazon Query 的对应关系：\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | 仅用于 `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`。若只提供 **`marketplaceIds`** 数组，则取 **第一个** 并 stderr 警告（与同系列 listing 脚本习惯一致） |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins | 条件 | `itemType=Asin` 时至少 1 个、≤20 |\n| skus | 条件 | `itemType=Sku` 时至少 1 个、≤20 |\n| itemCondition | 否 | → `ItemCondition` |\n| offerType | 否 | → `OfferType` |\n| skipDepCheck | 否 | `true` 时跳过 `check_auth_dependency.py` |\n\n---\n\n## 脚本 JSON 入参（`get_competitive_pricing.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins / skus | 条件 | 与 getPricing 相同（1～20） |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_listing_offers.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| sku | 是 | 卖家 SKU → path 中的 `{SellerSKU}` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemCondition | 是 | → `ItemCondition` |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_item_offers.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| asin | 是 | path 中的 ASIN |\n| marketplaceId | 是* | Query `MarketplaceId` |\n| itemCondition | 是 | Query `ItemCondition` |\n| customerType | 否 | Query `CustomerType` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`post_item_offers_batch.py` / `post_listing_offers_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；默认每项 **item batch**：`asin`+`marketplaceId`+`itemCondition` 或 **listing batch**：`sku`+`marketplaceId`+`itemCondition` |\n| useAmazonRequestShape | 否 | `true` 时 `requests` 为 Amazon 原始子请求 |\n| skipDepCheck | 否 | 同左 |\n\n成功时 stdout 含 **`requestBody`**（已发送的 JSON 对象）。\n\n---\n\n## 脚本 JSON 入参（`post_featured_offer_expected_price_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～40；每项 `marketplaceId`、`sku`、`segment`（或 `useAmazonRequestShape`） |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## 脚本 JSON 入参（`post_competitive_summary_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；每项 `asin`、`marketplaceId`、`includedData`（数组），可选 `lowestPricedOffersInputs` |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## curl 示例\n\n**1）取 `accessToken`**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/storeTokens\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"sellerId\":\"A1BCDEFGHIJK2\",\"region\":\"NA\"}'\n```\n\n**2）getPricing（按 ASIN）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/price\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&ItemCondition=New\"\n  }'\n```\n\n> 请将示例 ASIN / token 换为真实值；多 ASIN 时重复 `Asins=` 键。\n\n**3）getCompetitivePricing（按 ASIN + 企业买家视角）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/competitivePrice\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&CustomerType=Business\"\n  }'\n```\n\n**4）getListingOffers（单 SKU；path 中 SKU 若含特殊字符须先编码）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/listings/My-Seller-SKU-001/offers\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemCondition=New\"\n  }'\n```\n\n**5）getItemOffersBatch（POST body 示意；`requests` 以实网为准）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"batches/products/pricing/v0/itemOffers\",\n    \"method\": \"POST\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"contentType\": \"application/json\",\n    \"body\": \"{\\\"requests\\\":[{\\\"uri\\\":\\\"/products/pricing/v0/items/B08N5WRWNW/offers\\\",\\\"method\\\":\\\"GET\\\",\\\"MarketplaceId\\\":\\\"ATVPDKIKX0DER\\\",\\\"ItemCondition\\\":\\\"New\\\"}]}\"\n  }'\n```\n\n---\n\n## Feedback API\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-amazon-store-pricing\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Product Pricing（含批量与 2022-05-01）结果符合预期。\"\n}\n```\n\nFile v1.0.5:skill-card.md\n\n## Description: <br>\nHelps agents query Amazon store Product Pricing data through LinkFox, including single-item and batch pricing, listing offers, item offers, featured offer expected price, and competitive summary results. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nMarketplace operators, sellers, and developers use this skill to retrieve Amazon store pricing and offer data by ASIN or SKU, compare competitive pricing, and inspect batch Product Pricing results. It requires LinkFox and Amazon store authorization and should be used only with seller data the user is authorized to access. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill handles LinkFox API credentials, Amazon store access tokens, and seller pricing data. <br>\nMitigation: Install only if you trust linkfox-ai and LinkFox with that access; verify the configured API key and gateway environment variables before use. <br>\nRisk: Full API responses may be saved locally and may contain sensitive business pricing information. <br>\nMitigation: Review the LinkFox session data directory, restrict access to saved files, and delete response files after use when they contain sensitive data. <br>\n\n\n## Reference(s): <br>\n- [Amazon Store Product Pricing API Reference](references/api.md) <br>\n- [Amazon SP-API getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) <br>\n- [Amazon SP-API getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) <br>\n- [Amazon SP-API getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) <br>\n- [Amazon SP-API getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) <br>\n- [Amazon SP-API getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) <br>\n- [Amazon SP-API getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) <br>\n- [Amazon SP-API getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) <br>\n- [Amazon SP-API getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, JSON, shell commands, files, guidance] <br>\n**Output Format:** [Markdown guidance with shell commands and JSON API responses saved as local files or printed to stdout] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Full responses are saved under a LinkFox session data directory; large responses are summarized unless inline output is requested.] <br>\n\n## Skill Version(s): <br>\n1.0.5 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.4: 14 files, 37718 bytes\n\nFiles: references/api.md (15199b), scripts/_spapi_pricing_common.py (11033b), scripts/check_auth_dependency.py (10114b), scripts/get_competitive_pricing.py (9506b), scripts/get_item_offers.py (3556b), scripts/get_listing_offers.py (7871b), scripts/get_pricing.py (9826b), scripts/post_competitive_summary_batch.py (4032b), scripts/post_featured_offer_expected_price_batch.py (3892b), scripts/post_item_offers_batch.py (4166b), scripts/post_listing_offers_batch.py (3935b), skill-card.md (3512b), SKILL.md (7946b), _meta.json (147b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkfox-amazon-store-pricing\ndescription: 亚马逊店铺商品定价（与 linkfox-amazon-store-auth / linkfox-amazon-store-report / linkfox-amazon-store-listings 同系列），经 /spApi/developerProxy 调用 SP-API Product Pricing：v0 的 getPricing、getCompetitivePricing、getListingOffers、getItemOffers、getItemOffersBatch、getListingOffersBatch；2022-05-01 的 getFeaturedOfferExpectedPriceBatch、getCompetitiveSummary。含 ASIN/SKU 单条与批量、FOEP、竞争摘要。当用户提到亚马逊定价、比价、低价报价、listing/item offers、batch pricing、FOEP、featured offer、competitive summary、Product Pricing、SP-API 价格 时触发。\n---\n\n# Amazon 店铺 Product Pricing\n\n本 skill 与 **`linkfox-amazon-store-auth`**、**`linkfox-amazon-store-report`**、**`linkfox-amazon-store-listings`** 同属 **Amazon Store** 系列：先 **`POST /spApi/storeTokens`** 取 `accessToken`，再 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**（与 listings 的 PUT/PATCH 代理方式一致）。\n\n## 调用方式\n\n- **API 端点**：`POST /spApi/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 官方参考索引\n\n| 能力 | 文档 |\n|------|------|\n| getPricing | [getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) |\n| getCompetitivePricing | [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) |\n| getListingOffers | [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) |\n| getItemOffers | [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) |\n| getItemOffersBatch | [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) |\n| getListingOffersBatch | [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) |\n| getFeaturedOfferExpectedPriceBatch | [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) |\n| getCompetitiveSummary | [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary) |\n\n---\n\n## Prerequisites（必须先读）\n\n本 skill **依赖** **`linkfox-amazon-store-auth`**。\n\n1. 运行 `python scripts/check_auth_dependency.py`；若 exit code **42** 且 stderr 含 `DEPENDENCY_MISSING:`，请先安装 **`linkfox-amazon-store-auth`**。\n2. **不要**在本 skill 内绕过依赖实现授权或令牌逻辑。\n\n---\n\n## Current Capabilities（脚本一览）\n\n| 能力 | developerProxy `path`（要点） | 脚本 |\n|------|------------------------------|------|\n| getPricing | `products/pricing/v0/price` + Query | `get_pricing.py` |\n| getCompetitivePricing | `products/pricing/v0/competitivePrice` + Query | `get_competitive_pricing.py` |\n| getListingOffers | `products/pricing/v0/listings/{sku}/offers` + Query | `get_listing_offers.py` |\n| getItemOffers | `products/pricing/v0/items/{asin}/offers` + Query | `get_item_offers.py` |\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers`，POST JSON body | `post_item_offers_batch.py` |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers`，POST JSON body | `post_listing_offers_batch.py` |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice`，POST | `post_featured_offer_expected_price_batch.py` |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary`，POST | `post_competitive_summary_batch.py` |\n\n批量脚本（`post_*_batch.py`）在默认模式下会按 Amazon 要求**组装**子请求；高级用法可设 **`useAmazonRequestShape`: true**，直接传 **`requests`** 为官方原始数组（仍受条数上限约束）。共享逻辑见 **`scripts/_spapi_pricing_common.py`**（仅供同目录脚本 import，非独立 CLI）。\n\n---\n\n## Quick Parameters（摘要）\n\n- **getPricing / getCompetitivePricing**：`sellerId`、`region`、`marketplaceId`（或 `marketplaceIds` 取首）、`itemType`、`asins` 或 `skus`（≤20）；getPricing 另有 `itemCondition`、`offerType`；getCompetitivePricing 另有 `customerType`。\n- **getListingOffers / getItemOffers**：`sku`+path 或 **`asin`**+path；**`itemCondition` 必填**；可选 `customerType`。\n- **Item / Listing Offers Batch**：`requests` 数组，默认每项为简化对象（见 `references/api.md`）；**1～20** 条（FOEP 批量脚本为 **最多 40** 条）。\n- **getCompetitiveSummary 批量**：每项需 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组）；可选 **`lowestPricedOffersInputs`**。\n- **getFeaturedOfferExpectedPriceBatch**：每项需 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构以官方为准）。\n\n---\n\n## Scripts\n\n- `get_pricing.py` · `get_competitive_pricing.py` · `get_listing_offers.py` · `get_item_offers.py`\n- `post_item_offers_batch.py` · `post_listing_offers_batch.py` · `post_featured_offer_expected_price_batch.py` · `post_competitive_summary_batch.py`\n- `check_auth_dependency.py` · `_spapi_pricing_common.py`（内部模块）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_item_offers.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}'\n\npython scripts/post_item_offers_batch.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"requests\":[{\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}]}'\n```\n\n---\n\n## Display Rules\n\n1. **`MarketplaceId`**（单数）与 Listings 的 `marketplaceIds` 勿混用。\n2. 先看网关 **`errcode` / `httpStatus`**，再解析各脚本对应的解析字段（如 **`itemOffers`**、**`itemOffersBatch`**、**`competitiveSummary`** 等）。\n3. **POST** 类接口：`stdout` 中含 **`requestBody`**（脚本组装的 Amazon 请求体），便于排查。\n4. **白名单**：除 `products/pricing/...` 外，批量路径以 **`batches/products/pricing/...`** 开头；**1005** 时需后端放行对应前缀。\n5. 各接口 **Usage plan** 不同（尤其 2022-05-01 批量约 **0.033 req/s**），注意 **429**。\n\n---\n\n## Important Limitations\n\n- 权限：**Product Pricing** 及相关角色；部分 2022-05-01 能力可能另有应用内配置要求，以 Amazon 为准。\n- **FOEP 批量**：`segment` 须符合官方模型；条数上限脚本按 **40** 校验（与文档「up to 40」一致）。\n- 返回结构以 Amazon schema 为准；详见 **`references/api.md`**。\n\n**Feedback：** 见 `references/api.md`，`skillName`：`linkfox-amazon-store-pricing`。\n\n---\n*更多跨境 skill：[LinkFox Skills](https://skill.linkfox.com/)*\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-amazon-store-pricing\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783336441089\n}\n\nFile v1.0.4:references/api.md\n\n# Amazon 店铺 Product Pricing API 参考（v0 + 2022-05-01 批量）\n\n本文档描述通过 **LinkFox 店铺网关** 调用 Selling Partner API **Product Pricing**（**v0** 与 **2022-05-01** 批量）：与 `linkfox-amazon-store-report`、`linkfox-amazon-store-listings` **一致**——先 **`POST /spApi/storeTokens`** 取 `accessToken`，再经 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**。\n\n> 官方入口：[getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) · [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) · [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) · [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) · [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) · [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) · [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) · [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n> ⚠️ **依赖**：需已安装并完成授权 **`linkfox-amazon-store-auth`**。应用需具备 **Product Pricing** 等相关角色/权限，否则上游可能返回 403。\n\n---\n\n## 调用规范（与 store-report 相同）\n\n| 项 | 说明 |\n|----|------|\n| **Base URL** | `${LINKFOX_TOOL_GATEWAY}`（默认 `https://tool-gateway.linkfox.com`；可用 `STORE_API_BASE_URL` 或 `SPAPI_BASE_URL` 覆盖） |\n| **网关认证** | Header `Authorization: <api_key>`，环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` |\n| **店铺令牌** | `POST /spApi/storeTokens`，Body：`{\"sellerId\":\"...\",\"region\":\"NA|EU|FE\"}` → `accessToken` |\n| **SP-API 转发** | `POST /spApi/developerProxy`，Body 见下节 |\n\n---\n\n## `POST /spApi/developerProxy`（定价类 GET / POST）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| region | string | 是 | `NA` / `EU` / `FE` |\n| path | string | 是 | 不含主机名。示例：**`products/pricing/v0/price`**、**`products/pricing/v0/items/{Asin}/offers`**、**`batches/products/pricing/v0/itemOffers`**、**`batches/products/pricing/2022-05-01/items/competitiveSummary`** 等（见各节） |\n| method | string | 是 | **`GET`** 或 **`POST`**（与上游一致） |\n| amzAccessToken | string | 是 | `/spApi/storeTokens` 返回的 `accessToken` |\n| queryString | string | 视操作 | **无 `?` 前缀**。GET 定价类多 **必填**；POST 批量通常 **无** query，以 Amazon 为准 |\n| body | string | 视操作 | **POST** 时多为 **JSON 字符串**（与 `put_listings_item` 相同，见 listings `references/api.md`） |\n| contentType | string | 视操作 | POST 带 `body` 时一般为 **`application/json`** |\n\n**网关响应**：`errcode`、`errmsg`、`httpStatus`、`contentType`、`body`（字符串）。先 **`errcode`**，再 **`httpStatus`**，再解析 **`body`**。\n\n### 白名单与错误码\n\n- `path` 须在网关 **`sp-api.developer-proxy.allowed-path-prefixes`** 内。若 **`errcode=1005`**，需联系后端放行 **`products/pricing/`** 与 **`batches/products/pricing/`** 等前缀（以运维配置为准）。\n- 其它错误与 `linkfox-amazon-store-report` 的 Developer Proxy 说明一致。\n\n---\n\n## getPricing — Query 参数（写入 `queryString`）\n\n官方参数名 **大小写敏感**。多值 **`Asins`** / **`Skus`** 采用重复键形式：`Asins=B0...&Asins=B0...`（本仓库脚本按此拼接）。\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id，例如美国 `ATVPDKIKX0DER`。与 Listings API 的 `marketplaceIds` 不同，此处为 **单数键名** |\n| **ItemType** | 是 | `Asin` 或 `Sku`（与下方 `Asins` / `Skus` 二选一对应） |\n| **Asins** | 与 ItemType 对应 | 当 `ItemType=Asin` 时必填；**最多 20** 个 ASIN |\n| **Skus** | 与 ItemType 对应 | 当 `ItemType=Sku` 时必填；**最多 20** 个卖家 SKU（注意 [URL 编码](https://developer-docs.amazon.com/sp-api/docs/url-encoding)） |\n| **ItemCondition** | 否 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **OfferType** | 否 | `B2C` 或 `B2B`；默认多为 B2C（以上游为准） |\n\n### 速率（文档默认值，以账号实际为准）\n\n- 约 **0.5 req/s**，burst **1**（见官方 Usage plan 表）。\n\n---\n\n## getCompetitivePricing — Query 参数（写入 `queryString`）\n\n与 getPricing 相同：**`MarketplaceId`**、**`ItemType`**（`Asin` / `Sku`）、**`Asins`** 或 **`Skus`**（每请求最多 **20** 个，重复键拼接）。差异如下：\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **CustomerType** | 否 | `Consumer` 或 `Business`；从 **消费者 / 企业买家** 视角看定价信息，默认多为 Consumer（以上游为准） |\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getCompetitivePricing Usage plan](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)）。\n\n> getCompetitivePricing **没有** getPricing 的 `ItemCondition`、`OfferType` 参数；二者用途不同，勿混用字段名。\n\n---\n\n## getListingOffers — Path 与 Query\n\n- **Path 模板**（写入 `developerProxy.path`）：\n\n```text\nproducts/pricing/v0/listings/{SellerSKU}/offers\n```\n\n其中 **`{SellerSKU}`** 为卖家 SKU，路径段须 **百分号编码**（与 `get_listings_item` 同理；脚本使用 `urllib.parse.quote(..., safe=\"\")`）。\n\n### Query（写入 `queryString`）\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id |\n| **ItemCondition** | 是 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **CustomerType** | 否 | `Consumer` 或 `Business`（默认多为 Consumer，以上游为准） |\n\n**语义**：针对**单个 SKU 刊登**返回较低报价类信息（官方描述为 lowest priced offers；具体结构见 [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)）。\n\n**速率（文档默认值）**：约 **1 req/s**，burst **2**（见官方 Usage plan）。\n\n### 成功响应（摘要）\n\n- **`httpStatus=200`** 时解析 `body`：`get_pricing.py` → **`pricing`**；`get_competitive_pricing.py` → **`competitivePricing`**；`get_listing_offers.py` → **`listingOffers`**；`get_item_offers.py` → **`itemOffers`**；`post_item_offers_batch.py` → **`itemOffersBatch`**；`post_listing_offers_batch.py` → **`listingOffersBatch`**；`post_featured_offer_expected_price_batch.py` → **`featuredOfferExpectedPriceBatch`**；`post_competitive_summary_batch.py` → **`competitiveSummary`**。\n\n---\n\n## getItemOffers — Path 与 Query\n\n- **Path**：`products/pricing/v0/items/{Asin}/offers`（`{Asin}` 路径编码）\n- **Query**：**`MarketplaceId`**（必填）、**`ItemCondition`**（必填）、**`CustomerType`**（可选）\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)）。\n\n---\n\n## 批量 POST（ItemOffers / ListingOffers / FOEP / CompetitiveSummary）\n\n上游均为 **`POST`** + **JSON body**，根字段为 **`requests`** 数组。子请求字段以 Amazon 模型为准；本仓库脚本在**默认模式**下将简化 JSON 展开为官方形状；若传 **`useAmazonRequestShape`: true**，则 **`requests`** 须已是 Amazon 原始对象（脚本只做条数校验）。\n\n| 操作 | `path` | 子请求条数（脚本校验） | 文档速率（默认，以账号为准） |\n|------|--------|------------------------|------------------------------|\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers` | 1～20 | 约 0.1 req/s，burst 1 |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers` | 1～20 | 约 0.5 req/s，burst 1 |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice` | 1～40 | 约 0.033 req/s，burst 1 |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary` | 1～20 | 约 0.033 req/s，burst 1 |\n\n**Item / Listing Offers 批量子请求（简化 → 官方）**：每条展开为 **`uri`**（以 `/` 开头的资源路径，**无** query）、**`method`:** `GET`、**`MarketplaceId`**、**`ItemCondition`**，以及可选 **`CustomerType`**、**`headers`**。Item 的 `uri` 形如 **`/products/pricing/v0/items/{Asin}/offers`**；Listing 的 `uri` 形如 **`/products/pricing/v0/listings/{SellerSKU}/offers`**（SKU 路径编码）。\n\n**getFeaturedOfferExpectedPriceBatch（简化）**：每条含 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构见官方）；脚本补充 **`uri`**、**`method`:** `POST`。\n\n**getCompetitiveSummary（简化）**：每条含 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组，如 `featuredBuyingOptions`），以及可选 **`lowestPricedOffersInputs`**；脚本补充 **`uri`**、**`method`:** `POST`。\n\n---\n\n## 脚本 JSON 入参（`get_pricing.py`）\n\n与 Amazon Query 的对应关系：\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | 仅用于 `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`。若只提供 **`marketplaceIds`** 数组，则取 **第一个** 并 stderr 警告（与同系列 listing 脚本习惯一致） |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins | 条件 | `itemType=Asin` 时至少 1 个、≤20 |\n| skus | 条件 | `itemType=Sku` 时至少 1 个、≤20 |\n| itemCondition | 否 | → `ItemCondition` |\n| offerType | 否 | → `OfferType` |\n| skipDepCheck | 否 | `true` 时跳过 `check_auth_dependency.py` |\n\n---\n\n## 脚本 JSON 入参（`get_competitive_pricing.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins / skus | 条件 | 与 getPricing 相同（1～20） |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_listing_offers.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| sku | 是 | 卖家 SKU → path 中的 `{SellerSKU}` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemCondition | 是 | → `ItemCondition` |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_item_offers.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| asin | 是 | path 中的 ASIN |\n| marketplaceId | 是* | Query `MarketplaceId` |\n| itemCondition | 是 | Query `ItemCondition` |\n| customerType | 否 | Query `CustomerType` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`post_item_offers_batch.py` / `post_listing_offers_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；默认每项 **item batch**：`asin`+`marketplaceId`+`itemCondition` 或 **listing batch**：`sku`+`marketplaceId`+`itemCondition` |\n| useAmazonRequestShape | 否 | `true` 时 `requests` 为 Amazon 原始子请求 |\n| skipDepCheck | 否 | 同左 |\n\n成功时 stdout 含 **`requestBody`**（已发送的 JSON 对象）。\n\n---\n\n## 脚本 JSON 入参（`post_featured_offer_expected_price_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～40；每项 `marketplaceId`、`sku`、`segment`（或 `useAmazonRequestShape`） |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## 脚本 JSON 入参（`post_competitive_summary_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；每项 `asin`、`marketplaceId`、`includedData`（数组），可选 `lowestPricedOffersInputs` |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## curl 示例\n\n**1）取 `accessToken`**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/storeTokens\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"sellerId\":\"A1BCDEFGHIJK2\",\"region\":\"NA\"}'\n```\n\n**2）getPricing（按 ASIN）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/price\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&ItemCondition=New\"\n  }'\n```\n\n> 请将示例 ASIN / token 换为真实值；多 ASIN 时重复 `Asins=` 键。\n\n**3）getCompetitivePricing（按 ASIN + 企业买家视角）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/competitivePrice\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&CustomerType=Business\"\n  }'\n```\n\n**4）getListingOffers（单 SKU；path 中 SKU 若含特殊字符须先编码）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/listings/My-Seller-SKU-001/offers\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemCondition=New\"\n  }'\n```\n\n**5）getItemOffersBatch（POST body 示意；`requests` 以实网为准）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"batches/products/pricing/v0/itemOffers\",\n    \"method\": \"POST\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"contentType\": \"application/json\",\n    \"body\": \"{\\\"requests\\\":[{\\\"uri\\\":\\\"/products/pricing/v0/items/B08N5WRWNW/offers\\\",\\\"method\\\":\\\"GET\\\",\\\"MarketplaceId\\\":\\\"ATVPDKIKX0DER\\\",\\\"ItemCondition\\\":\\\"New\\\"}]}\"\n  }'\n```\n\n---\n\n## Feedback API\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-amazon-store-pricing\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Product Pricing（含批量与 2022-05-01）结果符合预期。\"\n}\n```\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nCalls Amazon Selling Partner API Product Pricing endpoints through LinkFox's gateway for single and batch ASIN/SKU pricing, listing and item offers, featured offer expected price, and competitive summary lookups. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal sellers, marketplace operators, and developers use this skill to retrieve Amazon store pricing, offer, featured-offer, and competitive-summary data for ASINs and SKUs. It supports agent workflows that need structured Product Pricing API calls and saved JSON responses for later inspection. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill handles seller access tokens and confidential pricing or account data through a configurable proxy. <br>\nMitigation: Install only when the publisher and proxy destination are trusted, and avoid production seller tokens until data handling is reviewed. <br>\nRisk: Full API responses may be persisted locally and can include sensitive pricing or account details. <br>\nMitigation: Run the skill in a controlled workspace, review saved response files, and delete stored data when it is no longer needed. <br>\nRisk: Repeated calls can consume LinkFox credits and trigger Amazon SP-API throttling. <br>\nMitigation: Confirm additional requests before retrying or expanding searches, and respect the documented per-endpoint rate limits. <br>\n\n\n## Reference(s): <br>\n- [Skill API Reference](references/api.md) <br>\n- [ClawHub Skill Listing](https://clawhub.ai/linkfox-ai/skills/linkfox-amazon-store-pricing) <br>\n- [LinkFox Publisher Profile](https://clawhub.ai/user/linkfox-ai) <br>\n- [Amazon SP-API getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) <br>\n- [Amazon SP-API getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) <br>\n- [Amazon SP-API getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) <br>\n- [Amazon SP-API getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) <br>\n- [Amazon SP-API getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) <br>\n- [Amazon SP-API getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) <br>\n- [Amazon SP-API getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) <br>\n- [Amazon SP-API getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [API calls, JSON files, Shell commands, Configuration guidance] <br>\n**Output Format:** [JSON responses saved to local files, with stdout JSON or summaries depending on response size] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires LinkFox API credentials and an installed Amazon store auth dependency; scripts accept JSON parameters.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.3: 13 files, 36219 bytes\n\nFiles: references/api.md (15199b), scripts/_spapi_pricing_common.py (11033b), scripts/check_auth_dependency.py (10114b), scripts/get_competitive_pricing.py (9506b), scripts/get_item_offers.py (3556b), scripts/get_listing_offers.py (7871b), scripts/get_pricing.py (9826b), scripts/post_competitive_summary_batch.py (4032b), scripts/post_featured_offer_expected_price_batch.py (3892b), scripts/post_item_offers_batch.py (4166b), scripts/post_listing_offers_batch.py (3935b), SKILL.md (7946b), _meta.json (147b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: linkfox-amazon-store-pricing\ndescription: 亚马逊店铺商品定价（与 linkfox-amazon-store-auth / linkfox-amazon-store-report / linkfox-amazon-store-listings 同系列），经 /spApi/developerProxy 调用 SP-API Product Pricing：v0 的 getPricing、getCompetitivePricing、getListingOffers、getItemOffers、getItemOffersBatch、getListingOffersBatch；2022-05-01 的 getFeaturedOfferExpectedPriceBatch、getCompetitiveSummary。含 ASIN/SKU 单条与批量、FOEP、竞争摘要。当用户提到亚马逊定价、比价、低价报价、listing/item offers、batch pricing、FOEP、featured offer、competitive summary、Product Pricing、SP-API 价格 时触发。\n---\n\n# Amazon 店铺 Product Pricing\n\n本 skill 与 **`linkfox-amazon-store-auth`**、**`linkfox-amazon-store-report`**、**`linkfox-amazon-store-listings`** 同属 **Amazon Store** 系列：先 **`POST /spApi/storeTokens`** 取 `accessToken`，再 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**（与 listings 的 PUT/PATCH 代理方式一致）。\n\n## 调用方式\n\n- **API 端点**：`POST /spApi/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 官方参考索引\n\n| 能力 | 文档 |\n|------|------|\n| getPricing | [getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) |\n| getCompetitivePricing | [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) |\n| getListingOffers | [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) |\n| getItemOffers | [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) |\n| getItemOffersBatch | [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) |\n| getListingOffersBatch | [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) |\n| getFeaturedOfferExpectedPriceBatch | [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) |\n| getCompetitiveSummary | [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary) |\n\n---\n\n## Prerequisites（必须先读）\n\n本 skill **依赖** **`linkfox-amazon-store-auth`**。\n\n1. 运行 `python scripts/check_auth_dependency.py`；若 exit code **42** 且 stderr 含 `DEPENDENCY_MISSING:`，请先安装 **`linkfox-amazon-store-auth`**。\n2. **不要**在本 skill 内绕过依赖实现授权或令牌逻辑。\n\n---\n\n## Current Capabilities（脚本一览）\n\n| 能力 | developerProxy `path`（要点） | 脚本 |\n|------|------------------------------|------|\n| getPricing | `products/pricing/v0/price` + Query | `get_pricing.py` |\n| getCompetitivePricing | `products/pricing/v0/competitivePrice` + Query | `get_competitive_pricing.py` |\n| getListingOffers | `products/pricing/v0/listings/{sku}/offers` + Query | `get_listing_offers.py` |\n| getItemOffers | `products/pricing/v0/items/{asin}/offers` + Query | `get_item_offers.py` |\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers`，POST JSON body | `post_item_offers_batch.py` |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers`，POST JSON body | `post_listing_offers_batch.py` |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice`，POST | `post_featured_offer_expected_price_batch.py` |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary`，POST | `post_competitive_summary_batch.py` |\n\n批量脚本（`post_*_batch.py`）在默认模式下会按 Amazon 要求**组装**子请求；高级用法可设 **`useAmazonRequestShape`: true**，直接传 **`requests`** 为官方原始数组（仍受条数上限约束）。共享逻辑见 **`scripts/_spapi_pricing_common.py`**（仅供同目录脚本 import，非独立 CLI）。\n\n---\n\n## Quick Parameters（摘要）\n\n- **getPricing / getCompetitivePricing**：`sellerId`、`region`、`marketplaceId`（或 `marketplaceIds` 取首）、`itemType`、`asins` 或 `skus`（≤20）；getPricing 另有 `itemCondition`、`offerType`；getCompetitivePricing 另有 `customerType`。\n- **getListingOffers / getItemOffers**：`sku`+path 或 **`asin`**+path；**`itemCondition` 必填**；可选 `customerType`。\n- **Item / Listing Offers Batch**：`requests` 数组，默认每项为简化对象（见 `references/api.md`）；**1～20** 条（FOEP 批量脚本为 **最多 40** 条）。\n- **getCompetitiveSummary 批量**：每项需 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组）；可选 **`lowestPricedOffersInputs`**。\n- **getFeaturedOfferExpectedPriceBatch**：每项需 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构以官方为准）。\n\n---\n\n## Scripts\n\n- `get_pricing.py` · `get_competitive_pricing.py` · `get_listing_offers.py` · `get_item_offers.py`\n- `post_item_offers_batch.py` · `post_listing_offers_batch.py` · `post_featured_offer_expected_price_batch.py` · `post_competitive_summary_batch.py`\n- `check_auth_dependency.py` · `_spapi_pricing_common.py`（内部模块）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_item_offers.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}'\n\npython scripts/post_item_offers_batch.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"requests\":[{\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}]}'\n```\n\n---\n\n## Display Rules\n\n1. **`MarketplaceId`**（单数）与 Listings 的 `marketplaceIds` 勿混用。\n2. 先看网关 **`errcode` / `httpStatus`**，再解析各脚本对应的解析字段（如 **`itemOffers`**、**`itemOffersBatch`**、**`competitiveSummary`** 等）。\n3. **POST** 类接口：`stdout` 中含 **`requestBody`**（脚本组装的 Amazon 请求体），便于排查。\n4. **白名单**：除 `products/pricing/...` 外，批量路径以 **`batches/products/pricing/...`** 开头；**1005** 时需后端放行对应前缀。\n5. 各接口 **Usage plan** 不同（尤其 2022-05-01 批量约 **0.033 req/s**），注意 **429**。\n\n---\n\n## Important Limitations\n\n- 权限：**Product Pricing** 及相关角色；部分 2022-05-01 能力可能另有应用内配置要求，以 Amazon 为准。\n- **FOEP 批量**：`segment` 须符合官方模型；条数上限脚本按 **40** 校验（与文档「up to 40」一致）。\n- 返回结构以 Amazon schema 为准；详见 **`references/api.md`**。\n\n**Feedback：** 见 `references/api.md`，`skillName`：`linkfox-amazon-store-pricing`。\n\n---\n*更多跨境 skill：[LinkFox Skills](https://skill.linkfox.com/)*\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-amazon-store-pricing\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1783066348621\n}\n\nFile v1.0.3:references/api.md\n\n# Amazon 店铺 Product Pricing API 参考（v0 + 2022-05-01 批量）\n\n本文档描述通过 **LinkFox 店铺网关** 调用 Selling Partner API **Product Pricing**（**v0** 与 **2022-05-01** 批量）：与 `linkfox-amazon-store-report`、`linkfox-amazon-store-listings` **一致**——先 **`POST /spApi/storeTokens`** 取 `accessToken`，再经 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**。\n\n> 官方入口：[getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) · [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) · [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) · [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) · [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) · [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) · [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) · [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n> ⚠️ **依赖**：需已安装并完成授权 **`linkfox-amazon-store-auth`**。应用需具备 **Product Pricing** 等相关角色/权限，否则上游可能返回 403。\n\n---\n\n## 调用规范（与 store-report 相同）\n\n| 项 | 说明 |\n|----|------|\n| **Base URL** | `${LINKFOX_TOOL_GATEWAY}`（默认 `https://tool-gateway.linkfox.com`；可用 `STORE_API_BASE_URL` 或 `SPAPI_BASE_URL` 覆盖） |\n| **网关认证** | Header `Authorization: <api_key>`，环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY` |\n| **店铺令牌** | `POST /spApi/storeTokens`，Body：`{\"sellerId\":\"...\",\"region\":\"NA|EU|FE\"}` → `accessToken` |\n| **SP-API 转发** | `POST /spApi/developerProxy`，Body 见下节 |\n\n---\n\n## `POST /spApi/developerProxy`（定价类 GET / POST）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| region | string | 是 | `NA` / `EU` / `FE` |\n| path | string | 是 | 不含主机名。示例：**`products/pricing/v0/price`**、**`products/pricing/v0/items/{Asin}/offers`**、**`batches/products/pricing/v0/itemOffers`**、**`batches/products/pricing/2022-05-01/items/competitiveSummary`** 等（见各节） |\n| method | string | 是 | **`GET`** 或 **`POST`**（与上游一致） |\n| amzAccessToken | string | 是 | `/spApi/storeTokens` 返回的 `accessToken` |\n| queryString | string | 视操作 | **无 `?` 前缀**。GET 定价类多 **必填**；POST 批量通常 **无** query，以 Amazon 为准 |\n| body | string | 视操作 | **POST** 时多为 **JSON 字符串**（与 `put_listings_item` 相同，见 listings `references/api.md`） |\n| contentType | string | 视操作 | POST 带 `body` 时一般为 **`application/json`** |\n\n**网关响应**：`errcode`、`errmsg`、`httpStatus`、`contentType`、`body`（字符串）。先 **`errcode`**，再 **`httpStatus`**，再解析 **`body`**。\n\n### 白名单与错误码\n\n- `path` 须在网关 **`sp-api.developer-proxy.allowed-path-prefixes`** 内。若 **`errcode=1005`**，需联系后端放行 **`products/pricing/`** 与 **`batches/products/pricing/`** 等前缀（以运维配置为准）。\n- 其它错误与 `linkfox-amazon-store-report` 的 Developer Proxy 说明一致。\n\n---\n\n## getPricing — Query 参数（写入 `queryString`）\n\n官方参数名 **大小写敏感**。多值 **`Asins`** / **`Skus`** 采用重复键形式：`Asins=B0...&Asins=B0...`（本仓库脚本按此拼接）。\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id，例如美国 `ATVPDKIKX0DER`。与 Listings API 的 `marketplaceIds` 不同，此处为 **单数键名** |\n| **ItemType** | 是 | `Asin` 或 `Sku`（与下方 `Asins` / `Skus` 二选一对应） |\n| **Asins** | 与 ItemType 对应 | 当 `ItemType=Asin` 时必填；**最多 20** 个 ASIN |\n| **Skus** | 与 ItemType 对应 | 当 `ItemType=Sku` 时必填；**最多 20** 个卖家 SKU（注意 [URL 编码](https://developer-docs.amazon.com/sp-api/docs/url-encoding)） |\n| **ItemCondition** | 否 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **OfferType** | 否 | `B2C` 或 `B2B`；默认多为 B2C（以上游为准） |\n\n### 速率（文档默认值，以账号实际为准）\n\n- 约 **0.5 req/s**，burst **1**（见官方 Usage plan 表）。\n\n---\n\n## getCompetitivePricing — Query 参数（写入 `queryString`）\n\n与 getPricing 相同：**`MarketplaceId`**、**`ItemType`**（`Asin` / `Sku`）、**`Asins`** 或 **`Skus`**（每请求最多 **20** 个，重复键拼接）。差异如下：\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **CustomerType** | 否 | `Consumer` 或 `Business`；从 **消费者 / 企业买家** 视角看定价信息，默认多为 Consumer（以上游为准） |\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getCompetitivePricing Usage plan](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)）。\n\n> getCompetitivePricing **没有** getPricing 的 `ItemCondition`、`OfferType` 参数；二者用途不同，勿混用字段名。\n\n---\n\n## getListingOffers — Path 与 Query\n\n- **Path 模板**（写入 `developerProxy.path`）：\n\n```text\nproducts/pricing/v0/listings/{SellerSKU}/offers\n```\n\n其中 **`{SellerSKU}`** 为卖家 SKU，路径段须 **百分号编码**（与 `get_listings_item` 同理；脚本使用 `urllib.parse.quote(..., safe=\"\")`）。\n\n### Query（写入 `queryString`）\n\n| 参数名 | 必填 | 说明 |\n|--------|------|------|\n| **MarketplaceId** | 是 | 单个 marketplace id |\n| **ItemCondition** | 是 | `New`、`Used`、`Collectible`、`Refurbished`、`Club` |\n| **CustomerType** | 否 | `Consumer` 或 `Business`（默认多为 Consumer，以上游为准） |\n\n**语义**：针对**单个 SKU 刊登**返回较低报价类信息（官方描述为 lowest priced offers；具体结构见 [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)）。\n\n**速率（文档默认值）**：约 **1 req/s**，burst **2**（见官方 Usage plan）。\n\n### 成功响应（摘要）\n\n- **`httpStatus=200`** 时解析 `body`：`get_pricing.py` → **`pricing`**；`get_competitive_pricing.py` → **`competitivePricing`**；`get_listing_offers.py` → **`listingOffers`**；`get_item_offers.py` → **`itemOffers`**；`post_item_offers_batch.py` → **`itemOffersBatch`**；`post_listing_offers_batch.py` → **`listingOffersBatch`**；`post_featured_offer_expected_price_batch.py` → **`featuredOfferExpectedPriceBatch`**；`post_competitive_summary_batch.py` → **`competitiveSummary`**。\n\n---\n\n## getItemOffers — Path 与 Query\n\n- **Path**：`products/pricing/v0/items/{Asin}/offers`（`{Asin}` 路径编码）\n- **Query**：**`MarketplaceId`**（必填）、**`ItemCondition`**（必填）、**`CustomerType`**（可选）\n\n**速率（文档默认值）**：约 **0.5 req/s**，burst **1**（见 [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)）。\n\n---\n\n## 批量 POST（ItemOffers / ListingOffers / FOEP / CompetitiveSummary）\n\n上游均为 **`POST`** + **JSON body**，根字段为 **`requests`** 数组。子请求字段以 Amazon 模型为准；本仓库脚本在**默认模式**下将简化 JSON 展开为官方形状；若传 **`useAmazonRequestShape`: true**，则 **`requests`** 须已是 Amazon 原始对象（脚本只做条数校验）。\n\n| 操作 | `path` | 子请求条数（脚本校验） | 文档速率（默认，以账号为准） |\n|------|--------|------------------------|------------------------------|\n| getItemOffersBatch | `batches/products/pricing/v0/itemOffers` | 1～20 | 约 0.1 req/s，burst 1 |\n| getListingOffersBatch | `batches/products/pricing/v0/listingOffers` | 1～20 | 约 0.5 req/s，burst 1 |\n| getFeaturedOfferExpectedPriceBatch | `batches/products/pricing/2022-05-01/offer/featuredOfferExpectedPrice` | 1～40 | 约 0.033 req/s，burst 1 |\n| getCompetitiveSummary | `batches/products/pricing/2022-05-01/items/competitiveSummary` | 1～20 | 约 0.033 req/s，burst 1 |\n\n**Item / Listing Offers 批量子请求（简化 → 官方）**：每条展开为 **`uri`**（以 `/` 开头的资源路径，**无** query）、**`method`:** `GET`、**`MarketplaceId`**、**`ItemCondition`**，以及可选 **`CustomerType`**、**`headers`**。Item 的 `uri` 形如 **`/products/pricing/v0/items/{Asin}/offers`**；Listing 的 `uri` 形如 **`/products/pricing/v0/listings/{SellerSKU}/offers`**（SKU 路径编码）。\n\n**getFeaturedOfferExpectedPriceBatch（简化）**：每条含 **`marketplaceId`**、**`sku`**、**`segment`**（对象，结构见官方）；脚本补充 **`uri`**、**`method`:** `POST`。\n\n**getCompetitiveSummary（简化）**：每条含 **`asin`**、**`marketplaceId`**、**`includedData`**（非空字符串数组，如 `featuredBuyingOptions`），以及可选 **`lowestPricedOffersInputs`**；脚本补充 **`uri`**、**`method`:** `POST`。\n\n---\n\n## 脚本 JSON 入参（`get_pricing.py`）\n\n与 Amazon Query 的对应关系：\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | 仅用于 `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`。若只提供 **`marketplaceIds`** 数组，则取 **第一个** 并 stderr 警告（与同系列 listing 脚本习惯一致） |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins | 条件 | `itemType=Asin` 时至少 1 个、≤20 |\n| skus | 条件 | `itemType=Sku` 时至少 1 个、≤20 |\n| itemCondition | 否 | → `ItemCondition` |\n| offerType | 否 | → `OfferType` |\n| skipDepCheck | 否 | `true` 时跳过 `check_auth_dependency.py` |\n\n---\n\n## 脚本 JSON 入参（`get_competitive_pricing.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemType | 是 | `Asin` 或 `Sku` |\n| asins / skus | 条件 | 与 getPricing 相同（1～20） |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_listing_offers.py`）\n\n| 脚本字段 | 必填 | 映射 |\n|----------|------|------|\n| sellerId | 是 | `/spApi/storeTokens` |\n| region | 是 | `NA` / `EU` / `FE` |\n| sku | 是 | 卖家 SKU → path 中的 `{SellerSKU}` |\n| marketplaceId | 是* | → `MarketplaceId`；或 **`marketplaceIds`** 取第一个 |\n| itemCondition | 是 | → `ItemCondition` |\n| customerType | 否 | → `CustomerType`：`Consumer` / `Business` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`get_item_offers.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| asin | 是 | path 中的 ASIN |\n| marketplaceId | 是* | Query `MarketplaceId` |\n| itemCondition | 是 | Query `ItemCondition` |\n| customerType | 否 | Query `CustomerType` |\n| skipDepCheck | 否 | 同左 |\n\n---\n\n## 脚本 JSON 入参（`post_item_offers_batch.py` / `post_listing_offers_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；默认每项 **item batch**：`asin`+`marketplaceId`+`itemCondition` 或 **listing batch**：`sku`+`marketplaceId`+`itemCondition` |\n| useAmazonRequestShape | 否 | `true` 时 `requests` 为 Amazon 原始子请求 |\n| skipDepCheck | 否 | 同左 |\n\n成功时 stdout 含 **`requestBody`**（已发送的 JSON 对象）。\n\n---\n\n## 脚本 JSON 入参（`post_featured_offer_expected_price_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～40；每项 `marketplaceId`、`sku`、`segment`（或 `useAmazonRequestShape`） |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## 脚本 JSON 入参（`post_competitive_summary_batch.py`）\n\n| 脚本字段 | 必填 | 说明 |\n|----------|------|------|\n| sellerId / region | 是 | storeTokens |\n| requests | 是 | 1～20；每项 `asin`、`marketplaceId`、`includedData`（数组），可选 `lowestPricedOffersInputs` |\n| useAmazonRequestShape / skipDepCheck | 否 | 同上 |\n\n---\n\n## curl 示例\n\n**1）取 `accessToken`**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/storeTokens\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"sellerId\":\"A1BCDEFGHIJK2\",\"region\":\"NA\"}'\n```\n\n**2）getPricing（按 ASIN）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/price\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&ItemCondition=New\"\n  }'\n```\n\n> 请将示例 ASIN / token 换为真实值；多 ASIN 时重复 `Asins=` 键。\n\n**3）getCompetitivePricing（按 ASIN + 企业买家视角）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/competitivePrice\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&CustomerType=Business\"\n  }'\n```\n\n**4）getListingOffers（单 SKU；path 中 SKU 若含特殊字符须先编码）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/listings/My-Seller-SKU-001/offers\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemCondition=New\"\n  }'\n```\n\n**5）getItemOffersBatch（POST body 示意；`requests` 以实网为准）**\n\n```bash\ncurl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"batches/products/pricing/v0/itemOffers\",\n    \"method\": \"POST\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"contentType\": \"application/json\",\n    \"body\": \"{\\\"requests\\\":[{\\\"uri\\\":\\\"/products/pricing/v0/items/B08N5WRWNW/offers\\\",\\\"method\\\":\\\"GET\\\",\\\"MarketplaceId\\\":\\\"ATVPDKIKX0DER\\\",\\\"ItemCondition\\\":\\\"New\\\"}]}\"\n  }'\n```\n\n---\n\n## Feedback API\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- **Content-Type:** `application/json`\n\n```json\n{\n  \"skillName\": \"linkfox-amazon-store-pricing\",\n  \"sentiment\": \"POSITIVE\",\n  \"category\": \"OTHER\",\n  \"content\": \"Product Pricing（含批量与 2022-05-01）结果符合预期。\"\n}\n```\n\nArchive v1.0.2: 13 files, 36174 bytes\n\nFiles: references/api.md (15200b), scripts/_spapi_pricing_common.py (11034b), scripts/check_auth_dependency.py (10114b), scripts/get_competitive_pricing.py (9507b), scripts/get_item_offers.py (3556b), scripts/get_listing_offers.py (7872b), scripts/get_pricing.py (9827b), scripts/post_competitive_summary_batch.py (4032b), scripts/post_featured_offer_expected_price_batch.py (3892b), scripts/post_item_offers_batch.py (4166b), scripts/post_listing_offers_batch.py (3935b), SKILL.md (7946b), _meta.json (147b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: linkfox-amazon-store-pricing\ndescription: 亚马逊店铺商品定价（与 linkfox-amazon-store-auth / linkfox-amazon-store-report / linkfox-amazon-store-listings 同系列），经 /spApi/developerProxy 调用 SP-API Product Pricing：v0 的 getPricing、getCompetitivePricing、getListingOffers、getItemOffers、getItemOffersBatch、getListingOffersBatch；2022-05-01 的 getFeaturedOfferExpectedPriceBatch、getCompetitiveSummary。含 ASIN/SKU 单条与批量、FOEP、竞争摘要。当用户提到亚马逊定价、比价、低价报价、listing/item offers、batch pricing、FOEP、featured offer、competitive summary、Product Pricing、SP-API 价格 时触发。\n---\n\n# Amazon 店铺 Product Pricing\n\n本 skill 与 **`linkfox-amazon-store-auth`**、**`linkfox-amazon-store-report`**、**`linkfox-amazon-store-listings`** 同属 **Amazon Store** 系列：先 **`POST /spApi/storeTokens`** 取 `accessToken`，再 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**（与 listings 的 PUT/PATCH 代理方式一致）。\n\n## 调用方式\n\n- **API 端点**：`POST /spApi/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`C\n\nArchive v1.0.1: 15 files, 41541 bytes\n\nFiles: references/api.md (15136b), scripts/_spapi_pricing_common.py (4562b), scripts/check_auth_dependency.py (10114b), scripts/get_competitive_pricing.py (9366b), scripts/get_item_offers.py (3537b), scripts/get_listing_offers.py (7731b), scripts/get_pricing.py (9686b), scripts/post_competitive_summary_batch.py (4013b), scripts/post_featured_offer_expected_price_batch.py (3873b), scripts/post_item_offers_batch.py (4147b), scripts/post_listing_offers_batch.py (3916b), scripts/response_io.py (18387b), skill-card.md (2811b), SKILL.md (8411b), _meta.json (147b)\n\nArchive v0.0.1: 14 files, 34196 bytes\n\nFiles: references/api.md (15136b), scripts/_spapi_pricing_common.py (4562b), scripts/check_auth_dependency.py (10114b), scripts/get_competitive_pricing.py (9366b), scripts/get_item_offers.py (3537b), scripts/get_listing_offers.py (7731b), scripts/get_pricing.py (9686b), scripts/post_competitive_summary_batch.py (4013b), scripts/post_featured_offer_expected_price_batch.py (3873b), scripts/post_item_offers_batch.py (4147b), scripts/post_listing_offers_batch.py (3916b), skill-card.md (2912b), SKILL.md (6657b), _meta.json (147b)","readmeExcerpt":"Skill: 亚马逊-店铺定价 Owner: linkfox-ai Summary: 亚马逊商品报价与竞争定价查询。用于按 ASIN 或卖家 SKU 获取商品价格、竞争价格、Listing Offers、Item Offers、批量报价、Featured Offer Expected Price（FOEP）和竞争摘要。用户提到亚马逊定价、商品报价、竞品价格、最低报价、购物车价格、Buy Box、Featured Offer、listing offers、item offers、batch pricing、FOEP、competitive summary、Product Pricing API 时触发。即使未明确提及 SP-API，只要希望比较亚马逊商品报价、判断竞争力或估算赢得 Featured Offer 的价格，也应触发此技能；修改 Listing 售价使用 linkfox-amazon-store-listings 或批量","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_item_offers.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}'\n\npython scripts/post_item_offers_batch.py '{\"sellerId\":\"A1...\",\"region\":\"NA\",\"requests\":[{\"asin\":\"B0...\",\"marketplaceId\":\"ATVPDKIKX0DER\",\"itemCondition\":\"New\"}]}'"},{"language":"text","snippet":"products/pricing/v0/listings/{SellerSKU}/offers"},{"language":"bash","snippet":"curl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/storeTokens\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"sellerId\":\"A1BCDEFGHIJK2\",\"region\":\"NA\"}'"},{"language":"bash","snippet":"curl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/storeTokens\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"sellerId\":\"A1BCDEFGHIJK2\",\"region\":\"NA\"}'"},{"language":"bash","snippet":"curl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{"},{"language":"bash","snippet":"curl -sS -X POST \"https://tool-gateway.linkfox.com/spApi/developerProxy\" \\\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"region\": \"NA\",\n    \"path\": \"products/pricing/v0/price\",\n    \"method\": \"GET\",\n    \"amzAccessToken\": \"Atza|IwEBI...\",\n    \"queryString\": \"MarketplaceId=ATVPDKIKX0DER&ItemType=Asin&Asins=B08N5WRWNW&ItemCondition=New\"\n  }'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkfox-amazon-store-pricing\ndescription: 亚马逊商品报价与竞争定价查询。用于按 ASIN 或卖家 SKU 获取商品价格、竞争价格、Listing Offers、Item Offers、批量报价、Featured Offer Expected Price（FOEP）和竞争摘要。用户提到亚马逊定价、商品报价、竞品价格、最低报价、购物车价格、Buy Box、Featured Offer、listing offers、item offers、batch pricing、FOEP、competitive summary、Product Pricing API 时触发。即使未明确提及 SP-API，只要希望比较亚马逊商品报价、判断竞争力或估算赢得 Featured Offer 的价格，也应触发此技能；修改 Listing 售价使用 linkfox-amazon-store-listings 或批量 Feed。\n---\n\n# Amazon 店铺 Product Pricing\n\n本 skill 与 **`linkfox-amazon-store-auth`**、**`linkfox-amazon-store-report`**、**`linkfox-amazon-store-listings`** 同属 **Amazon Store** 系列：依赖 **`linkfox-amazon-store-auth`** 选店（`sellerId`+`region`）；直接 **`POST /spApi/developerProxy`** 传入 `sellerId`+`region`，由服务端解析 token（勿传 `amzAccessToken`，除非兼容旧调用）。转发上游 **GET** 或 **POST**。\n\n## 调用方式\n\n- **API 端点**：`POST /spApi/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗算力；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和算力问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示算力或余额不足**：消息含\"算力余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 官方参考索引\n\n| 能力 | 文档 |\n|------|------|\n| getPricing | [getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) |\n| getCompetitivePricing | [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) |\n| getListingOffers | [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) |\n| getItemOffers | [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) |\n| getItemOffersBatch | [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) |\n| getListingOffersBatch | [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) |\n| getFeaturedOfferExpectedPriceBatch | [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) |\n| getCompetitiveSummary | [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary) |\n\n---\n\n## Prerequisites（必须先读）\n\n本 skill **依赖** **`linkfox-amazon-store-auth`**。\n\n1. 运行 `python scripts/check_auth_dependency.py`；若 exit code **42** 且 stderr 含 `DEPENDENCY_MISSING:`，请先安装 **`linkfox-amazon-store-auth`"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-amazon-store-pricing\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1789361896533\n}"},{"path":"references/api.md","content":"# Amazon 店铺 Product Pricing API 参考（v0 + 2022-05-01 批量）\n\n本文档描述通过 **LinkFox 店铺网关** 调用 Selling Partner API **Product Pricing**（**v0** 与 **2022-05-01** 批量）：与 `linkfox-amazon-store-report`、`linkfox-amazon-store-listings` **一致**——先 **`POST /spApi/storeTokens`** 取 `accessToken`，再经 **`POST /spApi/developerProxy`** 转发上游 **GET** 或 **POST**。\n\n> 官方入口：[getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing) · [getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing) · [getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers) · [getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers) · [getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch) · [getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch) · [getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch) · [getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n> ⚠️ **依赖**：需已安装并完成授权 **`linkfox-amazon-store-auth`**。应用需具备 **Product Pricing** 等相关角色/权限，否则上游可能返回 403。\n\n---\n\n## 调用规范（与 store-report 相同）\n\n| 项 | 说明 |\n|----|------|\n| **Base URL** | `${LINKFOX_TOOL_GATEWAY}`（默认 `https://tool-gateway.linkfox.com`；可用 `STORE_API_BASE_URL` 或 `SPAPI_BASE_URL` 覆盖） |\n| **网关认证** | Header `Authorization: <api_key>`，环境变量 `LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY`（如未配置 按 SKILL.md 的 **## 解决认证和算力问题** 处理） |\n| **店铺令牌** | `POST /spApi/storeTokens`，Body：`{\"sellerId\":\"...\",\"region\":\"NA|EU|FE\"}` → `accessToken` |\n| **SP-API 转发** | `POST /spApi/developerProxy`，Body 见下节 |\n\n---\n\n## `POST /spApi/developerProxy`（定价类 GET / POST）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| region | string | 是 | `NA` / `EU` / `FE` |\n| path | string | 是 | 不含主机名。示例：**`products/pricing/v0/price`**、**`products/pricing/v0/items/{Asin}/offers`**、**`batches/products/pricing/v0/itemOffers`**、**`batches/products/pricing/2022-05-01/items/competitiveSummary`** 等（见各节） |\n| method | string | 是 | **`GET`** 或 **`POST`**（与上游一致） |\n| amzAccessToken | string | 是 | `/spApi/storeTokens` 返回的 `accessToken` |\n| queryString | string | 视操作 | **无 `?` 前缀**。GET 定价类多 **必填**；POST 批量通常 **无** query，以 Amazon 为准 |\n| body | string | 视操作 | **POST** 时多为 **JSON 字符串**（与 `put_listings_item` 相同，见 listings `references/api.md`） |\n| contentType | string | 视操作 | POST 带 `body` 时一般为 **`application/json`** |\n\n**网关响应**：`errcode`、`errmsg`、`httpStatus`、`contentType`、`body`（字符串）。先 **`errcode`**，再 **`httpStatus`**，再解析 **`body`**。\n\n### 白名单与错误码\n\n- `path` 须在网关 **`sp-api.developer-proxy.allowed-path-prefixes`** 内。若 **`errcode=1005`**，需联系后端放行 **`products/pricing/`** 与 **`batches/products/pricing/`** 等前缀（以运维配置为准）。\n- 其它错误与 `linkfox-amazon-store-report` 的 Developer Proxy 说明一致。\n- HTTP 401 或 authorized error：按 SKILL.md 的 **## 解决认证和算力问题** 处理。\n- HTTP 402：按 SKILL.md 的 **## 解决认证和算力问题** 处理。\n\n---\n\n## getPricing — Query 参数"},{"path":"references/onboarding.md","content":"# 解决认证和算力问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `算力/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。"},{"path":"skill-card.md","content":"## Description:\n\nQueries Amazon seller Product Pricing data through LinkFox, including ASIN/SKU prices, competitive pricing, listing and item offers, Featured Offer Expected Price, and competitive summaries.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal developers and Amazon sellers use this skill to query Amazon Product Pricing information for individual or batched ASIN and seller SKU workflows. It helps compare offers, inspect Buy Box and Featured Offer signals, and estimate competitive pricing while using LinkFox account and authorization flows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can access Amazon seller pricing data and saves pricing responses to local JSON files.\n\nMitigation: Install only in workspaces where saved pricing output is acceptable, review the output directory, and treat generated files as sensitive business data.\n\nRisk: Authentication and onboarding flows may involve LinkFox API keys, SMS codes, account login, billing orders, or payment QR files.\n\nMitigation: Avoid passing secrets in logged command lines, verify account and billing actions before execution, and keep generated payment artifacts private.\n\nRisk: Endpoint override environment variables can redirect requests away from the expected LinkFox service.\n\nMitigation: Use default endpoints unless the override target is fully trusted and intentionally configured.\n\nRisk: Repeated invalid or high-rate Amazon SP-API calls can trigger temporary store-level protection or throttling.\n\nMitigation: Follow the documented cooldown and retry guidance, correct bad parameters or authorization issues before retrying, and avoid automatic repeated calls.\n\n## Reference(s):\n\n- [Amazon Store Product Pricing API Reference](artifact/references/api.md)\n- [Authentication and Billing Onboarding](artifact/references/onboarding.md)\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-amazon-store-pricing)\n- [Amazon getPricing](https://developer-docs.amazon.com/sp-api/reference/getpricing)\n- [Amazon getCompetitivePricing](https://developer-docs.amazon.com/sp-api/reference/getcompetitivepricing)\n- [Amazon getListingOffers](https://developer-docs.amazon.com/sp-api/reference/getlistingoffers)\n- [Amazon getItemOffers](https://developer-docs.amazon.com/sp-api/reference/getitemoffers)\n- [Amazon getItemOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getitemoffersbatch)\n- [Amazon getListingOffersBatch](https://developer-docs.amazon.com/sp-api/reference/getlistingoffersbatch)\n- [Amazon getFeaturedOfferExpectedPriceBatch](https://developer-docs.amazon.com/sp-api/reference/getfeaturedofferexpectedpricebatch)\n- [Amazon getCompetitiveSummary](https://developer-docs.amazon.com/sp-api/reference/getcompetitivesummary)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuratio"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"亚马逊商品报价与竞争定价查询。用于按 ASIN 或卖家 SKU 获取商品价格、竞争价格、Listing Offers、Item Offers、批量报价、Featured Offer Expected Price（FOEP）和竞争摘要。用户提到亚马逊定价、商品报价、竞品价格、最低报价、购物车价格、Buy Box、Featured Offer、listing offers、item offers、batch pricing、FOEP、competitive summary、Product Pricing API 时触发。即使未明确提及 SP-API，只要希望比较亚马逊商品报价、判断竞争力或估算赢得 Featured Offer 的价格，也应触发此技能；修改 Listing 售价使用 linkfox-amazon-store-listings 或批量 Feed。 Skill: 亚马逊-店铺定价 Owner: linkfox-ai Summary: 亚马逊商品报价与竞争定价查询。用于按 ASIN 或卖家 SKU 获取商品价格、竞争价格、Listing Offers、Item Offers、批量报价、Featured Offer Expected Price（FOEP）和竞争摘要。用户提到亚马逊定价、商品报价、竞品价格、最低报价、购物车价格、Buy Box、Featured Offer、listing offers、item offers、batch pricing、FOEP、competitive summary、Product Pricing API 时触发。即使未明确提及 SP-API，只要希望比较亚马逊商品报价、判断竞争力或估算赢得 Featured Offer 的价格，也应触发此技能；修改 Listing 售价使用 linkfox-amazon-store-listings 或批量","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1206,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T07:55:39.102Z","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-10T07:55:39.102Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:43:51.957Z","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"}]}}}