{"id":"7280e9fa-fceb-4793-9976-c95164b76898","entityType":"agent","slug":"clawhub-linkfox-ai-linkfox-shopee-store-public","name":"Shopee-店铺公共模块","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linkfox-ai-linkfox-shopee-store-public","canonicalPath":"/agent/clawhub-linkfox-ai-linkfox-shopee-store-public","generatedAt":"2026-10-15T02:25:34.380Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T20:42:05.501Z","emptyReason":null},"description":"Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 995 downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-shopee-store-public","sourceUrl":"https://clawhub.ai/linkfox-ai/linkfox-shopee-store-public","homepage":"https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-public","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linkfox-ai/linkfox-shopee-store-public","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-public","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Shopee-店铺公共模块 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-11T20:42:05.501Z","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-11T20:42:05.501Z","emptyReason":null},"stars":null,"forks":null,"downloads":995,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"995 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T20:42:05.359Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T20:42:05.501Z","lastCrawledAt":"2026-10-11T20:42:05.359Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T20:42:05.359Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-09-14T05:30:34.655Z","changelog":"Update from 1.0.5 to 1.0.6","fileCount":23,"zipByteSize":34097},{"version":"1.0.5","createdAt":"2026-08-14T15:07:29.254Z","changelog":"Update from 1.0.4 to 1.0.5","fileCount":23,"zipByteSize":34120},{"version":"1.0.4","createdAt":"2026-08-07T11:07:07.387Z","changelog":"Update from 1.0.3 to 1.0.4","fileCount":23,"zipByteSize":33995},{"version":"1.0.3","createdAt":"2026-07-13T12:24:42.499Z","changelog":"Update from 1.0.2 to 1.0.3","fileCount":15,"zipByteSize":18075},{"version":"1.0.2","createdAt":"2026-07-06T11:33:19.436Z","changelog":"Update from 1.0.1 to 1.0.2","fileCount":15,"zipByteSize":17471},{"version":"1.0.1","createdAt":"2026-07-03T08:32:37.063Z","changelog":"Update from 1.0.0 to 1.0.1","fileCount":14,"zipByteSize":16251},{"version":"1.0.0","createdAt":"2026-07-02T15:56:00.153Z","changelog":"Initial release","fileCount":15,"zipByteSize":17839}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-shopee-store-public","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-shopee-store-public` 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-shopee-store-public 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-shopee-store-public/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-public/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-public/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-public/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-public/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-public/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-15T02:25:34.378Z"}},"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-shopee-store-public/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-public/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-public/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-public/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-11T20:42:05.501Z","emptyReason":null},"readme":"Skill: Shopee-店铺公共模块\n\nOwner: linkfox-ai\n\nSummary: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-09-14T05:30:34.655Z | user\n\nUpdate from 1.0.5 to 1.0.6\n\nv1.0.5 | 2026-08-14T15:07:29.254Z | user\n\nUpdate from 1.0.4 to 1.0.5\n\nv1.0.4 | 2026-08-07T11:07:07.387Z | user\n\nUpdate from 1.0.3 to 1.0.4\n\nv1.0.3 | 2026-07-13T12:24:42.499Z | user\n\nUpdate from 1.0.2 to 1.0.3\n\nv1.0.2 | 2026-07-06T11:33:19.436Z | user\n\nUpdate from 1.0.1 to 1.0.2\n\nv1.0.1 | 2026-07-03T08:32:37.063Z | user\n\nUpdate from 1.0.0 to 1.0.1\n\nv1.0.0 | 2026-07-02T15:56:00.153Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.6: 23 files, 34097 bytes\n\nFiles: references/api.md (3702b), references/apis/get-access-token.md (1414b), references/apis/get-merchants-by-partner.md (1417b), references/apis/get-shopee-ip-ranges.md (1407b), references/apis/get-shops-by-partner.md (1377b), references/apis/get-token-by-resend-code.md (1454b), references/apis/refresh-access-token.md (1416b), references/onboarding.md (1999b), scripts/_public_api_runner.py (4284b), scripts/_public_endpoints.py (2160b), scripts/_shopee_public_common.py (12180b), scripts/check_auth_dependency.py (3981b), scripts/get_access_token.py (680b), scripts/get_merchants_by_partner.py (728b), scripts/get_shopee_ip_ranges.py (704b), scripts/get_shops_by_partner.py (704b), scripts/get_token_by_resend_code.py (728b), scripts/onboarding.py (24027b), scripts/public_api.py (1011b), scripts/refresh_access_token.py (704b), skill-card.md (3357b), SKILL.md (5312b), _meta.json (146b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: linkfox-shopee-store-public\ndescription: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。\n---\n\n# Shopee Public 公共模块\n\nShopee Open Platform **Public 模块**（6 个 API）。**依赖 `linkfox-shopee-store-auth`** 作为同系列前置；部分接口为 Partner 级或 OAuth 级，经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/public/...`）。\n\n## 调用方式\n\n- **API 端点**：`POST /shopee/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗算力；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 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\nPublic 模块索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\n\n---\n\n## Prerequisites\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\n2. **日常授权 / 已授权店铺 / 读 token** → 优先 `linkfox-shopee-store-auth`（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\n\n## 可用脚本（6 个 API）\n\n| 脚本 | API | Method |\n|------|-----|--------|\n| `get_shops_by_partner.py` | get_shops_by_partner | GET |\n| `get_merchants_by_partner.py` | get_merchants_by_partner | GET |\n| `get_access_token.py` | get_access_token | POST |\n| `refresh_access_token.py` | refresh_access_token | POST |\n| `get_token_by_resend_code.py` | get_token_by_resend_code | POST |\n| `get_shopee_ip_ranges.py` | get_shopee_ip_ranges | GET |\n| `public_api.py` | 通用入口 | — |\n\n## 接口说明（按 API）\n\n入参与响应细节放在 `references/apis/`，SKILL 只保留索引。\n\n| API | 说明文档 |\n|-----|----------|\n| `get_access_token` | [references/apis/get-access-token.md](./references/apis/get-access-token.md) |\n| `get_merchants_by_partner` | [references/apis/get-merchants-by-partner.md](./references/apis/get-merchants-by-partner.md) |\n| `get_shopee_ip_ranges` | [references/apis/get-shopee-ip-ranges.md](./references/apis/get-shopee-ip-ranges.md) |\n| `get_shops_by_partner` | [references/apis/get-shops-by-partner.md](./references/apis/get-shops-by-partner.md) |\n| `get_token_by_resend_code` | [references/apis/get-token-by-resend-code.md](./references/apis/get-token-by-resend-code.md) |\n| `refresh_access_token` | [references/apis/refresh-access-token.md](./references/apis/refresh-access-token.md) |\n\n模块总览 / Feedback 见 [references/api.md](./references/api.md)。\n\n## Usage Scenarios\n\n### 1. 查 Partner 下已授权店铺\n`get_shops_by_partner.py` 或 `get_merchants_by_partner.py`\n\n### 2. OAuth Token 交换（底层开放接口）\n`get_access_token.py` / `refresh_access_token.py` 传完整 POST `body`\n\n### 3. IP 白名单配置\n`get_shopee_ip_ranges.py` 获取 Shopee 开放平台 IP 段\n\n## Not Applicable\n\n- 用户侧授权流程 → `linkfox-shopee-store-auth`\n- 店铺业务 API（订单/商品/物流等）→ 对应业务 skill\n- Push 回调配置 → `linkfox-shopee-store-push`\n\n## 算力消耗规则\n\n不消耗算力。\n\n**Feedback:** 见 `references/api.md`。\n\n\n---\n*For more high-quality, professional cross-border e-commerce skills, visit [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-shopee-store-public\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1789363834655\n}\n\nFile v1.0.6:references/api.md\n\n# linkfox-shopee-store-public — 参数与字段参考\r\n\r\n> 单接口入参/响应说明已拆到 **`apis/`**（按 API 一份）；本文件保留模块总览与 Feedback。\r\nShopee **Public 模块**全部 6 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n## 通用约定\r\n\r\n- **path**：须 `api/v2/public/...`\r\n- **Partner 级接口**：`get_shops_by_partner` / `get_merchants_by_partner` 等通常无需 `shopId`\r\n- **OAuth 接口**：`get_access_token` / `refresh_access_token` / `get_token_by_resend_code` 传 POST `body`\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.public.{api}?module=104&type=1`\r\n\r\n---\r\n\r\n## Public 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | get_access_token | POST | `api/v2/public/get_access_token` | `get_access_token.py` | [apis/get-access-token.md](./apis/get-access-token.md) |\r\n| 2 | get_merchants_by_partner | GET | `api/v2/public/get_merchants_by_partner` | `get_merchants_by_partner.py` | [apis/get-merchants-by-partner.md](./apis/get-merchants-by-partner.md) |\r\n| 3 | get_shopee_ip_ranges | GET | `api/v2/public/get_shopee_ip_ranges` | `get_shopee_ip_ranges.py` | [apis/get-shopee-ip-ranges.md](./apis/get-shopee-ip-ranges.md) |\r\n| 4 | get_shops_by_partner | GET | `api/v2/public/get_shops_by_partner` | `get_shops_by_partner.py` | [apis/get-shops-by-partner.md](./apis/get-shops-by-partner.md) |\r\n| 5 | get_token_by_resend_code | POST | `api/v2/public/get_token_by_resend_code` | `get_token_by_resend_code.py` | [apis/get-token-by-resend-code.md](./apis/get-token-by-resend-code.md) |\r\n| 6 | refresh_access_token | POST | `api/v2/public/refresh_access_token` | `refresh_access_token.py` | [apis/refresh-access-token.md](./apis/refresh-access-token.md) |\r\n通用入口：`public_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_shops_by_partner` | 查询 Partner 下已授权店铺列表 — [apis/get-shops-by-partner.md](./apis/get-shops-by-partner.md) |\r\n| `get_merchants_by_partner` | 查询 Partner 下已授权商户列表 — [apis/get-merchants-by-partner.md](./apis/get-merchants-by-partner.md) |\r\n| `get_access_token` | 用 auth code 换 token — [apis/get-access-token.md](./apis/get-access-token.md) |\r\n| `refresh_access_token` | 刷新 access token — [apis/refresh-access-token.md](./apis/refresh-access-token.md) |\r\n| `get_token_by_resend_code` | 通过 resend code 获取 token — [apis/get-token-by-resend-code.md](./apis/get-token-by-resend-code.md) |\r\n| `get_shopee_ip_ranges` | Shopee 开放平台 IP 段（白名单配置） — [apis/get-shopee-ip-ranges.md](./apis/get-shopee-ip-ranges.md) |\r\n\r\n> 日常授权与已授权店铺查询优先使用 **`linkfox-shopee-store-auth`**（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\ncurl -X POST https://tool-gateway.linkfox.com/shopee/developerProxy \\\r\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/public/get_shops_by_partner\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\"\r\n  }'\r\n```\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n```bash\r\ncurl -X POST https://skill-api.linkfox.com/api/v1/public/feedback \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"skillName\":\"linkfox-shopee-store-public\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"Public API查询正常\"}'\r\n```\n\nFile v1.0.6:references/apis/get-access-token.md\n\n# get_access_token\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_access_token.py` |\n| Method / path | POST `api/v2/public/get_access_token` |\n| 官方文档 | [get_access_token](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) |\n| 用途 | Exchange auth code for access token; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Exchange auth code for access token; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_access_token.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_access_token\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAccessToken`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-merchants-by-partner.md\n\n# get_merchants_by_partner\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_merchants_by_partner.py` |\n| Method / path | GET `api/v2/public/get_merchants_by_partner` |\n| 官方文档 | [get_merchants_by_partner](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) |\n| 用途 | List merchants authorized to partner |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：List merchants authorized to partner\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_merchants_by_partner.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_merchants_by_partner\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getMerchantsByPartner`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-shopee-ip-ranges.md\n\n# get_shopee_ip_ranges\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_shopee_ip_ranges.py` |\n| Method / path | GET `api/v2/public/get_shopee_ip_ranges` |\n| 官方文档 | [get_shopee_ip_ranges](https://open.shopee.com/documents/v2/v2.public.get_shopee_ip_ranges?module=104&type=1) |\n| 用途 | Shopee Open Platform IP ranges for allowlisting |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Shopee Open Platform IP ranges for allowlisting\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_shopee_ip_ranges.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_shopee_ip_ranges\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getShopeeIpRanges`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-shops-by-partner.md\n\n# get_shops_by_partner\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_shops_by_partner.py` |\n| Method / path | GET `api/v2/public/get_shops_by_partner` |\n| 官方文档 | [get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) |\n| 用途 | List shops authorized to partner |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：List shops authorized to partner\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_shops_by_partner.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_shops_by_partner\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getShopsByPartner`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-token-by-resend-code.md\n\n# get_token_by_resend_code\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_token_by_resend_code.py` |\n| Method / path | POST `api/v2/public/get_token_by_resend_code` |\n| 官方文档 | [get_token_by_resend_code](https://open.shopee.com/documents/v2/v2.public.get_token_by_resend_code?module=104&type=1) |\n| 用途 | Get token by resend code; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Get token by resend code; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_token_by_resend_code.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_token_by_resend_code\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getTokenByResendCode`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/refresh-access-token.md\n\n# refresh_access_token\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/refresh_access_token.py` |\n| Method / path | POST `api/v2/public/refresh_access_token` |\n| 官方文档 | [refresh_access_token](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1) |\n| 用途 | Refresh access token; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Refresh access token; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/refresh_access_token.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"refresh_access_token\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`refreshAccessToken`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\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>`\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `算力/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.6:skill-card.md\n\n## Description:\n\nHelps agents call Shopee Open Platform Public module endpoints through LinkFox scripts for partner shops, merchants, OAuth token exchange, token refresh, resend-code token retrieval, and Shopee IP ranges.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and operations teams use this skill to guide agent calls to Shopee Public APIs through LinkFox, including partner shop and merchant listing, OAuth token operations, resend-code token retrieval, and Shopee IP allowlist lookup.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can forward Shopee OAuth and partner API data through LinkFox services.\n\nMitigation: Use it only in a trusted environment, avoid pasting production tokens into examples, and confirm requests are intended before sending OAuth bodies or access tokens.\n\nRisk: Endpoint override environment variables can redirect LinkFox service calls.\n\nMitigation: Avoid endpoint overrides unless the destination is controlled and trusted.\n\nRisk: Onboarding helpers can create or retrieve a LinkFox API key through SMS login.\n\nMitigation: Prefer self-service API key retrieval, treat SMS codes and API keys as secrets, and store the resulting key only in a protected environment variable.\n\nRisk: Billing helpers can initiate LinkFox plan orders and payment QR output.\n\nMitigation: Require explicit user confirmation for plan, payment method, and cost before running billing order commands.\n\nRisk: Generated linkfox output files may contain tokens, API responses, or other sensitive account data.\n\nMitigation: Protect or clean generated linkfox session files and use summarized output or targeted JSON extraction when full responses are not needed.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-public)\n- [Shopee Public API index](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\n- [API reference](references/api.md)\n- [Onboarding and billing guidance](references/onboarding.md)\n- [get_access_token reference](references/apis/get-access-token.md)\n- [refresh_access_token reference](references/apis/refresh-access-token.md)\n- [get_shops_by_partner reference](references/apis/get-shops-by-partner.md)\n- [get_merchants_by_partner reference](references/apis/get-merchants-by-partner.md)\n- [get_token_by_resend_code reference](references/apis/get-token-by-resend-code.md)\n- [get_shopee_ip_ranges reference](references/apis/get-shopee-ip-ranges.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands and JSON examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May direct scripts to save full API responses as JSON files under a linkfox session directory while printing full JSON or summaries to stdout.]\n\n## Skill Version(s):\n\n1.0.6 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.5: 23 files, 34120 bytes\n\nFiles: references/api.md (3702b), references/apis/get-access-token.md (1414b), references/apis/get-merchants-by-partner.md (1417b), references/apis/get-shopee-ip-ranges.md (1407b), references/apis/get-shops-by-partner.md (1377b), references/apis/get-token-by-resend-code.md (1454b), references/apis/refresh-access-token.md (1416b), references/onboarding.md (2046b), scripts/_public_api_runner.py (4284b), scripts/_public_endpoints.py (2160b), scripts/_shopee_public_common.py (11946b), scripts/check_auth_dependency.py (3981b), scripts/get_access_token.py (680b), scripts/get_merchants_by_partner.py (728b), scripts/get_shopee_ip_ranges.py (704b), scripts/get_shops_by_partner.py (704b), scripts/get_token_by_resend_code.py (728b), scripts/onboarding.py (24089b), scripts/public_api.py (1011b), scripts/refresh_access_token.py (704b), skill-card.md (3261b), SKILL.md (5312b), _meta.json (146b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkfox-shopee-store-public\ndescription: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。\n---\n\n# Shopee Public 公共模块\n\nShopee Open Platform **Public 模块**（6 个 API）。**依赖 `linkfox-shopee-store-auth`** 作为同系列前置；部分接口为 Partner 级或 OAuth 级，经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/public/...`）。\n\n## 调用方式\n\n- **API 端点**：`POST /shopee/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 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\nPublic 模块索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\n\n---\n\n## Prerequisites\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\n2. **日常授权 / 已授权店铺 / 读 token** → 优先 `linkfox-shopee-store-auth`（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\n\n## 可用脚本（6 个 API）\n\n| 脚本 | API | Method |\n|------|-----|--------|\n| `get_shops_by_partner.py` | get_shops_by_partner | GET |\n| `get_merchants_by_partner.py` | get_merchants_by_partner | GET |\n| `get_access_token.py` | get_access_token | POST |\n| `refresh_access_token.py` | refresh_access_token | POST |\n| `get_token_by_resend_code.py` | get_token_by_resend_code | POST |\n| `get_shopee_ip_ranges.py` | get_shopee_ip_ranges | GET |\n| `public_api.py` | 通用入口 | — |\n\n## 接口说明（按 API）\n\n入参与响应细节放在 `references/apis/`，SKILL 只保留索引。\n\n| API | 说明文档 |\n|-----|----------|\n| `get_access_token` | [references/apis/get-access-token.md](./references/apis/get-access-token.md) |\n| `get_merchants_by_partner` | [references/apis/get-merchants-by-partner.md](./references/apis/get-merchants-by-partner.md) |\n| `get_shopee_ip_ranges` | [references/apis/get-shopee-ip-ranges.md](./references/apis/get-shopee-ip-ranges.md) |\n| `get_shops_by_partner` | [references/apis/get-shops-by-partner.md](./references/apis/get-shops-by-partner.md) |\n| `get_token_by_resend_code` | [references/apis/get-token-by-resend-code.md](./references/apis/get-token-by-resend-code.md) |\n| `refresh_access_token` | [references/apis/refresh-access-token.md](./references/apis/refresh-access-token.md) |\n\n模块总览 / Feedback 见 [references/api.md](./references/api.md)。\n\n## Usage Scenarios\n\n### 1. 查 Partner 下已授权店铺\n`get_shops_by_partner.py` 或 `get_merchants_by_partner.py`\n\n### 2. OAuth Token 交换（底层开放接口）\n`get_access_token.py` / `refresh_access_token.py` 传完整 POST `body`\n\n### 3. IP 白名单配置\n`get_shopee_ip_ranges.py` 获取 Shopee 开放平台 IP 段\n\n## Not Applicable\n\n- 用户侧授权流程 → `linkfox-shopee-store-auth`\n- 店铺业务 API（订单/商品/物流等）→ 对应业务 skill\n- Push 回调配置 → `linkfox-shopee-store-push`\n\n## 积分消耗规则\n\n不消耗积分。\n\n**Feedback:** 见 `references/api.md`。\n\n\n---\n*For more high-quality, professional cross-border e-commerce skills, visit [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-shopee-store-public\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1786720049254\n}\n\nFile v1.0.5:references/api.md\n\n# linkfox-shopee-store-public — 参数与字段参考\r\n\r\n> 单接口入参/响应说明已拆到 **`apis/`**（按 API 一份）；本文件保留模块总览与 Feedback。\r\nShopee **Public 模块**全部 6 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n## 通用约定\r\n\r\n- **path**：须 `api/v2/public/...`\r\n- **Partner 级接口**：`get_shops_by_partner` / `get_merchants_by_partner` 等通常无需 `shopId`\r\n- **OAuth 接口**：`get_access_token` / `refresh_access_token` / `get_token_by_resend_code` 传 POST `body`\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.public.{api}?module=104&type=1`\r\n\r\n---\r\n\r\n## Public 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | get_access_token | POST | `api/v2/public/get_access_token` | `get_access_token.py` | [apis/get-access-token.md](./apis/get-access-token.md) |\r\n| 2 | get_merchants_by_partner | GET | `api/v2/public/get_merchants_by_partner` | `get_merchants_by_partner.py` | [apis/get-merchants-by-partner.md](./apis/get-merchants-by-partner.md) |\r\n| 3 | get_shopee_ip_ranges | GET | `api/v2/public/get_shopee_ip_ranges` | `get_shopee_ip_ranges.py` | [apis/get-shopee-ip-ranges.md](./apis/get-shopee-ip-ranges.md) |\r\n| 4 | get_shops_by_partner | GET | `api/v2/public/get_shops_by_partner` | `get_shops_by_partner.py` | [apis/get-shops-by-partner.md](./apis/get-shops-by-partner.md) |\r\n| 5 | get_token_by_resend_code | POST | `api/v2/public/get_token_by_resend_code` | `get_token_by_resend_code.py` | [apis/get-token-by-resend-code.md](./apis/get-token-by-resend-code.md) |\r\n| 6 | refresh_access_token | POST | `api/v2/public/refresh_access_token` | `refresh_access_token.py` | [apis/refresh-access-token.md](./apis/refresh-access-token.md) |\r\n通用入口：`public_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_shops_by_partner` | 查询 Partner 下已授权店铺列表 — [apis/get-shops-by-partner.md](./apis/get-shops-by-partner.md) |\r\n| `get_merchants_by_partner` | 查询 Partner 下已授权商户列表 — [apis/get-merchants-by-partner.md](./apis/get-merchants-by-partner.md) |\r\n| `get_access_token` | 用 auth code 换 token — [apis/get-access-token.md](./apis/get-access-token.md) |\r\n| `refresh_access_token` | 刷新 access token — [apis/refresh-access-token.md](./apis/refresh-access-token.md) |\r\n| `get_token_by_resend_code` | 通过 resend code 获取 token — [apis/get-token-by-resend-code.md](./apis/get-token-by-resend-code.md) |\r\n| `get_shopee_ip_ranges` | Shopee 开放平台 IP 段（白名单配置） — [apis/get-shopee-ip-ranges.md](./apis/get-shopee-ip-ranges.md) |\r\n\r\n> 日常授权与已授权店铺查询优先使用 **`linkfox-shopee-store-auth`**（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\ncurl -X POST https://tool-gateway.linkfox.com/shopee/developerProxy \\\r\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/public/get_shops_by_partner\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\"\r\n  }'\r\n```\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n```bash\r\ncurl -X POST https://skill-api.linkfox.com/api/v1/public/feedback \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"skillName\":\"linkfox-shopee-store-public\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"Public API查询正常\"}'\r\n```\n\nFile v1.0.5:references/apis/get-access-token.md\n\n# get_access_token\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_access_token.py` |\n| Method / path | POST `api/v2/public/get_access_token` |\n| 官方文档 | [get_access_token](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) |\n| 用途 | Exchange auth code for access token; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Exchange auth code for access token; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_access_token.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_access_token\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAccessToken`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/get-merchants-by-partner.md\n\n# get_merchants_by_partner\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_merchants_by_partner.py` |\n| Method / path | GET `api/v2/public/get_merchants_by_partner` |\n| 官方文档 | [get_merchants_by_partner](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) |\n| 用途 | List merchants authorized to partner |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：List merchants authorized to partner\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_merchants_by_partner.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_merchants_by_partner\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getMerchantsByPartner`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/get-shopee-ip-ranges.md\n\n# get_shopee_ip_ranges\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_shopee_ip_ranges.py` |\n| Method / path | GET `api/v2/public/get_shopee_ip_ranges` |\n| 官方文档 | [get_shopee_ip_ranges](https://open.shopee.com/documents/v2/v2.public.get_shopee_ip_ranges?module=104&type=1) |\n| 用途 | Shopee Open Platform IP ranges for allowlisting |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Shopee Open Platform IP ranges for allowlisting\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_shopee_ip_ranges.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_shopee_ip_ranges\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getShopeeIpRanges`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/get-shops-by-partner.md\n\n# get_shops_by_partner\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_shops_by_partner.py` |\n| Method / path | GET `api/v2/public/get_shops_by_partner` |\n| 官方文档 | [get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) |\n| 用途 | List shops authorized to partner |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：List shops authorized to partner\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_shops_by_partner.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_shops_by_partner\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getShopsByPartner`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/get-token-by-resend-code.md\n\n# get_token_by_resend_code\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_token_by_resend_code.py` |\n| Method / path | POST `api/v2/public/get_token_by_resend_code` |\n| 官方文档 | [get_token_by_resend_code](https://open.shopee.com/documents/v2/v2.public.get_token_by_resend_code?module=104&type=1) |\n| 用途 | Get token by resend code; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Get token by resend code; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_token_by_resend_code.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_token_by_resend_code\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getTokenByResendCode`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/refresh-access-token.md\n\n# refresh_access_token\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/refresh_access_token.py` |\n| Method / path | POST `api/v2/public/refresh_access_token` |\n| 官方文档 | [refresh_access_token](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1) |\n| 用途 | Refresh access token; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Refresh access token; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/refresh_access_token.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"refresh_access_token\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`refreshAccessToken`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/onboarding.md\n\n# 解决认证和积分问题\n\n调用本 skill 时若网关返回 **auth** 或 **billing** 错误，走本 skill 自带的 `scripts/onboarding.py` 完成引导。\n\n**auth 场景**：`errcode=401` 或消息含 `authorized error`/`鉴权失败`/`未授权`/`unauthorized`；或 `LINKFOX_AGENT_API_KEY` 与 `LINKFOXAGENT_API_KEY` 均为空。\n1. 若已配置 key → 先让用户重启会话（最常见误判），仍失败让用户重新取 key 或换手机号重注册\n2. 未配置 → 询问：自助去 https://agent.linkfox.com/ 取 key，或提供手机号让脚本注册\n3. 手机号路径：\n   - `python scripts/onboarding.py send-code <phone>` → 展示 JSON 里的 phone/agreements\n   - 收到验证码后：`python scripts/onboarding.py login <phone> <code>`（workbuddy 宿主加 `--channel workbuddy`）\n   - 拿到 `api_key` 后把下面三平台配置转发给用户，提示重启会话生效：\n     - Windows PowerShell（永久）：`setx LINKFOX_AGENT_API_KEY \"<key>\"`\n     - macOS zsh：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.zshrc && source ~/.zshrc`\n     - Linux bash：`echo 'export LINKFOX_AGENT_API_KEY=\"<key>\"' >> ~/.bashrc && source ~/.bashrc`\n     - 变量名 `LINKFOX_AGENT_API_KEY`（主推）或 `LINKFOXAGENT_API_KEY`（老规范）任一即可\n\n**billing 场景**：`errcode=402` 或消息含 `积分/余额/quota/insufficient/充值/套餐到期`。\n- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单，否则输出编号清单让用户选\n- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`（通常 `wechat/alipay`）\n- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG > `pay_url` > `ascii_qr`（标注兜底）\n- 已付款可选调 `python scripts/onboarding.py query <order_id>`，不主动轮询\n\n排除 `errcode=403`（无权限，不归入这两类）。所有子命令输出 stdout JSON，`error` 字段已含阶段前缀，透传给用户即可。完整用法：`python scripts/onboarding.py --help`。\n\nFile v1.0.5:skill-card.md\n\n## Description:\n\nProvides agent guidance and Python scripts for calling six Shopee Open Platform Public APIs through LinkFox's developer proxy, including authorized shop and merchant listing, OAuth token exchange and refresh, resend-code token retrieval, and Shopee IP range lookup.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and e-commerce operators use this skill to call Shopee Public module endpoints from an agent workflow for partner shop or merchant discovery, token exchange and refresh, resend-code token retrieval, and Shopee IP allowlist lookup. It also guides users through LinkFox API key setup, dependency checks, and billing/authentication remediation when gateway calls fail.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles Shopee and LinkFox tokens, phone-login onboarding, billing orders, and locally stored API responses.\n\nMitigation: Use it only in workspaces where local response storage is acceptable, avoid pasting real tokens into chat or logs, and review saved response files according to workspace data-handling policy.\n\nRisk: Custom LinkFox gateway or login URL environment variables can redirect API, login, or token traffic.\n\nMitigation: Keep the default LinkFox endpoints unless the replacement destination is fully trusted and intentionally configured.\n\nRisk: Onboarding and billing helpers may initiate account setup, plan selection, payment order creation, or order-status checks.\n\nMitigation: Prefer self-service account setup at the LinkFox site when possible and have the user review plan, payment method, and order details before continuing.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-public)\n- [Publisher profile](https://clawhub.ai/user/linkfox-ai)\n- [Public module API reference](artifact/references/api.md)\n- [Onboarding and auth guidance](artifact/references/onboarding.md)\n- [Shopee get_shops_by_partner documentation](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\n- [Shopee get_access_token documentation](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1)\n- [Shopee refresh_access_token documentation](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1)\n- [LinkFox Skills](https://skill.linkfox.com/)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance, JSON]\n\n**Output Format:** [Markdown guidance with Python shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Full API responses are saved under a local linkfox session directory; small responses print as JSON, large responses print summaries unless --inline is used.]\n\n## Skill Version(s):\n\n1.0.5 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.4: 23 files, 33995 bytes\n\nFiles: references/api.md (3702b), references/apis/get-access-token.md (1414b), references/apis/get-merchants-by-partner.md (1417b), references/apis/get-shopee-ip-ranges.md (1407b), references/apis/get-shops-by-partner.md (1377b), references/apis/get-token-by-resend-code.md (1454b), references/apis/refresh-access-token.md (1416b), references/onboarding.md (2046b), scripts/_public_api_runner.py (4284b), scripts/_public_endpoints.py (2160b), scripts/_shopee_public_common.py (11946b), scripts/check_auth_dependency.py (3981b), scripts/get_access_token.py (680b), scripts/get_merchants_by_partner.py (728b), scripts/get_shopee_ip_ranges.py (704b), scripts/get_shops_by_partner.py (704b), scripts/get_token_by_resend_code.py (728b), scripts/onboarding.py (24089b), scripts/public_api.py (1011b), scripts/refresh_access_token.py (704b), skill-card.md (2977b), SKILL.md (5312b), _meta.json (146b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkfox-shopee-store-public\ndescription: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。\n---\n\n# Shopee Public 公共模块\n\nShopee Open Platform **Public 模块**（6 个 API）。**依赖 `linkfox-shopee-store-auth`** 作为同系列前置；部分接口为 Partner 级或 OAuth 级，经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/public/...`）。\n\n## 调用方式\n\n- **API 端点**：`POST /shopee/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 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\nPublic 模块索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\n\n---\n\n## Prerequisites\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\n2. **日常授权 / 已授权店铺 / 读 token** → 优先 `linkfox-shopee-store-auth`（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\n\n## 可用脚本（6 个 API）\n\n| 脚本 | API | Method |\n|------|-----|--------|\n| `get_shops_by_partner.py` | get_shops_by_partner | GET |\n| `get_merchants_by_partner.py` | get_merchants_by_partner | GET |\n| `get_access_token.py` | get_access_token | POST |\n| `refresh_access_token.py` | refresh_access_token | POST |\n| `get_token_by_resend_code.py` | get_token_by_resend_code | POST |\n| `get_shopee_ip_ranges.py` | get_shopee_ip_ranges | GET |\n| `public_api.py` | 通用入口 | — |\n\n## 接口说明（按 API）\n\n入参与响应细节放在 `references/apis/`，SKILL 只保留索引。\n\n| API | 说明文档 |\n|-----|----------|\n| `get_access_token` | [references/apis/get-access-token.md](./references/apis/get-access-token.md) |\n| `get_merchants_by_partner` | [references/apis/get-merchants-by-partner.md](./references/apis/get-merchants-by-partner.md) |\n| `get_shopee_ip_ranges` | [references/apis/get-shopee-ip-ranges.md](./references/apis/get-shopee-ip-ranges.md) |\n| `get_shops_by_partner` | [references/apis/get-shops-by-partner.md](./references/apis/get-shops-by-partner.md) |\n| `get_token_by_resend_code` | [references/apis/get-token-by-resend-code.md](./references/apis/get-token-by-resend-code.md) |\n| `refresh_access_token` | [references/apis/refresh-access-token.md](./references/apis/refresh-access-token.md) |\n\n模块总览 / Feedback 见 [references/api.md](./references/api.md)。\n\n## Usage Scenarios\n\n### 1. 查 Partner 下已授权店铺\n`get_shops_by_partner.py` 或 `get_merchants_by_partner.py`\n\n### 2. OAuth Token 交换（底层开放接口）\n`get_access_token.py` / `refresh_access_token.py` 传完整 POST `body`\n\n### 3. IP 白名单配置\n`get_shopee_ip_ranges.py` 获取 Shopee 开放平台 IP 段\n\n## Not Applicable\n\n- 用户侧授权流程 → `linkfox-shopee-store-auth`\n- 店铺业务 API（订单/商品/物流等）→ 对应业务 skill\n- Push 回调配置 → `linkfox-shopee-store-push`\n\n## 积分消耗规则\n\n不消耗积分。\n\n**Feedback:** 见 `references/api.md`。\n\n\n---\n*For more high-quality, professional cross-border e-commerce skills, visit [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-shopee-store-public\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1786100827387\n}\n\nFile v1.0.4:references/api.md\n\n# linkfox-shopee-store-public — 参数与字段参考\r\n\r\n> 单接口入参/响应说明已拆到 **`apis/`**（按 API 一份）；本文件保留模块总览与 Feedback。\r\nShopee **Public 模块**全部 6 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n## 通用约定\r\n\r\n- **path**：须 `api/v2/public/...`\r\n- **Partner 级接口**：`get_shops_by_partner` / `get_merchants_by_partner` 等通常无需 `shopId`\r\n- **OAuth 接口**：`get_access_token` / `refresh_access_token` / `get_token_by_resend_code` 传 POST `body`\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.public.{api}?module=104&type=1`\r\n\r\n---\r\n\r\n## Public 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | get_access_token | POST | `api/v2/public/get_access_token` | `get_access_token.py` | [apis/get-access-token.md](./apis/get-access-token.md) |\r\n| 2 | get_merchants_by_partner | GET | `api/v2/public/get_merchants_by_partner` | `get_merchants_by_partner.py` | [apis/get-merchants-by-partner.md](./apis/get-merchants-by-partner.md) |\r\n| 3 | get_shopee_ip_ranges | GET | `api/v2/public/get_shopee_ip_ranges` | `get_shopee_ip_ranges.py` | [apis/get-shopee-ip-ranges.md](./apis/get-shopee-ip-ranges.md) |\r\n| 4 | get_shops_by_partner | GET | `api/v2/public/get_shops_by_partner` | `get_shops_by_partner.py` | [apis/get-shops-by-partner.md](./apis/get-shops-by-partner.md) |\r\n| 5 | get_token_by_resend_code | POST | `api/v2/public/get_token_by_resend_code` | `get_token_by_resend_code.py` | [apis/get-token-by-resend-code.md](./apis/get-token-by-resend-code.md) |\r\n| 6 | refresh_access_token | POST | `api/v2/public/refresh_access_token` | `refresh_access_token.py` | [apis/refresh-access-token.md](./apis/refresh-access-token.md) |\r\n通用入口：`public_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_shops_by_partner` | 查询 Partner 下已授权店铺列表 — [apis/get-shops-by-partner.md](./apis/get-shops-by-partner.md) |\r\n| `get_merchants_by_partner` | 查询 Partner 下已授权商户列表 — [apis/get-merchants-by-partner.md](./apis/get-merchants-by-partner.md) |\r\n| `get_access_token` | 用 auth code 换 token — [apis/get-access-token.md](./apis/get-access-token.md) |\r\n| `refresh_access_token` | 刷新 access token — [apis/refresh-access-token.md](./apis/refresh-access-token.md) |\r\n| `get_token_by_resend_code` | 通过 resend code 获取 token — [apis/get-token-by-resend-code.md](./apis/get-token-by-resend-code.md) |\r\n| `get_shopee_ip_ranges` | Shopee 开放平台 IP 段（白名单配置） — [apis/get-shopee-ip-ranges.md](./apis/get-shopee-ip-ranges.md) |\r\n\r\n> 日常授权与已授权店铺查询优先使用 **`linkfox-shopee-store-auth`**（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\ncurl -X POST https://tool-gateway.linkfox.com/shopee/developerProxy \\\r\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/public/get_shops_by_partner\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\"\r\n  }'\r\n```\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n```bash\r\ncurl -X POST https://skill-api.linkfox.com/api/v1/public/feedback \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"skillName\":\"linkfox-shopee-store-public\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"Public API查询正常\"}'\r\n```\n\nFile v1.0.4:references/apis/get-access-token.md\n\n# get_access_token\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_access_token.py` |\n| Method / path | POST `api/v2/public/get_access_token` |\n| 官方文档 | [get_access_token](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) |\n| 用途 | Exchange auth code for access token; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Exchange auth code for access token; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_access_token.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_access_token\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAccessToken`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/get-merchants-by-partner.md\n\n# get_merchants_by_partner\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_merchants_by_partner.py` |\n| Method / path | GET `api/v2/public/get_merchants_by_partner` |\n| 官方文档 | [get_merchants_by_partner](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) |\n| 用途 | List merchants authorized to partner |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：List merchants authorized to partner\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_merchants_by_partner.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_merchants_by_partner\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getMerchantsByPartner`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/get-shopee-ip-ranges.md\n\n# get_shopee_ip_ranges\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_shopee_ip_ranges.py` |\n| Method / path | GET `api/v2/public/get_shopee_ip_ranges` |\n| 官方文档 | [get_shopee_ip_ranges](https://open.shopee.com/documents/v2/v2.public.get_shopee_ip_ranges?module=104&type=1) |\n| 用途 | Shopee Open Platform IP ranges for allowlisting |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Shopee Open Platform IP ranges for allowlisting\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_shopee_ip_ranges.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_shopee_ip_ranges\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getShopeeIpRanges`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/get-shops-by-partner.md\n\n# get_shops_by_partner\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_shops_by_partner.py` |\n| Method / path | GET `api/v2/public/get_shops_by_partner` |\n| 官方文档 | [get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) |\n| 用途 | List shops authorized to partner |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：List shops authorized to partner\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_shops_by_partner.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_shops_by_partner\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getShopsByPartner`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/get-token-by-resend-code.md\n\n# get_token_by_resend_code\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_token_by_resend_code.py` |\n| Method / path | POST `api/v2/public/get_token_by_resend_code` |\n| 官方文档 | [get_token_by_resend_code](https://open.shopee.com/documents/v2/v2.public.get_token_by_resend_code?module=104&type=1) |\n| 用途 | Get token by resend code; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Get token by resend code; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_token_by_resend_code.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_token_by_resend_code\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getTokenByResendCode`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/refresh-access-token.md\n\n# refresh_access_token\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/refresh_access_token.py` |\n| Method / path | POST `api/v2/public/refresh_access_token` |\n| 官方文档 | [refresh_access_token](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1) |\n| 用途 | Refresh access token; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Refresh access token; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/refresh_access_token.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"refresh_access_token\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`refreshAccessToken`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4: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.4:skill-card.md\n\n## Description:\n\nShopee Public module helper for calling six Shopee Open API public endpoints through LinkFox, including partner shop and merchant lookup, OAuth token exchange and refresh, resend-code token retrieval, and Shopee IP range lookup.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and e-commerce operators use this skill to query Shopee Public API data and complete lower-level partner or OAuth operations when the regular authorization skill is not the right entry point. It is intended for LinkFox-backed Shopee workflows that need scripted public endpoint calls and response summaries.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles LinkFox API keys, Shopee OAuth and token responses, and phone-number based onboarding.\n\nMitigation: Use approved credentials only, avoid unnecessary production secrets, and rotate any credential that may have been exposed through logs or saved responses.\n\nRisk: Full API responses may be saved locally under the workspace or home LinkFox directory.\n\nMitigation: Review saved JSON files after use and delete sensitive response files when retention is not required.\n\nRisk: Billing onboarding can include optional payment-order flows.\n\nMitigation: Confirm the selected plan, payment method, and order details with the user before creating or sharing payment orders.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-public)\n- [Shopee Public API Index](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\n- [API Reference](references/api.md)\n- [Onboarding Reference](references/onboarding.md)\n- [get_access_token Reference](references/apis/get-access-token.md)\n- [get_merchants_by_partner Reference](references/apis/get-merchants-by-partner.md)\n- [get_shopee_ip_ranges Reference](references/apis/get-shopee-ip-ranges.md)\n- [get_shops_by_partner Reference](references/apis/get-shops-by-partner.md)\n- [get_token_by_resend_code Reference](references/apis/get-token-by-resend-code.md)\n- [refresh_access_token Reference](references/apis/refresh-access-token.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, JSON]\n\n**Output Format:** [Markdown guidance with shell commands and JSON API responses or saved JSON files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Responses are summarized when large; full responses may be saved locally for later inspection.]\n\n## Skill Version(s):\n\n1.0.4 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.3: 15 files, 18075 bytes\n\nFiles: references/api.md (3350b), scripts/_public_api_runner.py (4271b), scripts/_public_endpoints.py (2160b), scripts/_shopee_public_common.py (11754b), scripts/check_auth_dependency.py (3981b), scripts/get_access_token.py (715b), scripts/get_merchants_by_partner.py (763b), scripts/get_shopee_ip_ranges.py (739b), scripts/get_shops_by_partner.py (739b), scripts/get_token_by_resend_code.py (763b), scripts/public_api.py (1011b), scripts/refresh_access_token.py (739b), skill-card.md (2093b), SKILL.md (5012b), _meta.json (146b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: linkfox-shopee-store-public\ndescription: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。\n---\n\n# Shopee Public 公共模块\n\nShopee Open Platform **Public 模块**（6 个 API）。**依赖 `linkfox-shopee-store-auth`** 作为同系列前置；部分接口为 Partner 级或 OAuth 级，经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/public/...`）。\n\n## 调用方式\n\n- **API 端点**：`POST /shopee/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 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\nPublic 模块索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\n\n---\n\n## Prerequisites\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\n2. **日常授权 / 已授权店铺 / 读 token** → 优先 `linkfox-shopee-store-auth`（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\n\n## 可用脚本（6 个 API）\n\n| 脚本 | API | Method |\n|------|-----|--------|\n| `get_shops_by_partner.py` | get_shops_by_partner | GET |\n| `get_merchants_by_partner.py` | get_merchants_by_partner | GET |\n| `get_access_token.py` | get_access_token | POST |\n| `refresh_access_token.py` | refresh_access_token | POST |\n| `get_token_by_resend_code.py` | get_token_by_resend_code | POST |\n| `get_shopee_ip_ranges.py` | get_shopee_ip_ranges | GET |\n| `public_api.py` | 通用入口 | — |\n\n## Usage Scenarios\n\n### 1. 查 Partner 下已授权店铺\n`get_shops_by_partner.py` 或 `get_merchants_by_partner.py`\n\n### 2. OAuth Token 交换（底层开放接口）\n`get_access_token.py` / `refresh_access_token.py` 传完整 POST `body`\n\n### 3. IP 白名单配置\n`get_shopee_ip_ranges.py` 获取 Shopee 开放平台 IP 段\n\n## Not Applicable\n\n- 用户侧授权流程 → `linkfox-shopee-store-auth`\n- 店铺业务 API（订单/商品/物流等）→ 对应业务 skill\n- Push 回调配置 → `linkfox-shopee-store-push`\n\n## 积分消耗规则\n\n不消耗积分。\n\n**Feedback:** 见 `references/api.md`。\n\n\n---\n*For more high-quality, professional cross-border e-commerce skills, visit [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-shopee-store-public\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1783945482499\n}\n\nFile v1.0.3:references/api.md\n\n# linkfox-shopee-store-public — 参数与字段参考\r\n\r\nShopee **Public 模块**全部 6 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n## 通用约定\r\n\r\n- **path**：须 `api/v2/public/...`\r\n- **Partner 级接口**：`get_shops_by_partner` / `get_merchants_by_partner` 等通常无需 `shopId`\r\n- **OAuth 接口**：`get_access_token` / `refresh_access_token` / `get_token_by_resend_code` 传 POST `body`\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.public.{api}?module=104&type=1`\r\n\r\n---\r\n\r\n## Public 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | get_access_token | POST | `api/v2/public/get_access_token` | `get_access_token.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) |\r\n| 2 | get_merchants_by_partner | GET | `api/v2/public/get_merchants_by_partner` | `get_merchants_by_partner.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) |\r\n| 3 | get_shopee_ip_ranges | GET | `api/v2/public/get_shopee_ip_ranges` | `get_shopee_ip_ranges.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_shopee_ip_ranges?module=104&type=1) |\r\n| 4 | get_shops_by_partner | GET | `api/v2/public/get_shops_by_partner` | `get_shops_by_partner.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) |\r\n| 5 | get_token_by_resend_code | POST | `api/v2/public/get_token_by_resend_code` | `get_token_by_resend_code.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_token_by_resend_code?module=104&type=1) |\r\n| 6 | refresh_access_token | POST | `api/v2/public/refresh_access_token` | `refresh_access_token.py` | [doc](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1) |\r\n通用入口：`public_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_shops_by_partner` | 查询 Partner 下已授权店铺列表 |\r\n| `get_merchants_by_partner` | 查询 Partner 下已授权商户列表 |\r\n| `get_access_token` | 用 auth code 换 token |\r\n| `refresh_access_token` | 刷新 access token |\r\n| `get_token_by_resend_code` | 通过 resend code 获取 token |\r\n| `get_shopee_ip_ranges` | Shopee 开放平台 IP 段（白名单配置） |\r\n\r\n> 日常授权与已授权店铺查询优先使用 **`linkfox-shopee-store-auth`**（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\ncurl -X POST https://tool-gateway.linkfox.com/shopee/developerProxy \\\r\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/public/get_shops_by_partner\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\"\r\n  }'\r\n```\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n```bash\r\ncurl -X POST https://skill-api.linkfox.com/api/v1/public/feedback \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"skillName\":\"linkfox-shopee-store-public\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"Public API查询正常\"}'\r\n```\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nCalls Shopee Open Platform Public APIs through LinkFox scripts for partner shops, merchants, OAuth token exchange, token refresh, resend-code tokens, and IP range lookup. <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 e-commerce operators use this skill to call Shopee Public module endpoints for authorized shop and merchant lookup, token exchange and refresh, resend-code token retrieval, and Shopee IP range discovery. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The security review says token-related API requests and responses are saved locally in full without redaction or retention controls. <br>\nMitigation: Use only in trusted workspaces, avoid shared machines, inspect generated linkfox data files after use, and delete saved token-related responses when they are no longer needed. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-public) <br>\n- [Shopee Public API Reference](references/api.md) <br>\n- [Shopee Open Platform Public API index](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, JSON, shell commands, guidance] <br>\n**Output Format:** [Markdown guidance with Python shell commands and saved JSON API responses.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Writes complete API responses to a local linkfox session data directory and prints full JSON or a summary based on response size.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.2: 15 files, 17471 bytes\n\nFiles: references/api.md (3350b), scripts/_public_api_runner.py (4271b), scripts/_public_endpoints.py (2160b), scripts/_shopee_public_common.py (11655b), scripts/check_auth_dependency.py (3981b), scripts/get_access_token.py (715b), scripts/get_merchants_by_partner.py (763b), scripts/get_shopee_ip_ranges.py (739b), scripts/get_shops_by_partner.py (739b), scripts/get_token_by_resend_code.py (763b), scripts/public_api.py (1011b), scripts/refresh_access_token.py (739b), skill-card.md (2212b), SKILL.md (3946b), _meta.json (146b)\n\nFile v1.0.2:SKILL.md\n\n---\r\nname: linkfox-shopee-store-public\r\ndescription: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。\r\n---\r\n\r\n# Shopee Public 公共模块\r\n\r\nShopee Open Platform **Public 模块**（6 个 API）。**依赖 `linkfox-shopee-store-auth`** 作为同系列前置；部分接口为 Partner 级或 OAuth 级，经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/public/...`）。\r\n\r\n## 调用方式\r\n\r\n- **API 端点**：`POST /shopee/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `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\nPublic 模块索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n---\r\n\r\n## Prerequisites\r\n\r\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\r\n2. **日常授权 / 已授权店铺 / 读 token** → 优先 `linkfox-shopee-store-auth`（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n## 可用脚本（6 个 API）\r\n\r\n| 脚本 | API | Method |\r\n|------|-----|--------|\r\n| `get_shops_by_partner.py` | get_shops_by_partner | GET |\r\n| `get_merchants_by_partner.py` | get_merchants_by_partner | GET |\r\n| `get_access_token.py` | get_access_token | POST |\r\n| `refresh_access_token.py` | refresh_access_token | POST |\r\n| `get_token_by_resend_code.py` | get_token_by_resend_code | POST |\r\n| `get_shopee_ip_ranges.py` | get_shopee_ip_ranges | GET |\r\n| `public_api.py` | 通用入口 | — |\r\n\r\n## Usage Scenarios\r\n\r\n### 1. 查 Partner 下已授权店铺\r\n`get_shops_by_partner.py` 或 `get_merchants_by_partner.py`\r\n\r\n### 2. OAuth Token 交换（底层开放接口）\r\n`get_access_token.py` / `refresh_access_token.py` 传完整 POST `body`\r\n\r\n### 3. IP 白名单配置\r\n`get_shopee_ip_ranges.py` 获取 Shopee 开放平台 IP 段\r\n\r\n## Not Applicable\r\n\r\n- 用户侧授权流程 → `linkfox-shopee-store-auth`\r\n- 店铺业务 API（订单/商品/物流等）→ 对应业务 skill\r\n- Push 回调配置 → `linkfox-shopee-store-push`\r\n\r\n**Feedback:** 见 `references/api.md`。\r\n\r\n\r\n---\r\n*For more high-quality, professional cross-border e-commerce skills, visit [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-shopee-store-public\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1783337599436\n}\n\nFile v1.0.2:references/api.md\n\n# linkfox-shopee-store-public — 参数与字段参考\r\n\r\nShopee **Public 模块**全部 6 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n## 通用约定\r\n\r\n- **path**：须 `api/v2/public/...`\r\n- **Partner 级接口**：`get_shops_by_partner` / `get_merchants_by_partner` 等通常无需 `shopId`\r\n- **OAuth 接口**：`get_access_token` / `refresh_access_token` / `get_token_by_resend_code` 传 POST `body`\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.public.{api}?module=104&type=1`\r\n\r\n---\r\n\r\n## Public 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | get_access_token | POST | `api/v2/public/get_access_token` | `get_access_token.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) |\r\n| 2 | get_merchants_by_partner | GET | `api/v2/public/get_merchants_by_partner` | `get_merchants_by_partner.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) |\r\n| 3 | get_shopee_ip_ranges | GET | `api/v2/public/get_shopee_ip_ranges` | `get_shopee_ip_ranges.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_shopee_ip_ranges?module=104&type=1) |\r\n| 4 | get_shops_by_partner | GET | `api/v2/public/get_shops_by_partner` | `get_shops_by_partner.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) |\r\n| 5 | get_token_by_resend_code | POST | `api/v2/public/get_token_by_resend_code` | `get_token_by_resend_code.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_token_by_resend_code?module=104&type=1) |\r\n| 6 | refresh_access_token | POST | `api/v2/public/refresh_access_token` | `refresh_access_token.py` | [doc](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1) |\r\n通用入口：`public_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_shops_by_partner` | 查询 Partner 下已授权店铺列表 |\r\n| `get_merchants_by_partner` | 查询 Partner 下已授权商户列表 |\r\n| `get_access_token` | 用 auth code 换 token |\r\n| `refresh_access_token` | 刷新 access token |\r\n| `get_token_by_resend_code` | 通过 resend code 获取 token |\r\n| `get_shopee_ip_ranges` | Shopee 开放平台 IP 段（白名单配置） |\r\n\r\n> 日常授权与已授权店铺查询优先使用 **`linkfox-shopee-store-auth`**（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\ncurl -X POST https://tool-gateway.linkfox.com/shopee/developerProxy \\\r\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/public/get_shops_by_partner\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\"\r\n  }'\r\n```\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n```bash\r\ncurl -X POST https://skill-api.linkfox.com/api/v1/public/feedback \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"skillName\":\"linkfox-shopee-store-public\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"Public API查询正常\"}'\r\n```\n\nFile v1.0.2:skill-card.md\n\n## Description: <br>\nProvides agent-accessible helpers for Shopee Open Platform Public APIs, including partner shop and merchant lookup, OAuth token exchange and refresh, resend-code token retrieval, and Shopee IP range lookup. <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 e-commerce operators use this skill to call Shopee Public APIs through LinkFox for partner-level store discovery, OAuth token operations, and IP allowlist setup. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Shopee tokens and account data are sent through LinkFox's gateway. <br>\nMitigation: Install only if you trust LinkFox's gateway, and prefer least-privileged or non-production credentials where practical. <br>\nRisk: Full API and token responses may be stored in plain local JSON files. <br>\nMitigation: Review and delete generated linkfox response files after use, and prefer versions or settings that redact tokens or make full-response logging opt-in. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-public) <br>\n- [Artifact API reference](references/api.md) <br>\n- [Shopee Public API reference](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Shell commands, JSON, Files, Guidance] <br>\n**Output Format:** [JSON responses, saved JSON files, and concise text or Markdown guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Full responses are saved under a local linkfox directory; large responses may be summarized on stdout unless inline output is requested.] <br>\n\n## Skill Version(s): <br>\n1.0.2 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.1: 14 files, 16251 bytes\n\nFiles: references/api.md (3350b), scripts/_public_api_runner.py (4271b), scripts/_public_endpoints.py (2160b), scripts/_shopee_public_common.py (11655b), scripts/check_auth_dependency.py (3981b), scripts/get_access_token.py (715b), scripts/get_merchants_by_partner.py (763b), scripts/get_shopee_ip_ranges.py (739b), scripts/get_shops_by_partner.py (739b), scripts/get_token_by_resend_code.py (763b), scripts/public_api.py (1011b), scripts/refresh_access_token.py (739b), SKILL.md (3946b), _meta.json (146b)\n\nFile v1.0.1:SKILL.md\n\n---\r\nname: linkfox-shopee-store-public\r\ndescription: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。\r\n---\r\n\r\n# Shopee Public 公共模块\r\n\r\nShopee Open Platform **Public 模块**（6 个 API）。**依赖 `linkfox-shopee-store-auth`** 作为同系列前置；部分接口为 Partner 级或 OAuth 级，经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/public/...`）。\r\n\r\n## 调用方式\r\n\r\n- **API 端点**：`POST /shopee/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `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\nPublic 模块索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n---\r\n\r\n## Prerequisites\r\n\r\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\r\n2. **日常授权 / 已授权店铺 / 读 token** → 优先 `linkfox-shopee-store-auth`（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n## 可用脚本（6 个 API）\r\n\r\n| 脚本 | API | Method |\r\n|------|-----|--------|\r\n| `get_shops_by_partner.py` | get_shops_by_partner | GET |\r\n| `get_merchants_by_partner.py` | get_merchants_by_partner | GET |\r\n| `get_access_token.py` | get_access_token | POST |\r\n| `refresh_access_token.py` | refresh_access_token | POST |\r\n| `get_token_by_resend_code.py` | get_token_by_resend_code | POST |\r\n| `get_shopee_ip_ranges.py` | get_shopee_ip_ranges | GET |\r\n| `public_api.py` | 通用入口 | — |\r\n\r\n## Usage Scenarios\r\n\r\n### 1. 查 Partner 下已授权店铺\r\n`get_shops_by_partner.py` 或 `get_merchants_by_partner.py`\r\n\r\n### 2. OAuth Token 交换（底层开放接口）\r\n`get_access_token.py` / `refresh_access_token.py` 传完整 POST `body`\r\n\r\n### 3. IP 白名单配置\r\n`get_shopee_ip_ranges.py` 获取 Shopee 开放平台 IP 段\r\n\r\n## Not Applicable\r\n\r\n- 用户侧授权流程 → `linkfox-shopee-store-auth`\r\n- 店铺业务 API（订单/商品/物流等）→ 对应业务 skill\r\n- Push 回调配置 → `linkfox-shopee-store-push`\r\n\r\n**Feedback:** 见 `references/api.md`。\r\n\r\n\r\n---\r\n*For more high-quality, professional cross-border e-commerce skills, visit [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-shopee-store-public\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1783067557063\n}\n\nFile v1.0.1:references/api.md\n\n# linkfox-shopee-store-public — 参数与字段参考\r\n\r\nShopee **Public 模块**全部 6 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n## 通用约定\r\n\r\n- **path**：须 `api/v2/public/...`\r\n- **Partner 级接口**：`get_shops_by_partner` / `get_merchants_by_partner` 等通常无需 `shopId`\r\n- **OAuth 接口**：`get_access_token` / `refresh_access_token` / `get_token_by_resend_code` 传 POST `body`\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.public.{api}?module=104&type=1`\r\n\r\n---\r\n\r\n## Public 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | get_access_token | POST | `api/v2/public/get_access_token` | `get_access_token.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) |\r\n| 2 | get_merchants_by_partner | GET | `api/v2/public/get_merchants_by_partner` | `get_merchants_by_partner.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) |\r\n| 3 | get_shopee_ip_ranges | GET | `api/v2/public/get_shopee_ip_ranges` | `get_shopee_ip_ranges.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_shopee_ip_ranges?module=104&type=1) |\r\n| 4 | get_shops_by_partner | GET | `api/v2/public/get_shops_by_partner` | `get_shops_by_partner.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) |\r\n| 5 | get_token_by_resend_code | POST | `api/v2/public/get_token_by_resend_code` | `get_token_by_resend_code.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_token_by_resend_code?module=104&type=1) |\r\n| 6 | refresh_access_token | POST | `api/v2/public/refresh_access_token` | `refresh_access_token.py` | [doc](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1) |\r\n通用入口：`public_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_shops_by_partner` | 查询 Partner 下已授权店铺列表 |\r\n| `get_merchants_by_partner` | 查询 Partner 下已授权商户列表 |\r\n| `get_access_token` | 用 auth code 换 token |\r\n| `refresh_access_token` | 刷新 access token |\r\n| `get_token_by_resend_code` | 通过 resend code 获取 token |\r\n| `get_shopee_ip_ranges` | Shopee 开放平台 IP 段（白名单配置） |\r\n\r\n> 日常授权与已授权店铺查询优先使用 **`linkfox-shopee-store-auth`**（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\ncurl -X POST https://tool-gateway.linkfox.com/shopee/developerProxy \\\r\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/public/get_shops_by_partner\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\"\r\n  }'\r\n```\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n```bash\r\ncurl -X POST https://skill-api.linkfox.com/api/v1/public/feedback \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"skillName\":\"linkfox-shopee-store-public\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"Public API查询正常\"}'\r\n```\n\nArchive v1.0.0: 15 files, 17839 bytes\n\nFiles: references/api.md (3350b), scripts/_public_api_runner.py (4271b), scripts/_public_endpoints.py (2160b), scripts/_shopee_public_common.py (11656b), scripts/check_auth_dependency.py (3981b), scripts/get_access_token.py (715b), scripts/get_merchants_by_partner.py (763b), scripts/get_shopee_ip_ranges.py (739b), scripts/get_shops_by_partner.py (739b), scripts/get_token_by_resend_code.py (763b), scripts/public_api.py (1011b), scripts/refresh_access_token.py (739b), skill-card.md (3681b), SKILL.md (3946b), _meta.json (146b)\n\nFile v1.0.0:SKILL.md\n\n---\r\nname: linkfox-shopee-store-public\r\ndescription: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。\r\n---\r\n\r\n# Shopee Public 公共模块\r\n\r\nShopee Open Platform **Public 模块**（6 个 API）。**依赖 `linkfox-shopee-store-auth`** 作为同系列前置；部分接口为 Partner 级或 OAuth 级，经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/public/...`）。\r\n\r\n## 调用方式\r\n\r\n- **API 端点**：`POST /shopee/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `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\nPublic 模块索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n---\r\n\r\n## Prerequisites\r\n\r\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\r\n2. **日常授权 / 已授权店铺 / 读 token** → 优先 `linkfox-shopee-store-auth`（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n## 可用脚本（6 个 API）\r\n\r\n| 脚本 | API | Method |\r\n|------|-----|--------|\r\n| `get_shops_by_partner.py` | get_shops_by_partner | GET |\r\n| `get_merchants_by_partner.py` | get_merchants_by_partner | GET |\r\n| `get_access_token.py` | get_access_token | POST |\r\n| `refresh_access_token.py` | refresh_access_token | POST |\r\n| `get_token_by_resend_code.py` | get_token_by_resend_code | POST |\r\n| `get_shopee_ip_ranges.py` | get_shopee_ip_ranges | GET |\r\n| `public_api.py` | 通用入口 | — |\r\n\r\n## Usage Scenarios\r\n\r\n### 1. 查 Partner 下已授权店铺\r\n`get_shops_by_partner.py` 或 `get_merchants_by_partner.py`\r\n\r\n### 2. OAuth Token 交换（底层开放接口）\r\n`get_access_token.py` / `refresh_access_token.py` 传完整 POST `body`\r\n\r\n### 3. IP 白名单配置\r\n`get_shopee_ip_ranges.py` 获取 Shopee 开放平台 IP 段\r\n\r\n## Not Applicable\r\n\r\n- 用户侧授权流程 → `linkfox-shopee-store-auth`\r\n- 店铺业务 API（订单/商品/物流等）→ 对应业务 skill\r\n- Push 回调配置 → `linkfox-shopee-store-push`\r\n\r\n**Feedback:** 见 `references/api.md`。\r\n\r\n\r\n---\r\n*For more high-quality, professional cross-border e-commerce skills, visit [LinkFox Skills](https://skill.linkfox.com/).*\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-shopee-store-public\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1783007760153\n}\n\nFile v1.0.0:references/api.md\n\n# linkfox-shopee-store-public — 参数与字段参考\r\n\r\nShopee **Public 模块**全部 6 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n## 通用约定\r\n\r\n- **path**：须 `api/v2/public/...`\r\n- **Partner 级接口**：`get_shops_by_partner` / `get_merchants_by_partner` 等通常无需 `shopId`\r\n- **OAuth 接口**：`get_access_token` / `refresh_access_token` / `get_token_by_resend_code` 传 POST `body`\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.public.{api}?module=104&type=1`\r\n\r\n---\r\n\r\n## Public 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | get_access_token | POST | `api/v2/public/get_access_token` | `get_access_token.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) |\r\n| 2 | get_merchants_by_partner | GET | `api/v2/public/get_merchants_by_partner` | `get_merchants_by_partner.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) |\r\n| 3 | get_shopee_ip_ranges | GET | `api/v2/public/get_shopee_ip_ranges` | `get_shopee_ip_ranges.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_shopee_ip_ranges?module=104&type=1) |\r\n| 4 | get_shops_by_partner | GET | `api/v2/public/get_shops_by_partner` | `get_shops_by_partner.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) |\r\n| 5 | get_token_by_resend_code | POST | `api/v2/public/get_token_by_resend_code` | `get_token_by_resend_code.py` | [doc](https://open.shopee.com/documents/v2/v2.public.get_token_by_resend_code?module=104&type=1) |\r\n| 6 | refresh_access_token | POST | `api/v2/public/refresh_access_token` | `refresh_access_token.py` | [doc](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1) |\r\n通用入口：`public_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_shops_by_partner` | 查询 Partner 下已授权店铺列表 |\r\n| `get_merchants_by_partner` | 查询 Partner 下已授权商户列表 |\r\n| `get_access_token` | 用 auth code 换 token |\r\n| `refresh_access_token` | 刷新 access token |\r\n| `get_token_by_resend_code` | 通过 resend code 获取 token |\r\n| `get_shopee_ip_ranges` | Shopee 开放平台 IP 段（白名单配置） |\r\n\r\n> 日常授权与已授权店铺查询优先使用 **`linkfox-shopee-store-auth`**（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\ncurl -X POST https://tool-gateway.linkfox.com/shopee/developerProxy \\\r\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/public/get_shops_by_partner\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\"\r\n  }'\r\n```\r\n\r\n---\r\n\r\n## Feedback API\r\n\r\n```bash\r\ncurl -X POST https://skill-api.linkfox.com/api/v1/public/feedback \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"skillName\":\"linkfox-shopee-store-public\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"Public API查询正常\"}'\r\n```\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nProvides agent-facing scripts and guidance for calling six Shopee Open Platform Public APIs through LinkFox's developer proxy, including partner shop and merchant lookup, OAuth token exchange and refresh, resend-code token retrieval, and Shopee IP range lookup. <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 ecommerce operators use this skill to retrieve Shopee partner and merchant public data, exchange or refresh OAuth tokens, retrieve tokens from resend codes, and obtain Shopee IP ranges through LinkFox-supported API workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill handles OAuth and token-related Shopee workflows, and saved or printed responses may contain sensitive token or proxy data. <br>\nMitigation: Avoid --inline for token endpoints, treat saved JSON response files as secrets, delete them when they are no longer needed, and prefer redacted output for token fields. <br>\nRisk: The skill sends requests through LinkFox endpoints and therefore exposes Shopee token and proxy traffic to LinkFox infrastructure. <br>\nMitigation: Install and use the skill only when the operator is comfortable with LinkFox handling this traffic and has configured the required API key intentionally. <br>\nRisk: API calls can consume credits and repeated failed or exploratory calls may add cost. <br>\nMitigation: Review parameters before execution, do not automatically retry with alternate parameters, and confirm with the user before additional searches or calls that may consume credits. <br>\n\n\n## Reference(s): <br>\n- [Artifact API Reference](artifact/references/api.md) <br>\n- [Shopee Public get_shops_by_partner documentation](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) <br>\n- [Shopee Public get_access_token documentation](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) <br>\n- [Shopee Public get_merchants_by_partner documentation](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) <br>\n- [Shopee Public get_shopee_ip_ranges documentation](https://open.shopee.com/documents/v2/v2.public.get_shopee_ip_ranges?module=104&type=1) <br>\n- [Shopee Public get_token_by_resend_code documentation](https://open.shopee.com/documents/v2/v2.public.get_token_by_resend_code?module=104&type=1) <br>\n- [Shopee Public refresh_access_token documentation](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1) <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-public) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, API calls, JSON, files, guidance] <br>\n**Output Format:** [Markdown guidance, shell command examples, stdout JSON or summaries, and saved JSON response files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Scripts save full API responses under a local linkfox session data directory; responses at or below 8 KB are printed in full, larger responses print a summary unless --inline is used.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: Shopee-店铺公共模块 Owner: linkfox-ai Summary: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 link","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"File v1.0.6:references/apis/get-access-token.md\n\n# get_access_token\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_access_token.py` |\n| Method / path | POST `api/v2/public/get_access_token` |\n| 官方文档 | [get_access_token](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) |\n| 用途 | Exchange auth code for access token; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Exchange auth code for access token; pass full body\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAccessToken`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-merchants-by-partner.md\n\n# get_merchants_by_partner\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_merchants_by_partner.py` |\n| Method / path | GET `api/v2/public/get_merchants_by_partner` |\n| 官方文档 | [get_merchants_by_partner](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) |\n| 用途 | List merchants authorized to partner |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：List merchants authorized to partner\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getMerchantsByPartner`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-shopee-ip-ranges.md\n\n# get_shopee_ip_ranges\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_shopee_ip_ranges.py` |\n| Method / path | GET `api/v2/public/get_shopee_ip_ranges` |\n| 官方文档 | [get_shopee_ip_ranges](https://open.shopee.com/documents/v2/v2.public.get_shopee_ip_ranges?module=104&type=1) |\n| 用途 | Shopee Open Platform IP ranges for allowlisting |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Shopee Open Platform IP ranges for allowlisting\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getShopeeIpRanges`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-shops-by-partner.md\n\n# get_shops_by_partner\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_shops_by_partner.py` |\n| Method / path | GET `api/v2/public/get_shops_by_partner` |\n| 官方文档 | [get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1) |\n| 用途 | List shops authorized to partner |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：List shops authorized to partner\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getShopsByPartner`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-token-by-resend-code.md\n\n# get_token_by_resend_code\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_token_by_resend_code.py` |\n| Method / path | POST `api/v2/public/get_token_by_resend_code` |\n| 官方文档 | [get_token_by_resend_code](https://open.shopee.com/documents/v2/v2.public.get_token_by_resend_code?module=104&type=1) |\n| 用途 | Get token by resend code; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Get token by resend code; pass full body\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getTokenByResendCode`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/refresh-access-token.md\n\n# refresh_access_token\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/refresh_access_token.py` |\n| Method / path | POST `api/v2/public/refresh_access_token` |\n| 官方文档 | [refresh_access_token](https://open.shopee.com/documents/v2/v2.public.refresh_access_token?module=104&type=1) |\n| 用途 | Refresh access token; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Refresh access token; pass full body\n\n---\n\n## 调用示例"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkfox-shopee-store-public\ndescription: Shopee（虾皮）Public 公共模块（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Public 模块全部 6 个接口：get_shops_by_partner、get_merchants_by_partner、get_access_token、refresh_access_token、get_token_by_resend_code、get_shopee_ip_ranges。当用户提到 Shopee Public API、Partner 店铺列表、get_shops_by_partner、OAuth token 交换、refresh_access_token、Shopee IP 白名单 时触发。日常授权流程优先 linkfox-shopee-store-auth；需直接调用 v2.public.* 开放接口时触发本 skill。\n---\n\n# Shopee Public 公共模块\n\nShopee Open Platform **Public 模块**（6 个 API）。**依赖 `linkfox-shopee-store-auth`** 作为同系列前置；部分接口为 Partner 级或 OAuth 级，经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/public/...`）。\n\n## 调用方式\n\n- **API 端点**：`POST /shopee/developerProxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗算力；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/<skill-name>-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 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\nPublic 模块索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\n\n---\n\n## Prerequisites\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\n2. **日常授权 / 已授权店铺 / 读 token** → 优先 `linkfox-shopee-store-auth`（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\n\n## 可用脚本（6 个 API）\n\n| 脚本 | API | Method |\n|------|-----|--------|\n| `get_shops_by_partner.py` | get_shops_by_partner | GET |\n| `get_merchants_by_partner.py` | get_merchants_by_partner | GET |\n| `get_access_token.py` | get_access_token | POST |\n| `refresh_access_token.py` | refresh_access_token | POST |\n| `get_token_by_resend_code.py` | get_token_by_resend_code | POST |\n| `get_shopee_ip_ranges.py` | get_shopee_ip_ranges | GET |\n| `public_api.py` | 通用入口 | — |\n\n## 接口说明（按 API）\n\n入参与响应细节放在 `references/apis/`，SKILL 只保留索引。\n\n| API | 说明文档 |\n|-----|----------|\n| `get_access_token` | [references/apis/get-access-token.md](./references/apis/get-access-token.md) |\n| `get_merchants_by_partner` | [references/apis/get-merchants-by-partner.md](./references/apis/get-merchants-by-partner.md) |\n| `get_shopee_ip_ranges` | [references/apis/get-shopee-ip-ranges.md](./references/apis/get-shopee-ip-ranges.md) |\n| `get_shops_by_partner` | [references/apis"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-shopee-store-public\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1789363834655\n}"},{"path":"references/api.md","content":"# linkfox-shopee-store-public — 参数与字段参考\r\n\r\n> 单接口入参/响应说明已拆到 **`apis/`**（按 API 一份）；本文件保留模块总览与 Feedback。\r\nShopee **Public 模块**全部 6 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.public.get_shops_by_partner](https://open.shopee.com/documents/v2/v2.public.get_shops_by_partner?module=104&type=1)\r\n\r\n## 通用约定\r\n\r\n- **path**：须 `api/v2/public/...`\r\n- **Partner 级接口**：`get_shops_by_partner` / `get_merchants_by_partner` 等通常无需 `shopId`\r\n- **OAuth 接口**：`get_access_token` / `refresh_access_token` / `get_token_by_resend_code` 传 POST `body`\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.public.{api}?module=104&type=1`\r\n\r\n---\r\n\r\n## Public 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | get_access_token | POST | `api/v2/public/get_access_token` | `get_access_token.py` | [apis/get-access-token.md](./apis/get-access-token.md) |\r\n| 2 | get_merchants_by_partner | GET | `api/v2/public/get_merchants_by_partner` | `get_merchants_by_partner.py` | [apis/get-merchants-by-partner.md](./apis/get-merchants-by-partner.md) |\r\n| 3 | get_shopee_ip_ranges | GET | `api/v2/public/get_shopee_ip_ranges` | `get_shopee_ip_ranges.py` | [apis/get-shopee-ip-ranges.md](./apis/get-shopee-ip-ranges.md) |\r\n| 4 | get_shops_by_partner | GET | `api/v2/public/get_shops_by_partner` | `get_shops_by_partner.py` | [apis/get-shops-by-partner.md](./apis/get-shops-by-partner.md) |\r\n| 5 | get_token_by_resend_code | POST | `api/v2/public/get_token_by_resend_code` | `get_token_by_resend_code.py` | [apis/get-token-by-resend-code.md](./apis/get-token-by-resend-code.md) |\r\n| 6 | refresh_access_token | POST | `api/v2/public/refresh_access_token` | `refresh_access_token.py` | [apis/refresh-access-token.md](./apis/refresh-access-token.md) |\r\n通用入口：`public_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_shops_by_partner` | 查询 Partner 下已授权店铺列表 — [apis/get-shops-by-partner.md](./apis/get-shops-by-partner.md) |\r\n| `get_merchants_by_partner` | 查询 Partner 下已授权商户列表 — [apis/get-merchants-by-partner.md](./apis/get-merchants-by-partner.md) |\r\n| `get_access_token` | 用 auth code 换 token — [apis/get-access-token.md](./apis/get-access-token.md) |\r\n| `refresh_access_token` | 刷新 access token — [apis/refresh-access-token.md](./apis/refresh-access-token.md) |\r\n| `get_token_by_resend_code` | 通过 resend code 获取 token — [apis/get-token-by-resend-code.md](./apis/get-token-by-resend-code.md) |\r\n| `get_shopee_ip_ranges` | Shopee 开放平台 IP 段（白名单配置） — [apis/get-shopee-ip-ranges.md](./apis/get-shopee-ip-ranges.md) |\r\n\r\n> 日常授权与已授权店铺查询优先使用 **`linkfox-shopee-store-auth`**（`authorize_url.py` / `authorized_stores.py` / `store_tokens.py`）。\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\ncurl -X POST https://tool-gateway.linkfox.com/shopee/developerProxy \\\r\n  -H \"Authorization: $LINKFOXAGENT_API_KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/public/get_shops_by_partner\",\r\n    \""},{"path":"references/apis/get-access-token.md","content":"# get_access_token\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_access_token.py` |\n| Method / path | POST `api/v2/public/get_access_token` |\n| 官方文档 | [get_access_token](https://open.shopee.com/documents/v2/v2.public.get_access_token?module=104&type=1) |\n| 用途 | Exchange auth code for access token; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Exchange auth code for access token; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_access_token.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_access_token\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAccessToken`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准"},{"path":"references/apis/get-merchants-by-partner.md","content":"# get_merchants_by_partner\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_merchants_by_partner.py` |\n| Method / path | GET `api/v2/public/get_merchants_by_partner` |\n| 官方文档 | [get_merchants_by_partner](https://open.shopee.com/documents/v2/v2.public.get_merchants_by_partner?module=104&type=1) |\n| 用途 | List merchants authorized to partner |\n\n经 **`POST /shopee/developerProxy`** 转发。Public 多为 Partner / OAuth 级接口，**通常无需** `shopId`/`merchantId`；日常授权优先走 `linkfox-shopee-store-auth`。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 否 | Public 接口通常可省略 |\n| `merchantId` | string | 否 | Public 接口通常可省略 |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：List merchants authorized to partner\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_merchants_by_partner.py '{}'\n\n# 通用入口\npython scripts/public_api.py '{\"api\": \"get_merchants_by_partner\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getMerchantsByPartner`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1081,"uniquenessScore":31,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T20:42:05.501Z","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-11T20:42:05.501Z","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-15T02:25:34.380Z","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"}]}}}