{"id":"b4b0c8ea-a742-4a2f-ba92-4214817bf137","entityType":"agent","slug":"clawhub-linkfox-ai-linkfox-temu-price-eu","name":"Temu欧洲站-定价","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linkfox-ai-linkfox-temu-price-eu","canonicalPath":"/agent/clawhub-linkfox-ai-linkfox-temu-price-eu","generatedAt":"2026-10-10T21:53:44.085Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T18:19:40.248Z","emptyReason":null},"description":"Temu 欧洲站商品价格管理 API，经 LinkFox 网关转发 Partner EU 价格接口：定价单列表查询(bg.local.goods.priceorder.query)、批量改 SKU 基础价(bg.local.goods.priceorder.change.sku.price)、推荐供货价/基础价估算等。当用户提到 Temu EU 价格、Temu欧洲站定价单、priceorder query、priceAuditList、改供货价、批量改价、site=eu 改价、recommendedprice query、baseprice recommend 时触发。商品管理用 linkfox-temu-manage-product-eu；订单/发品等其它域可用 US skill 并设 site=eu。","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-temu-price-eu","sourceUrl":"https://clawhub.ai/linkfox-ai/linkfox-temu-price-eu","homepage":"https://clawhub.ai/linkfox-ai/skills/linkfox-temu-price-eu","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linkfox-ai/linkfox-temu-price-eu","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linkfox-ai/skills/linkfox-temu-price-eu","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Temu欧洲站-定价 technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T18:19:40.248Z","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-10T18:19:40.248Z","emptyReason":null},"stars":null,"forks":null,"downloads":1299,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T18:19:40.247Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T18:19:40.248Z","lastCrawledAt":"2026-10-10T18:19:40.247Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T18:19:40.247Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-08-14T15:17:30.088Z","changelog":"Update from 1.0.5 to 1.0.6","fileCount":32,"zipByteSize":49142},{"version":"1.0.5","createdAt":"2026-08-07T11:20:34.712Z","changelog":"Update from 1.0.4 to 1.0.5","fileCount":32,"zipByteSize":48972},{"version":"1.0.4","createdAt":"2026-07-13T12:38:58.997Z","changelog":"Update from 1.0.3 to 1.0.4","fileCount":30,"zipByteSize":40335},{"version":"1.0.3","createdAt":"2026-07-06T11:45:37.215Z","changelog":"Update from 1.0.2 to 1.0.3","fileCount":30,"zipByteSize":39606},{"version":"1.0.2","createdAt":"2026-07-03T09:45:32.086Z","changelog":"Update from 1.0.0 to 1.0.2","fileCount":30,"zipByteSize":39418},{"version":"1.0.0","createdAt":"2026-05-27T08:33:30.824Z","changelog":"Initial release","fileCount":30,"zipByteSize":36483}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-temu-price-eu","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-temu-price-eu` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/linkfox-ai/linkfox-temu-price-eu before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-price-eu/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-price-eu/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-price-eu/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-price-eu/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-price-eu/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-price-eu/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-10T21:53:44.082Z"}},"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-temu-price-eu/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-price-eu/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-price-eu/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-price-eu/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T18:19:40.248Z","emptyReason":null},"readme":"Skill: Temu欧洲站-定价\n\nOwner: linkfox-ai\n\nSummary: Temu 欧洲站商品价格管理 API，经 LinkFox 网关转发 Partner EU 价格接口：定价单列表查询(bg.local.goods.priceorder.query)、批量改 SKU 基础价(bg.local.goods.priceorder.change.sku.price)、推荐供货价/基础价估算等。当用户提到 Temu EU 价格、Temu欧洲站定价单、priceorder query、priceAuditList、改供货价、批量改价、site=eu 改价、recommendedprice query、baseprice recommend 时触发。商品管理用 linkfox-temu-manage-product-eu；订单/发品等其它域可用 US skill 并设 site=eu。\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-08-14T15:17:30.088Z | user\n\nUpdate from 1.0.5 to 1.0.6\n\nv1.0.5 | 2026-08-07T11:20:34.712Z | user\n\nUpdate from 1.0.4 to 1.0.5\n\nv1.0.4 | 2026-07-13T12:38:58.997Z | user\n\nUpdate from 1.0.3 to 1.0.4\n\nv1.0.3 | 2026-07-06T11:45:37.215Z | user\n\nUpdate from 1.0.2 to 1.0.3\n\nv1.0.2 | 2026-07-03T09:45:32.086Z | user\n\nUpdate from 1.0.0 to 1.0.2\n\nv1.0.0 | 2026-05-27T08:33:30.824Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.6: 32 files, 49142 bytes\n\nFiles: references/access-token.md (4604b), references/api.md (4147b), references/apis/bg-local-goods-priceorder-change-sku-price.md (5070b), references/apis/bg-local-goods-priceorder-query.md (8203b), references/apis/README.md (938b), references/apis/temu-local-goods-baseprice-recommend.md (7162b), references/apis/temu-local-goods-recommendedprice-query.md (4302b), references/authorization-flow.md (1186b), references/onboarding.md (2046b), references/partner-eu-catalog.md (2871b), scripts/_eu_price_script.py (512b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12424b), scripts/_temu_eu_common.py (3095b), scripts/_temu_token_store.py (4273b), scripts/check_linkfox_token.py (1798b), scripts/eu_price_baseprice_recommend.py (281b), scripts/eu_price_priceorder_change_sku_price.py (311b), scripts/eu_price_priceorder_query.py (273b), scripts/eu_price_recommendedprice_query.py (280b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/onboarding.py (24089b), scripts/save_temu_access_token.py (1377b), scripts/temu_eu_file_download.py (691b), scripts/temu_eu_proxy.py (911b), scripts/temu_file_download.py (1681b), scripts/temu_proxy.py (2124b), scripts/temu_token_guide.py (1594b), skill-card.md (3300b), SKILL.md (6958b), _meta.json (140b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: linkfox-temu-price-eu\ndescription: Temu 欧洲站商品价格管理 API，经 LinkFox 网关转发 Partner EU 价格接口：定价单列表查询(bg.local.goods.priceorder.query)、批量改 SKU 基础价(bg.local.goods.priceorder.change.sku.price)、推荐供货价/基础价估算等。当用户提到 Temu EU 价格、Temu欧洲站定价单、priceorder query、priceAuditList、改供货价、批量改价、site=eu 改价、recommendedprice query、baseprice recommend 时触发。商品管理用 linkfox-temu-manage-product-eu；订单/发品等其它域可用 US skill 并设 site=eu。\n---\n\n# Temu 欧洲站价格 API（linkfox-temu-price-eu）\n\n美国站请用 **`linkfox-temu-price-us`**；全球站（非 US/EU）请用 **`linkfox-temu-price-global`**。\n\n本 skill（`linkfox-temu-price-eu`）覆盖 Partner Platform for EU **Price** 菜单（`menu_code=dfff38c23adf498d8a7cd55052bd3648`）下与**价格/供货价**相关的 `bg.local.*` / `temu.local.*` 接口（`type` 与 US 版对齐，默认 `site=eu`）。\n\n> 当前已接入 **4** 个接口；其余价格接口将按 Partner 文档逐条补充到 `references/apis/` 与 `eu_price_*.py`。\n\n**网关（本 skill 内置）**：\n\n| 能力 | 方法 | 路径 |\n|------|------|------|\n| 价格 OpenAPI（`eu_price_*`、`temu_eu_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\n\n## 相关 skill\n\n| 场景 | skill |\n|------|--------|\n| 商品列表/详情/编辑/库存/上下架 | `linkfox-temu-manage-product-eu` |\n| 订单查询、发货、物流 | `linkfox-temu-order-us` |\n| 取消订单（买家+卖家） | `linkfox-temu-cancel-order-us` |\n\n| 履约/发货（含自发货） | `linkfox-temu-fulfillment-eu` |\n| 发品、类目、V2 add | `linkfox-temu-add-product-us` |\n| 半托管 `temu.goods.price.list.get`（`productSkuIds`） | `linkfox-temu-add-product-us` → `us_goods_price_list.py` |\n| 网关与 Temu token | 本 skill `scripts/` |\n\n## 调用方式\n\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `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` 从保存的 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| site | `eu` | Partner EU |\n| managementType | `semi-managed` | 半托管 |\n| tokenPurpose | `product-inventory` | 酷鸟卖家助手 token |\n\n## 鉴权\n\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\n2. **Temu**：`accessToken` 或 `storeKey`\n\n## Scripts（按 type）\n\n| 脚本 | type | 状态 |\n|------|------|------|\n| `eu_price_baseprice_recommend.py` | `temu.local.goods.baseprice.recommend` | 已接入 |\n| `eu_price_recommendedprice_query.py` | `temu.local.goods.recommendedprice.query` | 已接入 |\n| `eu_price_priceorder_query.py` | `bg.local.goods.priceorder.query` | 已接入 |\n| `eu_price_priceorder_change_sku_price.py` | `bg.local.goods.priceorder.change.sku.price` | 已接入 |\n| `temu_eu_proxy.py` | 任意 `type` | 通用 |\n| `temu_eu_file_download.py` | 加签文件下载 | 通用 |\n\n> 新增接口后在此表与 [partner-eu-catalog.md](./references/partner-eu-catalog.md) 同步登记。\n\n## 示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\n\n# 推荐基础价/供货价估算（须 catId + supplierPriceEstimateSkuQryList）\npython scripts/eu_price_baseprice_recommend.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"supplierPriceEstimateQry\": {\n      \"goodsBasicInfo\": { \"catId\": 12345 },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001],\n          \"externPlatformPriceInfo\": { \"amount\": \"19.99\", \"currency\": \"EUR\" }\n        }\n      ]\n    }\n  }\n}'\n\n# 推荐供货价查询（须 recommendedPriceType + goodsIdList，1～100 个 goodsId）\npython scripts/eu_price_recommendedprice_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789]\n  }\n}'\n\n# 定价单列表查询（白名单；分页 page/size，可选筛选）\npython scripts/eu_price_priceorder_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}'\n\n# 批量修改 SKU 基础价（白名单；须 goodsId + changeSkuPriceDTOList）\npython scripts/eu_price_priceorder_change_sku_price.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": { \"amount\": \"15.99\", \"currency\": \"EUR\" }\n          }\n        ]\n      }\n    ]\n  }\n}'\n```\n\n**Feedback：** `skillName`：`linkfox-temu-price-eu`\n\n## 网关与授权脚本\n\n| 脚本 | 说明 |\n|------|------|\n| `check_linkfox_token.py` | 校验 LinkFox 用户 Token |\n| `temu_token_guide.py` | Temu accessToken 后台授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token |\n| `get_temu_access_token.py` | 读取已保存 token |\n| `temu_proxy.py` | 通用网关转发（多 site） |\n| `temu_file_download.py` | 加签文件下载（多 site） |\n\n授权说明：[references/access-token.md](./references/access-token.md)\n\n## 积分消耗规则\n\n不消耗积分。\n\nFile v1.0.6:references/apis/README.md\n\n# Price — 接口文档索引\n\n每个 `type` 单独一份文档，经 `POST /temu/proxy` 调用。网关与鉴权见 [../api.md](../api.md)；目录与 `sub_menu_code` 见 [../partner-eu-catalog.md](../partner-eu-catalog.md)。\n\n## 查询（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.query` | [bg-local-goods-priceorder-query.md](./bg-local-goods-priceorder-query.md) |\n\n## 推荐 / 估算（2）\n\n| type | 文档 |\n|------|------|\n| `temu.local.goods.baseprice.recommend` | [temu-local-goods-baseprice-recommend.md](./temu-local-goods-baseprice-recommend.md) |\n| `temu.local.goods.recommendedprice.query` | [temu-local-goods-recommendedprice-query.md](./temu-local-goods-recommendedprice-query.md) |\n\n## 编辑 / 改价（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.change.sku.price` | [bg-local-goods-priceorder-change-sku-price.md](./bg-local-goods-priceorder-change-sku-price.md) |\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-price-eu\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1786720650088\n}\n\nFile v1.0.6:references/access-token.md\n\n# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth）（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=eu` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 欧洲站 | openapi-b-eu.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'\n```\n\n## 注意事项\n\n1. **子账号**：可能无法进入服务市场，需主账号授权。\n2. **多站点**：欧洲站、英国站等需分别登录对应后台获取 Token。\n3. **有效期**：Token 会过期，过期后重新在后台复制并 `save_temu_access_token.py`。\n4. **IP 白名单**：需联系紫鸟开放平台配置调用 IP。\n5. **参数小写**：`site`、`managementType` 必须小写。\n\n## 脚本一览\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_token_guide.py` | 按店铺类型/用途输出授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token（默认脱敏）|\n| `get_temu_access_token.py` | 读取指定 store 的 token |\n\nFile v1.0.6:references/api.md\n\n# linkfox-temu-price-eu — API 参考\r\n\r\nTemu **欧洲站商品价格管理**（Partner EU **Price** 菜单下价格/供货价相关接口），经本 skill `temu_eu_proxy`（`POST /temu/proxy`） 转发。Temu 的 `type` 写在 Body，**不是** URL 路径。\r\n\r\n> 网关与鉴权：本 skill `scripts/`（`LINKFOXAGENT_API_KEY`、`accessToken` / `storeKey`）。授权见 `references/access-token.md`。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\r\n\r\n---\r\n\r\n## 调用规范\r\n\r\n| 项 | 说明 |\r\n|----|------|\r\n| 网关根地址 | `${LINKFOX_TOOL_GATEWAY}`（可用 `TEMU_API_BASE_URL` / `STORE_API_BASE_URL` 覆盖） |\r\n| 价格 OpenAPI | `POST /temu/proxy` |\r\n| 加签文件下载 | `POST /temu/fileDownload`（`temu_eu_file_download.py`） |\r\n| LinkFox 鉴权 | Header **`Authorization`** 与 **`Token`**（同值）；或 `LINKFOX_AGENT_API_KEY` / `LINKFOXAGENT_API_KEY`；或 JSON `token`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\r\n| Temu 鉴权 | Body `accessToken`，或 `storeKey` + `site` + `managementType` + `tokenPurpose` |\r\n| 默认 | `site=eu`，`managementType=semi-managed`，`tokenPurpose=product-inventory` |\r\n| 上游 OpenAPI（EU） | `https://openapi-b-eu.temu.com/openapi/router`（网关按 `site` 解析） |\r\n\r\n### 网关请求 Body（`/temu/proxy`）\r\n\r\n| 参数 | 类型 | 必填 | 说明 |\r\n|------|------|------|------|\r\n| site | string | 是 | `eu`（本 skill 默认） |\r\n| managementType | string | 是 | `semi-managed` |\r\n| accessToken | string | 与 storeKey 二选一 | Temu 店铺令牌 |\r\n| storeKey | string | 与 accessToken 二选一 | `~/.linkfox/temu-access-tokens.json` 中的键 |\r\n| tokenPurpose | string | 否 | 建议 `product-inventory` |\r\n| type | string | 是 | Temu 接口名，如 `bg.local.goods.priceorder.query` |\r\n| params | object | 否 | 业务参数；多数 Manage 接口业务块在 **`params.request`** |\r\n\r\n### 网关响应\r\n\r\n| 字段 | 类型 | 说明 |\r\n|------|------|------|\r\n| body | string | Temu 原始 JSON 字符串；脚本解析为 `temuBody` |\r\n| code | integer | 网关错误码：`1002` 参数/Token，`1003` 转发失败 |\r\n\r\n解析顺序：**网关 `code`** → `JSON.parse(body)` → `success` / `errorCode` / `errorMsg` / `result`。\r\n\r\n### 脚本调用\r\n\r\n```bash\r\nexport LINKFOXAGENT_API_KEY=\"<key>\"\r\npython scripts/eu_price_priceorder_query.py '{\"accessToken\":\"TOKEN\",\"request\":{\"page\":1,\"size\":20,\"priceOrderType\":1}}'\r\n```\r\n\r\n业务字段可放在顶层或嵌套 `params`；含 `request` 时通常整体作为 `params` 转发。\r\n\r\n---\r\n\r\n## 接口一览\r\n\r\n完整 `sub_menu_code` 与 Partner 文档 URL 见 [partner-eu-catalog.md](./partner-eu-catalog.md)。\r\n\r\n**每个接口单独一份文档**：[apis/README.md](./apis/README.md)。\r\n\r\n---\r\n\r\n## 典型价格管理流程\r\n\r\n```text\r\n1. linkfox-temu-manage-product-eu → list/detail / spec.info.get           → 拿 goodsId、catId、specIdList\r\n2. bg.local.goods.priceorder.query（本 skill，白名单）                     → 分页查定价单/报价列表\r\n3. temu.local.goods.recommendedprice.query（本 skill）                     → 按 goodsIdList 查平台推荐供货价\r\n4. temu.local.goods.baseprice.recommend（本 skill）                        → 发品/改价前推荐基础价估算\r\n5. bg.local.goods.priceorder.change.sku.price（本 skill，白名单）          → 批量改 SKU 基础价\r\n6. bg.local.goods.priceorder.query                                         → 改价后核对 priceAuditList / supplierPrice\r\n```\r\n\r\n发品侧半托管供货价列表（`temu.goods.price.list.get`，入参 `productSkuIds`）见 **`linkfox-temu-add-product-us`**，与本 skill 的 `bg.local.*` 本地仓价格接口**不要混用**。\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| code | 说明 | 处理 |\r\n|------|------|------|\r\n| 1002 | 参数或 LinkFox Token 无效 | 修正参数与 `LINKFOXAGENT_API_KEY` |\r\n| 1003 | 转发失败 | 检查 Temu token、白名单、网络 |\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\r\n- `skillName`: **`linkfox-temu-price-eu`**\n\nFile v1.0.6:references/apis/bg-local-goods-priceorder-change-sku-price.md\n\n# 批量修改 SKU 基础价（定价单）— `bg.local.goods.priceorder.change.sku.price`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_priceorder_change_sku_price.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `bg.local.goods.priceorder.change.sku.price` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`bg.local.goods.priceorder.change.sku.price`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants within the **white list** to modify SKU base prices in batches.\n\n> 须在 Temu 白名单内方可调用；非白名单店铺可能返回业务错误。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── goodsId (LONG, 必填)\n    ├── changeSkuPriceDTOList[] (OBJECT[], 必填)\n    │   ├── reason (STRING, 否)\n    │   └── skuChangePriceBaseDTOList[] (OBJECT[], 必填)\n    │       ├── skuId (LONG, 必填)\n    │       └── newSupplierPrice (OBJECT, 必填)\n    │           ├── amount (STRING, 否)\n    │           └── currency (STRING, 否)\n    └── rejectSkuPricing (BOOLEAN, 否)\n```\n\n### `request`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| goodsId | LONG | **是** | Goods Id |\n| changeSkuPriceDTOList | OBJECT[] | **是** | SKU information and reason that adjust price |\n| rejectSkuPricing | BOOLEAN | 否 | Reject if price order is wait merchant confirm |\n\n### `changeSkuPriceDTOList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| reason | STRING | 否 | The reason of adjust price |\n| skuChangePriceBaseDTOList | OBJECT[] | **是** | SKU information |\n\n### `skuChangePriceBaseDTOList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| skuId | LONG | **是** | SKU ID |\n| newSupplierPrice | OBJECT | **是** | Base price (new supplier price) |\n\n### `newSupplierPrice`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| amount | STRING | 否 | Amount |\n| currency | STRING | 否 | Currency Type |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"rejectSkuPricing\": true,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"reason\": \"Cost adjustment\",\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": {\n              \"amount\": \"18.99\",\n              \"currency\": \"EUR\"\n            }\n          },\n          {\n            \"skuId\": 58224724203875,\n            \"newSupplierPrice\": {\n              \"amount\": \"19.99\",\n              \"currency\": \"EUR\"\n            }\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n> 同一 `goodsId` 下可在一个 `changeSkuPriceDTOList` 项里放多个 SKU；也可按调价原因拆成多项，每项带各自的 `reason` 与 `skuChangePriceBaseDTOList`。\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success (BOOLEAN)\n├── errorCode (INTEGER)\n├── errorMsg (STRING)\n└── result (OBJECT)\n    ├── successSkuList[] (LONG)\n    ├── failedSkuList[] (LONG)\n    ├── failedSkuReasonMap (MAP)\n    │   ├── $key (STRING)   → SKU ID\n    │   └── $value (STRING) → Fail reason\n    └── successPriceOrderList[] (OBJECT[])\n        ├── priceOrderSn (STRING)\n        └── skuIdList[] (LONG)\n```\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Is success |\n| errorCode | INTEGER | Error code |\n| errorMsg | STRING | Error message |\n| result | OBJECT | Return specific information |\n| result.successSkuList | LONG[] | SKU list with successfully changed prices |\n| result.failedSkuList | LONG[] | SKU list with failed change price |\n| result.failedSkuReasonMap | MAP | Reasons for price adjustment failure；**key** 为 SKU ID（字符串），**value** 为失败原因 |\n| result.successPriceOrderList | OBJECT[] | List of price orders that request for changing price successfully |\n\n### `successPriceOrderList[]` 元素\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| priceOrderSn | STRING | Price order Sn |\n| skuIdList | LONG[] | List of SKUs corresponding to price order |\n\n### `failedSkuReasonMap` 示例\n\n```json\n{\n  \"58224724203875\": \"Price order pending merchant confirm\"\n}\n```\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_priceorder_change_sku_price.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"rejectSkuPricing\": true,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"reason\": \"Promo\",\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": { \"amount\": \"15.99\", \"currency\": \"EUR\" }\n          }\n        ]\n      }\n    ]\n  }\n}'\n```\n\n改价后可用 `bg.local.goods.priceorder.query` 核对 `priceAuditList` 中的 `supplierPrice`，或再次调用本接口查看 `successSkuList` / `failedSkuList`。\n\nFile v1.0.6:references/apis/bg-local-goods-priceorder-query.md\n\n# 定价单列表查询 — `bg.local.goods.priceorder.query`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_priceorder_query.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `bg.local.goods.priceorder.query` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`bg.local.goods.priceorder.query`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants within the **white list** to query the price offer list（支持白名单商家查询定价单/报价列表）。\n\n> 须在 Temu 白名单内方可调用；非白名单店铺可能返回业务错误。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── page\n    ├── size\n    ├── priceOrderType\n    ├── priceOrderSubType\n    ├── goodsName\n    ├── goodsId\n    ├── priceOrderSnList[]\n    ├── orderBy\n    ├── orderByType\n    ├── goodsCreateTimeFrom / goodsCreateTimeTo\n    ├── priceOrderCreateTimeFrom / priceOrderCreateTimeTo\n    ├── goodsIdList[]\n    └── status\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| page | INTEGER | 否 | Page number（页码） |\n| size | INTEGER | 否 | Page size（每页条数），**须小于 100** |\n| priceOrderType | INTEGER | 否 | Pricing type（定价单类型）；**默认**为定价评估报价 |\n| priceOrderSubType | INTEGER | 否 | price order sub type（定价单子类型） |\n| goodsName | STRING | 否 | Search param: goodsName（按商品名搜索） |\n| goodsId | STRING | 否 | Search param: goodsId（按商品 ID 搜索） |\n| priceOrderSnList | STRING[] | 否 | search param: list of price order sn（定价单编号列表） |\n| orderBy | STRING | 否 | 排序字段；**默认** `order_create_time` |\n| orderByType | INTEGER | 否 | 排序方向；**默认** `0`（DESC） |\n| goodsCreateTimeFrom | LONG | 否 | Search param: The starting time of goods creation（商品创建起始时间） |\n| goodsCreateTimeTo | LONG | 否 | Search param: The end time of goods creation（商品创建结束时间） |\n| priceOrderCreateTimeFrom | LONG | 否 | Search param: The starting time of price order creation（定价单创建起始时间） |\n| priceOrderCreateTimeTo | LONG | 否 | Search param: The end time of price order creation（定价单创建结束时间） |\n| goodsIdList | STRING[] | 否 | goodsIdList（商品 ID 列表） |\n| status | INTEGER | 否 | price order status（定价单状态） |\n\n#### `priceOrderType`\n\n| 值 | 说明 |\n|----|------|\n| 不传 / 默认 | offer for pricing assessment（定价评估报价，默认） |\n| `1` | offer for pricing assessment（定价评估报价） |\n| `2` | offer for pricing opportunities or modification（定价机会或改价报价） |\n\n#### `priceOrderSubType`\n\n| 值 | 说明 |\n|----|------|\n| `2002` | base price increase invitations（基础价上调邀请） |\n| `2003` | sales boost（销量提升） |\n\n#### `orderBy`\n\n| 值 | 说明 |\n|----|------|\n| `goods_create_time` | 按商品创建时间排序 |\n| `order_create_time` | 按定价单创建时间排序（**默认**） |\n\n#### `orderByType`\n\n| 值 | 说明 |\n|----|------|\n| `0` | DESC（降序，**默认**） |\n| `1` | ASC（升序） |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 50,\n    \"goodsId\": \"123456789\",\n    \"priceOrderSubType\": 2002,\n    \"status\": 1\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"priceOrderSnList\": [\"PO-SN-001\", \"PO-SN-002\"],\n    \"goodsIdList\": [\"111\", \"222\"]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    ├── pageNum\n    ├── total\n    └── priceAuditList[]          ← Price offer list\n        ├── priceOrderId\n        ├── goodsId\n        ├── pricingType\n        ├── specName[]\n        ├── skuIdList[]\n        ├── status\n        ├── suggestSupplierPrice\n        ├── targetSupplierPrice\n        ├── sourceSupplierPrice\n        ├── supplierPrice\n        ├── reason\n        ├── rejectTypeDesc\n        ├── priceCommitId\n        └── priceCommitVersion\n```\n\n### `response` 顶层字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Is success（当前请求是否成功） |\n| errorCode | INTEGER | Error code（错误码） |\n| errorMsg | STRING | Error message（错误信息） |\n| result | OBJECT | Return specific information（业务结果） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| pageNum | INTEGER | Page number（当前页码） |\n| total | LONG | Total（总记录数） |\n| priceAuditList | OBJECT[] | Price offer list（定价单/报价列表） |\n\n### `result.priceAuditList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| priceOrderId | LONG | Pricing ID（定价单 ID） |\n| goodsId | LONG | Goods ID（商品 ID） |\n| pricingType | INTEGER | pricing type，见下表 |\n| specName | STRING[] | Specification Name（规格名称列表） |\n| skuIdList | LONG[] | SKU id list（SKU ID 列表） |\n| status | INTEGER | Status of price offer（报价/定价单状态） |\n| suggestSupplierPrice | OBJECT | Reference Base Price（参考基础价/建议供货价） |\n| targetSupplierPrice | OBJECT | New Base Price（目标新基础价） |\n| sourceSupplierPrice | OBJECT | source supplier price（原供货价） |\n| supplierPrice | OBJECT | Final Base Price（最终基础价/供货价） |\n| reason | STRING | Rejection Reason（拒绝原因） |\n| rejectTypeDesc | STRING | Rejection Type Description（拒绝类型描述） |\n| priceCommitId | LONG | Price commit id（价格提交 ID） |\n| priceCommitVersion | INTEGER | Price commit version（价格提交版本） |\n\n#### `pricingType`（响应字段，与入参 `priceOrderType` 枚举略有差异）\n\n| 值 | 说明 |\n|----|------|\n| `0` | offer for pricing assessment（定价评估报价） |\n| `1` | offer for pricing opportunities（定价机会报价） |\n| `2` | offer for pricing modification（改价报价） |\n\n### 价格对象结构（`suggestSupplierPrice` / `targetSupplierPrice` / `sourceSupplierPrice` / `supplierPrice`）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| amount | STRING | Amount（金额） |\n| currency | STRING | Currency Type（币种） |\n\n### 响应示例（结构示意）\n\n```json\n{\n  \"success\": true,\n  \"errorCode\": 0,\n  \"errorMsg\": \"\",\n  \"result\": {\n    \"pageNum\": 1,\n    \"total\": 2,\n    \"priceAuditList\": [\n      {\n        \"priceOrderId\": 90001,\n        \"goodsId\": 123456789,\n        \"pricingType\": 0,\n        \"specName\": [\"Color: Red\", \"Size: M\"],\n        \"skuIdList\": [58224724203874],\n        \"status\": 1,\n        \"suggestSupplierPrice\": { \"amount\": \"12.00\", \"currency\": \"EUR\" },\n        \"targetSupplierPrice\": { \"amount\": \"10.99\", \"currency\": \"EUR\" },\n        \"sourceSupplierPrice\": { \"amount\": \"13.50\", \"currency\": \"EUR\" },\n        \"supplierPrice\": { \"amount\": \"10.99\", \"currency\": \"EUR\" },\n        \"reason\": \"\",\n        \"rejectTypeDesc\": \"\",\n        \"priceCommitId\": 80001,\n        \"priceCommitVersion\": 1\n      }\n    ]\n  }\n}\n```\n\n---\n\n## 与相关接口区分\n\n| 接口 | 场景 |\n|------|------|\n| `bg.local.goods.priceorder.query`（本接口） | **白名单**商家分页查询定价单/报价列表 |\n| `bg.local.goods.priceorder.change.sku.price` | **白名单**商家批量修改 SKU 基础价 |\n| `linkfox-temu-add-product-us` `temu.goods.price.list.get` | 半托管侧按 `productSkuIds` 查供货价 |\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_priceorder_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}'\n```\n\nFile v1.0.6:references/apis/temu-local-goods-baseprice-recommend.md\n\n# 推荐基础价/供货价估算 — `temu.local.goods.baseprice.recommend`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_baseprice_recommend.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `temu.local.goods.baseprice.recommend` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`temu.local.goods.baseprice.recommend`，业务载荷放在 Body 的 `params` |\n\n**Description:** Recommend baseprice（根据类目、规格、站外售价、尺寸重量等信息推荐/估算供货价）。\n\n> **网关鉴权字段**（`type`、`app_key`、`access_token`、`sign`、`timestamp` 等）由本 skill 网关脚本处理，**不要**放进业务脚本的 `params`；业务参数见下方 `request`。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── language (STRING, 否)\n    └── supplierPriceEstimateQry (OBJECT, 必填)\n        ├── trademarkInfo (OBJECT, 否)\n        │   ├── brandId (LONG, 否)\n        │   └── trademarkId (LONG, 否)\n        ├── goodsBasicInfo (OBJECT, 必填)\n        │   ├── catId (LONG, 必填)\n        │   ├── taxCode (STRING, 否)\n        │   └── costTemplateId (STRING, 否)\n        └── supplierPriceEstimateSkuQryList[] (OBJECT[], 必填)\n            ├── specIdList[] (LONG[], 必填)\n            ├── externPlatformPriceInfo (OBJECT, 必填)\n            │   ├── amount (STRING, 否)\n            │   └── currency (STRING, 否)\n            └── productDimensionsInfo (OBJECT, 否)\n                ├── weight (STRING, 否)\n                ├── weightUnit (STRING, 否)\n                ├── length (STRING, 否)\n                ├── width (STRING, 否)\n                ├── height (STRING, 否)\n                └── dimensionUnit (STRING, 否)\n```\n\n### `request`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| language | STRING | 否 | Language |\n| supplierPriceEstimateQry | OBJECT | **是** | Supplier price estimate query |\n\n### `supplierPriceEstimateQry`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| trademarkInfo | OBJECT | 否 | Brand information; if provided, will assist merchants in suggesting more accurate prices. |\n| goodsBasicInfo | OBJECT | **是** | Goods basic information |\n| supplierPriceEstimateSkuQryList | OBJECT[] | **是** | Supplier price estimate need info (per SKU/spec) |\n\n### `trademarkInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| brandId | LONG | 否 | Brand ID |\n| trademarkId | LONG | 否 | Trademark ID |\n\n### `goodsBasicInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| catId | LONG | **是** | The ID of the category of this product. It must be a **leaf category** that corresponds to the category tree type specified in the category_version property. |\n| taxCode | STRING | 否 | Product Tax code |\n| costTemplateId | STRING | 否 | The ID of the delivery options available for your product, delimited by commas. Sellers can create ship configurations based on business needs; when listing product to create offer, seller selects one ship configuration for the product. The ship configuration will be used to retrieve the valid ship options on the website. |\n\n### `supplierPriceEstimateSkuQryList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| specIdList | LONG[] | **是** | Specification ID List |\n| externPlatformPriceInfo | OBJECT | **是** | The selling price of the product on other platforms |\n| productDimensionsInfo | OBJECT | 否 | Product dimensions message |\n\n### `externPlatformPriceInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| amount | STRING | 否 | The selling price of the product on other platforms |\n| currency | STRING | 否 | Currency Code |\n\n### `productDimensionsInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| weight | STRING | 否 | The weight of the product. (**Brazil site is mandatory.**) |\n| weightUnit | STRING | 否 | The unit of the weight. The weight unit for product in the **United States** is **`lb`** while in other countries it is **`kg`**. (**Brazil site is mandatory.**) |\n| length | STRING | 否 | The length of the product. Length should be input with two decimal places. (**Brazil site is mandatory.**) |\n| width | STRING | 否 | The width of the product. Width should be input with two decimal places. (**Brazil site is mandatory.**) |\n| height | STRING | 否 | The height of the product. Height should be input with two decimal places. (**Brazil site is mandatory.**) |\n| dimensionUnit | STRING | 否 | Dimension unit. The dimension unit for product in the **United States** is **`inch`** while in other countries it is **`cm`**. (**Brazil site is mandatory.**) |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"language\": \"en-US\",\n    \"supplierPriceEstimateQry\": {\n      \"trademarkInfo\": {\n        \"brandId\": 10001,\n        \"trademarkId\": 20002\n      },\n      \"goodsBasicInfo\": {\n        \"catId\": 12345,\n        \"taxCode\": \"TAX001\",\n        \"costTemplateId\": \"100,101\"\n      },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001, 9002],\n          \"externPlatformPriceInfo\": {\n            \"amount\": \"29.99\",\n            \"currency\": \"EUR\"\n          },\n          \"productDimensionsInfo\": {\n            \"weight\": \"1.20\",\n            \"weightUnit\": \"lb\",\n            \"length\": \"10.00\",\n            \"width\": \"8.00\",\n            \"height\": \"2.50\",\n            \"dimensionUnit\": \"inch\"\n          }\n        }\n      ]\n    }\n  }\n}\n```\n\n> 欧洲站尺寸/重量单位建议：`weightUnit=lb`、`dimensionUnit=inch`；`goodsBasicInfo.catId` 须为**叶子类目**。\n\n---\n\n## Response（Temu `body` 解析后）\n\n官方 Response 字段表尚未提供；解析顺序与通用 Manage 接口一致：\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    └── （推荐价/估算结果字段以 Partner 文档与实网返回为准）\n```\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Success |\n| errorCode | INTEGER | Error code |\n| errorMsg | STRING | Error message |\n| result | OBJECT | Result payload（具体子字段待官方 Response 表补充） |\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_baseprice_recommend.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"language\": \"en-US\",\n    \"supplierPriceEstimateQry\": {\n      \"goodsBasicInfo\": { \"catId\": 12345 },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001],\n          \"externPlatformPriceInfo\": { \"amount\": \"19.99\", \"currency\": \"EUR\" },\n          \"productDimensionsInfo\": {\n            \"weight\": \"0.50\",\n            \"weightUnit\": \"lb\",\n            \"length\": \"6.00\",\n            \"width\": \"4.00\",\n            \"height\": \"1.00\",\n            \"dimensionUnit\": \"inch\"\n          }\n        }\n      ]\n    }\n  }\n}'\n```\n\nFile v1.0.6:references/apis/temu-local-goods-recommendedprice-query.md\n\n# 推荐供货价查询 — `temu.local.goods.recommendedprice.query`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_recommendedprice_query.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `temu.local.goods.recommendedprice.query` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`temu.local.goods.recommendedprice.query`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants in querying the recommended supply prices（支持商家查询推荐供货价）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 `request`。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── language\n    ├── recommendedPriceType    ← 必填\n    └── goodsIdList[]           ← 必填，1～100 个\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| language | STRING | 否 | Language（语言） |\n| recommendedPriceType | INTEGER | **是** | Recommended price type（推荐价类型） |\n| goodsIdList | LONG[] | **是** | Search param: list of Goods ID（商品 ID 列表），**列表长度须在 1～100 之间** |\n\n#### `recommendedPriceType`\n\n| 值 | 说明 |\n|----|------|\n| `10` | Low traffic（低流量） |\n| `20` | Restricted traffic（限流/受限流量） |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"language\": \"en\",\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789, 123456790]\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 20,\n    \"goodsIdList\": [111111111]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    └── goodsList[]\n        ├── goodsId\n        └── skuList[]\n            ├── skuId\n            └── recommendedSupplyPrice\n                ├── amount\n                └── currency\n```\n\n### `response` 顶层字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Whether it was successful or not（当前请求是否成功） |\n| errorCode | INTEGER | Error code（错误码） |\n| errorMsg | STRING | Error message（错误信息） |\n| result | OBJECT | Specific information（业务结果） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| goodsList | OBJECT[] | Goods recommended price info list（商品推荐供货价信息列表） |\n\n### `result.goodsList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| goodsId | LONG | Goods ID（商品 ID） |\n| skuList | OBJECT[] | SKU recommended price info list（SKU 推荐供货价信息列表） |\n\n### `result.goodsList[].skuList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|------|\n| skuId | LONG | SKU ID |\n| recommendedSupplyPrice | OBJECT | Recommended supply price（推荐供货价） |\n\n### `recommendedSupplyPrice`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| amount | STRING | Amount（金额） |\n| currency | STRING | Currency（币种） |\n\n### 响应示例（结构示意）\n\n```json\n{\n  \"success\": true,\n  \"errorCode\": 0,\n  \"errorMsg\": \"\",\n  \"result\": {\n    \"goodsList\": [\n      {\n        \"goodsId\": 123456789,\n        \"skuList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"recommendedSupplyPrice\": {\n              \"amount\": \"12.99\",\n              \"currency\": \"EUR\"\n            }\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n---\n\n## 与相关接口区分\n\n| 接口 | 场景 |\n|------|------|\n| `temu.local.goods.recommendedprice.query`（本接口） | 按**已存在商品** `goodsIdList` 查询平台**推荐供货价**（低流量/限流等类型） |\n| `temu.local.goods.baseprice.recommend` | 发品/改价前按**类目+规格+站外价**等**估算**推荐基础价 |\n| `bg.local.goods.priceorder.query` | 白名单商家查询定价单/报价列表（含 `supplierPrice` 等） |\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_recommendedprice_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789]\n  }\n}'\n```\n\nFile v1.0.6:references/authorization-flow.md\n\n# Temu 授权流程\n\n```text\n用户确认店铺类型与用途\n        ↓\ntemu_token_guide.py（输出后台操作步骤）\n        ↓\n用户在 Temu 卖家后台复制 access_token\n        ↓\nsave_temu_access_token.py（可选，写入本地 store）\n        ↓\ntemu_proxy.py / temu_file_download.py\n  - 直接传 accessToken，或\n  - 传 storeKey + site + managementType + tokenPurpose\n```\n\n## 决策表\n\n| 用户需求 | shopType | tokenPurpose | site |\n|----------|----------|--------------|------|\n| 半托管查商品/库存 | semi-managed | product-inventory | cn / partner |\n| 半托管查订单/发货 | semi-managed | order-shipping | us / global / eu |\n| 全托管任意接口 | full-managed | full-managed | cn / partner |\n| 美欧本土店 | local-native | local-native | us 等 |\n\n## 与 API 调用的对应关系\n\n紫鸟转发路径：`/temu-proxy/{site}/{managementType}`\n\n- 全托管 CN：`cn` + `full-managed`\n- 半托管商品：`cn`/`partner` + `semi-managed` + 商品 token\n- 半托管订单：`us`/`global`/`eu` + `semi-managed` + 订单 token\n\n授权应用名称必须与后台一致：**酷鸟卖家助手** 或 **Cyber-ERP酷鸟助手** / **Cyber-ERP**。\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:references/partner-eu-catalog.md\n\n# Partner EU — Price 接口目录\n\nPartner Platform for EU 菜单：**Price**（`menu_code=dfff38c23adf498d8a7cd55052bd3648`）。\n\n文档根 `menu_code`（浏览器地址栏常见）：`7289390cfd724be4a196f11ebe45a896`。\n\n本 skill 覆盖与 US 版对齐的 **4** 个价格/供货价 `type`。调用经 `temu_eu_proxy`（`POST /temu/proxy`），默认 **`site=eu`**。\n\n> EU 菜单 HTML 导出中 **Price** 子项未完全展开，下列 4 个接口的 `sub_menu_code` 除已确认者外链至 **Price** 父级；请在 [partner-eu.temu.com](https://partner-eu.temu.com/documentation) 按 `type` 核对。另：`bg.local.goods.sku.list.price.query` 在 **Manage Products** 下可见（`sub_menu_code=c0de4d3f92d94b84a5044c4a3beda9f2`），属 SKU 价格列表，本 skill 未单独封装，可用 `temu_eu_proxy` 调用。\n\n## 已接入（4）\n\n| sub_menu_code | type | 脚本 | 参数文档 |\n|---------------|------|------|----------|\n| `—` | `temu.local.goods.baseprice.recommend` | `eu_price_baseprice_recommend.py` | [apis/temu-local-goods-baseprice-recommend.md](./apis/temu-local-goods-baseprice-recommend.md) |\n| `—` | `temu.local.goods.recommendedprice.query` | `eu_price_recommendedprice_query.py` | [apis/temu-local-goods-recommendedprice-query.md](./apis/temu-local-goods-recommendedprice-query.md) |\n| `—` | `bg.local.goods.priceorder.query` | `eu_price_priceorder_query.py` | [apis/bg-local-goods-priceorder-query.md](./apis/bg-local-goods-priceorder-query.md) |\n| `—` | `bg.local.goods.priceorder.change.sku.price` | `eu_price_priceorder_change_sku_price.py` | [apis/bg-local-goods-priceorder-change-sku-price.md](./apis/bg-local-goods-priceorder-change-sku-price.md) |\n\n## 官方文档 URL\n\n| type | URL |\n|------|-----|\n| `temu.local.goods.baseprice.recommend` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n| `temu.local.goods.recommendedprice.query` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n| `bg.local.goods.priceorder.query` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n| `bg.local.goods.priceorder.change.sku.price` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n\n## 上游 OpenAPI（EU）\n\n`POST` https://openapi-b-eu.temu.com/openapi/router（经 LinkFox 网关 `site=eu` 转发）\n\n| 全球站（非 US/EU）价格 | `linkfox-temu-price-global` |\n\n## 与 add-product / manage-product 区分\n\n| skill | type | 说明 |\n|-------|------|------|\n| **本 skill** | `bg.local.goods.priceorder.*` / `temu.local.goods.*price*` | 定价单、推荐价、批量改价 |\n| `linkfox-temu-manage-product-eu` | `bg.local.goods.sku.list.price.query` 等 | 商品管理域 |\n| `linkfox-temu-add-product-us` | `temu.goods.price.list.get` | 发品侧（EU 可 `site=eu`） |\n\nArchive v1.0.5: 32 files, 48972 bytes\n\nFiles: references/access-token.md (4604b), references/api.md (4147b), references/apis/bg-local-goods-priceorder-change-sku-price.md (5070b), references/apis/bg-local-goods-priceorder-query.md (8203b), references/apis/README.md (938b), references/apis/temu-local-goods-baseprice-recommend.md (7162b), references/apis/temu-local-goods-recommendedprice-query.md (4302b), references/authorization-flow.md (1186b), references/onboarding.md (2046b), references/partner-eu-catalog.md (2871b), scripts/_eu_price_script.py (512b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12423b), scripts/_temu_eu_common.py (3094b), scripts/_temu_token_store.py (4273b), scripts/check_linkfox_token.py (1797b), scripts/eu_price_baseprice_recommend.py (281b), scripts/eu_price_priceorder_change_sku_price.py (311b), scripts/eu_price_priceorder_query.py (273b), scripts/eu_price_recommendedprice_query.py (280b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/onboarding.py (24089b), scripts/save_temu_access_token.py (1377b), scripts/temu_eu_file_download.py (691b), scripts/temu_eu_proxy.py (911b), scripts/temu_file_download.py (1681b), scripts/temu_proxy.py (2124b), scripts/temu_token_guide.py (1594b), skill-card.md (2949b), SKILL.md (6958b), _meta.json (140b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkfox-temu-price-eu\ndescription: Temu 欧洲站商品价格管理 API，经 LinkFox 网关转发 Partner EU 价格接口：定价单列表查询(bg.local.goods.priceorder.query)、批量改 SKU 基础价(bg.local.goods.priceorder.change.sku.price)、推荐供货价/基础价估算等。当用户提到 Temu EU 价格、Temu欧洲站定价单、priceorder query、priceAuditList、改供货价、批量改价、site=eu 改价、recommendedprice query、baseprice recommend 时触发。商品管理用 linkfox-temu-manage-product-eu；订单/发品等其它域可用 US skill 并设 site=eu。\n---\n\n# Temu 欧洲站价格 API（linkfox-temu-price-eu）\n\n美国站请用 **`linkfox-temu-price-us`**；全球站（非 US/EU）请用 **`linkfox-temu-price-global`**。\n\n本 skill（`linkfox-temu-price-eu`）覆盖 Partner Platform for EU **Price** 菜单（`menu_code=dfff38c23adf498d8a7cd55052bd3648`）下与**价格/供货价**相关的 `bg.local.*` / `temu.local.*` 接口（`type` 与 US 版对齐，默认 `site=eu`）。\n\n> 当前已接入 **4** 个接口；其余价格接口将按 Partner 文档逐条补充到 `references/apis/` 与 `eu_price_*.py`。\n\n**网关（本 skill 内置）**：\n\n| 能力 | 方法 | 路径 |\n|------|------|------|\n| 价格 OpenAPI（`eu_price_*`、`temu_eu_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\n\n## 相关 skill\n\n| 场景 | skill |\n|------|--------|\n| 商品列表/详情/编辑/库存/上下架 | `linkfox-temu-manage-product-eu` |\n| 订单查询、发货、物流 | `linkfox-temu-order-us` |\n| 取消订单（买家+卖家） | `linkfox-temu-cancel-order-us` |\n\n| 履约/发货（含自发货） | `linkfox-temu-fulfillment-eu` |\n| 发品、类目、V2 add | `linkfox-temu-add-product-us` |\n| 半托管 `temu.goods.price.list.get`（`productSkuIds`） | `linkfox-temu-add-product-us` → `us_goods_price_list.py` |\n| 网关与 Temu token | 本 skill `scripts/` |\n\n## 调用方式\n\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `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` 从保存的 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| site | `eu` | Partner EU |\n| managementType | `semi-managed` | 半托管 |\n| tokenPurpose | `product-inventory` | 酷鸟卖家助手 token |\n\n## 鉴权\n\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\n2. **Temu**：`accessToken` 或 `storeKey`\n\n## Scripts（按 type）\n\n| 脚本 | type | 状态 |\n|------|------|------|\n| `eu_price_baseprice_recommend.py` | `temu.local.goods.baseprice.recommend` | 已接入 |\n| `eu_price_recommendedprice_query.py` | `temu.local.goods.recommendedprice.query` | 已接入 |\n| `eu_price_priceorder_query.py` | `bg.local.goods.priceorder.query` | 已接入 |\n| `eu_price_priceorder_change_sku_price.py` | `bg.local.goods.priceorder.change.sku.price` | 已接入 |\n| `temu_eu_proxy.py` | 任意 `type` | 通用 |\n| `temu_eu_file_download.py` | 加签文件下载 | 通用 |\n\n> 新增接口后在此表与 [partner-eu-catalog.md](./references/partner-eu-catalog.md) 同步登记。\n\n## 示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\n\n# 推荐基础价/供货价估算（须 catId + supplierPriceEstimateSkuQryList）\npython scripts/eu_price_baseprice_recommend.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"supplierPriceEstimateQry\": {\n      \"goodsBasicInfo\": { \"catId\": 12345 },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001],\n          \"externPlatformPriceInfo\": { \"amount\": \"19.99\", \"currency\": \"EUR\" }\n        }\n      ]\n    }\n  }\n}'\n\n# 推荐供货价查询（须 recommendedPriceType + goodsIdList，1～100 个 goodsId）\npython scripts/eu_price_recommendedprice_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789]\n  }\n}'\n\n# 定价单列表查询（白名单；分页 page/size，可选筛选）\npython scripts/eu_price_priceorder_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}'\n\n# 批量修改 SKU 基础价（白名单；须 goodsId + changeSkuPriceDTOList）\npython scripts/eu_price_priceorder_change_sku_price.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": { \"amount\": \"15.99\", \"currency\": \"EUR\" }\n          }\n        ]\n      }\n    ]\n  }\n}'\n```\n\n**Feedback：** `skillName`：`linkfox-temu-price-eu`\n\n## 网关与授权脚本\n\n| 脚本 | 说明 |\n|------|------|\n| `check_linkfox_token.py` | 校验 LinkFox 用户 Token |\n| `temu_token_guide.py` | Temu accessToken 后台授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token |\n| `get_temu_access_token.py` | 读取已保存 token |\n| `temu_proxy.py` | 通用网关转发（多 site） |\n| `temu_file_download.py` | 加签文件下载（多 site） |\n\n授权说明：[references/access-token.md](./references/access-token.md)\n\n## 积分消耗规则\n\n不消耗积分。\n\nFile v1.0.5:references/apis/README.md\n\n# Price — 接口文档索引\n\n每个 `type` 单独一份文档，经 `POST /temu/proxy` 调用。网关与鉴权见 [../api.md](../api.md)；目录与 `sub_menu_code` 见 [../partner-eu-catalog.md](../partner-eu-catalog.md)。\n\n## 查询（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.query` | [bg-local-goods-priceorder-query.md](./bg-local-goods-priceorder-query.md) |\n\n## 推荐 / 估算（2）\n\n| type | 文档 |\n|------|------|\n| `temu.local.goods.baseprice.recommend` | [temu-local-goods-baseprice-recommend.md](./temu-local-goods-baseprice-recommend.md) |\n| `temu.local.goods.recommendedprice.query` | [temu-local-goods-recommendedprice-query.md](./temu-local-goods-recommendedprice-query.md) |\n\n## 编辑 / 改价（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.change.sku.price` | [bg-local-goods-priceorder-change-sku-price.md](./bg-local-goods-priceorder-change-sku-price.md) |\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-price-eu\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1786101634712\n}\n\nFile v1.0.5:references/access-token.md\n\n# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth）（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=eu` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 欧洲站 | openapi-b-eu.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'\n```\n\n## 注意事项\n\n1. **子账号**：可能无法进入服务市场，需主账号授权。\n2. **多站点**：欧洲站、英国站等需分别登录对应后台获取 Token。\n3. **有效期**：Token 会过期，过期后重新在后台复制并 `save_temu_access_token.py`。\n4. **IP 白名单**：需联系紫鸟开放平台配置调用 IP。\n5. **参数小写**：`site`、`managementType` 必须小写。\n\n## 脚本一览\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_token_guide.py` | 按店铺类型/用途输出授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token（默认脱敏）|\n| `get_temu_access_token.py` | 读取指定 store 的 token |\n\nFile v1.0.5:references/api.md\n\n# linkfox-temu-price-eu — API 参考\r\n\r\nTemu **欧洲站商品价格管理**（Partner EU **Price** 菜单下价格/供货价相关接口），经本 skill `temu_eu_proxy`（`POST /temu/proxy`） 转发。Temu 的 `type` 写在 Body，**不是** URL 路径。\r\n\r\n> 网关与鉴权：本 skill `scripts/`（`LINKFOXAGENT_API_KEY`、`accessToken` / `storeKey`）。授权见 `references/access-token.md`。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\r\n\r\n---\r\n\r\n## 调用规范\r\n\r\n| 项 | 说明 |\r\n|----|------|\r\n| 网关根地址 | `${LINKFOX_TOOL_GATEWAY}`（可用 `TEMU_API_BASE_URL` / `STORE_API_BASE_URL` 覆盖） |\r\n| 价格 OpenAPI | `POST /temu/proxy` |\r\n| 加签文件下载 | `POST /temu/fileDownload`（`temu_eu_file_download.py`） |\r\n| LinkFox 鉴权 | Header **`Authorization`** 与 **`Token`**（同值）；或 `LINKFOX_AGENT_API_KEY` / `LINKFOXAGENT_API_KEY`；或 JSON `token`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\r\n| Temu 鉴权 | Body `accessToken`，或 `storeKey` + `site` + `managementType` + `tokenPurpose` |\r\n| 默认 | `site=eu`，`managementType=semi-managed`，`tokenPurpose=product-inventory` |\r\n| 上游 OpenAPI（EU） | `https://openapi-b-eu.temu.com/openapi/router`（网关按 `site` 解析） |\r\n\r\n### 网关请求 Body（`/temu/proxy`）\r\n\r\n| 参数 | 类型 | 必填 | 说明 |\r\n|------|------|------|------|\r\n| site | string | 是 | `eu`（本 skill 默认） |\r\n| managementType | string | 是 | `semi-managed` |\r\n| accessToken | string | 与 storeKey 二选一 | Temu 店铺令牌 |\r\n| storeKey | string | 与 accessToken 二选一 | `~/.linkfox/temu-access-tokens.json` 中的键 |\r\n| tokenPurpose | string | 否 | 建议 `product-inventory` |\r\n| type | string | 是 | Temu 接口名，如 `bg.local.goods.priceorder.query` |\r\n| params | object | 否 | 业务参数；多数 Manage 接口业务块在 **`params.request`** |\r\n\r\n### 网关响应\r\n\r\n| 字段 | 类型 | 说明 |\r\n|------|------|------|\r\n| body | string | Temu 原始 JSON 字符串；脚本解析为 `temuBody` |\r\n| code | integer | 网关错误码：`1002` 参数/Token，`1003` 转发失败 |\r\n\r\n解析顺序：**网关 `code`** → `JSON.parse(body)` → `success` / `errorCode` / `errorMsg` / `result`。\r\n\r\n### 脚本调用\r\n\r\n```bash\r\nexport LINKFOXAGENT_API_KEY=\"<key>\"\r\npython scripts/eu_price_priceorder_query.py '{\"accessToken\":\"TOKEN\",\"request\":{\"page\":1,\"size\":20,\"priceOrderType\":1}}'\r\n```\r\n\r\n业务字段可放在顶层或嵌套 `params`；含 `request` 时通常整体作为 `params` 转发。\r\n\r\n---\r\n\r\n## 接口一览\r\n\r\n完整 `sub_menu_code` 与 Partner 文档 URL 见 [partner-eu-catalog.md](./partner-eu-catalog.md)。\r\n\r\n**每个接口单独一份文档**：[apis/README.md](./apis/README.md)。\r\n\r\n---\r\n\r\n## 典型价格管理流程\r\n\r\n```text\r\n1. linkfox-temu-manage-product-eu → list/detail / spec.info.get           → 拿 goodsId、catId、specIdList\r\n2. bg.local.goods.priceorder.query（本 skill，白名单）                     → 分页查定价单/报价列表\r\n3. temu.local.goods.recommendedprice.query（本 skill）                     → 按 goodsIdList 查平台推荐供货价\r\n4. temu.local.goods.baseprice.recommend（本 skill）                        → 发品/改价前推荐基础价估算\r\n5. bg.local.goods.priceorder.change.sku.price（本 skill，白名单）          → 批量改 SKU 基础价\r\n6. bg.local.goods.priceorder.query                                         → 改价后核对 priceAuditList / supplierPrice\r\n```\r\n\r\n发品侧半托管供货价列表（`temu.goods.price.list.get`，入参 `productSkuIds`）见 **`linkfox-temu-add-product-us`**，与本 skill 的 `bg.local.*` 本地仓价格接口**不要混用**。\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| code | 说明 | 处理 |\r\n|------|------|------|\r\n| 1002 | 参数或 LinkFox Token 无效 | 修正参数与 `LINKFOXAGENT_API_KEY` |\r\n| 1003 | 转发失败 | 检查 Temu token、白名单、网络 |\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\r\n- `skillName`: **`linkfox-temu-price-eu`**\n\nFile v1.0.5:references/apis/bg-local-goods-priceorder-change-sku-price.md\n\n# 批量修改 SKU 基础价（定价单）— `bg.local.goods.priceorder.change.sku.price`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_priceorder_change_sku_price.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `bg.local.goods.priceorder.change.sku.price` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`bg.local.goods.priceorder.change.sku.price`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants within the **white list** to modify SKU base prices in batches.\n\n> 须在 Temu 白名单内方可调用；非白名单店铺可能返回业务错误。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── goodsId (LONG, 必填)\n    ├── changeSkuPriceDTOList[] (OBJECT[], 必填)\n    │   ├── reason (STRING, 否)\n    │   └── skuChangePriceBaseDTOList[] (OBJECT[], 必填)\n    │       ├── skuId (LONG, 必填)\n    │       └── newSupplierPrice (OBJECT, 必填)\n    │           ├── amount (STRING, 否)\n    │           └── currency (STRING, 否)\n    └── rejectSkuPricing (BOOLEAN, 否)\n```\n\n### `request`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| goodsId | LONG | **是** | Goods Id |\n| changeSkuPriceDTOList | OBJECT[] | **是** | SKU information and reason that adjust price |\n| rejectSkuPricing | BOOLEAN | 否 | Reject if price order is wait merchant confirm |\n\n### `changeSkuPriceDTOList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| reason | STRING | 否 | The reason of adjust price |\n| skuChangePriceBaseDTOList | OBJECT[] | **是** | SKU information |\n\n### `skuChangePriceBaseDTOList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| skuId | LONG | **是** | SKU ID |\n| newSupplierPrice | OBJECT | **是** | Base price (new supplier price) |\n\n### `newSupplierPrice`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| amount | STRING | 否 | Amount |\n| currency | STRING | 否 | Currency Type |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"rejectSkuPricing\": true,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"reason\": \"Cost adjustment\",\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": {\n              \"amount\": \"18.99\",\n              \"currency\": \"EUR\"\n            }\n          },\n          {\n            \"skuId\": 58224724203875,\n            \"newSupplierPrice\": {\n              \"amount\": \"19.99\",\n              \"currency\": \"EUR\"\n            }\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n> 同一 `goodsId` 下可在一个 `changeSkuPriceDTOList` 项里放多个 SKU；也可按调价原因拆成多项，每项带各自的 `reason` 与 `skuChangePriceBaseDTOList`。\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success (BOOLEAN)\n├── errorCode (INTEGER)\n├── errorMsg (STRING)\n└── result (OBJECT)\n    ├── successSkuList[] (LONG)\n    ├── failedSkuList[] (LONG)\n    ├── failedSkuReasonMap (MAP)\n    │   ├── $key (STRING)   → SKU ID\n    │   └── $value (STRING) → Fail reason\n    └── successPriceOrderList[] (OBJECT[])\n        ├── priceOrderSn (STRING)\n        └── skuIdList[] (LONG)\n```\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Is success |\n| errorCode | INTEGER | Error code |\n| errorMsg | STRING | Error message |\n| result | OBJECT | Return specific information |\n| result.successSkuList | LONG[] | SKU list with successfully changed prices |\n| result.failedSkuList | LONG[] | SKU list with failed change price |\n| result.failedSkuReasonMap | MAP | Reasons for price adjustment failure；**key** 为 SKU ID（字符串），**value** 为失败原因 |\n| result.successPriceOrderList | OBJECT[] | List of price orders that request for changing price successfully |\n\n### `successPriceOrderList[]` 元素\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| priceOrderSn | STRING | Price order Sn |\n| skuIdList | LONG[] | List of SKUs corresponding to price order |\n\n### `failedSkuReasonMap` 示例\n\n```json\n{\n  \"58224724203875\": \"Price order pending merchant confirm\"\n}\n```\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_priceorder_change_sku_price.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"rejectSkuPricing\": true,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"reason\": \"Promo\",\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": { \"amount\": \"15.99\", \"currency\": \"EUR\" }\n          }\n        ]\n      }\n    ]\n  }\n}'\n```\n\n改价后可用 `bg.local.goods.priceorder.query` 核对 `priceAuditList` 中的 `supplierPrice`，或再次调用本接口查看 `successSkuList` / `failedSkuList`。\n\nFile v1.0.5:references/apis/bg-local-goods-priceorder-query.md\n\n# 定价单列表查询 — `bg.local.goods.priceorder.query`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_priceorder_query.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `bg.local.goods.priceorder.query` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`bg.local.goods.priceorder.query`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants within the **white list** to query the price offer list（支持白名单商家查询定价单/报价列表）。\n\n> 须在 Temu 白名单内方可调用；非白名单店铺可能返回业务错误。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── page\n    ├── size\n    ├── priceOrderType\n    ├── priceOrderSubType\n    ├── goodsName\n    ├── goodsId\n    ├── priceOrderSnList[]\n    ├── orderBy\n    ├── orderByType\n    ├── goodsCreateTimeFrom / goodsCreateTimeTo\n    ├── priceOrderCreateTimeFrom / priceOrderCreateTimeTo\n    ├── goodsIdList[]\n    └── status\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| page | INTEGER | 否 | Page number（页码） |\n| size | INTEGER | 否 | Page size（每页条数），**须小于 100** |\n| priceOrderType | INTEGER | 否 | Pricing type（定价单类型）；**默认**为定价评估报价 |\n| priceOrderSubType | INTEGER | 否 | price order sub type（定价单子类型） |\n| goodsName | STRING | 否 | Search param: goodsName（按商品名搜索） |\n| goodsId | STRING | 否 | Search param: goodsId（按商品 ID 搜索） |\n| priceOrderSnList | STRING[] | 否 | search param: list of price order sn（定价单编号列表） |\n| orderBy | STRING | 否 | 排序字段；**默认** `order_create_time` |\n| orderByType | INTEGER | 否 | 排序方向；**默认** `0`（DESC） |\n| goodsCreateTimeFrom | LONG | 否 | Search param: The starting time of goods creation（商品创建起始时间） |\n| goodsCreateTimeTo | LONG | 否 | Search param: The end time of goods creation（商品创建结束时间） |\n| priceOrderCreateTimeFrom | LONG | 否 | Search param: The starting time of price order creation（定价单创建起始时间） |\n| priceOrderCreateTimeTo | LONG | 否 | Search param: The end time of price order creation（定价单创建结束时间） |\n| goodsIdList | STRING[] | 否 | goodsIdList（商品 ID 列表） |\n| status | INTEGER | 否 | price order status（定价单状态） |\n\n#### `priceOrderType`\n\n| 值 | 说明 |\n|----|------|\n| 不传 / 默认 | offer for pricing assessment（定价评估报价，默认） |\n| `1` | offer for pricing assessment（定价评估报价） |\n| `2` | offer for pricing opportunities or modification（定价机会或改价报价） |\n\n#### `priceOrderSubType`\n\n| 值 | 说明 |\n|----|------|\n| `2002` | base price increase invitations（基础价上调邀请） |\n| `2003` | sales boost（销量提升） |\n\n#### `orderBy`\n\n| 值 | 说明 |\n|----|------|\n| `goods_create_time` | 按商品创建时间排序 |\n| `order_create_time` | 按定价单创建时间排序（**默认**） |\n\n#### `orderByType`\n\n| 值 | 说明 |\n|----|------|\n| `0` | DESC（降序，**默认**） |\n| `1` | ASC（升序） |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 50,\n    \"goodsId\": \"123456789\",\n    \"priceOrderSubType\": 2002,\n    \"status\": 1\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"priceOrderSnList\": [\"PO-SN-001\", \"PO-SN-002\"],\n    \"goodsIdList\": [\"111\", \"222\"]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    ├── pageNum\n    ├── total\n    └── priceAuditList[]          ← Price offer list\n        ├── priceOrderId\n        ├── goodsId\n        ├── pricingType\n        ├── specName[]\n        ├── skuIdList[]\n        ├── status\n        ├── suggestSupplierPrice\n        ├── targetSupplierPrice\n        ├── sourceSupplierPrice\n        ├── supplierPrice\n        ├── reason\n        ├── rejectTypeDesc\n        ├── priceCommitId\n        └── priceCommitVersion\n```\n\n### `response` 顶层字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Is success（当前请求是否成功） |\n| errorCode | INTEGER | Error code（错误码） |\n| errorMsg | STRING | Error message（错误信息） |\n| result | OBJECT | Return specific information（业务结果） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| pageNum | INTEGER | Page number（当前页码） |\n| total | LONG | Total（总记录数） |\n| priceAuditList | OBJECT[] | Price offer list（定价单/报价列表） |\n\n### `result.priceAuditList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| priceOrderId | LONG | Pricing ID（定价单 ID） |\n| goodsId | LONG | Goods ID（商品 ID） |\n| pricingType | INTEGER | pricing type，见下表 |\n| specName | STRING[] | Specification Name（规格名称列表） |\n| skuIdList | LONG[] | SKU id list（SKU ID 列表） |\n| status | INTEGER | Status of price offer（报价/定价单状态） |\n| suggestSupplierPrice | OBJECT | Reference Base Price（参考基础价/建议供货价） |\n| targetSupplierPrice | OBJECT | New Base Price（目标新基础价） |\n| sourceSupplierPrice | OBJECT | source supplier price（原供货价） |\n| supplierPrice | OBJECT | Final Base Price（最终基础价/供货价） |\n| reason | STRING | Rejection Reason（拒绝原因） |\n| rejectTypeDesc | STRING | Rejection Type Description（拒绝类型描述） |\n| priceCommitId | LONG | Price commit id（价格提交 ID） |\n| priceCommitVersion | INTEGER | Price commit version（价格提交版本） |\n\n#### `pricingType`（响应字段，与入参 `priceOrderType` 枚举略有差异）\n\n| 值 | 说明 |\n|----|------|\n| `0` | offer for pricing assessment（定价评估报价） |\n| `1` | offer for pricing opportunities（定价机会报价） |\n| `2` | offer for pricing modification（改价报价） |\n\n### 价格对象结构（`suggestSupplierPrice` / `targetSupplierPrice` / `sourceSupplierPrice` / `supplierPrice`）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| amount | STRING | Amount（金额） |\n| currency | STRING | Currency Type（币种） |\n\n### 响应示例（结构示意）\n\n```json\n{\n  \"success\": true,\n  \"errorCode\": 0,\n  \"errorMsg\": \"\",\n  \"result\": {\n    \"pageNum\": 1,\n    \"total\": 2,\n    \"priceAuditList\": [\n      {\n        \"priceOrderId\": 90001,\n        \"goodsId\": 123456789,\n        \"pricingType\": 0,\n        \"specName\": [\"Color: Red\", \"Size: M\"],\n        \"skuIdList\": [58224724203874],\n        \"status\": 1,\n        \"suggestSupplierPrice\": { \"amount\": \"12.00\", \"currency\": \"EUR\" },\n        \"targetSupplierPrice\": { \"amount\": \"10.99\", \"currency\": \"EUR\" },\n        \"sourceSupplierPrice\": { \"amount\": \"13.50\", \"currency\": \"EUR\" },\n        \"supplierPrice\": { \"amount\": \"10.99\", \"currency\": \"EUR\" },\n        \"reason\": \"\",\n        \"rejectTypeDesc\": \"\",\n        \"priceCommitId\": 80001,\n        \"priceCommitVersion\": 1\n      }\n    ]\n  }\n}\n```\n\n---\n\n## 与相关接口区分\n\n| 接口 | 场景 |\n|------|------|\n| `bg.local.goods.priceorder.query`（本接口） | **白名单**商家分页查询定价单/报价列表 |\n| `bg.local.goods.priceorder.change.sku.price` | **白名单**商家批量修改 SKU 基础价 |\n| `linkfox-temu-add-product-us` `temu.goods.price.list.get` | 半托管侧按 `productSkuIds` 查供货价 |\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_priceorder_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}'\n```\n\nFile v1.0.5:references/apis/temu-local-goods-baseprice-recommend.md\n\n# 推荐基础价/供货价估算 — `temu.local.goods.baseprice.recommend`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_baseprice_recommend.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `temu.local.goods.baseprice.recommend` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`temu.local.goods.baseprice.recommend`，业务载荷放在 Body 的 `params` |\n\n**Description:** Recommend baseprice（根据类目、规格、站外售价、尺寸重量等信息推荐/估算供货价）。\n\n> **网关鉴权字段**（`type`、`app_key`、`access_token`、`sign`、`timestamp` 等）由本 skill 网关脚本处理，**不要**放进业务脚本的 `params`；业务参数见下方 `request`。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── language (STRING, 否)\n    └── supplierPriceEstimateQry (OBJECT, 必填)\n        ├── trademarkInfo (OBJECT, 否)\n        │   ├── brandId (LONG, 否)\n        │   └── trademarkId (LONG, 否)\n        ├── goodsBasicInfo (OBJECT, 必填)\n        │   ├── catId (LONG, 必填)\n        │   ├── taxCode (STRING, 否)\n        │   └── costTemplateId (STRING, 否)\n        └── supplierPriceEstimateSkuQryList[] (OBJECT[], 必填)\n            ├── specIdList[] (LONG[], 必填)\n            ├── externPlatformPriceInfo (OBJECT, 必填)\n            │   ├── amount (STRING, 否)\n            │   └── currency (STRING, 否)\n            └── productDimensionsInfo (OBJECT, 否)\n                ├── weight (STRING, 否)\n                ├── weightUnit (STRING, 否)\n                ├── length (STRING, 否)\n                ├── width (STRING, 否)\n                ├── height (STRING, 否)\n                └── dimensionUnit (STRING, 否)\n```\n\n### `request`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| language | STRING | 否 | Language |\n| supplierPriceEstimateQry | OBJECT | **是** | Supplier price estimate query |\n\n### `supplierPriceEstimateQry`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| trademarkInfo | OBJECT | 否 | Brand information; if provided, will assist merchants in suggesting more accurate prices. |\n| goodsBasicInfo | OBJECT | **是** | Goods basic information |\n| supplierPriceEstimateSkuQryList | OBJECT[] | **是** | Supplier price estimate need info (per SKU/spec) |\n\n### `trademarkInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| brandId | LONG | 否 | Brand ID |\n| trademarkId | LONG | 否 | Trademark ID |\n\n### `goodsBasicInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| catId | LONG | **是** | The ID of the category of this product. It must be a **leaf category** that corresponds to the category tree type specified in the category_version property. |\n| taxCode | STRING | 否 | Product Tax code |\n| costTemplateId | STRING | 否 | The ID of the delivery options available for your product, delimited by commas. Sellers can create ship configurations based on business needs; when listing product to create offer, seller selects one ship configuration for the product. The ship configuration will be used to retrieve the valid ship options on the website. |\n\n### `supplierPriceEstimateSkuQryList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| specIdList | LONG[] | **是** | Specification ID List |\n| externPlatformPriceInfo | OBJECT | **是** | The selling price of the product on other platforms |\n| productDimensionsInfo | OBJECT | 否 | Product dimensions message |\n\n### `externPlatformPriceInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| amount | STRING | 否 | The selling price of the product on other platforms |\n| currency | STRING | 否 | Currency Code |\n\n### `productDimensionsInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| weight | STRING | 否 | The weight of the product. (**Brazil site is mandatory.**) |\n| weightUnit | STRING | 否 | The unit of the weight. The weight unit for product in the **United States** is **`lb`** while in other countries it is **`kg`**. (**Brazil site is mandatory.**) |\n| length | STRING | 否 | The length of the product. Length should be input with two decimal places. (**Brazil site is mandatory.**) |\n| width | STRING | 否 | The width of the product. Width should be input with two decimal places. (**Brazil site is mandatory.**) |\n| height | STRING | 否 | The height of the product. Height should be input with two decimal places. (**Brazil site is mandatory.**) |\n| dimensionUnit | STRING | 否 | Dimension unit. The dimension unit for product in the **United States** is **`inch`** while in other countries it is **`cm`**. (**Brazil site is mandatory.**) |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"language\": \"en-US\",\n    \"supplierPriceEstimateQry\": {\n      \"trademarkInfo\": {\n        \"brandId\": 10001,\n        \"trademarkId\": 20002\n      },\n      \"goodsBasicInfo\": {\n        \"catId\": 12345,\n        \"taxCode\": \"TAX001\",\n        \"costTemplateId\": \"100,101\"\n      },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001, 9002],\n          \"externPlatformPriceInfo\": {\n            \"amount\": \"29.99\",\n            \"currency\": \"EUR\"\n          },\n          \"productDimensionsInfo\": {\n            \"weight\": \"1.20\",\n            \"weightUnit\": \"lb\",\n            \"length\": \"10.00\",\n            \"width\": \"8.00\",\n            \"height\": \"2.50\",\n            \"dimensionUnit\": \"inch\"\n          }\n        }\n      ]\n    }\n  }\n}\n```\n\n> 欧洲站尺寸/重量单位建议：`weightUnit=lb`、`dimensionUnit=inch`；`goodsBasicInfo.catId` 须为**叶子类目**。\n\n---\n\n## Response（Temu `body` 解析后）\n\n官方 Response 字段表尚未提供；解析顺序与通用 Manage 接口一致：\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    └── （推荐价/估算结果字段以 Partner 文档与实网返回为准）\n```\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Success |\n| errorCode | INTEGER | Error code |\n| errorMsg | STRING | Error message |\n| result | OBJECT | Result payload（具体子字段待官方 Response 表补充） |\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_baseprice_recommend.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"language\": \"en-US\",\n    \"supplierPriceEstimateQry\": {\n      \"goodsBasicInfo\": { \"catId\": 12345 },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001],\n          \"externPlatformPriceInfo\": { \"amount\": \"19.99\", \"currency\": \"EUR\" },\n          \"productDimensionsInfo\": {\n            \"weight\": \"0.50\",\n            \"weightUnit\": \"lb\",\n            \"length\": \"6.00\",\n            \"width\": \"4.00\",\n            \"height\": \"1.00\",\n            \"dimensionUnit\": \"inch\"\n          }\n        }\n      ]\n    }\n  }\n}'\n```\n\nFile v1.0.5:references/apis/temu-local-goods-recommendedprice-query.md\n\n# 推荐供货价查询 — `temu.local.goods.recommendedprice.query`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_recommendedprice_query.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `temu.local.goods.recommendedprice.query` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`temu.local.goods.recommendedprice.query`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants in querying the recommended supply prices（支持商家查询推荐供货价）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 `request`。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── language\n    ├── recommendedPriceType    ← 必填\n    └── goodsIdList[]           ← 必填，1～100 个\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| language | STRING | 否 | Language（语言） |\n| recommendedPriceType | INTEGER | **是** | Recommended price type（推荐价类型） |\n| goodsIdList | LONG[] | **是** | Search param: list of Goods ID（商品 ID 列表），**列表长度须在 1～100 之间** |\n\n#### `recommendedPriceType`\n\n| 值 | 说明 |\n|----|------|\n| `10` | Low traffic（低流量） |\n| `20` | Restricted traffic（限流/受限流量） |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"language\": \"en\",\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789, 123456790]\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 20,\n    \"goodsIdList\": [111111111]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    └── goodsList[]\n        ├── goodsId\n        └── skuList[]\n            ├── skuId\n            └── recommendedSupplyPrice\n                ├── amount\n                └── currency\n```\n\n### `response` 顶层字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Whether it was successful or not（当前请求是否成功） |\n| errorCode | INTEGER | Error code（错误码） |\n| errorMsg | STRING | Error message（错误信息） |\n| result | OBJECT | Specific information（业务结果） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| goodsList | OBJECT[] | Goods recommended price info list（商品推荐供货价信息列表） |\n\n### `result.goodsList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| goodsId | LONG | Goods ID（商品 ID） |\n| skuList | OBJECT[] | SKU recommended price info list（SKU 推荐供货价信息列表） |\n\n### `result.goodsList[].skuList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|------|\n| skuId | LONG | SKU ID |\n| recommendedSupplyPrice | OBJECT | Recommended supply price（推荐供货价） |\n\n### `recommendedSupplyPrice`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| amount | STRING | Amount（金额） |\n| currency | STRING | Currency（币种） |\n\n### 响应示例（结构示意）\n\n```json\n{\n  \"success\": true,\n  \"errorCode\": 0,\n  \"errorMsg\": \"\",\n  \"result\": {\n    \"goodsList\": [\n      {\n        \"goodsId\": 123456789,\n        \"skuList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"recommendedSupplyPrice\": {\n              \"amount\": \"12.99\",\n              \"currency\": \"EUR\"\n            }\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n---\n\n## 与相关接口区分\n\n| 接口 | 场景 |\n|------|------|\n| `temu.local.goods.recommendedprice.query`（本接口） | 按**已存在商品** `goodsIdList` 查询平台**推荐供货价**（低流量/限流等类型） |\n| `temu.local.goods.baseprice.recommend` | 发品/改价前按**类目+规格+站外价**等**估算**推荐基础价 |\n| `bg.local.goods.priceorder.query` | 白名单商家查询定价单/报价列表（含 `supplierPrice` 等） |\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_recommendedprice_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789]\n  }\n}'\n```\n\nFile v1.0.5:references/authorization-flow.md\n\n# Temu 授权流程\n\n```text\n用户确认店铺类型与用途\n        ↓\ntemu_token_guide.py（输出后台操作步骤）\n        ↓\n用户在 Temu 卖家后台复制 access_token\n        ↓\nsave_temu_access_token.py（可选，写入本地 store）\n        ↓\ntemu_proxy.py / temu_file_download.py\n  - 直接传 accessToken，或\n  - 传 storeKey + site + managementType + tokenPurpose\n```\n\n## 决策表\n\n| 用户需求 | shopType | tokenPurpose | site |\n|----------|----------|--------------|------|\n| 半托管查商品/库存 | semi-managed | product-inventory | cn / partner |\n| 半托管查订单/发货 | semi-managed | order-shipping | us / global / eu |\n| 全托管任意接口 | full-managed | full-managed | cn / partner |\n| 美欧本土店 | local-native | local-native | us 等 |\n\n## 与 API 调用的对应关系\n\n紫鸟转发路径：`/temu-proxy/{site}/{managementType}`\n\n- 全托管 CN：`cn` + `full-managed`\n- 半托管商品：`cn`/`partner` + `semi-managed` + 商品 token\n- 半托管订单：`us`/`global`/`eu` + `semi-managed` + 订单 token\n\n授权应用名称必须与后台一致：**酷鸟卖家助手** 或 **Cyber-ERP酷鸟助手** / **Cyber-ERP**。\n\nFile v1.0.5:references/onboarding.md\n\n# 解决认证和积分问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`（workbuddy 宿主加 `--channel workbuddy`）\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `积分/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.5:references/partner-eu-catalog.md\n\n# Partner EU — Price 接口目录\n\nPartner Platform for EU 菜单：**Price**（`menu_code=dfff38c23adf498d8a7cd55052bd3648`）。\n\n文档根 `menu_code`（浏览器地址栏常见）：`7289390cfd724be4a196f11ebe45a896`。\n\n本 skill 覆盖与 US 版对齐的 **4** 个价格/供货价 `type`。调用经 `temu_eu_proxy`（`POST /temu/proxy`），默认 **`site=eu`**。\n\n> EU 菜单 HTML 导出中 **Price** 子项未完全展开，下列 4 个接口的 `sub_menu_code` 除已确认者外链至 **Price** 父级；请在 [partner-eu.temu.com](https://partner-eu.temu.com/documentation) 按 `type` 核对。另：`bg.local.goods.sku.list.price.query` 在 **Manage Products** 下可见（`sub_menu_code=c0de4d3f92d94b84a5044c4a3beda9f2`），属 SKU 价格列表，本 skill 未单独封装，可用 `temu_eu_proxy` 调用。\n\n## 已接入（4）\n\n| sub_menu_code | type | 脚本 | 参数文档 |\n|---------------|------|------|----------|\n| `—` | `temu.local.goods.baseprice.recommend` | `eu_price_baseprice_recommend.py` | [apis/temu-local-goods-baseprice-recommend.md](./apis/temu-local-goods-baseprice-recommend.md) |\n| `—` | `temu.local.goods.recommendedprice.query` | `eu_price_recommendedprice_query.py` | [apis/temu-local-goods-recommendedprice-query.md](./apis/temu-local-goods-recommendedprice-query.md) |\n| `—` | `bg.local.goods.priceorder.query` | `eu_price_priceorder_query.py` | [apis/bg-local-goods-priceorder-query.md](./apis/bg-local-goods-priceorder-query.md) |\n| `—` | `bg.local.goods.priceorder.change.sku.price` | `eu_price_priceorder_change_sku_price.py` | [apis/bg-local-goods-priceorder-change-sku-price.md](./apis/bg-local-goods-priceorder-change-sku-price.md) |\n\n## 官方文档 URL\n\n| type | URL |\n|------|-----|\n| `temu.local.goods.baseprice.recommend` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n| `temu.local.goods.recommendedprice.query` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n| `bg.local.goods.priceorder.query` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n| `bg.local.goods.priceorder.change.sku.price` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n\n## 上游 OpenAPI（EU）\n\n`POST` https://openapi-b-eu.temu.com/openapi/router（经 LinkFox 网关 `site=eu` 转发）\n\n| 全球站（非 US/EU）价格 | `linkfox-temu-price-global` |\n\n## 与 add-product / manage-product 区分\n\n| skill | type | 说明 |\n|-------|------|------|\n| **本 skill** | `bg.local.goods.priceorder.*` / `temu.local.goods.*price*` | 定价单、推荐价、批量改价 |\n| `linkfox-temu-manage-product-eu` | `bg.local.goods.sku.list.price.query` 等 | 商品管理域 |\n| `linkfox-temu-add-product-us` | `temu.goods.price.list.get` | 发品侧（EU 可 `site=eu`） |\n\nArchive v1.0.4: 30 files, 40335 bytes\n\nFiles: references/access-token.md (4604b), references/api.md (4147b), references/apis/bg-local-goods-priceorder-change-sku-price.md (5070b), references/apis/bg-local-goods-priceorder-query.md (8203b), references/apis/README.md (938b), references/apis/temu-local-goods-baseprice-recommend.md (7162b), references/apis/temu-local-goods-recommendedprice-query.md (4302b), references/authorization-flow.md (1186b), references/partner-eu-catalog.md (2871b), scripts/_eu_price_script.py (512b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12423b), scripts/_temu_eu_common.py (3094b), scripts/_temu_token_store.py (4273b), scripts/check_linkfox_token.py (1797b), scripts/eu_price_baseprice_recommend.py (281b), scripts/eu_price_priceorder_change_sku_price.py (311b), scripts/eu_price_priceorder_query.py (273b), scripts/eu_price_recommendedprice_query.py (280b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/save_temu_access_token.py (1377b), scripts/temu_eu_file_download.py (691b), scripts/temu_eu_proxy.py (911b), scripts/temu_file_download.py (1681b), scripts/temu_proxy.py (2124b), scripts/temu_token_guide.py (1594b), skill-card.md (3114b), SKILL.md (7575b), _meta.json (140b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkfox-temu-price-eu\ndescription: Temu 欧洲站商品价格管理 API，经 LinkFox 网关转发 Partner EU 价格接口：定价单列表查询(bg.local.goods.priceorder.query)、批量改 SKU 基础价(bg.local.goods.priceorder.change.sku.price)、推荐供货价/基础价估算等。当用户提到 Temu EU 价格、Temu欧洲站定价单、priceorder query、priceAuditList、改供货价、批量改价、site=eu 改价、recommendedprice query、baseprice recommend 时触发。商品管理用 linkfox-temu-manage-product-eu；订单/发品等其它域可用 US skill 并设 site=eu。\n---\n\n# Temu 欧洲站价格 API（linkfox-temu-price-eu）\n\n美国站请用 **`linkfox-temu-price-us`**；全球站（非 US/EU）请用 **`linkfox-temu-price-global`**。\n\n本 skill（`linkfox-temu-price-eu`）覆盖 Partner Platform for EU **Price** 菜单（`menu_code=dfff38c23adf498d8a7cd55052bd3648`）下与**价格/供货价**相关的 `bg.local.*` / `temu.local.*` 接口（`type` 与 US 版对齐，默认 `site=eu`）。\n\n> 当前已接入 **4** 个接口；其余价格接口将按 Partner 文档逐条补充到 `references/apis/` 与 `eu_price_*.py`。\n\n**网关（本 skill 内置）**：\n\n| 能力 | 方法 | 路径 |\n|------|------|------|\n| 价格 OpenAPI（`eu_price_*`、`temu_eu_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\n\n## 相关 skill\n\n| 场景 | skill |\n|------|--------|\n| 商品列表/详情/编辑/库存/上下架 | `linkfox-temu-manage-product-eu` |\n| 订单查询、发货、物流 | `linkfox-temu-order-us` |\n| 取消订单（买家+卖家） | `linkfox-temu-cancel-order-us` |\n\n| 履约/发货（含自发货） | `linkfox-temu-fulfillment-eu` |\n| 发品、类目、V2 add | `linkfox-temu-add-product-us` |\n| 半托管 `temu.goods.price.list.get`（`productSkuIds`） | `linkfox-temu-add-product-us` → `us_goods_price_list.py` |\n| 网关与 Temu token | 本 skill `scripts/` |\n\n## 调用方式\n\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `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` 从保存的 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| site | `eu` | Partner EU |\n| managementType | `semi-managed` | 半托管 |\n| tokenPurpose | `product-inventory` | 酷鸟卖家助手 token |\n\n## 鉴权\n\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\n2. **Temu**：`accessToken` 或 `storeKey`\n\n## Scripts（按 type）\n\n| 脚本 | type | 状态 |\n|------|------|------|\n| `eu_price_baseprice_recommend.py` | `temu.local.goods.baseprice.recommend` | 已接入 |\n| `eu_price_recommendedprice_query.py` | `temu.local.goods.recommendedprice.query` | 已接入 |\n| `eu_price_priceorder_query.py` | `bg.local.goods.priceorder.query` | 已接入 |\n| `eu_price_priceorder_change_sku_price.py` | `bg.local.goods.priceorder.change.sku.price` | 已接入 |\n| `temu_eu_proxy.py` | 任意 `type` | 通用 |\n| `temu_eu_file_download.py` | 加签文件下载 | 通用 |\n\n> 新增接口后在此表与 [partner-eu-catalog.md](./references/partner-eu-catalog.md) 同步登记。\n\n## 示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\n\n# 推荐基础价/供货价估算（须 catId + supplierPriceEstimateSkuQryList）\npython scripts/eu_price_baseprice_recommend.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"supplierPriceEstimateQry\": {\n      \"goodsBasicInfo\": { \"catId\": 12345 },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001],\n          \"externPlatformPriceInfo\": { \"amount\": \"19.99\", \"currency\": \"EUR\" }\n        }\n      ]\n    }\n  }\n}'\n\n# 推荐供货价查询（须 recommendedPriceType + goodsIdList，1～100 个 goodsId）\npython scripts/eu_price_recommendedprice_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789]\n  }\n}'\n\n# 定价单列表查询（白名单；分页 page/size，可选筛选）\npython scripts/eu_price_priceorder_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}'\n\n# 批量修改 SKU 基础价（白名单；须 goodsId + changeSkuPriceDTOList）\npython scripts/eu_price_priceorder_change_sku_price.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": { \"amount\": \"15.99\", \"currency\": \"EUR\" }\n          }\n        ]\n      }\n    ]\n  }\n}'\n```\n\n**Feedback：** `skillName`：`linkfox-temu-price-eu`\n\n## 网关与授权脚本\n\n| 脚本 | 说明 |\n|------|------|\n| `check_linkfox_token.py` | 校验 LinkFox 用户 Token |\n| `temu_token_guide.py` | Temu accessToken 后台授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token |\n| `get_temu_access_token.py` | 读取已保存 token |\n| `temu_proxy.py` | 通用网关转发（多 site） |\n| `temu_file_download.py` | 加签文件下载（多 site） |\n\n授权说明：[references/access-token.md](./references/access-token.md)\n\n## 积分消耗规则\n\n不消耗积分。\n\nFile v1.0.4:references/apis/README.md\n\n# Price — 接口文档索引\n\n每个 `type` 单独一份文档，经 `POST /temu/proxy` 调用。网关与鉴权见 [../api.md](../api.md)；目录与 `sub_menu_code` 见 [../partner-eu-catalog.md](../partner-eu-catalog.md)。\n\n## 查询（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.query` | [bg-local-goods-priceorder-query.md](./bg-local-goods-priceorder-query.md) |\n\n## 推荐 / 估算（2）\n\n| type | 文档 |\n|------|------|\n| `temu.local.goods.baseprice.recommend` | [temu-local-goods-baseprice-recommend.md](./temu-local-goods-baseprice-recommend.md) |\n| `temu.local.goods.recommendedprice.query` | [temu-local-goods-recommendedprice-query.md](./temu-local-goods-recommendedprice-query.md) |\n\n## 编辑 / 改价（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.change.sku.price` | [bg-local-goods-priceorder-change-sku-price.md](./bg-local-goods-priceorder-change-sku-price.md) |\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-price-eu\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783946338997\n}\n\nFile v1.0.4:references/access-token.md\n\n# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth）（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=eu` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 欧洲站 | openapi-b-eu.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'\n```\n\n## 注意事项\n\n1. **子账号**：可能无法进入服务市场，需主账号授权。\n2. **多站点**：欧洲站、英国站等需分别登录对应后台获取 Token。\n3. **有效期**：Token 会过期，过期后重新在后台复制并 `save_temu_access_token.py`。\n4. **IP 白名单**：需联系紫鸟开放平台配置调用 IP。\n5. **参数小写**：`site`、`managementType` 必须小写。\n\n## 脚本一览\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_token_guide.py` | 按店铺类型/用途输出授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token（默认脱敏）|\n| `get_temu_access_token.py` | 读取指定 store 的 token |\n\nFile v1.0.4:references/api.md\n\n# linkfox-temu-price-eu — API 参考\r\n\r\nTemu **欧洲站商品价格管理**（Partner EU **Price** 菜单下价格/供货价相关接口），经本 skill `temu_eu_proxy`（`POST /temu/proxy`） 转发。Temu 的 `type` 写在 Body，**不是** URL 路径。\r\n\r\n> 网关与鉴权：本 skill `scripts/`（`LINKFOXAGENT_API_KEY`、`accessToken` / `storeKey`）。授权见 `references/access-token.md`。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\r\n\r\n---\r\n\r\n## 调用规范\r\n\r\n| 项 | 说明 |\r\n|----|------|\r\n| 网关根地址 | `${LINKFOX_TOOL_GATEWAY}`（可用 `TEMU_API_BASE_URL` / `STORE_API_BASE_URL` 覆盖） |\r\n| 价格 OpenAPI | `POST /temu/proxy` |\r\n| 加签文件下载 | `POST /temu/fileDownload`（`temu_eu_file_download.py`） |\r\n| LinkFox 鉴权 | Header **`Authorization`** 与 **`Token`**（同值）；或 `LINKFOX_AGENT_API_KEY` / `LINKFOXAGENT_API_KEY`；或 JSON `token`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\r\n| Temu 鉴权 | Body `accessToken`，或 `storeKey` + `site` + `managementType` + `tokenPurpose` |\r\n| 默认 | `site=eu`，`managementType=semi-managed`，`tokenPurpose=product-inventory` |\r\n| 上游 OpenAPI（EU） | `https://openapi-b-eu.temu.com/openapi/router`（网关按 `site` 解析） |\r\n\r\n### 网关请求 Body（`/temu/proxy`）\r\n\r\n| 参数 | 类型 | 必填 | 说明 |\r\n|------|------|------|------|\r\n| site | string | 是 | `eu`（本 skill 默认） |\r\n| managementType | string | 是 | `semi-managed` |\r\n| accessToken | string | 与 storeKey 二选一 | Temu 店铺令牌 |\r\n| storeKey | string | 与 accessToken 二选一 | `~/.linkfox/temu-access-tokens.json` 中的键 |\r\n| tokenPurpose | string | 否 | 建议 `product-inventory` |\r\n| type | string | 是 | Temu 接口名，如 `bg.local.goods.priceorder.query` |\r\n| params | object | 否 | 业务参数；多数 Manage 接口业务块在 **`params.request`** |\r\n\r\n### 网关响应\r\n\r\n| 字段 | 类型 | 说明 |\r\n|------|------|------|\r\n| body | string | Temu 原始 JSON 字符串；脚本解析为 `temuBody` |\r\n| code | integer | 网关错误码：`1002` 参数/Token，`1003` 转发失败 |\r\n\r\n解析顺序：**网关 `code`** → `JSON.parse(body)` → `success` / `errorCode` / `errorMsg` / `result`。\r\n\r\n### 脚本调用\r\n\r\n```bash\r\nexport LINKFOXAGENT_API_KEY=\"<key>\"\r\npython scripts/eu_price_priceorder_query.py '{\"accessToken\":\"TOKEN\",\"request\":{\"page\":1,\"size\":20,\"priceOrderType\":1}}'\r\n```\r\n\r\n业务字段可放在顶层或嵌套 `params`；含 `request` 时通常整体作为 `params` 转发。\r\n\r\n---\r\n\r\n## 接口一览\r\n\r\n完整 `sub_menu_code` 与 Partner 文档 URL 见 [partner-eu-catalog.md](./partner-eu-catalog.md)。\r\n\r\n**每个接口单独一份文档**：[apis/README.md](./apis/README.md)。\r\n\r\n---\r\n\r\n## 典型价格管理流程\r\n\r\n```text\r\n1. linkfox-temu-manage-product-eu → list/detail / spec.info.get           → 拿 goodsId、catId、specIdList\r\n2. bg.local.goods.priceorder.query（本 skill，白名单）                     → 分页查定价单/报价列表\r\n3. temu.local.goods.recommendedprice.query（本 skill）                     → 按 goodsIdList 查平台推荐供货价\r\n4. temu.local.goods.baseprice.recommend（本 skill）                        → 发品/改价前推荐基础价估算\r\n5. bg.local.goods.priceorder.change.sku.price（本 skill，白名单）          → 批量改 SKU 基础价\r\n6. bg.local.goods.priceorder.query                                         → 改价后核对 priceAuditList / supplierPrice\r\n```\r\n\r\n发品侧半托管供货价列表（`temu.goods.price.list.get`，入参 `productSkuIds`）见 **`linkfox-temu-add-product-us`**，与本 skill 的 `bg.local.*` 本地仓价格接口**不要混用**。\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| code | 说明 | 处理 |\r\n|------|------|------|\r\n| 1002 | 参数或 LinkFox Token 无效 | 修正参数与 `LINKFOXAGENT_API_KEY` |\r\n| 1003 | 转发失败 | 检查 Temu token、白名单、网络 |\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\r\n- `skillName`: **`linkfox-temu-price-eu`**\n\nFile v1.0.4:references/apis/bg-local-goods-priceorder-change-sku-price.md\n\n# 批量修改 SKU 基础价（定价单）— `bg.local.goods.priceorder.change.sku.price`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_priceorder_change_sku_price.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `bg.local.goods.priceorder.change.sku.price` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`bg.local.goods.priceorder.change.sku.price`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants within the **white list** to modify SKU base prices in batches.\n\n> 须在 Temu 白名单内方可调用；非白名单店铺可能返回业务错误。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── goodsId (LONG, 必填)\n    ├── changeSkuPriceDTOList[] (OBJECT[], 必填)\n    │   ├── reason (STRING, 否)\n    │   └── skuChangePriceBaseDTOList[] (OBJECT[], 必填)\n    │       ├── skuId (LONG, 必填)\n    │       └── newSupplierPrice (OBJECT, 必填)\n    │           ├── amount (STRING, 否)\n    │           └── currency (STRING, 否)\n    └── rejectSkuPricing (BOOLEAN, 否)\n```\n\n### `request`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| goodsId | LONG | **是** | Goods Id |\n| changeSkuPriceDTOList | OBJECT[] | **是** | SKU information and reason that adjust price |\n| rejectSkuPricing | BOOLEAN | 否 | Reject if price order is wait merchant confirm |\n\n### `changeSkuPriceDTOList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| reason | STRING | 否 | The reason of adjust price |\n| skuChangePriceBaseDTOList | OBJECT[] | **是** | SKU information |\n\n### `skuChangePriceBaseDTOList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| skuId | LONG | **是** | SKU ID |\n| newSupplierPrice | OBJECT | **是** | Base price (new supplier price) |\n\n### `newSupplierPrice`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| amount | STRING | 否 | Amount |\n| currency | STRING | 否 | Currency Type |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"rejectSkuPricing\": true,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"reason\": \"Cost adjustment\",\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": {\n              \"amount\": \"18.99\",\n              \"currency\": \"EUR\"\n            }\n          },\n          {\n            \"skuId\": 58224724203875,\n            \"newSupplierPrice\": {\n              \"amount\": \"19.99\",\n              \"currency\": \"EUR\"\n            }\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n> 同一 `goodsId` 下可在一个 `changeSkuPriceDTOList` 项里放多个 SKU；也可按调价原因拆成多项，每项带各自的 `reason` 与 `skuChangePriceBaseDTOList`。\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success (BOOLEAN)\n├── errorCode (INTEGER)\n├── errorMsg (STRING)\n└── result (OBJECT)\n    ├── successSkuList[] (LONG)\n    ├── failedSkuList[] (LONG)\n    ├── failedSkuReasonMap (MAP)\n    │   ├── $key (STRING)   → SKU ID\n    │   └── $value (STRING) → Fail reason\n    └── successPriceOrderList[] (OBJECT[])\n        ├── priceOrderSn (STRING)\n        └── skuIdList[] (LONG)\n```\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Is success |\n| errorCode | INTEGER | Error code |\n| errorMsg | STRING | Error message |\n| result | OBJECT | Return specific information |\n| result.successSkuList | LONG[] | SKU list with successfully changed prices |\n| result.failedSkuList | LONG[] | SKU list with failed change price |\n| result.failedSkuReasonMap | MAP | Reasons for price adjustment failure；**key** 为 SKU ID（字符串），**value** 为失败原因 |\n| result.successPriceOrderList | OBJECT[] | List of price orders that request for changing price successfully |\n\n### `successPriceOrderList[]` 元素\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| priceOrderSn | STRING | Price order Sn |\n| skuIdList | LONG[] | List of SKUs corresponding to price order |\n\n### `failedSkuReasonMap` 示例\n\n```json\n{\n  \"58224724203875\": \"Price order pending merchant confirm\"\n}\n```\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_priceorder_change_sku_price.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"rejectSkuPricing\": true,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"reason\": \"Promo\",\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": { \"amount\": \"15.99\", \"currency\": \"EUR\" }\n          }\n        ]\n      }\n    ]\n  }\n}'\n```\n\n改价后可用 `bg.local.goods.priceorder.query` 核对 `priceAuditList` 中的 `supplierPrice`，或再次调用本接口查看 `successSkuList` / `failedSkuList`。\n\nFile v1.0.4:references/apis/bg-local-goods-priceorder-query.md\n\n# 定价单列表查询 — `bg.local.goods.priceorder.query`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_priceorder_query.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `bg.local.goods.priceorder.query` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`bg.local.goods.priceorder.query`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants within the **white list** to query the price offer list（支持白名单商家查询定价单/报价列表）。\n\n> 须在 Temu 白名单内方可调用；非白名单店铺可能返回业务错误。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── page\n    ├── size\n    ├── priceOrderType\n    ├── priceOrderSubType\n    ├── goodsName\n    ├── goodsId\n    ├── priceOrderSnList[]\n    ├── orderBy\n    ├── orderByType\n    ├── goodsCreateTimeFrom / goodsCreateTimeTo\n    ├── priceOrderCreateTimeFrom / priceOrderCreateTimeTo\n    ├── goodsIdList[]\n    └── status\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| page | INTEGER | 否 | Page number（页码） |\n| size | INTEGER | 否 | Page size（每页条数），**须小于 100** |\n| priceOrderType | INTEGER | 否 | Pricing type（定价单类型）；**默认**为定价评估报价 |\n| priceOrderSubType | INTEGER | 否 | price order sub type（定价单子类型） |\n| goodsName | STRING | 否 | Search param: goodsName（按商品名搜索） |\n| goodsId | STRING | 否 | Search param: goodsId（按商品 ID 搜索） |\n| priceOrderSnList | STRING[] | 否 | search param: list of price order sn（定价单编号列表） |\n| orderBy | STRING | 否 | 排序字段；**默认** `order_create_time` |\n| orderByType | INTEGER | 否 | 排序方向；**默认** `0`（DESC） |\n| goodsCreateTimeFrom | LONG | 否 | Search param: The starting time of goods creation（商品创建起始时间） |\n| goodsCreateTimeTo | LONG | 否 | Search param: The end time of goods creation（商品创建结束时间） |\n| priceOrderCreateTimeFrom | LONG | 否 | Search param: The starting time of price order creation（定价单创建起始时间） |\n| priceOrderCreateTimeTo | LONG | 否 | Search param: The end time of price order creation（定价单创建结束时间） |\n| goodsIdList | STRING[] | 否 | goodsIdList（商品 ID 列表） |\n| status | INTEGER | 否 | price order status（定价单状态） |\n\n#### `priceOrderType`\n\n| 值 | 说明 |\n|----|------|\n| 不传 / 默认 | offer for pricing assessment（定价评估报价，默认） |\n| `1` | offer for pricing assessment（定价评估报价） |\n| `2` | offer for pricing opportunities or modification（定价机会或改价报价） |\n\n#### `priceOrderSubType`\n\n| 值 | 说明 |\n|----|------|\n| `2002` | base price increase invitations（基础价上调邀请） |\n| `2003` | sales boost（销量提升） |\n\n#### `orderBy`\n\n| 值 | 说明 |\n|----|------|\n| `goods_create_time` | 按商品创建时间排序 |\n| `order_create_time` | 按定价单创建时间排序（**默认**） |\n\n#### `orderByType`\n\n| 值 | 说明 |\n|----|------|\n| `0` | DESC（降序，**默认**） |\n| `1` | ASC（升序） |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 50,\n    \"goodsId\": \"123456789\",\n    \"priceOrderSubType\": 2002,\n    \"status\": 1\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"priceOrderSnList\": [\"PO-SN-001\", \"PO-SN-002\"],\n    \"goodsIdList\": [\"111\", \"222\"]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    ├── pageNum\n    ├── total\n    └── priceAuditList[]          ← Price offer list\n        ├── priceOrderId\n        ├── goodsId\n        ├── pricingType\n        ├── specName[]\n        ├── skuIdList[]\n        ├── status\n        ├── suggestSupplierPrice\n        ├── targetSupplierPrice\n        ├── sourceSupplierPrice\n        ├── supplierPrice\n        ├── reason\n        ├── rejectTypeDesc\n        ├── priceCommitId\n        └── priceCommitVersion\n```\n\n### `response` 顶层字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Is success（当前请求是否成功） |\n| errorCode | INTEGER | Error code（错误码） |\n| errorMsg | STRING | Error message（错误信息） |\n| result | OBJECT | Return specific information（业务结果） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| pageNum | INTEGER | Page number（当前页码） |\n| total | LONG | Total（总记录数） |\n| priceAuditList | OBJECT[] | Price offer list（定价单/报价列表） |\n\n### `result.priceAuditList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| priceOrderId | LONG | Pricing ID（定价单 ID） |\n| goodsId | LONG | Goods ID（商品 ID） |\n| pricingType | INTEGER | pricing type，见下表 |\n| specName | STRING[] | Specification Name（规格名称列表） |\n| skuIdList | LONG[] | SKU id list（SKU ID 列表） |\n| status | INTEGER | Status of price offer（报价/定价单状态） |\n| suggestSupplierPrice | OBJECT | Reference Base Price（参考基础价/建议供货价） |\n| targetSupplierPrice | OBJECT | New Base Price（目标新基础价） |\n| sourceSupplierPrice | OBJECT | source supplier price（原供货价） |\n| supplierPrice | OBJECT | Final Base Price（最终基础价/供货价） |\n| reason | STRING | Rejection Reason（拒绝原因） |\n| rejectTypeDesc | STRING | Rejection Type Description（拒绝类型描述） |\n| priceCommitId | LONG | Price commit id（价格提交 ID） |\n| priceCommitVersion | INTEGER | Price commit version（价格提交版本） |\n\n#### `pricingType`（响应字段，与入参 `priceOrderType` 枚举略有差异）\n\n| 值 | 说明 |\n|----|------|\n| `0` | offer for pricing assessment（定价评估报价） |\n| `1` | offer for pricing opportunities（定价机会报价） |\n| `2` | offer for pricing modification（改价报价） |\n\n### 价格对象结构（`suggestSupplierPrice` / `targetSupplierPrice` / `sourceSupplierPrice` / `supplierPrice`）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| amount | STRING | Amount（金额） |\n| currency | STRING | Currency Type（币种） |\n\n### 响应示例（结构示意）\n\n```json\n{\n  \"success\": true,\n  \"errorCode\": 0,\n  \"errorMsg\": \"\",\n  \"result\": {\n    \"pageNum\": 1,\n    \"total\": 2,\n    \"priceAuditList\": [\n      {\n        \"priceOrderId\": 90001,\n        \"goodsId\": 123456789,\n        \"pricingType\": 0,\n        \"specName\": [\"Color: Red\", \"Size: M\"],\n        \"skuIdList\": [58224724203874],\n        \"status\": 1,\n        \"suggestSupplierPrice\": { \"amount\": \"12.00\", \"currency\": \"EUR\" },\n        \"targetSupplierPrice\": { \"amount\": \"10.99\", \"currency\": \"EUR\" },\n        \"sourceSupplierPrice\": { \"amount\": \"13.50\", \"currency\": \"EUR\" },\n        \"supplierPrice\": { \"amount\": \"10.99\", \"currency\": \"EUR\" },\n        \"reason\": \"\",\n        \"rejectTypeDesc\": \"\",\n        \"priceCommitId\": 80001,\n        \"priceCommitVersion\": 1\n      }\n    ]\n  }\n}\n```\n\n---\n\n## 与相关接口区分\n\n| 接口 | 场景 |\n|------|------|\n| `bg.local.goods.priceorder.query`（本接口） | **白名单**商家分页查询定价单/报价列表 |\n| `bg.local.goods.priceorder.change.sku.price` | **白名单**商家批量修改 SKU 基础价 |\n| `linkfox-temu-add-product-us` `temu.goods.price.list.get` | 半托管侧按 `productSkuIds` 查供货价 |\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_priceorder_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}'\n```\n\nFile v1.0.4:references/apis/temu-local-goods-baseprice-recommend.md\n\n# 推荐基础价/供货价估算 — `temu.local.goods.baseprice.recommend`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_baseprice_recommend.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `temu.local.goods.baseprice.recommend` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`temu.local.goods.baseprice.recommend`，业务载荷放在 Body 的 `params` |\n\n**Description:** Recommend baseprice（根据类目、规格、站外售价、尺寸重量等信息推荐/估算供货价）。\n\n> **网关鉴权字段**（`type`、`app_key`、`access_token`、`sign`、`timestamp` 等）由本 skill 网关脚本处理，**不要**放进业务脚本的 `params`；业务参数见下方 `request`。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── language (STRING, 否)\n    └── supplierPriceEstimateQry (OBJECT, 必填)\n        ├── trademarkInfo (OBJECT, 否)\n        │   ├── brandId (LONG, 否)\n        │   └── trademarkId (LONG, 否)\n        ├── goodsBasicInfo (OBJECT, 必填)\n        │   ├── catId (LONG, 必填)\n        │   ├── taxCode (STRING, 否)\n        │   └── costTemplateId (STRING, 否)\n        └── supplierPriceEstimateSkuQryList[] (OBJECT[], 必填)\n            ├── specIdList[] (LONG[], 必填)\n            ├── externPlatformPriceInfo (OBJECT, 必填)\n            │   ├── amount (STRING, 否)\n            │   └── currency (STRING, 否)\n            └── productDimensionsInfo (OBJECT, 否)\n                ├── weight (STRING, 否)\n                ├── weightUnit (STRING, 否)\n                ├── length (STRING, 否)\n                ├── width (STRING, 否)\n                ├── height (STRING, 否)\n                └── dimensionUnit (STRING, 否)\n```\n\n### `request`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| language | STRING | 否 | Language |\n| supplierPriceEstimateQry | OBJECT | **是** | Supplier price estimate query |\n\n### `supplierPriceEstimateQry`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| trademarkInfo | OBJECT | 否 | Brand information; if provided, will assist merchants in suggesting more accurate prices. |\n| goodsBasicInfo | OBJECT | **是** | Goods basic information |\n| supplierPriceEstimateSkuQryList | OBJECT[] | **是** | Supplier price estimate need info (per SKU/spec) |\n\n### `trademarkInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| brandId | LONG | 否 | Brand ID |\n| trademarkId | LONG | 否 | Trademark ID |\n\n### `goodsBasicInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| catId | LONG | **是** | The ID of the category of this product. It must be a **leaf category** that corresponds to the category tree type specified in the category_version property. |\n| taxCode | STRING | 否 | Product Tax code |\n| costTemplateId | STRING | 否 | The ID of the delivery options available for your product, delimited by commas. Sellers can create ship configurations based on business needs; when listing product to create offer, seller selects one ship configuration for the product. The ship configuration will be used to retrieve the valid ship options on the website. |\n\n### `supplierPriceEstimateSkuQryList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| specIdList | LONG[] | **是** | Specification ID List |\n| externPlatformPriceInfo | OBJECT | **是** | The selling price of the product on other platforms |\n| productDimensionsInfo | OBJECT | 否 | Product dimensions message |\n\n### `externPlatformPriceInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| amount | STRING | 否 | The selling price of the product on other platforms |\n| currency | STRING | 否 | Currency Code |\n\n### `productDimensionsInfo`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| weight | STRING | 否 | The weight of the product. (**Brazil site is mandatory.**) |\n| weightUnit | STRING | 否 | The unit of the weight. The weight unit for product in the **United States** is **`lb`** while in other countries it is **`kg`**. (**Brazil site is mandatory.**) |\n| length | STRING | 否 | The length of the product. Length should be input with two decimal places. (**Brazil site is mandatory.**) |\n| width | STRING | 否 | The width of the product. Width should be input with two decimal places. (**Brazil site is mandatory.**) |\n| height | STRING | 否 | The height of the product. Height should be input with two decimal places. (**Brazil site is mandatory.**) |\n| dimensionUnit | STRING | 否 | Dimension unit. The dimension unit for product in the **United States** is **`inch`** while in other countries it is **`cm`**. (**Brazil site is mandatory.**) |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"language\": \"en-US\",\n    \"supplierPriceEstimateQry\": {\n      \"trademarkInfo\": {\n        \"brandId\": 10001,\n        \"trademarkId\": 20002\n      },\n      \"goodsBasicInfo\": {\n        \"catId\": 12345,\n        \"taxCode\": \"TAX001\",\n        \"costTemplateId\": \"100,101\"\n      },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001, 9002],\n          \"externPlatformPriceInfo\": {\n            \"amount\": \"29.99\",\n            \"currency\": \"EUR\"\n          },\n          \"productDimensionsInfo\": {\n            \"weight\": \"1.20\",\n            \"weightUnit\": \"lb\",\n            \"length\": \"10.00\",\n            \"width\": \"8.00\",\n            \"height\": \"2.50\",\n            \"dimensionUnit\": \"inch\"\n          }\n        }\n      ]\n    }\n  }\n}\n```\n\n> 欧洲站尺寸/重量单位建议：`weightUnit=lb`、`dimensionUnit=inch`；`goodsBasicInfo.catId` 须为**叶子类目**。\n\n---\n\n## Response（Temu `body` 解析后）\n\n官方 Response 字段表尚未提供；解析顺序与通用 Manage 接口一致：\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    └── （推荐价/估算结果字段以 Partner 文档与实网返回为准）\n```\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Success |\n| errorCode | INTEGER | Error code |\n| errorMsg | STRING | Error message |\n| result | OBJECT | Result payload（具体子字段待官方 Response 表补充） |\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_baseprice_recommend.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"language\": \"en-US\",\n    \"supplierPriceEstimateQry\": {\n      \"goodsBasicInfo\": { \"catId\": 12345 },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001],\n          \"externPlatformPriceInfo\": { \"amount\": \"19.99\", \"currency\": \"EUR\" },\n          \"productDimensionsInfo\": {\n            \"weight\": \"0.50\",\n            \"weightUnit\": \"lb\",\n            \"length\": \"6.00\",\n            \"width\": \"4.00\",\n            \"height\": \"1.00\",\n            \"dimensionUnit\": \"inch\"\n          }\n        }\n      ]\n    }\n  }\n}'\n```\n\nFile v1.0.4:references/apis/temu-local-goods-recommendedprice-query.md\n\n# 推荐供货价查询 — `temu.local.goods.recommendedprice.query`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_recommendedprice_query.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `temu.local.goods.recommendedprice.query` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`temu.local.goods.recommendedprice.query`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants in querying the recommended supply prices（支持商家查询推荐供货价）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 `request`。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── language\n    ├── recommendedPriceType    ← 必填\n    └── goodsIdList[]           ← 必填，1～100 个\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| language | STRING | 否 | Language（语言） |\n| recommendedPriceType | INTEGER | **是** | Recommended price type（推荐价类型） |\n| goodsIdList | LONG[] | **是** | Search param: list of Goods ID（商品 ID 列表），**列表长度须在 1～100 之间** |\n\n#### `recommendedPriceType`\n\n| 值 | 说明 |\n|----|------|\n| `10` | Low traffic（低流量） |\n| `20` | Restricted traffic（限流/受限流量） |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"language\": \"en\",\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789, 123456790]\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 20,\n    \"goodsIdList\": [111111111]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    └── goodsList[]\n        ├── goodsId\n        └── skuList[]\n            ├── skuId\n            └── recommendedSupplyPrice\n                ├── amount\n                └── currency\n```\n\n### `response` 顶层字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Whether it was successful or not（当前请求是否成功） |\n| errorCode | INTEGER | Error code（错误码） |\n| errorMsg | STRING | Error message（错误信息） |\n| result | OBJECT | Specific information（业务结果） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| goodsList | OBJECT[] | Goods recommended price info list（商品推荐供货价信息列表） |\n\n### `result.goodsList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| goodsId | LONG | Goods ID（商品 ID） |\n| skuList | OBJECT[] | SKU recommended price info list（SKU 推荐供货价信息列表） |\n\n### `result.goodsList[].skuList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|------|\n| skuId | LONG | SKU ID |\n| recommendedSupplyPrice | OBJECT | Recommended supply price（推荐供货价） |\n\n### `recommendedSupplyPrice`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| amount | STRING | Amount（金额） |\n| currency | STRING | Currency（币种） |\n\n### 响应示例（结构示意）\n\n```json\n{\n  \"success\": true,\n  \"errorCode\": 0,\n  \"errorMsg\": \"\",\n  \"result\": {\n    \"goodsList\": [\n      {\n        \"goodsId\": 123456789,\n        \"skuList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"recommendedSupplyPrice\": {\n              \"amount\": \"12.99\",\n              \"currency\": \"EUR\"\n            }\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n---\n\n## 与相关接口区分\n\n| 接口 | 场景 |\n|------|------|\n| `temu.local.goods.recommendedprice.query`（本接口） | 按**已存在商品** `goodsIdList` 查询平台**推荐供货价**（低流量/限流等类型） |\n| `temu.local.goods.baseprice.recommend` | 发品/改价前按**类目+规格+站外价**等**估算**推荐基础价 |\n| `bg.local.goods.priceorder.query` | 白名单商家查询定价单/报价列表（含 `supplierPrice` 等） |\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_recommendedprice_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789]\n  }\n}'\n```\n\nFile v1.0.4:references/authorization-flow.md\n\n# Temu 授权流程\n\n```text\n用户确认店铺类型与用途\n        ↓\ntemu_token_guide.py（输出后台操作步骤）\n        ↓\n用户在 Temu 卖家后台复制 access_token\n        ↓\nsave_temu_access_token.py（可选，写入本地 store）\n        ↓\ntemu_proxy.py / temu_file_download.py\n  - 直接传 accessToken，或\n  - 传 storeKey + site + managementType + tokenPurpose\n```\n\n## 决策表\n\n| 用户需求 | shopType | tokenPurpose | site |\n|----------|----------|--------------|------|\n| 半托管查商品/库存 | semi-managed | product-inventory | cn / partner |\n| 半托管查订单/发货 | semi-managed | order-shipping | us / global / eu |\n| 全托管任意接口 | full-managed | full-managed | cn / partner |\n| 美欧本土店 | local-native | local-native | us 等 |\n\n## 与 API 调用的对应关系\n\n紫鸟转发路径：`/temu-proxy/{site}/{managementType}`\n\n- 全托管 CN：`cn` + `full-managed`\n- 半托管商品：`cn`/`partner` + `semi-managed` + 商品 token\n- 半托管订单：`us`/`global`/`eu` + `semi-managed` + 订单 token\n\n授权应用名称必须与后台一致：**酷鸟卖家助手** 或 **Cyber-ERP酷鸟助手** / **Cyber-ERP**。\n\nFile v1.0.4:references/partner-eu-catalog.md\n\n# Partner EU — Price 接口目录\n\nPartner Platform for EU 菜单：**Price**（`menu_code=dfff38c23adf498d8a7cd55052bd3648`）。\n\n文档根 `menu_code`（浏览器地址栏常见）：`7289390cfd724be4a196f11ebe45a896`。\n\n本 skill 覆盖与 US 版对齐的 **4** 个价格/供货价 `type`。调用经 `temu_eu_proxy`（`POST /temu/proxy`），默认 **`site=eu`**。\n\n> EU 菜单 HTML 导出中 **Price** 子项未完全展开，下列 4 个接口的 `sub_menu_code` 除已确认者外链至 **Price** 父级；请在 [partner-eu.temu.com](https://partner-eu.temu.com/documentation) 按 `type` 核对。另：`bg.local.goods.sku.list.price.query` 在 **Manage Products** 下可见（`sub_menu_code=c0de4d3f92d94b84a5044c4a3beda9f2`），属 SKU 价格列表，本 skill 未单独封装，可用 `temu_eu_proxy` 调用。\n\n## 已接入（4）\n\n| sub_menu_code | type | 脚本 | 参数文档 |\n|---------------|------|------|----------|\n| `—` | `temu.local.goods.baseprice.recommend` | `eu_price_baseprice_recommend.py` | [apis/temu-local-goods-baseprice-recommend.md](./apis/temu-local-goods-baseprice-recommend.md) |\n| `—` | `temu.local.goods.recommendedprice.query` | `eu_price_recommendedprice_query.py` | [apis/temu-local-goods-recommendedprice-query.md](./apis/temu-local-goods-recommendedprice-query.md) |\n| `—` | `bg.local.goods.priceorder.query` | `eu_price_priceorder_query.py` | [apis/bg-local-goods-priceorder-query.md](./apis/bg-local-goods-priceorder-query.md) |\n| `—` | `bg.local.goods.priceorder.change.sku.price` | `eu_price_priceorder_change_sku_price.py` | [apis/bg-local-goods-priceorder-change-sku-price.md](./apis/bg-local-goods-priceorder-change-sku-price.md) |\n\n## 官方文档 URL\n\n| type | URL |\n|------|-----|\n| `temu.local.goods.baseprice.recommend` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n| `temu.local.goods.recommendedprice.query` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n| `bg.local.goods.priceorder.query` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n| `bg.local.goods.priceorder.change.sku.price` | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648 |\n\n## 上游 OpenAPI（EU）\n\n`POST` https://openapi-b-eu.temu.com/openapi/router（经 LinkFox 网关 `site=eu` 转发）\n\n| 全球站（非 US/EU）价格 | `linkfox-temu-price-global` |\n\n## 与 add-product / manage-product 区分\n\n| skill | type | 说明 |\n|-------|------|------|\n| **本 skill** | `bg.local.goods.priceorder.*` / `temu.local.goods.*price*` | 定价单、推荐价、批量改价 |\n| `linkfox-temu-manage-product-eu` | `bg.local.goods.sku.list.price.query` 等 | 商品管理域 |\n| `linkfox-temu-add-product-us` | `temu.goods.price.list.get` | 发品侧（EU 可 `site=eu`） |\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nTemu 欧洲站商品价格管理 API，经 LinkFox 网关转发 Partner EU 价格接口，支持定价单查询、批量修改 SKU 基础价、推荐供货价查询和基础价估算。 <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>\nDevelopers and marketplace operators use this skill to manage Temu EU pricing through LinkFox gateway scripts, including price-order lookup, recommended-price checks, base-price estimation, and controlled SKU base-price changes. <br>\n\n### Deployment Geography for Use: <br>\nEurope (Temu EU and Partner EU workflows) <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires LinkFox and Temu seller credentials. <br>\nMitigation: Use store keys and environment variables carefully, avoid printing raw tokens, keep token files in protected paths, and rotate or revoke credentials when access is no longer needed. <br>\nRisk: The skill can change live Temu EU SKU prices. <br>\nMitigation: Require explicit user confirmation before batch price-change operations and review the exact goodsId, skuId, amount, and currency values before execution. <br>\nRisk: The skill archives full API responses and optional Temu access tokens to local disk. <br>\nMitigation: Review saved files under the LinkFox output and token paths, avoid storing sensitive results in shared workspaces, and delete local artifacts that are no longer needed. <br>\nRisk: Generic Temu proxy and file-download scripts can be used beyond the narrow EU pricing workflow. <br>\nMitigation: Restrict use to intended Temu EU pricing tasks and review requested API type or download URL before running generic proxy actions. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-temu-price-eu) <br>\n- [API reference](references/api.md) <br>\n- [Temu accessToken authorization](references/access-token.md) <br>\n- [Temu authorization flow](references/authorization-flow.md) <br>\n- [Partner EU Price interface catalog](references/partner-eu-catalog.md) <br>\n- [Price API document index](references/apis/README.md) <br>\n- [Temu Partner EU documentation](https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON request/response files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Scripts write full API responses to local LinkFox output paths and may print concise summaries for large responses.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.3: 30 files, 39606 bytes\n\nFiles: references/access-token.md (4450b), references/api.md (3993b), references/apis/bg-local-goods-priceorder-change-sku-price.md (5070b), references/apis/bg-local-goods-priceorder-query.md (8203b), references/apis/README.md (938b), references/apis/temu-local-goods-baseprice-recommend.md (7162b), references/apis/temu-local-goods-recommendedprice-query.md (4302b), references/authorization-flow.md (1186b), references/partner-eu-catalog.md (2871b), scripts/_eu_price_script.py (512b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12423b), scripts/_temu_eu_common.py (3094b), scripts/_temu_token_store.py (4273b), scripts/check_linkfox_token.py (1797b), scripts/eu_price_baseprice_recommend.py (281b), scripts/eu_price_priceorder_change_sku_price.py (311b), scripts/eu_price_priceorder_query.py (273b), scripts/eu_price_recommendedprice_query.py (280b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/save_temu_access_token.py (1377b), scripts/temu_eu_file_download.py (691b), scripts/temu_eu_proxy.py (911b), scripts/temu_file_download.py (1681b), scripts/temu_proxy.py (2124b), scripts/temu_token_guide.py (1594b), skill-card.md (3291b), SKILL.md (6592b), _meta.json (140b)\n\nFile v1.0.3:SKILL.md\n\n---\r\nname: linkfox-temu-price-eu\r\ndescription: Temu 欧洲站商品价格管理 API，经 LinkFox 网关转发 Partner EU 价格接口：定价单列表查询(bg.local.goods.priceorder.query)、批量改 SKU 基础价(bg.local.goods.priceorder.change.sku.price)、推荐供货价/基础价估算等。当用户提到 Temu EU 价格、Temu欧洲站定价单、priceorder query、priceAuditList、改供货价、批量改价、site=eu 改价、recommendedprice query、baseprice recommend 时触发。商品管理用 linkfox-temu-manage-product-eu；订单/发品等其它域可用 US skill 并设 site=eu。\r\n---\r\n\r\n# Temu 欧洲站价格 API（linkfox-temu-price-eu）\r\n\r\n美国站请用 **`linkfox-temu-price-us`**；全球站（非 US/EU）请用 **`linkfox-temu-price-global`**。\r\n\r\n本 skill（`linkfox-temu-price-eu`）覆盖 Partner Platform for EU **Price** 菜单（`menu_code=dfff38c23adf498d8a7cd55052bd3648`）下与**价格/供货价**相关的 `bg.local.*` / `temu.local.*` 接口（`type` 与 US 版对齐，默认 `site=eu`）。\r\n\r\n> 当前已接入 **4** 个接口；其余价格接口将按 Partner 文档逐条补充到 `references/apis/` 与 `eu_price_*.py`。\r\n\r\n**网关（本 skill 内置）**：\r\n\r\n| 能力 | 方法 | 路径 |\r\n|------|------|------|\r\n| 价格 OpenAPI（`eu_price_*`、`temu_eu_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\r\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\r\n\r\n## 相关 skill\r\n\r\n| 场景 | skill |\r\n|------|--------|\r\n| 商品列表/详情/编辑/库存/上下架 | `linkfox-temu-manage-product-eu` |\r\n| 订单查询、发货、物流 | `linkfox-temu-order-us` |\r\n| 取消订单（买家+卖家） | `linkfox-temu-cancel-order-us` |\r\n\r\n| 履约/发货（含自发货） | `linkfox-temu-fulfillment-eu` |\r\n| 发品、类目、V2 add | `linkfox-temu-add-product-us` |\r\n| 半托管 `temu.goods.price.list.get`（`productSkuIds`） | `linkfox-temu-add-product-us` → `us_goods_price_list.py` |\r\n| 网关与 Temu token | 本 skill `scripts/` |\r\n\r\n## 调用方式\r\n\r\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\r\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\r\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\r\n\r\n**输出策略（脚本默认行为）**：\r\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\r\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\r\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\r\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\r\n\r\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\r\n\r\n## 默认参数\r\n\r\n| 字段 | 默认 | 说明 |\r\n|------|------|------|\r\n| site | `eu` | Partner EU |\r\n| managementType | `semi-managed` | 半托管 |\r\n| tokenPurpose | `product-inventory` | 酷鸟卖家助手 token |\r\n\r\n## 鉴权\r\n\r\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\r\n2. **Temu**：`accessToken` 或 `storeKey`\r\n\r\n## Scripts（按 type）\r\n\r\n| 脚本 | type | 状态 |\r\n|------|------|------|\r\n| `eu_price_baseprice_recommend.py` | `temu.local.goods.baseprice.recommend` | 已接入 |\r\n| `eu_price_recommendedprice_query.py` | `temu.local.goods.recommendedprice.query` | 已接入 |\r\n| `eu_price_priceorder_query.py` | `bg.local.goods.priceorder.query` | 已接入 |\r\n| `eu_price_priceorder_change_sku_price.py` | `bg.local.goods.priceorder.change.sku.price` | 已接入 |\r\n| `temu_eu_proxy.py` | 任意 `type` | 通用 |\r\n| `temu_eu_file_download.py` | 加签文件下载 | 通用 |\r\n\r\n> 新增接口后在此表与 [partner-eu-catalog.md](./references/partner-eu-catalog.md) 同步登记。\r\n\r\n## 示例\r\n\r\n```bash\r\nexport LINKFOXAGENT_API_KEY=\"<key>\"\r\n\r\n# 推荐基础价/供货价估算（须 catId + supplierPriceEstimateSkuQryList）\r\npython scripts/eu_price_baseprice_recommend.py '{\r\n  \"accessToken\": \"TOKEN\",\r\n  \"request\": {\r\n    \"supplierPriceEstimateQry\": {\r\n      \"goodsBasicInfo\": { \"catId\": 12345 },\r\n      \"supplierPriceEstimateSkuQryList\": [\r\n        {\r\n          \"specIdList\": [9001],\r\n          \"externPlatformPriceInfo\": { \"amount\": \"19.99\", \"currency\": \"EUR\" }\r\n        }\r\n      ]\r\n    }\r\n  }\r\n}'\r\n\r\n# 推荐供货价查询（须 recommendedPriceType + goodsIdList，1～100 个 goodsId）\r\npython scripts/eu_price_recommendedprice_query.py '{\r\n  \"accessToken\": \"TOKEN\",\r\n  \"request\": {\r\n    \"recommendedPriceType\": 10,\r\n    \"goodsIdList\": [123456789]\r\n  }\r\n}'\r\n\r\n# 定价单列表查询（白名单；分页 page/size，可选筛选）\r\npython scripts/eu_price_priceorder_query.py '{\r\n  \"accessToken\": \"TOKEN\",\r\n  \"request\": {\r\n    \"page\": 1,\r\n    \"size\": 20,\r\n    \"priceOrderType\": 1,\r\n    \"orderBy\": \"order_create_time\",\r\n    \"orderByType\": 0\r\n  }\r\n}'\r\n\r\n# 批量修改 SKU 基础价（白名单；须 goodsId + changeSkuPriceDTOList）\r\npython scripts/eu_price_priceorder_change_sku_price.py '{\r\n  \"accessToken\": \"TOKEN\",\r\n  \"request\": {\r\n    \"goodsId\": 123456,\r\n    \"changeSkuPriceDTOList\": [\r\n      {\r\n        \"skuChangePriceBaseDTOList\": [\r\n          {\r\n            \"skuId\": 58224724203874,\r\n            \"newSupplierPrice\": { \"amount\": \"15.99\", \"currency\": \"EUR\" }\r\n          }\r\n        ]\r\n      }\r\n    ]\r\n  }\r\n}'\r\n```\r\n\r\n**Feedback：** `skillName`：`linkfox-temu-price-eu`\r\n\r\n## 网关与授权脚本\r\n\r\n| 脚本 | 说明 |\r\n|------|------|\r\n| `check_linkfox_token.py` | 校验 LinkFox 用户 Token |\r\n| `temu_token_guide.py` | Temu accessToken 后台授权步骤 |\r\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\r\n| `list_temu_access_tokens.py` | 列出已保存 token |\r\n| `get_temu_access_token.py` | 读取已保存 token |\r\n| `temu_proxy.py` | 通用网关转发（多 site） |\r\n| `temu_file_download.py` | 加签文件下载（多 site） |\r\n\r\n授权说明：[references/access-token.md](./references/access-token.md)\n\nFile v1.0.3:references/apis/README.md\n\n# Price — 接口文档索引\n\n每个 `type` 单独一份文档，经 `POST /temu/proxy` 调用。网关与鉴权见 [../api.md](../api.md)；目录与 `sub_menu_code` 见 [../partner-eu-catalog.md](../partner-eu-catalog.md)。\n\n## 查询（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.query` | [bg-local-goods-priceorder-query.md](./bg-local-goods-priceorder-query.md) |\n\n## 推荐 / 估算（2）\n\n| type | 文档 |\n|------|------|\n| `temu.local.goods.baseprice.recommend` | [temu-local-goods-baseprice-recommend.md](./temu-local-goods-baseprice-recommend.md) |\n| `temu.local.goods.recommendedprice.query` | [temu-local-goods-recommendedprice-query.md](./temu-local-goods-recommendedprice-query.md) |\n\n## 编辑 / 改价（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.change.sku.price` | [bg-local-goods-priceorder-change-sku-price.md](./bg-local-goods-priceorder-change-sku-price.md) |\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-price-eu\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1783338337215\n}\n\nFile v1.0.3:references/access-token.md\n\n# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=eu` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 欧洲站 | openapi-b-eu.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'\n```\n\n## 注意事项\n\n1. **子账号**：可能无法进入服务市场，需主账号授权。\n2. **多站点**：欧洲站、英国站等需分别登录对应后台获取 Token。\n3. **有效期**：Token 会过期，过期后重新在后台复制并 `save_temu_access_token.py`。\n4. **IP 白名单**：需联系紫鸟开放平台配置调用 IP。\n5. **参数小写**：`site`、`managementType` 必须小写。\n\n## 脚本一览\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_token_guide.py` | 按店铺类型/用途输出授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token（默认脱敏）|\n| `get_temu_access_token.py` | 读取指定 store 的 token |\n\nFile v1.0.3:references/api.md\n\n# linkfox-temu-price-eu — API 参考\r\n\r\nTemu **欧洲站商品价格管理**（Partner EU **Price** 菜单下价格/供货价相关接口），经本 skill `temu_eu_proxy`（`POST /temu/proxy`） 转发。Temu 的 `type` 写在 Body，**不是** URL 路径。\r\n\r\n> 网关与鉴权：本 skill `scripts/`（`LINKFOXAGENT_API_KEY`、`accessToken` / `storeKey`）。授权见 `references/access-token.md`。\r\n\r\n---\r\n\r\n## 调用规范\r\n\r\n| 项 | 说明 |\r\n|----|------|\r\n| 网关根地址 | `${LINKFOX_TOOL_GATEWAY}`（可用 `TEMU_API_BASE_URL` / `STORE_API_BASE_URL` 覆盖） |\r\n| 价格 OpenAPI | `POST /temu/proxy` |\r\n| 加签文件下载 | `POST /temu/fileDownload`（`temu_eu_file_download.py`） |\r\n| LinkFox 鉴权 | Header **`Authorization`** 与 **`Token`**（同值）；或 `LINKFOX_AGENT_API_KEY` / `LINKFOXAGENT_API_KEY`；或 JSON `token` |\r\n| Temu 鉴权 | Body `accessToken`，或 `storeKey` + `site` + `managementType` + `tokenPurpose` |\r\n| 默认 | `site=eu`，`managementType=semi-managed`，`tokenPurpose=product-inventory` |\r\n| 上游 OpenAPI（EU） | `https://openapi-b-eu.temu.com/openapi/router`（网关按 `site` 解析） |\r\n\r\n### 网关请求 Body（`/temu/proxy`）\r\n\r\n| 参数 | 类型 | 必填 | 说明 |\r\n|------|------|------|------|\r\n| site | string | 是 | `eu`（本 skill 默认） |\r\n| managementType | string | 是 | `semi-managed` |\r\n| accessToken | string | 与 storeKey 二选一 | Temu 店铺令牌 |\r\n| storeKey | string | 与 accessToken 二选一 | `~/.linkfox/temu-access-tokens.json` 中的键 |\r\n| tokenPurpose | string | 否 | 建议 `product-inventory` |\r\n| type | string | 是 | Temu 接口名，如 `bg.local.goods.priceorder.query` |\r\n| params | object | 否 | 业务参数；多数 Manage 接口业务块在 **`params.request`** |\r\n\r\n### 网关响应\r\n\r\n| 字段 | 类型 | 说明 |\r\n|------|------|------|\r\n| body | string | Temu 原始 JSON 字符串；脚本解析为 `temuBody` |\r\n| code | integer | 网关错误码：`1002` 参数/Token，`1003` 转发失败 |\r\n\r\n解析顺序：**网关 `code`** → `JSON.parse(body)` → `success` / `errorCode` / `errorMsg` / `result`。\r\n\r\n### 脚本调用\r\n\r\n```bash\r\nexport LINKFOXAGENT_API_KEY=\"<key>\"\r\npython scripts/eu_price_priceorder_query.py '{\"accessToken\":\"TOKEN\",\"request\":{\"page\":1,\"size\":20,\"priceOrderType\":1}}'\r\n```\r\n\r\n业务字段可放在顶层或嵌套 `params`；含 `request` 时通常整体作为 `params` 转发。\r\n\r\n---\r\n\r\n## 接口一览\r\n\r\n完整 `sub_menu_code` 与 Partner 文档 URL 见 [partner-eu-catalog.md](./partner-eu-catalog.md)。\r\n\r\n**每个接口单独一份文档**：[apis/README.md](./apis/README.md)。\r\n\r\n---\r\n\r\n## 典型价格管理流程\r\n\r\n```text\r\n1. linkfox-temu-manage-product-eu → list/detail / spec.info.get           → 拿 goodsId、catId、specIdList\r\n2. bg.local.goods.priceorder.query（本 skill，白名单）                     → 分页查定价单/报价列表\r\n3. temu.local.goods.recommendedprice.query（本 skill）                     → 按 goodsIdList 查平台推荐供货价\r\n4. temu.local.goods.baseprice.recommend（本 skill）                        → 发品/改价前推荐基础价估算\r\n5. bg.local.goods.priceorder.change.sku.price（本 skill，白名单）          → 批量改 SKU 基础价\r\n6. bg.local.goods.priceorder.query                                         → 改价后核对 priceAuditList / supplierPrice\r\n```\r\n\r\n发品侧半托管供货价列表（`temu.goods.price.list.get`，入参 `productSkuIds`）见 **`linkfox-temu-add-product-us`**，与本 skill 的 `bg.local.*` 本地仓价格接口**不要混用**。\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| code | 说明 | 处理 |\r\n|------|------|------|\r\n| 1002 | 参数或 LinkFox Token 无效 | 修正参数与 `LINKFOXAGENT_API_KEY` |\r\n| 1003 | 转发失败 | 检查 Temu token、白名单、网络 |\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\r\n- `skillName`: **`linkfox-temu-price-eu`**\n\nFile v1.0.3:references/apis/bg-local-goods-priceorder-change-sku-price.md\n\n# 批量修改 SKU 基础价（定价单）— `bg.local.goods.priceorder.change.sku.price`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_priceorder_change_sku_price.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `bg.local.goods.priceorder.change.sku.price` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`bg.local.goods.priceorder.change.sku.price`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants within the **white list** to modify SKU base prices in batches.\n\n> 须在 Temu 白名单内方可调用；非白名单店铺可能返回业务错误。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── goodsId (LONG, 必填)\n    ├── changeSkuPriceDTOList[] (OBJECT[], 必填)\n    │   ├── reason (STRING, 否)\n    │   └── skuChangePriceBaseDTOList[] (OBJECT[], 必填)\n    │       ├── skuId (LONG, 必填)\n    │       └── newSupplierPrice (OBJECT, 必填)\n    │           ├── amount (STRING, 否)\n    │           └── currency (STRING, 否)\n    └── rejectSkuPricing (BOOLEAN, 否)\n```\n\n### `request`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| goodsId | LONG | **是** | Goods Id |\n| changeSkuPriceDTOList | OBJECT[] | **是** | SKU information and reason that adjust price |\n| rejectSkuPricing | BOOLEAN | 否 | Reject if price order is wait merchant confirm |\n\n### `changeSkuPriceDTOList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| reason | STRING | 否 | The reason of adjust price |\n| skuChangePriceBaseDTOList | OBJECT[] | **是** | SKU information |\n\n### `skuChangePriceBaseDTOList[]` 元素\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| skuId | LONG | **是** | SKU ID |\n| newSupplierPrice | OBJECT | **是** | Base price (new supplier price) |\n\n### `newSupplierPrice`\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| amount | STRING | 否 | Amount |\n| currency | STRING | 否 | Currency Type |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"rejectSkuPricing\": true,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"reason\": \"Cost adjustment\",\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": {\n              \"amount\": \"18.99\",\n              \"currency\": \"EUR\"\n            }\n          },\n          {\n            \"skuId\": 58224724203875,\n            \"newSupplierPrice\": {\n              \"amount\": \"19.99\",\n              \"currency\": \"EUR\"\n            }\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n> 同一 `goodsId` 下可在一个 `changeSkuPriceDTOList` 项里放多个 SKU；也可按调价原因拆成多项，每项带各自的 `reason` 与 `skuChangePriceBaseDTOList`。\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success (BOOLEAN)\n├── errorCode (INTEGER)\n├── errorMsg (STRING)\n└── result (OBJECT)\n    ├── successSkuList[] (LONG)\n    ├── failedSkuList[] (LONG)\n    ├── failedSkuReasonMap (MAP)\n    │   ├── $key (STRING)   → SKU ID\n    │   └── $value (STRING) → Fail reason\n    └── successPriceOrderList[] (OBJECT[])\n        ├── priceOrderSn (STRING)\n        └── skuIdList[] (LONG)\n```\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Is success |\n| errorCode | INTEGER | Error code |\n| errorMsg | STRING | Error message |\n| result | OBJECT | Return specific information |\n| result.successSkuList | LONG[] | SKU list with successfully changed prices |\n| result.failedSkuList | LONG[] | SKU list with failed change price |\n| result.failedSkuReasonMap | MAP | Reasons for price adjustment failure；**key** 为 SKU ID（字符串），**value** 为失败原因 |\n| result.successPriceOrderList | OBJECT[] | List of price orders that request for changing price successfully |\n\n### `successPriceOrderList[]` 元素\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| priceOrderSn | STRING | Price order Sn |\n| skuIdList | LONG[] | List of SKUs corresponding to price order |\n\n### `failedSkuReasonMap` 示例\n\n```json\n{\n  \"58224724203875\": \"Price order pending merchant confirm\"\n}\n```\n\n---\n\n## 示例\n\n```bash\npython scripts/eu_price_priceorder_change_sku_price.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"rejectSkuPricing\": true,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"reason\": \"Promo\",\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": { \"amount\": \"15.99\", \"currency\": \"EUR\" }\n          }\n        ]\n      }\n    ]\n  }\n}'\n```\n\n改价后可用 `bg.local.goods.priceorder.query` 核对 `priceAuditList` 中的 `supplierPrice`，或再次调用本接口查看 `successSkuList` / `failedSkuList`。\n\nFile v1.0.3:references/apis/bg-local-goods-priceorder-query.md\n\n# 定价单列表查询 — `bg.local.goods.priceorder.query`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/eu_price_priceorder_query.py` |\n| **Partner 文档** | https://partner-eu.temu.com/documentation?menu_code=dfff38c23adf498d8a7cd55052bd3648（`sub_menu_code` 请在 Partner EU 后台按 `bg.local.goods.priceorder.query` 打开） |\n| **网关** | `POST /temu/proxy`，`type`=`bg.local.goods.priceorder.query`，业务载荷放在 Body 的 `params` |\n\n**Description:** Support merchants within the **white list** to query the price offer list（支持白名单商家查询定价单/报价列表）。\n\n> 须在 Temu 白名单内方可调用；非白名单店铺可能返回业务错误。\n\n---\n\n## Request 结构（官方业务参数）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── page\n    ├── size\n    ├── priceOrderType\n    ├── priceOrderSubType\n    ├── goodsName\n    ├── goodsId\n    ├── priceOrderSnList[]\n    ├── orderBy\n    ├── orderByType\n    ├── goodsCreateTimeFrom / goodsCreateTimeTo\n    ├── priceOrderCreateTimeFrom / priceOrderCreateTimeTo\n    ├── goodsIdList[]\n    └── status\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| page | INTEGER | 否 | Page number（页码） |\n| size | INTEGER | 否 | Page size（每页条数），**须小于 100** |\n| priceOrderType | INTEGER | 否 | Pricing type（定价单类型）；**默认**为定价评估报价 |\n| priceOrderSubType | INTEGER | 否 | price order sub type（定价单子类型） |\n| goodsName | STRING | 否 | Search param: goodsName（按商品名搜索） |\n| goodsId | STRING | 否 | Search param: goodsId（按商品 ID 搜索） |\n| priceOrderSnList | STRING[] | 否 | search param: list of price order sn（定价单编号列表） |\n| orderBy | STRING | 否 | 排序字段；**默认** `order_create_time` |\n| orderByType | INTEGER | 否 | 排序方向；**默认** `0`（DESC） |\n| goodsCreateTimeFrom | LONG | 否 | Search param: The starting time of goods creation（商品创建起始时间） |\n| goodsCreateTimeTo | LONG | 否 | Search param: The end time of goods creation（商品创建结束时间） |\n| priceOrderCreateTimeFrom | LONG | 否 | Search param: The starting time of price order creation（定价单创建起始时间） |\n| priceOrderCreateTimeTo | LONG | 否 | Search param: The end time of price order creation（定价单创建结束时间） |\n| goodsIdList | STRING[] | 否 | goodsIdList（商品 ID 列表） |\n| status | INTEGER | 否 | price order status（定价单状态） |\n\n#### `priceOrderType`\n\n| 值 | 说明 |\n|----|------|\n| 不传 / 默认 | offer for pricing assessment（定价评估报价，默认） |\n| `1` | offer for pricing assessment（定价评估报价） |\n| `2` | offer for pricing opportunities or modification（定价机会或改价报价） |\n\n#### `priceOrderSubType`\n\n| 值 | 说明 |\n|----|------|\n| `2002` | base price increase invitations（基础价上调邀请） |\n| `2003` | sales boost（销量提升） |\n\n#### `orderBy`\n\n| 值 | 说明 |\n|----|------|\n| `goods_create_time` | 按商品创建时间排序 |\n| `order_create_time` | 按定价单创建时间排序（**默认**） |\n\n#### `orderByType`\n\n| 值 | 说明 |\n|----|------|\n| `0` | DESC（降序，**默认**） |\n| `1` | ASC（升序） |\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 50,\n    \"goodsId\": \"123456789\",\n    \"priceOrderSubType\": 2002,\n    \"status\": 1\n  }\n}\n```\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"priceOrderSnList\": [\"PO-SN-001\", \"PO-SN-002\"],\n    \"goodsIdList\": [\"111\", \"222\"]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\n```text\nresponse\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    ├── pageNum\n    ├── total\n    └── priceAuditList[]          ← Price offer list\n        ├── priceOrderId\n        ├── goodsId\n        ├── pricingType\n        ├── specName[]\n        ├── skuIdList[]\n        ├── status\n        ├── suggestSupplierPrice\n        ├── targetSupplierPrice\n        ├── sourceSupplierPrice\n        ├── supplierPrice\n        ├── reason\n        ├── rejectTypeDesc\n        ├── priceCommitId\n        └── priceCommitVersion\n```\n\n### `response` 顶层字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | Is success（当前请求是否成功） |\n| errorCode | INTEGER | Error code（错误码） |\n| errorMsg | STRING | Error message（错误信息） |\n| result | OBJECT | Return specific information（业务结果） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| pageNum | INTEGER | Page number（当前页码） |\n| total | LONG | Total（总记录数） |\n| priceAuditList | OBJECT[] | Price offer list（定价单/报价列表） |\n\n### `result.priceAuditList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| priceOrderId | LONG | Pricing ID（定价单 ID） |\n| goodsId | LONG | Goods ID（商品 ID） |\n| pricingType | INTEGER | pricing type，见下表 |\n| specName | STRING[] | Specification Name（规格名称列表） |\n| skuIdList | LONG[] | SKU id list（SKU ID 列表） |\n| status | INTEGER | Status of price offer（报价/定价单状态） |\n| suggestSupplierPrice | OBJECT | Reference Base Price（参考基础价/建议供货价） |\n| targetSupplierPrice | OBJECT | New Base Price（目标新基础价） |\n| sourceSupplierPrice | OBJECT | source supplier price（原供货价） |\n| supplierPrice | OBJECT | Final Base Price（最终基础价/供货价） |\n| reason | STRING | Rejection Reason（拒绝原因） |\n| rejectTypeDesc | STRING | Rejection Type Description（拒绝类型描述） |\n| priceCommitId | LONG | Price commit id（价格提交 ID） |\n| priceCommitVersion | INTEGER | Price commit version（价格提交版本） |\n\n#### `pricingType`（响应字段，与入参 `priceOrderType` 枚举略有差异）\n\n| 值 | 说明 |\n|----|------|\n| `0` | offer for pricing assessment（定价评估报价） |\n| `1` | offer for pricing opportunities（定价机会报价） |\n| `2` | offer for pricing modification（改价报价） |\n\n### 价格对象结构（`suggestSupplierPrice` / `targetSupplierPrice` / `sourceSupplierPrice` / `supplierPrice`）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| amount | STRING | Amoun\n\nArchive v1.0.2: 30 files, 39418 bytes\n\nFiles: references/access-token.md (4450b), references/api.md (3993b), references/apis/bg-local-goods-priceorder-change-sku-price.md (5070b), references/apis/bg-local-goods-priceorder-query.md (8203b), references/apis/README.md (938b), references/apis/temu-local-goods-baseprice-recommend.md (7162b), references/apis/temu-local-goods-recommendedprice-query.md (4302b), references/authorization-flow.md (1186b), references/partner-eu-catalog.md (2871b), scripts/_eu_price_script.py (512b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12423b), scripts/_temu_eu_common.py (3094b), scripts/_temu_token_store.py (4273b), scripts/check_linkfox_token.py (1797b), scripts/eu_price_baseprice_recommend.py (281b), scripts/eu_price_priceorder_change_sku_price.py (311b), scripts/eu_price_priceorder_query.py (273b), scripts/eu_price_recommendedprice_query.py (280b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/save_temu_access_token.py (1377b), scripts/temu_eu_file_download.py (691b), scripts/temu_eu_proxy.py (911b), scripts/temu_file_download.py (1681b), scripts/temu_proxy.py (2124b), scripts/temu_token_guide.py (1594b), skill-card.md (2906b), SKILL.md (6592b), _meta.json (140b)\n\nArchive v1.0.0: 30 files, 36483 bytes\n\nFiles: references/access-token.md (4450b), references/api.md (3888b), references/apis/bg-local-goods-priceorder-change-sku-price.md (5070b), references/apis/bg-local-goods-priceorder-query.md (8203b), references/apis/README.md (938b), references/apis/temu-local-goods-baseprice-recommend.md (7162b), references/apis/temu-local-goods-recommendedprice-query.md (4302b), references/authorization-flow.md (1186b), references/partner-eu-catalog.md (2871b), scripts/_eu_price_script.py (512b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (5593b), scripts/_temu_eu_common.py (2978b), scripts/_temu_token_store.py (4237b), scripts/check_linkfox_token.py (1797b), scripts/eu_price_baseprice_recommend.py (281b), scripts/eu_price_priceorder_change_sku_price.py (311b), scripts/eu_price_priceorder_query.py (273b), scripts/eu_price_recommendedprice_query.py (280b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/save_temu_access_token.py (1377b), scripts/temu_eu_file_download.py (650b), scripts/temu_eu_proxy.py (863b), scripts/temu_file_download.py (1595b), scripts/temu_proxy.py (2027b), scripts/temu_token_guide.py (1594b), skill-card.md (2744b), SKILL.md (5517b), _meta.json (140b)","readmeExcerpt":"Skill: Temu欧洲站-定价 Owner: linkfox-ai Summary: Temu 欧洲站商品价格管理 API，经 LinkFox 网关转发 Partner EU 价格接口：定价单列表查询(bg.local.goods.priceorder.query)、批量改 SKU 基础价(bg.local.goods.priceorder.change.sku.price)、推荐供货价/基础价估算等。当用户提到 Temu EU 价格、Temu欧洲站定价单、priceorder query、priceAuditList、改供货价、批量改价、site=eu 改价、recommendedprice query、baseprice recommend 时触发。商品管理用 linkfox-temu-manage-product-eu；订单/发品等其它域可用 US skill 并设 site=eu。 Tags: latest:1.0.","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<key>\"\n\n# 推荐基础价/供货价估算（须 catId + supplierPriceEstimateSkuQryList）\npython scripts/eu_price_baseprice_recommend.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"supplierPriceEstimateQry\": {\n      \"goodsBasicInfo\": { \"catId\": 12345 },\n      \"supplierPriceEstimateSkuQryList\": [\n        {\n          \"specIdList\": [9001],\n          \"externPlatformPriceInfo\": { \"amount\": \"19.99\", \"currency\": \"EUR\" }\n        }\n      ]\n    }\n  }\n}'\n\n# 推荐供货价查询（须 recommendedPriceType + goodsIdList，1～100 个 goodsId）\npython scripts/eu_price_recommendedprice_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"recommendedPriceType\": 10,\n    \"goodsIdList\": [123456789]\n  }\n}'\n\n# 定价单列表查询（白名单；分页 page/size，可选筛选）\npython scripts/eu_price_priceorder_query.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"page\": 1,\n    \"size\": 20,\n    \"priceOrderType\": 1,\n    \"orderBy\": \"order_create_time\",\n    \"orderByType\": 0\n  }\n}'\n\n# 批量修改 SKU 基础价（白名单；须 goodsId + changeSkuPriceDTOList）\npython scripts/eu_price_priceorder_change_sku_price.py '{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": { \"amount\": \"15.99\", \"currency\": \"EUR\" }\n          }\n        ]\n      }\n    ]\n  }\n}'"},{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py"},{"language":"bash","snippet":"# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'"},{"language":"text","snippet":"params\n└── request (OBJECT, 选填)\n    ├── goodsId (LONG, 必填)\n    ├── changeSkuPriceDTOList[] (OBJECT[], 必填)\n    │   ├── reason (STRING, 否)\n    │   └── skuChangePriceBaseDTOList[] (OBJECT[], 必填)\n    │       ├── skuId (LONG, 必填)\n    │       └── newSupplierPrice (OBJECT, 必填)\n    │           ├── amount (STRING, 否)\n    │           └── currency (STRING, 否)\n    └── rejectSkuPricing (BOOLEAN, 否)"},{"language":"json","snippet":"{\n  \"accessToken\": \"TOKEN\",\n  \"request\": {\n    \"goodsId\": 123456,\n    \"rejectSkuPricing\": true,\n    \"changeSkuPriceDTOList\": [\n      {\n        \"reason\": \"Cost adjustment\",\n        \"skuChangePriceBaseDTOList\": [\n          {\n            \"skuId\": 58224724203874,\n            \"newSupplierPrice\": {\n              \"amount\": \"18.99\",\n              \"currency\": \"EUR\"\n            }\n          },\n          {\n            \"skuId\": 58224724203875,\n            \"newSupplierPrice\": {\n              \"amount\": \"19.99\",\n              \"currency\": \"EUR\"\n            }\n          }\n        ]\n      }\n    ]\n  }\n}"},{"language":"text","snippet":"response\n├── success (BOOLEAN)\n├── errorCode (INTEGER)\n├── errorMsg (STRING)\n└── result (OBJECT)\n    ├── successSkuList[] (LONG)\n    ├── failedSkuList[] (LONG)\n    ├── failedSkuReasonMap (MAP)\n    │   ├── $key (STRING)   → SKU ID\n    │   └── $value (STRING) → Fail reason\n    └── successPriceOrderList[] (OBJECT[])\n        ├── priceOrderSn (STRING)\n        └── skuIdList[] (LONG)"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkfox-temu-price-eu\ndescription: Temu 欧洲站商品价格管理 API，经 LinkFox 网关转发 Partner EU 价格接口：定价单列表查询(bg.local.goods.priceorder.query)、批量改 SKU 基础价(bg.local.goods.priceorder.change.sku.price)、推荐供货价/基础价估算等。当用户提到 Temu EU 价格、Temu欧洲站定价单、priceorder query、priceAuditList、改供货价、批量改价、site=eu 改价、recommendedprice query、baseprice recommend 时触发。商品管理用 linkfox-temu-manage-product-eu；订单/发品等其它域可用 US skill 并设 site=eu。\n---\n\n# Temu 欧洲站价格 API（linkfox-temu-price-eu）\n\n美国站请用 **`linkfox-temu-price-us`**；全球站（非 US/EU）请用 **`linkfox-temu-price-global`**。\n\n本 skill（`linkfox-temu-price-eu`）覆盖 Partner Platform for EU **Price** 菜单（`menu_code=dfff38c23adf498d8a7cd55052bd3648`）下与**价格/供货价**相关的 `bg.local.*` / `temu.local.*` 接口（`type` 与 US 版对齐，默认 `site=eu`）。\n\n> 当前已接入 **4** 个接口；其余价格接口将按 Partner 文档逐条补充到 `references/apis/` 与 `eu_price_*.py`。\n\n**网关（本 skill 内置）**：\n\n| 能力 | 方法 | 路径 |\n|------|------|------|\n| 价格 OpenAPI（`eu_price_*`、`temu_eu_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\n\n## 相关 skill\n\n| 场景 | skill |\n|------|--------|\n| 商品列表/详情/编辑/库存/上下架 | `linkfox-temu-manage-product-eu` |\n| 订单查询、发货、物流 | `linkfox-temu-order-us` |\n| 取消订单（买家+卖家） | `linkfox-temu-cancel-order-us` |\n\n| 履约/发货（含自发货） | `linkfox-temu-fulfillment-eu` |\n| 发品、类目、V2 add | `linkfox-temu-add-product-us` |\n| 半托管 `temu.goods.price.list.get`（`productSkuIds`） | `linkfox-temu-add-product-us` → `us_goods_price_list.py` |\n| 网关与 Temu token | 本 skill `scripts/` |\n\n## 调用方式\n\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `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` 从保存的 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| site | `eu` | Partner EU |\n| managementType | `semi-managed` | 半托管 |\n| tokenPurpose | `product-inventory` | 酷鸟卖家助手 token |\n\n## 鉴权\n\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\n2. **Temu**：`accessToken` 或 `storeKey`\n\n## Scripts（按 type）\n\n| 脚本 | type | 状态 |\n|------|------|------|\n| `eu_price_baseprice_recommend.py` | `temu.local.goods.baseprice.recommend` | 已接入 |\n| `eu_price_recommendedprice_query.py` | `temu.local.goods.recommendedprice.query` | 已接入 |\n| `eu_price_pr"},{"path":"references/apis/README.md","content":"# Price — 接口文档索引\n\n每个 `type` 单独一份文档，经 `POST /temu/proxy` 调用。网关与鉴权见 [../api.md](../api.md)；目录与 `sub_menu_code` 见 [../partner-eu-catalog.md](../partner-eu-catalog.md)。\n\n## 查询（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.query` | [bg-local-goods-priceorder-query.md](./bg-local-goods-priceorder-query.md) |\n\n## 推荐 / 估算（2）\n\n| type | 文档 |\n|------|------|\n| `temu.local.goods.baseprice.recommend` | [temu-local-goods-baseprice-recommend.md](./temu-local-goods-baseprice-recommend.md) |\n| `temu.local.goods.recommendedprice.query` | [temu-local-goods-recommendedprice-query.md](./temu-local-goods-recommendedprice-query.md) |\n\n## 编辑 / 改价（1）\n\n| type | 文档 |\n|------|------|\n| `bg.local.goods.priceorder.change.sku.price` | [bg-local-goods-priceorder-change-sku-price.md](./bg-local-goods-priceorder-change-sku-price.md) |"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-price-eu\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1786720650088\n}"},{"path":"references/access-token.md","content":"# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth）（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=eu` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 欧洲站 | openapi-b-eu.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'\n```\n\n## 注意事项\n\n1. **子账号**：可能无法进入服务市场，需主账号授权。\n2. **多站点**：欧洲站、英国站等需分别登录对应后台获取 Token。\n"},{"path":"references/api.md","content":"# linkfox-temu-price-eu — API 参考\r\n\r\nTemu **欧洲站商品价格管理**（Partner EU **Price** 菜单下价格/供货价相关接口），经本 skill `temu_eu_proxy`（`POST /temu/proxy`） 转发。Temu 的 `type` 写在 Body，**不是** URL 路径。\r\n\r\n> 网关与鉴权：本 skill `scripts/`（`LINKFOXAGENT_API_KEY`、`accessToken` / `storeKey`）。授权见 `references/access-token.md`。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\r\n\r\n---\r\n\r\n## 调用规范\r\n\r\n| 项 | 说明 |\r\n|----|------|\r\n| 网关根地址 | `${LINKFOX_TOOL_GATEWAY}`（可用 `TEMU_API_BASE_URL` / `STORE_API_BASE_URL` 覆盖） |\r\n| 价格 OpenAPI | `POST /temu/proxy` |\r\n| 加签文件下载 | `POST /temu/fileDownload`（`temu_eu_file_download.py`） |\r\n| LinkFox 鉴权 | Header **`Authorization`** 与 **`Token`**（同值）；或 `LINKFOX_AGENT_API_KEY` / `LINKFOXAGENT_API_KEY`；或 JSON `token`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\r\n| Temu 鉴权 | Body `accessToken`，或 `storeKey` + `site` + `managementType` + `tokenPurpose` |\r\n| 默认 | `site=eu`，`managementType=semi-managed`，`tokenPurpose=product-inventory` |\r\n| 上游 OpenAPI（EU） | `https://openapi-b-eu.temu.com/openapi/router`（网关按 `site` 解析） |\r\n\r\n### 网关请求 Body（`/temu/proxy`）\r\n\r\n| 参数 | 类型 | 必填 | 说明 |\r\n|------|------|------|------|\r\n| site | string | 是 | `eu`（本 skill 默认） |\r\n| managementType | string | 是 | `semi-managed` |\r\n| accessToken | string | 与 storeKey 二选一 | Temu 店铺令牌 |\r\n| storeKey | string | 与 accessToken 二选一 | `~/.linkfox/temu-access-tokens.json` 中的键 |\r\n| tokenPurpose | string | 否 | 建议 `product-inventory` |\r\n| type | string | 是 | Temu 接口名，如 `bg.local.goods.priceorder.query` |\r\n| params | object | 否 | 业务参数；多数 Manage 接口业务块在 **`params.request`** |\r\n\r\n### 网关响应\r\n\r\n| 字段 | 类型 | 说明 |\r\n|------|------|------|\r\n| body | string | Temu 原始 JSON 字符串；脚本解析为 `temuBody` |\r\n| code | integer | 网关错误码：`1002` 参数/Token，`1003` 转发失败 |\r\n\r\n解析顺序：**网关 `code`** → `JSON.parse(body)` → `success` / `errorCode` / `errorMsg` / `result`。\r\n\r\n### 脚本调用\r\n\r\n```bash\r\nexport LINKFOXAGENT_API_KEY=\"<key>\"\r\npython scripts/eu_price_priceorder_query.py '{\"accessToken\":\"TOKEN\",\"request\":{\"page\":1,\"size\":20,\"priceOrderType\":1}}'\r\n```\r\n\r\n业务字段可放在顶层或嵌套 `params`；含 `request` 时通常整体作为 `params` 转发。\r\n\r\n---\r\n\r\n## 接口一览\r\n\r\n完整 `sub_menu_code` 与 Partner 文档 URL 见 [partner-eu-catalog.md](./partner-eu-catalog.md)。\r\n\r\n**每个接口单独一份文档**：[apis/README.md](./apis/README.md)。\r\n\r\n---\r\n\r\n## 典型价格管理流程\r\n\r\n```text\r\n1. linkfox-temu-manage-product-eu → list/detail / spec.info.get           → 拿 goodsId、catId、specIdList\r\n2. bg.local.goods.priceorder.query（本 skill，白名单）                     → 分页查定价单/报价列表\r\n3. temu.local.goods.recommendedprice.query（本 skill）                     → 按 goodsIdList 查平台推荐供货价\r\n4. temu.local.goods.baseprice.recommend（本 skill）                        → 发品/改价前推荐基础价估算\r\n5. bg.local.goods.priceorder.change.sku.price（本 skill，白名单）          → 批量改 SKU 基础价\r\n6. bg.local.goods.priceorder.query                                         → 改价后核对 priceAuditList / supplierPrice\r\n```\r\n\r\n发品侧半托管供货价列表（`temu.goods.price.list.get`，入参 `productSkuIds`）见 **`linkfox-temu-add-product-us`**，与本 skill 的 `bg.local.*` 本地仓价格接口**不要混用**。\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| code | 说明 | 处理 |\r\n|------|------|------|\r\n| "}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1083,"uniquenessScore":35,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T18:19:40.248Z","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-10T18:19:40.248Z","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-10T21:53:44.085Z","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"}]}}}