{"id":"51542fb9-1001-4a15-8ed3-8ad4789dbda7","entityType":"agent","slug":"clawhub-linkfox-ai-linkfox-shopee-store-ads","name":"Shopee-店铺广告","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linkfox-ai-linkfox-shopee-store-ads","canonicalPath":"/agent/clawhub-linkfox-ai-linkfox-shopee-store-ads","generatedAt":"2026-10-12T14:27:08.247Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:49:32.798Z","emptyReason":null},"description":"Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。调用前须确认目标店已有 appType=ad 授权（ERP 授权不能代替）。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance、广告授权 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 973 downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-shopee-store-ads","sourceUrl":"https://clawhub.ai/linkfox-ai/linkfox-shopee-store-ads","homepage":"https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-ads","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linkfox-ai/linkfox-shopee-store-ads","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-ads","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-11T23:49:32.798Z","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-11T23:49:32.798Z","emptyReason":null},"stars":null,"forks":null,"downloads":973,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"973 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T23:49:32.783Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T23:49:32.798Z","lastCrawledAt":"2026-10-11T23:49:32.783Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T23:49:32.783Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-09-14T05:25:55.254Z","changelog":"Update from 1.0.5 to 1.0.6","fileCount":57,"zipByteSize":68402},{"version":"1.0.5","createdAt":"2026-08-14T15:01:49.596Z","changelog":"Update from 1.0.4 to 1.0.5","fileCount":57,"zipByteSize":68491},{"version":"1.0.4","createdAt":"2026-08-07T10:58:29.300Z","changelog":"Update from 1.0.3 to 1.0.4","fileCount":57,"zipByteSize":68363},{"version":"1.0.3","createdAt":"2026-07-13T12:19:14.006Z","changelog":"Update from 1.0.2 to 1.0.3","fileCount":32,"zipByteSize":30608},{"version":"1.0.2","createdAt":"2026-07-06T11:27:41.186Z","changelog":"Update from 1.0.1 to 1.0.2","fileCount":32,"zipByteSize":30074},{"version":"1.0.1","createdAt":"2026-07-03T08:27:05.734Z","changelog":"Update from 1.0.0 to 1.0.1","fileCount":31,"zipByteSize":28616},{"version":"1.0.0","createdAt":"2026-07-02T13:22:19.822Z","changelog":"Initial release","fileCount":31,"zipByteSize":28596}]},"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-ads","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-shopee-store-ads` 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-ads 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-ads/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-ads/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-ads/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-ads/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-ads/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-ads/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-12T14:27:08.244Z"}},"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-ads/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-ads/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-ads/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-shopee-store-ads/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-11T23:49:32.798Z","emptyReason":null},"readme":"Skill: Shopee-店铺广告\n\nOwner: linkfox-ai\n\nSummary: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。调用前须确认目标店已有 appType=ad 授权（ERP 授权不能代替）。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance、广告授权 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-09-14T05:25:55.254Z | user\n\nUpdate from 1.0.5 to 1.0.6\n\nv1.0.5 | 2026-08-14T15:01:49.596Z | user\n\nUpdate from 1.0.4 to 1.0.5\n\nv1.0.4 | 2026-08-07T10:58:29.300Z | user\n\nUpdate from 1.0.3 to 1.0.4\n\nv1.0.3 | 2026-07-13T12:19:14.006Z | user\n\nUpdate from 1.0.2 to 1.0.3\n\nv1.0.2 | 2026-07-06T11:27:41.186Z | user\n\nUpdate from 1.0.1 to 1.0.2\n\nv1.0.1 | 2026-07-03T08:27:05.734Z | user\n\nUpdate from 1.0.0 to 1.0.1\n\nv1.0.0 | 2026-07-02T13:22:19.822Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.6: 57 files, 68402 bytes\n\nFiles: references/api.md (10140b), references/apis/check-create-gms-product-campaign-eligibility.md (1698b), references/apis/create-gms-product-campaign.md (1540b), references/apis/create-manual-product-ads.md (1572b), references/apis/edit-gms-item-product-campaign.md (1569b), references/apis/edit-gms-product-campaign.md (1520b), references/apis/edit-manual-product-ad-keywords.md (1579b), references/apis/edit-manual-product-ads.md (1500b), references/apis/get-ads-facil-shop-rate.md (1549b), references/apis/get-all-cpc-ads-daily-performance.md (1596b), references/apis/get-all-cpc-ads-hourly-performance.md (1606b), references/apis/get-create-product-ad-budget-suggestion.md (1658b), references/apis/get-gms-campaign-performance.md (1548b), references/apis/get-gms-item-performance.md (1508b), references/apis/get-product-campaign-daily-performance.md (1647b), references/apis/get-product-campaign-hourly-performance.md (1657b), references/apis/get-product-level-campaign-id-list.md (1598b), references/apis/get-product-level-campaign-setting-info.md (1636b), references/apis/get-product-recommended-roi-target.md (1591b), references/apis/get-recommended-item-list.md (1526b), references/apis/get-recommended-keyword-list.md (1556b), references/apis/get-shop-toggle-info.md (1518b), references/apis/get-total-balance.md (1469b), references/apis/list-gms-user-deleted-item.md (1537b), references/onboarding.md (1999b), scripts/_ads_api_runner.py (4260b), scripts/_ads_endpoints.py (6269b), scripts/_shopee_ads_common.py (11651b), scripts/ads_api.py (994b), scripts/check_auth_dependency.py (3975b), scripts/check_create_gms_product_campaign_eligibility.py (1090b), scripts/create_gms_product_campaign.py (734b), scripts/create_manual_product_ads.py (722b), scripts/edit_gms_item_product_campaign.py (752b), scripts/edit_gms_product_campaign.py (722b), scripts/edit_manual_product_ad_keywords.py (758b), scripts/edit_manual_product_ads.py (710b), scripts/get_ads_facil_shop_rate.py (710b), scripts/get_all_cpc_ads_daily_performance.py (770b), scripts/get_all_cpc_ads_hourly_performance.py (776b), scripts/get_create_product_ad_budget_suggestion.py (806b), scripts/get_gms_campaign_performance.py (740b), scripts/get_gms_item_performance.py (716b), scripts/get_product_campaign_daily_performance.py (800b), scripts/get_product_campaign_hourly_performance.py (806b), scripts/get_product_level_campaign_id_list.py (776b), scripts/get_product_level_campaign_setting_info.py (806b), scripts/get_product_recommended_roi_target.py (776b), scripts/get_recommended_item_list.py (722b), scripts/get_recommended_keyword_list.py (740b), scripts/get_shop_toggle_info.py (692b), scripts/get_total_balance.py (674b), scripts/list_gms_user_deleted_item.py (728b), scripts/onboarding.py (24027b), skill-card.md (2765b), SKILL.md (10790b), _meta.json (143b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: linkfox-shopee-store-ads\ndescription: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。调用前须确认目标店已有 appType=ad 授权（ERP 授权不能代替）。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance、广告授权 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。\n---\n\n# Shopee 店铺 Ads\n\nShopee Open Platform **Ads 模块**（23 个 API，不含即将下线的 auto product ads）。**依赖 `linkfox-shopee-store-auth`**；须目标店存在 **`appType=ad`** 授权。经 **`POST /shopee/developerProxy`** 传入 `shopId`（或 `merchantId`）+ `api/v2/ads/...` 路径，服务端自动走 AD 应用 Token（**勿**传 `accessToken` / `appType`）。\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/linkfox-shopee-store-ads-<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\nAds 模块索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\n\n---\n\n## Prerequisites（必须先读）\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\n2. **不要**在本 skill 内实现授权/令牌逻辑；授权一律走 auth skill。\n3. 调用业务 API **之前**，用 auth 的 `authorized_stores.py` 确认目标店存在 **`appType=ad`**：\n   - 仅有 `appType=erp`（或历史空值）→ **不能**当广告已授权；引导 `authorize_url.py` 且传 **`appType=ad`**\n   - 两项都缺 → 若用户只要广告，只开 AD 授权即可（不必先开 ERP）\n4. Ads API 还需 Shopee 侧开通广告能力；并非所有站点/店铺可用。\n5. **禁止**向 `developerProxy` 传 `accessToken` 或 `appType`；path 用 `api/v2/ads/**` 即可由服务端路由到 AD。\n\n---\n\n## Core Concepts\n\n- **AD 与 ERP 分离**：广告 Token 与 ERP Token 独立；店铺在列表中存在 ≠ 广告已授权\n- **转发链路**：`developerProxy`（`shopId`/`merchantId` + `api/v2/ads/...`，服务端注入 **AD** token）→ 紫鸟 `shopee-proxy/ad/...` → Shopee API\n- **余额**：`get_total_balance` 查广告账户余额\n- **手动商品广告**：`create_manual_product_ads` → `edit_manual_product_ads` / `edit_manual_product_ad_keywords`\n- **效果报表**：`get_all_cpc_ads_*_performance`、`get_product_campaign_*_performance`\n- **GMS**：`create_gms_product_campaign` 等系列\n- **未纳入**：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\n- **联盟营销 AMS**（module=127）→ 非本 skill\n\n## 可用脚本（Ads 模块 23 个 API）\n\n| 分组 | 脚本 |\n|------|------|\n| 账户/推荐 | `get_total_balance.py`、`get_shop_toggle_info.py`、`get_recommended_keyword_list.py`、`get_recommended_item_list.py` |\n| CPC 效果 | `get_all_cpc_ads_daily_performance.py`、`get_all_cpc_ads_hourly_performance.py` |\n| 商品广告 | `create_manual_product_ads.py`、`edit_manual_product_ads.py`、`get_product_level_campaign_id_list.py` 等 |\n| GMS | `create_gms_product_campaign.py`、`get_gms_campaign_performance.py` 等 |\n| 通用入口 | `ads_api.py`（JSON 含 `api` 字段） |\n\n完整列表见 `references/api.md`。共享：`_shopee_ads_common.py`、`_ads_endpoints.py`、`_ads_api_runner.py`。\n\n## 接口说明（按 API）\n\n入参与响应细节放在 `references/apis/`，SKILL 只保留索引。\n\n| API | 说明文档 |\n|-----|----------|\n| `check_create_gms_product_campaign_eligibility` | [references/apis/check-create-gms-product-campaign-eligibility.md](./references/apis/check-create-gms-product-campaign-eligibility.md) |\n| `create_gms_product_campaign` | [references/apis/create-gms-product-campaign.md](./references/apis/create-gms-product-campaign.md) |\n| `create_manual_product_ads` | [references/apis/create-manual-product-ads.md](./references/apis/create-manual-product-ads.md) |\n| `edit_gms_item_product_campaign` | [references/apis/edit-gms-item-product-campaign.md](./references/apis/edit-gms-item-product-campaign.md) |\n| `edit_gms_product_campaign` | [references/apis/edit-gms-product-campaign.md](./references/apis/edit-gms-product-campaign.md) |\n| `edit_manual_product_ad_keywords` | [references/apis/edit-manual-product-ad-keywords.md](./references/apis/edit-manual-product-ad-keywords.md) |\n| `edit_manual_product_ads` | [references/apis/edit-manual-product-ads.md](./references/apis/edit-manual-product-ads.md) |\n| `get_ads_facil_shop_rate` | [references/apis/get-ads-facil-shop-rate.md](./references/apis/get-ads-facil-shop-rate.md) |\n| `get_all_cpc_ads_daily_performance` | [references/apis/get-all-cpc-ads-daily-performance.md](./references/apis/get-all-cpc-ads-daily-performance.md) |\n| `get_all_cpc_ads_hourly_performance` | [references/apis/get-all-cpc-ads-hourly-performance.md](./references/apis/get-all-cpc-ads-hourly-performance.md) |\n| `get_create_product_ad_budget_suggestion` | [references/apis/get-create-product-ad-budget-suggestion.md](./references/apis/get-create-product-ad-budget-suggestion.md) |\n| `get_gms_campaign_performance` | [references/apis/get-gms-campaign-performance.md](./references/apis/get-gms-campaign-performance.md) |\n| `get_gms_item_performance` | [references/apis/get-gms-item-performance.md](./references/apis/get-gms-item-performance.md) |\n| `get_product_campaign_daily_performance` | [references/apis/get-product-campaign-daily-performance.md](./references/apis/get-product-campaign-daily-performance.md) |\n| `get_product_campaign_hourly_performance` | [references/apis/get-product-campaign-hourly-performance.md](./references/apis/get-product-campaign-hourly-performance.md) |\n| `get_product_level_campaign_id_list` | [references/apis/get-product-level-campaign-id-list.md](./references/apis/get-product-level-campaign-id-list.md) |\n| `get_product_level_campaign_setting_info` | [references/apis/get-product-level-campaign-setting-info.md](./references/apis/get-product-level-campaign-setting-info.md) |\n| `get_product_recommended_roi_target` | [references/apis/get-product-recommended-roi-target.md](./references/apis/get-product-recommended-roi-target.md) |\n| `get_recommended_item_list` | [references/apis/get-recommended-item-list.md](./references/apis/get-recommended-item-list.md) |\n| `get_recommended_keyword_list` | [references/apis/get-recommended-keyword-list.md](./references/apis/get-recommended-keyword-list.md) |\n| `get_shop_toggle_info` | [references/apis/get-shop-toggle-info.md](./references/apis/get-shop-toggle-info.md) |\n| `get_total_balance` | [references/apis/get-total-balance.md](./references/apis/get-total-balance.md) |\n| `list_gms_user_deleted_item` | [references/apis/list-gms-user-deleted-item.md](./references/apis/list-gms-user-deleted-item.md) |\n\n模块总览 / Feedback 见 [references/api.md](./references/api.md)。\n\n## Usage Scenarios\n\n### 0. 确认 AD 授权（每次任务开头）\n\n1. auth：`authorized_stores.py` → 找目标 `shopId` 且 **`appType=ad`**\n2. 缺失 → auth：`authorize_url.py` 传 `appType=ad`，提示用户完成**广告**授权（URL 1 小时有效）\n3. 完成后再进入下列业务场景；收到 **1004** 时优先怀疑缺 AD 授权，不要用 ERP 记录硬调\n\n### 1. 查余额与推荐\n1. `get_total_balance.py`\n2. `get_recommended_item_list.py` / `get_recommended_keyword_list.py`\n\n### 2. 创建手动商品广告\n1. `get_create_product_ad_budget_suggestion.py`\n2. `create_manual_product_ads.py` 传完整 `body`\n3. `get_product_campaign_daily_performance.py` 查效果\n\n## 调用原则\n\n- 先确认 **`appType=ad`**，再调脚本\n- 先看 **`developerProxy.httpStatus`** / 网关 `errcode`，再读 `*Response` 字段\n- GET：业务参数放 JSON 顶层\n- POST：复杂接口传 `body`；create/edit 建议传唯一 `reference_id` 防重复\n- 每个脚本 docstring 含 **官方文档 URL**（`module=117`）\n- 不要先 `storeTokens` 取 raw token，也不要在 proxy 里塞 `accessToken`\n\n## Not Applicable\n\n- 店铺授权 → `linkfox-shopee-store-auth`\n- 商品 listing → `linkfox-shopee-store-product`\n- 联盟营销 AMS（module=127）→ `linkfox-shopee-store-ams`\n- Amazon 广告 → `linkfox-amazon-ads-*` 系列\n\n## 算力消耗规则\n\n不消耗算力。\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n\n---\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-ads\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1789363555254\n}\n\nFile v1.0.6:references/api.md\n\n# linkfox-shopee-store-ads — 参数与字段参考\r\n\r\n> 单接口入参/响应说明已拆到 **`apis/`**（按 API 一份）；本文件保留模块总览与 Feedback。\r\nShopee **Ads 模块**全部 23 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\r\n\r\n> 未纳入：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n\r\n## 通用约定\r\n\r\n- **Base URL**：`https://tool-gateway.linkfox.com`\r\n- **Method**：POST（网关），上游 Method 见各接口\r\n- **Auth**：Header `Authorization: <api_key>`（`LINKFOXAGENT_API_KEY`）\r\n- **流程**：auth 确认目标店 **`appType=ad`** → 直接 `POST /shopee/developerProxy`（**不要**先取 accessToken）\r\n- **path**：须 `api/v2/ads/...`（服务端自动用 AD partner/token）\r\n- **标识**：店铺级广告 API，通常传 **`shopId`**（或 `merchantId`）\r\n- **禁止**：在 developerProxy 传 `accessToken` 或 `appType`\r\n- **权限**：需 LinkFox 侧 `appType=ad` 授权 + Shopee 侧开通广告能力；ERP 授权不能代替\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.ads.{api}?module=117&type=1`\r\n- **复杂 POST**（如 `create_manual_product_ads`）：推荐传完整 `body`；日期格式常为 DD-MM-YYYY\r\n\r\n---\r\n\r\n## Ads 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | check_create_gms_product_campaign_eligibility | GET | `api/v2/ads/check_create_gms_product_campaign_eligibility` | `check_create_gms_product_campaign_eligibility.py` | [apis/check-create-gms-product-campaign-eligibility.md](./apis/check-create-gms-product-campaign-eligibility.md) |\r\n| 2 | create_gms_product_campaign | POST | `api/v2/ads/create_gms_product_campaign` | `create_gms_product_campaign.py` | [apis/create-gms-product-campaign.md](./apis/create-gms-product-campaign.md) |\r\n| 3 | create_manual_product_ads | POST | `api/v2/ads/create_manual_product_ads` | `create_manual_product_ads.py` | [apis/create-manual-product-ads.md](./apis/create-manual-product-ads.md) |\r\n| 4 | edit_gms_item_product_campaign | POST | `api/v2/ads/edit_gms_item_product_campaign` | `edit_gms_item_product_campaign.py` | [apis/edit-gms-item-product-campaign.md](./apis/edit-gms-item-product-campaign.md) |\r\n| 5 | edit_gms_product_campaign | POST | `api/v2/ads/edit_gms_product_campaign` | `edit_gms_product_campaign.py` | [apis/edit-gms-product-campaign.md](./apis/edit-gms-product-campaign.md) |\r\n| 6 | edit_manual_product_ad_keywords | POST | `api/v2/ads/edit_manual_product_ad_keywords` | `edit_manual_product_ad_keywords.py` | [apis/edit-manual-product-ad-keywords.md](./apis/edit-manual-product-ad-keywords.md) |\r\n| 7 | edit_manual_product_ads | POST | `api/v2/ads/edit_manual_product_ads` | `edit_manual_product_ads.py` | [apis/edit-manual-product-ads.md](./apis/edit-manual-product-ads.md) |\r\n| 8 | get_ads_facil_shop_rate | GET | `api/v2/ads/get_ads_facil_shop_rate` | `get_ads_facil_shop_rate.py` | [apis/get-ads-facil-shop-rate.md](./apis/get-ads-facil-shop-rate.md) |\r\n| 9 | get_all_cpc_ads_daily_performance | GET | `api/v2/ads/get_all_cpc_ads_daily_performance` | `get_all_cpc_ads_daily_performance.py` | [apis/get-all-cpc-ads-daily-performance.md](./apis/get-all-cpc-ads-daily-performance.md) |\r\n| 10 | get_all_cpc_ads_hourly_performance | GET | `api/v2/ads/get_all_cpc_ads_hourly_performance` | `get_all_cpc_ads_hourly_performance.py` | [apis/get-all-cpc-ads-hourly-performance.md](./apis/get-all-cpc-ads-hourly-performance.md) |\r\n| 11 | get_create_product_ad_budget_suggestion | GET | `api/v2/ads/get_create_product_ad_budget_suggestion` | `get_create_product_ad_budget_suggestion.py` | [apis/get-create-product-ad-budget-suggestion.md](./apis/get-create-product-ad-budget-suggestion.md) |\r\n| 12 | get_gms_campaign_performance | GET | `api/v2/ads/get_gms_campaign_performance` | `get_gms_campaign_performance.py` | [apis/get-gms-campaign-performance.md](./apis/get-gms-campaign-performance.md) |\r\n| 13 | get_gms_item_performance | GET | `api/v2/ads/get_gms_item_performance` | `get_gms_item_performance.py` | [apis/get-gms-item-performance.md](./apis/get-gms-item-performance.md) |\r\n| 14 | get_product_campaign_daily_performance | GET | `api/v2/ads/get_product_campaign_daily_performance` | `get_product_campaign_daily_performance.py` | [apis/get-product-campaign-daily-performance.md](./apis/get-product-campaign-daily-performance.md) |\r\n| 15 | get_product_campaign_hourly_performance | GET | `api/v2/ads/get_product_campaign_hourly_performance` | `get_product_campaign_hourly_performance.py` | [apis/get-product-campaign-hourly-performance.md](./apis/get-product-campaign-hourly-performance.md) |\r\n| 16 | get_product_level_campaign_id_list | GET | `api/v2/ads/get_product_level_campaign_id_list` | `get_product_level_campaign_id_list.py` | [apis/get-product-level-campaign-id-list.md](./apis/get-product-level-campaign-id-list.md) |\r\n| 17 | get_product_level_campaign_setting_info | GET | `api/v2/ads/get_product_level_campaign_setting_info` | `get_product_level_campaign_setting_info.py` | [apis/get-product-level-campaign-setting-info.md](./apis/get-product-level-campaign-setting-info.md) |\r\n| 18 | get_product_recommended_roi_target | GET | `api/v2/ads/get_product_recommended_roi_target` | `get_product_recommended_roi_target.py` | [apis/get-product-recommended-roi-target.md](./apis/get-product-recommended-roi-target.md) |\r\n| 19 | get_recommended_item_list | GET | `api/v2/ads/get_recommended_item_list` | `get_recommended_item_list.py` | [apis/get-recommended-item-list.md](./apis/get-recommended-item-list.md) |\r\n| 20 | get_recommended_keyword_list | GET | `api/v2/ads/get_recommended_keyword_list` | `get_recommended_keyword_list.py` | [apis/get-recommended-keyword-list.md](./apis/get-recommended-keyword-list.md) |\r\n| 21 | get_shop_toggle_info | GET | `api/v2/ads/get_shop_toggle_info` | `get_shop_toggle_info.py` | [apis/get-shop-toggle-info.md](./apis/get-shop-toggle-info.md) |\r\n| 22 | get_total_balance | GET | `api/v2/ads/get_total_balance` | `get_total_balance.py` | [apis/get-total-balance.md](./apis/get-total-balance.md) |\r\n| 23 | list_gms_user_deleted_item | GET | `api/v2/ads/list_gms_user_deleted_item` | `list_gms_user_deleted_item.py` | [apis/list-gms-user-deleted-item.md](./apis/list-gms-user-deleted-item.md) |\r\n通用入口：`ads_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n### 账户与推荐\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_total_balance` | 广告账户余额 — [apis/get-total-balance.md](./apis/get-total-balance.md) |\r\n| `get_shop_toggle_info` | 自动充值、Campaign Surge 开关 — [apis/get-shop-toggle-info.md](./apis/get-shop-toggle-info.md) |\r\n| `get_recommended_keyword_list` | 推荐关键词 — [apis/get-recommended-keyword-list.md](./apis/get-recommended-keyword-list.md) |\r\n| `get_recommended_item_list` | 推荐推广商品 — [apis/get-recommended-item-list.md](./apis/get-recommended-item-list.md) |\r\n\r\n### 效果报表\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_all_cpc_ads_daily_performance` / `hourly` | 全部 CPC 广告效果 |\r\n| `get_product_campaign_daily_performance` / `hourly` | 商品广告活动效果 |\r\n| `get_gms_campaign_performance` / `get_gms_item_performance` | GMS 广告效果 |\r\n\r\n### 手动商品广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_product_level_campaign_id_list` | 商品级 campaign ID 列表 — [apis/get-product-level-campaign-id-list.md](./apis/get-product-level-campaign-id-list.md) |\r\n| `get_product_level_campaign_setting_info` | campaign 设置详情 — [apis/get-product-level-campaign-setting-info.md](./apis/get-product-level-campaign-setting-info.md) |\r\n| `create_manual_product_ads` | 创建手动选品广告 — [apis/create-manual-product-ads.md](./apis/create-manual-product-ads.md) |\r\n| `edit_manual_product_ads` / `edit_manual_product_ad_keywords` | 编辑广告/关键词 |\r\n| `get_create_product_ad_budget_suggestion` | 预算建议 — [apis/get-create-product-ad-budget-suggestion.md](./apis/get-create-product-ad-budget-suggestion.md) |\r\n| `get_product_recommended_roi_target` | 推荐 ROI — [apis/get-product-recommended-roi-target.md](./apis/get-product-recommended-roi-target.md) |\r\n\r\n### GMS 广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `check_create_gms_product_campaign_eligibility` | 创建资格检查 — [apis/check-create-gms-product-campaign-eligibility.md](./apis/check-create-gms-product-campaign-eligibility.md) |\r\n| `create_gms_product_campaign` / `edit_gms_product_campaign` | 创建/编辑 GMS campaign |\r\n| `edit_gms_item_product_campaign` | 编辑 GMS 商品 campaign — [apis/edit-gms-item-product-campaign.md](./apis/edit-gms-item-product-campaign.md) |\r\n| `list_gms_user_deleted_item` | 用户删除商品列表 — [apis/list-gms-user-deleted-item.md](./apis/list-gms-user-deleted-item.md) |\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| errcode | 含义 | 建议 |\r\n|---------|------|------|\r\n| 1002 | 参数/未登录 | 检查 shopId 与 API Key |\r\n| 1003 | 代理/网络异常 | 稍后重试 |\r\n| 1004 | 无 **AD** 授权记录 | 即使店铺有 ERP，也须 auth 发起 `appType=ad` |\r\n| 1005 | Token 失效或 path 未白名单 | 重新 AD 授权；确认 `api/v2/ads/...` |\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\nexport KEY=$LINKFOXAGENT_API_KEY\r\nBASE=https://tool-gateway.linkfox.com\r\n\r\n# 业务转发：只传 path + shopId（服务端注入 AD token）\r\ncurl -X POST $BASE/shopee/developerProxy -H \"Authorization: $KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/ads/get_total_balance\",\r\n    \"method\": \"GET\",\r\n    \"shopId\": \"67890\"\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-ads\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"广告余额查询正常\"}'\r\n```\n\nFile v1.0.6:references/apis/check-create-gms-product-campaign-eligibility.md\n\n# check_create_gms_product_campaign_eligibility\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/check_create_gms_product_campaign_eligibility.py` |\n| Method / path | GET `api/v2/ads/check_create_gms_product_campaign_eligibility` |\n| 官方文档 | [check_create_gms_product_campaign_eligibility](https://open.shopee.com/documents/v2/v2.ads.check_create_gms_product_campaign_eligibility?module=117&type=1) |\n| 用途 | GMS product campaign eligibility |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：GMS product campaign eligibility\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/check_create_gms_product_campaign_eligibility.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"check_create_gms_product_campaign_eligibility\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`checkCreateGmsProductCampaignEligibility`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/create-gms-product-campaign.md\n\n# create_gms_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/create_gms_product_campaign.py` |\n| Method / path | POST `api/v2/ads/create_gms_product_campaign` |\n| 官方文档 | [create_gms_product_campaign](https://open.shopee.com/documents/v2/v2.ads.create_gms_product_campaign?module=117&type=1) |\n| 用途 | Create GMS product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Create GMS product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/create_gms_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"create_gms_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`createGmsProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/create-manual-product-ads.md\n\n# create_manual_product_ads\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/create_manual_product_ads.py` |\n| Method / path | POST `api/v2/ads/create_manual_product_ads` |\n| 官方文档 | [create_manual_product_ads](https://open.shopee.com/documents/v2/v2.ads.create_manual_product_ads?module=117&type=1) |\n| 用途 | Create manual selection product ads; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Create manual selection product ads; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/create_manual_product_ads.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"create_manual_product_ads\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`createManualProductAds`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/edit-gms-item-product-campaign.md\n\n# edit_gms_item_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_gms_item_product_campaign.py` |\n| Method / path | POST `api/v2/ads/edit_gms_item_product_campaign` |\n| 官方文档 | [edit_gms_item_product_campaign](https://open.shopee.com/documents/v2/v2.ads.edit_gms_item_product_campaign?module=117&type=1) |\n| 用途 | Edit GMS item product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit GMS item product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_gms_item_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_gms_item_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editGmsItemProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/edit-gms-product-campaign.md\n\n# edit_gms_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_gms_product_campaign.py` |\n| Method / path | POST `api/v2/ads/edit_gms_product_campaign` |\n| 官方文档 | [edit_gms_product_campaign](https://open.shopee.com/documents/v2/v2.ads.edit_gms_product_campaign?module=117&type=1) |\n| 用途 | Edit GMS product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit GMS product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_gms_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_gms_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editGmsProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/edit-manual-product-ad-keywords.md\n\n# edit_manual_product_ad_keywords\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_manual_product_ad_keywords.py` |\n| Method / path | POST `api/v2/ads/edit_manual_product_ad_keywords` |\n| 官方文档 | [edit_manual_product_ad_keywords](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ad_keywords?module=117&type=1) |\n| 用途 | Edit manual product ad keywords |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit manual product ad keywords\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_manual_product_ad_keywords.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_manual_product_ad_keywords\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editManualProductAdKeywords`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/edit-manual-product-ads.md\n\n# edit_manual_product_ads\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_manual_product_ads.py` |\n| Method / path | POST `api/v2/ads/edit_manual_product_ads` |\n| 官方文档 | [edit_manual_product_ads](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ads?module=117&type=1) |\n| 用途 | Edit manual product ads |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit manual product ads\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_manual_product_ads.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_manual_product_ads\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editManualProductAds`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-ads-facil-shop-rate.md\n\n# get_ads_facil_shop_rate\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_ads_facil_shop_rate.py` |\n| Method / path | GET `api/v2/ads/get_ads_facil_shop_rate` |\n| 官方文档 | [get_ads_facil_shop_rate](https://open.shopee.com/documents/v2/v2.ads.get_ads_facil_shop_rate?module=117&type=1) |\n| 用途 | Ads Facil program shop rate (official: facil) |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Ads Facil program shop rate (official: facil)\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_ads_facil_shop_rate.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"get_ads_facil_shop_rate\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAdsFacilShopRate`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/get-all-cpc-ads-daily-performance.md\n\n# get_all_cpc_ads_daily_performance\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_all_cpc_ads_daily_performance.py` |\n| Method / path | GET `api/v2/ads/get_all_cpc_ads_daily_performance` |\n| 官方文档 | [get_all_cpc_ads_daily_performance](https://open.shopee.com/documents/v2/v2.ads.get_all_cpc_ads_daily_performance?module=117&type=1) |\n| 用途 | All CPC ads daily performance |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：All CPC ads daily performance\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_all_cpc_ads_daily_performance.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"get_all_cpc_ads_daily_performance\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAllCpcAdsDailyPerformance`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nArchive v1.0.5: 57 files, 68491 bytes\n\nFiles: references/api.md (10140b), references/apis/check-create-gms-product-campaign-eligibility.md (1698b), references/apis/create-gms-product-campaign.md (1540b), references/apis/create-manual-product-ads.md (1572b), references/apis/edit-gms-item-product-campaign.md (1569b), references/apis/edit-gms-product-campaign.md (1520b), references/apis/edit-manual-product-ad-keywords.md (1579b), references/apis/edit-manual-product-ads.md (1500b), references/apis/get-ads-facil-shop-rate.md (1549b), references/apis/get-all-cpc-ads-daily-performance.md (1596b), references/apis/get-all-cpc-ads-hourly-performance.md (1606b), references/apis/get-create-product-ad-budget-suggestion.md (1658b), references/apis/get-gms-campaign-performance.md (1548b), references/apis/get-gms-item-performance.md (1508b), references/apis/get-product-campaign-daily-performance.md (1647b), references/apis/get-product-campaign-hourly-performance.md (1657b), references/apis/get-product-level-campaign-id-list.md (1598b), references/apis/get-product-level-campaign-setting-info.md (1636b), references/apis/get-product-recommended-roi-target.md (1591b), references/apis/get-recommended-item-list.md (1526b), references/apis/get-recommended-keyword-list.md (1556b), references/apis/get-shop-toggle-info.md (1518b), references/apis/get-total-balance.md (1469b), references/apis/list-gms-user-deleted-item.md (1537b), references/onboarding.md (2046b), scripts/_ads_api_runner.py (4260b), scripts/_ads_endpoints.py (6269b), scripts/_shopee_ads_common.py (11417b), scripts/ads_api.py (994b), scripts/check_auth_dependency.py (3975b), scripts/check_create_gms_product_campaign_eligibility.py (1090b), scripts/create_gms_product_campaign.py (734b), scripts/create_manual_product_ads.py (722b), scripts/edit_gms_item_product_campaign.py (752b), scripts/edit_gms_product_campaign.py (722b), scripts/edit_manual_product_ad_keywords.py (758b), scripts/edit_manual_product_ads.py (710b), scripts/get_ads_facil_shop_rate.py (710b), scripts/get_all_cpc_ads_daily_performance.py (770b), scripts/get_all_cpc_ads_hourly_performance.py (776b), scripts/get_create_product_ad_budget_suggestion.py (806b), scripts/get_gms_campaign_performance.py (740b), scripts/get_gms_item_performance.py (716b), scripts/get_product_campaign_daily_performance.py (800b), scripts/get_product_campaign_hourly_performance.py (806b), scripts/get_product_level_campaign_id_list.py (776b), scripts/get_product_level_campaign_setting_info.py (806b), scripts/get_product_recommended_roi_target.py (776b), scripts/get_recommended_item_list.py (722b), scripts/get_recommended_keyword_list.py (740b), scripts/get_shop_toggle_info.py (692b), scripts/get_total_balance.py (674b), scripts/list_gms_user_deleted_item.py (728b), scripts/onboarding.py (24089b), skill-card.md (3201b), SKILL.md (10790b), _meta.json (143b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkfox-shopee-store-ads\ndescription: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。调用前须确认目标店已有 appType=ad 授权（ERP 授权不能代替）。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance、广告授权 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。\n---\n\n# Shopee 店铺 Ads\n\nShopee Open Platform **Ads 模块**（23 个 API，不含即将下线的 auto product ads）。**依赖 `linkfox-shopee-store-auth`**；须目标店存在 **`appType=ad`** 授权。经 **`POST /shopee/developerProxy`** 传入 `shopId`（或 `merchantId`）+ `api/v2/ads/...` 路径，服务端自动走 AD 应用 Token（**勿**传 `accessToken` / `appType`）。\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/linkfox-shopee-store-ads-<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\nAds 模块索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\n\n---\n\n## Prerequisites（必须先读）\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\n2. **不要**在本 skill 内实现授权/令牌逻辑；授权一律走 auth skill。\n3. 调用业务 API **之前**，用 auth 的 `authorized_stores.py` 确认目标店存在 **`appType=ad`**：\n   - 仅有 `appType=erp`（或历史空值）→ **不能**当广告已授权；引导 `authorize_url.py` 且传 **`appType=ad`**\n   - 两项都缺 → 若用户只要广告，只开 AD 授权即可（不必先开 ERP）\n4. Ads API 还需 Shopee 侧开通广告能力；并非所有站点/店铺可用。\n5. **禁止**向 `developerProxy` 传 `accessToken` 或 `appType`；path 用 `api/v2/ads/**` 即可由服务端路由到 AD。\n\n---\n\n## Core Concepts\n\n- **AD 与 ERP 分离**：广告 Token 与 ERP Token 独立；店铺在列表中存在 ≠ 广告已授权\n- **转发链路**：`developerProxy`（`shopId`/`merchantId` + `api/v2/ads/...`，服务端注入 **AD** token）→ 紫鸟 `shopee-proxy/ad/...` → Shopee API\n- **余额**：`get_total_balance` 查广告账户余额\n- **手动商品广告**：`create_manual_product_ads` → `edit_manual_product_ads` / `edit_manual_product_ad_keywords`\n- **效果报表**：`get_all_cpc_ads_*_performance`、`get_product_campaign_*_performance`\n- **GMS**：`create_gms_product_campaign` 等系列\n- **未纳入**：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\n- **联盟营销 AMS**（module=127）→ 非本 skill\n\n## 可用脚本（Ads 模块 23 个 API）\n\n| 分组 | 脚本 |\n|------|------|\n| 账户/推荐 | `get_total_balance.py`、`get_shop_toggle_info.py`、`get_recommended_keyword_list.py`、`get_recommended_item_list.py` |\n| CPC 效果 | `get_all_cpc_ads_daily_performance.py`、`get_all_cpc_ads_hourly_performance.py` |\n| 商品广告 | `create_manual_product_ads.py`、`edit_manual_product_ads.py`、`get_product_level_campaign_id_list.py` 等 |\n| GMS | `create_gms_product_campaign.py`、`get_gms_campaign_performance.py` 等 |\n| 通用入口 | `ads_api.py`（JSON 含 `api` 字段） |\n\n完整列表见 `references/api.md`。共享：`_shopee_ads_common.py`、`_ads_endpoints.py`、`_ads_api_runner.py`。\n\n## 接口说明（按 API）\n\n入参与响应细节放在 `references/apis/`，SKILL 只保留索引。\n\n| API | 说明文档 |\n|-----|----------|\n| `check_create_gms_product_campaign_eligibility` | [references/apis/check-create-gms-product-campaign-eligibility.md](./references/apis/check-create-gms-product-campaign-eligibility.md) |\n| `create_gms_product_campaign` | [references/apis/create-gms-product-campaign.md](./references/apis/create-gms-product-campaign.md) |\n| `create_manual_product_ads` | [references/apis/create-manual-product-ads.md](./references/apis/create-manual-product-ads.md) |\n| `edit_gms_item_product_campaign` | [references/apis/edit-gms-item-product-campaign.md](./references/apis/edit-gms-item-product-campaign.md) |\n| `edit_gms_product_campaign` | [references/apis/edit-gms-product-campaign.md](./references/apis/edit-gms-product-campaign.md) |\n| `edit_manual_product_ad_keywords` | [references/apis/edit-manual-product-ad-keywords.md](./references/apis/edit-manual-product-ad-keywords.md) |\n| `edit_manual_product_ads` | [references/apis/edit-manual-product-ads.md](./references/apis/edit-manual-product-ads.md) |\n| `get_ads_facil_shop_rate` | [references/apis/get-ads-facil-shop-rate.md](./references/apis/get-ads-facil-shop-rate.md) |\n| `get_all_cpc_ads_daily_performance` | [references/apis/get-all-cpc-ads-daily-performance.md](./references/apis/get-all-cpc-ads-daily-performance.md) |\n| `get_all_cpc_ads_hourly_performance` | [references/apis/get-all-cpc-ads-hourly-performance.md](./references/apis/get-all-cpc-ads-hourly-performance.md) |\n| `get_create_product_ad_budget_suggestion` | [references/apis/get-create-product-ad-budget-suggestion.md](./references/apis/get-create-product-ad-budget-suggestion.md) |\n| `get_gms_campaign_performance` | [references/apis/get-gms-campaign-performance.md](./references/apis/get-gms-campaign-performance.md) |\n| `get_gms_item_performance` | [references/apis/get-gms-item-performance.md](./references/apis/get-gms-item-performance.md) |\n| `get_product_campaign_daily_performance` | [references/apis/get-product-campaign-daily-performance.md](./references/apis/get-product-campaign-daily-performance.md) |\n| `get_product_campaign_hourly_performance` | [references/apis/get-product-campaign-hourly-performance.md](./references/apis/get-product-campaign-hourly-performance.md) |\n| `get_product_level_campaign_id_list` | [references/apis/get-product-level-campaign-id-list.md](./references/apis/get-product-level-campaign-id-list.md) |\n| `get_product_level_campaign_setting_info` | [references/apis/get-product-level-campaign-setting-info.md](./references/apis/get-product-level-campaign-setting-info.md) |\n| `get_product_recommended_roi_target` | [references/apis/get-product-recommended-roi-target.md](./references/apis/get-product-recommended-roi-target.md) |\n| `get_recommended_item_list` | [references/apis/get-recommended-item-list.md](./references/apis/get-recommended-item-list.md) |\n| `get_recommended_keyword_list` | [references/apis/get-recommended-keyword-list.md](./references/apis/get-recommended-keyword-list.md) |\n| `get_shop_toggle_info` | [references/apis/get-shop-toggle-info.md](./references/apis/get-shop-toggle-info.md) |\n| `get_total_balance` | [references/apis/get-total-balance.md](./references/apis/get-total-balance.md) |\n| `list_gms_user_deleted_item` | [references/apis/list-gms-user-deleted-item.md](./references/apis/list-gms-user-deleted-item.md) |\n\n模块总览 / Feedback 见 [references/api.md](./references/api.md)。\n\n## Usage Scenarios\n\n### 0. 确认 AD 授权（每次任务开头）\n\n1. auth：`authorized_stores.py` → 找目标 `shopId` 且 **`appType=ad`**\n2. 缺失 → auth：`authorize_url.py` 传 `appType=ad`，提示用户完成**广告**授权（URL 1 小时有效）\n3. 完成后再进入下列业务场景；收到 **1004** 时优先怀疑缺 AD 授权，不要用 ERP 记录硬调\n\n### 1. 查余额与推荐\n1. `get_total_balance.py`\n2. `get_recommended_item_list.py` / `get_recommended_keyword_list.py`\n\n### 2. 创建手动商品广告\n1. `get_create_product_ad_budget_suggestion.py`\n2. `create_manual_product_ads.py` 传完整 `body`\n3. `get_product_campaign_daily_performance.py` 查效果\n\n## 调用原则\n\n- 先确认 **`appType=ad`**，再调脚本\n- 先看 **`developerProxy.httpStatus`** / 网关 `errcode`，再读 `*Response` 字段\n- GET：业务参数放 JSON 顶层\n- POST：复杂接口传 `body`；create/edit 建议传唯一 `reference_id` 防重复\n- 每个脚本 docstring 含 **官方文档 URL**（`module=117`）\n- 不要先 `storeTokens` 取 raw token，也不要在 proxy 里塞 `accessToken`\n\n## Not Applicable\n\n- 店铺授权 → `linkfox-shopee-store-auth`\n- 商品 listing → `linkfox-shopee-store-product`\n- 联盟营销 AMS（module=127）→ `linkfox-shopee-store-ams`\n- Amazon 广告 → `linkfox-amazon-ads-*` 系列\n\n## 积分消耗规则\n\n不消耗积分。\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n\n---\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-ads\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1786719709596\n}\n\nFile v1.0.5:references/api.md\n\n# linkfox-shopee-store-ads — 参数与字段参考\r\n\r\n> 单接口入参/响应说明已拆到 **`apis/`**（按 API 一份）；本文件保留模块总览与 Feedback。\r\nShopee **Ads 模块**全部 23 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\r\n\r\n> 未纳入：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n\r\n## 通用约定\r\n\r\n- **Base URL**：`https://tool-gateway.linkfox.com`\r\n- **Method**：POST（网关），上游 Method 见各接口\r\n- **Auth**：Header `Authorization: <api_key>`（`LINKFOXAGENT_API_KEY`）\r\n- **流程**：auth 确认目标店 **`appType=ad`** → 直接 `POST /shopee/developerProxy`（**不要**先取 accessToken）\r\n- **path**：须 `api/v2/ads/...`（服务端自动用 AD partner/token）\r\n- **标识**：店铺级广告 API，通常传 **`shopId`**（或 `merchantId`）\r\n- **禁止**：在 developerProxy 传 `accessToken` 或 `appType`\r\n- **权限**：需 LinkFox 侧 `appType=ad` 授权 + Shopee 侧开通广告能力；ERP 授权不能代替\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.ads.{api}?module=117&type=1`\r\n- **复杂 POST**（如 `create_manual_product_ads`）：推荐传完整 `body`；日期格式常为 DD-MM-YYYY\r\n\r\n---\r\n\r\n## Ads 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | check_create_gms_product_campaign_eligibility | GET | `api/v2/ads/check_create_gms_product_campaign_eligibility` | `check_create_gms_product_campaign_eligibility.py` | [apis/check-create-gms-product-campaign-eligibility.md](./apis/check-create-gms-product-campaign-eligibility.md) |\r\n| 2 | create_gms_product_campaign | POST | `api/v2/ads/create_gms_product_campaign` | `create_gms_product_campaign.py` | [apis/create-gms-product-campaign.md](./apis/create-gms-product-campaign.md) |\r\n| 3 | create_manual_product_ads | POST | `api/v2/ads/create_manual_product_ads` | `create_manual_product_ads.py` | [apis/create-manual-product-ads.md](./apis/create-manual-product-ads.md) |\r\n| 4 | edit_gms_item_product_campaign | POST | `api/v2/ads/edit_gms_item_product_campaign` | `edit_gms_item_product_campaign.py` | [apis/edit-gms-item-product-campaign.md](./apis/edit-gms-item-product-campaign.md) |\r\n| 5 | edit_gms_product_campaign | POST | `api/v2/ads/edit_gms_product_campaign` | `edit_gms_product_campaign.py` | [apis/edit-gms-product-campaign.md](./apis/edit-gms-product-campaign.md) |\r\n| 6 | edit_manual_product_ad_keywords | POST | `api/v2/ads/edit_manual_product_ad_keywords` | `edit_manual_product_ad_keywords.py` | [apis/edit-manual-product-ad-keywords.md](./apis/edit-manual-product-ad-keywords.md) |\r\n| 7 | edit_manual_product_ads | POST | `api/v2/ads/edit_manual_product_ads` | `edit_manual_product_ads.py` | [apis/edit-manual-product-ads.md](./apis/edit-manual-product-ads.md) |\r\n| 8 | get_ads_facil_shop_rate | GET | `api/v2/ads/get_ads_facil_shop_rate` | `get_ads_facil_shop_rate.py` | [apis/get-ads-facil-shop-rate.md](./apis/get-ads-facil-shop-rate.md) |\r\n| 9 | get_all_cpc_ads_daily_performance | GET | `api/v2/ads/get_all_cpc_ads_daily_performance` | `get_all_cpc_ads_daily_performance.py` | [apis/get-all-cpc-ads-daily-performance.md](./apis/get-all-cpc-ads-daily-performance.md) |\r\n| 10 | get_all_cpc_ads_hourly_performance | GET | `api/v2/ads/get_all_cpc_ads_hourly_performance` | `get_all_cpc_ads_hourly_performance.py` | [apis/get-all-cpc-ads-hourly-performance.md](./apis/get-all-cpc-ads-hourly-performance.md) |\r\n| 11 | get_create_product_ad_budget_suggestion | GET | `api/v2/ads/get_create_product_ad_budget_suggestion` | `get_create_product_ad_budget_suggestion.py` | [apis/get-create-product-ad-budget-suggestion.md](./apis/get-create-product-ad-budget-suggestion.md) |\r\n| 12 | get_gms_campaign_performance | GET | `api/v2/ads/get_gms_campaign_performance` | `get_gms_campaign_performance.py` | [apis/get-gms-campaign-performance.md](./apis/get-gms-campaign-performance.md) |\r\n| 13 | get_gms_item_performance | GET | `api/v2/ads/get_gms_item_performance` | `get_gms_item_performance.py` | [apis/get-gms-item-performance.md](./apis/get-gms-item-performance.md) |\r\n| 14 | get_product_campaign_daily_performance | GET | `api/v2/ads/get_product_campaign_daily_performance` | `get_product_campaign_daily_performance.py` | [apis/get-product-campaign-daily-performance.md](./apis/get-product-campaign-daily-performance.md) |\r\n| 15 | get_product_campaign_hourly_performance | GET | `api/v2/ads/get_product_campaign_hourly_performance` | `get_product_campaign_hourly_performance.py` | [apis/get-product-campaign-hourly-performance.md](./apis/get-product-campaign-hourly-performance.md) |\r\n| 16 | get_product_level_campaign_id_list | GET | `api/v2/ads/get_product_level_campaign_id_list` | `get_product_level_campaign_id_list.py` | [apis/get-product-level-campaign-id-list.md](./apis/get-product-level-campaign-id-list.md) |\r\n| 17 | get_product_level_campaign_setting_info | GET | `api/v2/ads/get_product_level_campaign_setting_info` | `get_product_level_campaign_setting_info.py` | [apis/get-product-level-campaign-setting-info.md](./apis/get-product-level-campaign-setting-info.md) |\r\n| 18 | get_product_recommended_roi_target | GET | `api/v2/ads/get_product_recommended_roi_target` | `get_product_recommended_roi_target.py` | [apis/get-product-recommended-roi-target.md](./apis/get-product-recommended-roi-target.md) |\r\n| 19 | get_recommended_item_list | GET | `api/v2/ads/get_recommended_item_list` | `get_recommended_item_list.py` | [apis/get-recommended-item-list.md](./apis/get-recommended-item-list.md) |\r\n| 20 | get_recommended_keyword_list | GET | `api/v2/ads/get_recommended_keyword_list` | `get_recommended_keyword_list.py` | [apis/get-recommended-keyword-list.md](./apis/get-recommended-keyword-list.md) |\r\n| 21 | get_shop_toggle_info | GET | `api/v2/ads/get_shop_toggle_info` | `get_shop_toggle_info.py` | [apis/get-shop-toggle-info.md](./apis/get-shop-toggle-info.md) |\r\n| 22 | get_total_balance | GET | `api/v2/ads/get_total_balance` | `get_total_balance.py` | [apis/get-total-balance.md](./apis/get-total-balance.md) |\r\n| 23 | list_gms_user_deleted_item | GET | `api/v2/ads/list_gms_user_deleted_item` | `list_gms_user_deleted_item.py` | [apis/list-gms-user-deleted-item.md](./apis/list-gms-user-deleted-item.md) |\r\n通用入口：`ads_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n### 账户与推荐\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_total_balance` | 广告账户余额 — [apis/get-total-balance.md](./apis/get-total-balance.md) |\r\n| `get_shop_toggle_info` | 自动充值、Campaign Surge 开关 — [apis/get-shop-toggle-info.md](./apis/get-shop-toggle-info.md) |\r\n| `get_recommended_keyword_list` | 推荐关键词 — [apis/get-recommended-keyword-list.md](./apis/get-recommended-keyword-list.md) |\r\n| `get_recommended_item_list` | 推荐推广商品 — [apis/get-recommended-item-list.md](./apis/get-recommended-item-list.md) |\r\n\r\n### 效果报表\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_all_cpc_ads_daily_performance` / `hourly` | 全部 CPC 广告效果 |\r\n| `get_product_campaign_daily_performance` / `hourly` | 商品广告活动效果 |\r\n| `get_gms_campaign_performance` / `get_gms_item_performance` | GMS 广告效果 |\r\n\r\n### 手动商品广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_product_level_campaign_id_list` | 商品级 campaign ID 列表 — [apis/get-product-level-campaign-id-list.md](./apis/get-product-level-campaign-id-list.md) |\r\n| `get_product_level_campaign_setting_info` | campaign 设置详情 — [apis/get-product-level-campaign-setting-info.md](./apis/get-product-level-campaign-setting-info.md) |\r\n| `create_manual_product_ads` | 创建手动选品广告 — [apis/create-manual-product-ads.md](./apis/create-manual-product-ads.md) |\r\n| `edit_manual_product_ads` / `edit_manual_product_ad_keywords` | 编辑广告/关键词 |\r\n| `get_create_product_ad_budget_suggestion` | 预算建议 — [apis/get-create-product-ad-budget-suggestion.md](./apis/get-create-product-ad-budget-suggestion.md) |\r\n| `get_product_recommended_roi_target` | 推荐 ROI — [apis/get-product-recommended-roi-target.md](./apis/get-product-recommended-roi-target.md) |\r\n\r\n### GMS 广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `check_create_gms_product_campaign_eligibility` | 创建资格检查 — [apis/check-create-gms-product-campaign-eligibility.md](./apis/check-create-gms-product-campaign-eligibility.md) |\r\n| `create_gms_product_campaign` / `edit_gms_product_campaign` | 创建/编辑 GMS campaign |\r\n| `edit_gms_item_product_campaign` | 编辑 GMS 商品 campaign — [apis/edit-gms-item-product-campaign.md](./apis/edit-gms-item-product-campaign.md) |\r\n| `list_gms_user_deleted_item` | 用户删除商品列表 — [apis/list-gms-user-deleted-item.md](./apis/list-gms-user-deleted-item.md) |\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| errcode | 含义 | 建议 |\r\n|---------|------|------|\r\n| 1002 | 参数/未登录 | 检查 shopId 与 API Key |\r\n| 1003 | 代理/网络异常 | 稍后重试 |\r\n| 1004 | 无 **AD** 授权记录 | 即使店铺有 ERP，也须 auth 发起 `appType=ad` |\r\n| 1005 | Token 失效或 path 未白名单 | 重新 AD 授权；确认 `api/v2/ads/...` |\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\nexport KEY=$LINKFOXAGENT_API_KEY\r\nBASE=https://tool-gateway.linkfox.com\r\n\r\n# 业务转发：只传 path + shopId（服务端注入 AD token）\r\ncurl -X POST $BASE/shopee/developerProxy -H \"Authorization: $KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/ads/get_total_balance\",\r\n    \"method\": \"GET\",\r\n    \"shopId\": \"67890\"\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-ads\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"广告余额查询正常\"}'\r\n```\n\nFile v1.0.5:references/apis/check-create-gms-product-campaign-eligibility.md\n\n# check_create_gms_product_campaign_eligibility\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/check_create_gms_product_campaign_eligibility.py` |\n| Method / path | GET `api/v2/ads/check_create_gms_product_campaign_eligibility` |\n| 官方文档 | [check_create_gms_product_campaign_eligibility](https://open.shopee.com/documents/v2/v2.ads.check_create_gms_product_campaign_eligibility?module=117&type=1) |\n| 用途 | GMS product campaign eligibility |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：GMS product campaign eligibility\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/check_create_gms_product_campaign_eligibility.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"check_create_gms_product_campaign_eligibility\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`checkCreateGmsProductCampaignEligibility`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/create-gms-product-campaign.md\n\n# create_gms_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/create_gms_product_campaign.py` |\n| Method / path | POST `api/v2/ads/create_gms_product_campaign` |\n| 官方文档 | [create_gms_product_campaign](https://open.shopee.com/documents/v2/v2.ads.create_gms_product_campaign?module=117&type=1) |\n| 用途 | Create GMS product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Create GMS product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/create_gms_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"create_gms_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`createGmsProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/create-manual-product-ads.md\n\n# create_manual_product_ads\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/create_manual_product_ads.py` |\n| Method / path | POST `api/v2/ads/create_manual_product_ads` |\n| 官方文档 | [create_manual_product_ads](https://open.shopee.com/documents/v2/v2.ads.create_manual_product_ads?module=117&type=1) |\n| 用途 | Create manual selection product ads; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Create manual selection product ads; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/create_manual_product_ads.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"create_manual_product_ads\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`createManualProductAds`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/edit-gms-item-product-campaign.md\n\n# edit_gms_item_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_gms_item_product_campaign.py` |\n| Method / path | POST `api/v2/ads/edit_gms_item_product_campaign` |\n| 官方文档 | [edit_gms_item_product_campaign](https://open.shopee.com/documents/v2/v2.ads.edit_gms_item_product_campaign?module=117&type=1) |\n| 用途 | Edit GMS item product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit GMS item product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_gms_item_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_gms_item_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editGmsItemProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/edit-gms-product-campaign.md\n\n# edit_gms_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_gms_product_campaign.py` |\n| Method / path | POST `api/v2/ads/edit_gms_product_campaign` |\n| 官方文档 | [edit_gms_product_campaign](https://open.shopee.com/documents/v2/v2.ads.edit_gms_product_campaign?module=117&type=1) |\n| 用途 | Edit GMS product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit GMS product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_gms_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_gms_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editGmsProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/edit-manual-product-ad-keywords.md\n\n# edit_manual_product_ad_keywords\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_manual_product_ad_keywords.py` |\n| Method / path | POST `api/v2/ads/edit_manual_product_ad_keywords` |\n| 官方文档 | [edit_manual_product_ad_keywords](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ad_keywords?module=117&type=1) |\n| 用途 | Edit manual product ad keywords |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit manual product ad keywords\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_manual_product_ad_keywords.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_manual_product_ad_keywords\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editManualProductAdKeywords`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/edit-manual-product-ads.md\n\n# edit_manual_product_ads\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_manual_product_ads.py` |\n| Method / path | POST `api/v2/ads/edit_manual_product_ads` |\n| 官方文档 | [edit_manual_product_ads](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ads?module=117&type=1) |\n| 用途 | Edit manual product ads |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit manual product ads\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_manual_product_ads.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_manual_product_ads\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editManualProductAds`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/get-ads-facil-shop-rate.md\n\n# get_ads_facil_shop_rate\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_ads_facil_shop_rate.py` |\n| Method / path | GET `api/v2/ads/get_ads_facil_shop_rate` |\n| 官方文档 | [get_ads_facil_shop_rate](https://open.shopee.com/documents/v2/v2.ads.get_ads_facil_shop_rate?module=117&type=1) |\n| 用途 | Ads Facil program shop rate (official: facil) |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Ads Facil program shop rate (official: facil)\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_ads_facil_shop_rate.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"get_ads_facil_shop_rate\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAdsFacilShopRate`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.5:references/apis/get-all-cpc-ads-daily-performance.md\n\n# get_all_cpc_ads_daily_performance\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_all_cpc_ads_daily_performance.py` |\n| Method / path | GET `api/v2/ads/get_all_cpc_ads_daily_performance` |\n| 官方文档 | [get_all_cpc_ads_daily_performance](https://open.shopee.com/documents/v2/v2.ads.get_all_cpc_ads_daily_performance?module=117&type=1) |\n| 用途 | All CPC ads daily performance |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：All CPC ads daily performance\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_all_cpc_ads_daily_performance.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"get_all_cpc_ads_daily_performance\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAllCpcAdsDailyPerformance`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nArchive v1.0.4: 57 files, 68363 bytes\n\nFiles: references/api.md (10140b), references/apis/check-create-gms-product-campaign-eligibility.md (1698b), references/apis/create-gms-product-campaign.md (1540b), references/apis/create-manual-product-ads.md (1572b), references/apis/edit-gms-item-product-campaign.md (1569b), references/apis/edit-gms-product-campaign.md (1520b), references/apis/edit-manual-product-ad-keywords.md (1579b), references/apis/edit-manual-product-ads.md (1500b), references/apis/get-ads-facil-shop-rate.md (1549b), references/apis/get-all-cpc-ads-daily-performance.md (1596b), references/apis/get-all-cpc-ads-hourly-performance.md (1606b), references/apis/get-create-product-ad-budget-suggestion.md (1658b), references/apis/get-gms-campaign-performance.md (1548b), references/apis/get-gms-item-performance.md (1508b), references/apis/get-product-campaign-daily-performance.md (1647b), references/apis/get-product-campaign-hourly-performance.md (1657b), references/apis/get-product-level-campaign-id-list.md (1598b), references/apis/get-product-level-campaign-setting-info.md (1636b), references/apis/get-product-recommended-roi-target.md (1591b), references/apis/get-recommended-item-list.md (1526b), references/apis/get-recommended-keyword-list.md (1556b), references/apis/get-shop-toggle-info.md (1518b), references/apis/get-total-balance.md (1469b), references/apis/list-gms-user-deleted-item.md (1537b), references/onboarding.md (2046b), scripts/_ads_api_runner.py (4260b), scripts/_ads_endpoints.py (6269b), scripts/_shopee_ads_common.py (11417b), scripts/ads_api.py (994b), scripts/check_auth_dependency.py (3975b), scripts/check_create_gms_product_campaign_eligibility.py (1090b), scripts/create_gms_product_campaign.py (734b), scripts/create_manual_product_ads.py (722b), scripts/edit_gms_item_product_campaign.py (752b), scripts/edit_gms_product_campaign.py (722b), scripts/edit_manual_product_ad_keywords.py (758b), scripts/edit_manual_product_ads.py (710b), scripts/get_ads_facil_shop_rate.py (710b), scripts/get_all_cpc_ads_daily_performance.py (770b), scripts/get_all_cpc_ads_hourly_performance.py (776b), scripts/get_create_product_ad_budget_suggestion.py (806b), scripts/get_gms_campaign_performance.py (740b), scripts/get_gms_item_performance.py (716b), scripts/get_product_campaign_daily_performance.py (800b), scripts/get_product_campaign_hourly_performance.py (806b), scripts/get_product_level_campaign_id_list.py (776b), scripts/get_product_level_campaign_setting_info.py (806b), scripts/get_product_recommended_roi_target.py (776b), scripts/get_recommended_item_list.py (722b), scripts/get_recommended_keyword_list.py (740b), scripts/get_shop_toggle_info.py (692b), scripts/get_total_balance.py (674b), scripts/list_gms_user_deleted_item.py (728b), scripts/onboarding.py (24089b), skill-card.md (2849b), SKILL.md (10790b), _meta.json (143b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkfox-shopee-store-ads\ndescription: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。调用前须确认目标店已有 appType=ad 授权（ERP 授权不能代替）。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance、广告授权 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。\n---\n\n# Shopee 店铺 Ads\n\nShopee Open Platform **Ads 模块**（23 个 API，不含即将下线的 auto product ads）。**依赖 `linkfox-shopee-store-auth`**；须目标店存在 **`appType=ad`** 授权。经 **`POST /shopee/developerProxy`** 传入 `shopId`（或 `merchantId`）+ `api/v2/ads/...` 路径，服务端自动走 AD 应用 Token（**勿**传 `accessToken` / `appType`）。\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/linkfox-shopee-store-ads-<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\nAds 模块索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\n\n---\n\n## Prerequisites（必须先读）\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\n2. **不要**在本 skill 内实现授权/令牌逻辑；授权一律走 auth skill。\n3. 调用业务 API **之前**，用 auth 的 `authorized_stores.py` 确认目标店存在 **`appType=ad`**：\n   - 仅有 `appType=erp`（或历史空值）→ **不能**当广告已授权；引导 `authorize_url.py` 且传 **`appType=ad`**\n   - 两项都缺 → 若用户只要广告，只开 AD 授权即可（不必先开 ERP）\n4. Ads API 还需 Shopee 侧开通广告能力；并非所有站点/店铺可用。\n5. **禁止**向 `developerProxy` 传 `accessToken` 或 `appType`；path 用 `api/v2/ads/**` 即可由服务端路由到 AD。\n\n---\n\n## Core Concepts\n\n- **AD 与 ERP 分离**：广告 Token 与 ERP Token 独立；店铺在列表中存在 ≠ 广告已授权\n- **转发链路**：`developerProxy`（`shopId`/`merchantId` + `api/v2/ads/...`，服务端注入 **AD** token）→ 紫鸟 `shopee-proxy/ad/...` → Shopee API\n- **余额**：`get_total_balance` 查广告账户余额\n- **手动商品广告**：`create_manual_product_ads` → `edit_manual_product_ads` / `edit_manual_product_ad_keywords`\n- **效果报表**：`get_all_cpc_ads_*_performance`、`get_product_campaign_*_performance`\n- **GMS**：`create_gms_product_campaign` 等系列\n- **未纳入**：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\n- **联盟营销 AMS**（module=127）→ 非本 skill\n\n## 可用脚本（Ads 模块 23 个 API）\n\n| 分组 | 脚本 |\n|------|------|\n| 账户/推荐 | `get_total_balance.py`、`get_shop_toggle_info.py`、`get_recommended_keyword_list.py`、`get_recommended_item_list.py` |\n| CPC 效果 | `get_all_cpc_ads_daily_performance.py`、`get_all_cpc_ads_hourly_performance.py` |\n| 商品广告 | `create_manual_product_ads.py`、`edit_manual_product_ads.py`、`get_product_level_campaign_id_list.py` 等 |\n| GMS | `create_gms_product_campaign.py`、`get_gms_campaign_performance.py` 等 |\n| 通用入口 | `ads_api.py`（JSON 含 `api` 字段） |\n\n完整列表见 `references/api.md`。共享：`_shopee_ads_common.py`、`_ads_endpoints.py`、`_ads_api_runner.py`。\n\n## 接口说明（按 API）\n\n入参与响应细节放在 `references/apis/`，SKILL 只保留索引。\n\n| API | 说明文档 |\n|-----|----------|\n| `check_create_gms_product_campaign_eligibility` | [references/apis/check-create-gms-product-campaign-eligibility.md](./references/apis/check-create-gms-product-campaign-eligibility.md) |\n| `create_gms_product_campaign` | [references/apis/create-gms-product-campaign.md](./references/apis/create-gms-product-campaign.md) |\n| `create_manual_product_ads` | [references/apis/create-manual-product-ads.md](./references/apis/create-manual-product-ads.md) |\n| `edit_gms_item_product_campaign` | [references/apis/edit-gms-item-product-campaign.md](./references/apis/edit-gms-item-product-campaign.md) |\n| `edit_gms_product_campaign` | [references/apis/edit-gms-product-campaign.md](./references/apis/edit-gms-product-campaign.md) |\n| `edit_manual_product_ad_keywords` | [references/apis/edit-manual-product-ad-keywords.md](./references/apis/edit-manual-product-ad-keywords.md) |\n| `edit_manual_product_ads` | [references/apis/edit-manual-product-ads.md](./references/apis/edit-manual-product-ads.md) |\n| `get_ads_facil_shop_rate` | [references/apis/get-ads-facil-shop-rate.md](./references/apis/get-ads-facil-shop-rate.md) |\n| `get_all_cpc_ads_daily_performance` | [references/apis/get-all-cpc-ads-daily-performance.md](./references/apis/get-all-cpc-ads-daily-performance.md) |\n| `get_all_cpc_ads_hourly_performance` | [references/apis/get-all-cpc-ads-hourly-performance.md](./references/apis/get-all-cpc-ads-hourly-performance.md) |\n| `get_create_product_ad_budget_suggestion` | [references/apis/get-create-product-ad-budget-suggestion.md](./references/apis/get-create-product-ad-budget-suggestion.md) |\n| `get_gms_campaign_performance` | [references/apis/get-gms-campaign-performance.md](./references/apis/get-gms-campaign-performance.md) |\n| `get_gms_item_performance` | [references/apis/get-gms-item-performance.md](./references/apis/get-gms-item-performance.md) |\n| `get_product_campaign_daily_performance` | [references/apis/get-product-campaign-daily-performance.md](./references/apis/get-product-campaign-daily-performance.md) |\n| `get_product_campaign_hourly_performance` | [references/apis/get-product-campaign-hourly-performance.md](./references/apis/get-product-campaign-hourly-performance.md) |\n| `get_product_level_campaign_id_list` | [references/apis/get-product-level-campaign-id-list.md](./references/apis/get-product-level-campaign-id-list.md) |\n| `get_product_level_campaign_setting_info` | [references/apis/get-product-level-campaign-setting-info.md](./references/apis/get-product-level-campaign-setting-info.md) |\n| `get_product_recommended_roi_target` | [references/apis/get-product-recommended-roi-target.md](./references/apis/get-product-recommended-roi-target.md) |\n| `get_recommended_item_list` | [references/apis/get-recommended-item-list.md](./references/apis/get-recommended-item-list.md) |\n| `get_recommended_keyword_list` | [references/apis/get-recommended-keyword-list.md](./references/apis/get-recommended-keyword-list.md) |\n| `get_shop_toggle_info` | [references/apis/get-shop-toggle-info.md](./references/apis/get-shop-toggle-info.md) |\n| `get_total_balance` | [references/apis/get-total-balance.md](./references/apis/get-total-balance.md) |\n| `list_gms_user_deleted_item` | [references/apis/list-gms-user-deleted-item.md](./references/apis/list-gms-user-deleted-item.md) |\n\n模块总览 / Feedback 见 [references/api.md](./references/api.md)。\n\n## Usage Scenarios\n\n### 0. 确认 AD 授权（每次任务开头）\n\n1. auth：`authorized_stores.py` → 找目标 `shopId` 且 **`appType=ad`**\n2. 缺失 → auth：`authorize_url.py` 传 `appType=ad`，提示用户完成**广告**授权（URL 1 小时有效）\n3. 完成后再进入下列业务场景；收到 **1004** 时优先怀疑缺 AD 授权，不要用 ERP 记录硬调\n\n### 1. 查余额与推荐\n1. `get_total_balance.py`\n2. `get_recommended_item_list.py` / `get_recommended_keyword_list.py`\n\n### 2. 创建手动商品广告\n1. `get_create_product_ad_budget_suggestion.py`\n2. `create_manual_product_ads.py` 传完整 `body`\n3. `get_product_campaign_daily_performance.py` 查效果\n\n## 调用原则\n\n- 先确认 **`appType=ad`**，再调脚本\n- 先看 **`developerProxy.httpStatus`** / 网关 `errcode`，再读 `*Response` 字段\n- GET：业务参数放 JSON 顶层\n- POST：复杂接口传 `body`；create/edit 建议传唯一 `reference_id` 防重复\n- 每个脚本 docstring 含 **官方文档 URL**（`module=117`）\n- 不要先 `storeTokens` 取 raw token，也不要在 proxy 里塞 `accessToken`\n\n## Not Applicable\n\n- 店铺授权 → `linkfox-shopee-store-auth`\n- 商品 listing → `linkfox-shopee-store-product`\n- 联盟营销 AMS（module=127）→ `linkfox-shopee-store-ams`\n- Amazon 广告 → `linkfox-amazon-ads-*` 系列\n\n## 积分消耗规则\n\n不消耗积分。\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n\n---\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-ads\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1786100309300\n}\n\nFile v1.0.4:references/api.md\n\n# linkfox-shopee-store-ads — 参数与字段参考\r\n\r\n> 单接口入参/响应说明已拆到 **`apis/`**（按 API 一份）；本文件保留模块总览与 Feedback。\r\nShopee **Ads 模块**全部 23 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\r\n\r\n> 未纳入：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n\r\n## 通用约定\r\n\r\n- **Base URL**：`https://tool-gateway.linkfox.com`\r\n- **Method**：POST（网关），上游 Method 见各接口\r\n- **Auth**：Header `Authorization: <api_key>`（`LINKFOXAGENT_API_KEY`）\r\n- **流程**：auth 确认目标店 **`appType=ad`** → 直接 `POST /shopee/developerProxy`（**不要**先取 accessToken）\r\n- **path**：须 `api/v2/ads/...`（服务端自动用 AD partner/token）\r\n- **标识**：店铺级广告 API，通常传 **`shopId`**（或 `merchantId`）\r\n- **禁止**：在 developerProxy 传 `accessToken` 或 `appType`\r\n- **权限**：需 LinkFox 侧 `appType=ad` 授权 + Shopee 侧开通广告能力；ERP 授权不能代替\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.ads.{api}?module=117&type=1`\r\n- **复杂 POST**（如 `create_manual_product_ads`）：推荐传完整 `body`；日期格式常为 DD-MM-YYYY\r\n\r\n---\r\n\r\n## Ads 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | check_create_gms_product_campaign_eligibility | GET | `api/v2/ads/check_create_gms_product_campaign_eligibility` | `check_create_gms_product_campaign_eligibility.py` | [apis/check-create-gms-product-campaign-eligibility.md](./apis/check-create-gms-product-campaign-eligibility.md) |\r\n| 2 | create_gms_product_campaign | POST | `api/v2/ads/create_gms_product_campaign` | `create_gms_product_campaign.py` | [apis/create-gms-product-campaign.md](./apis/create-gms-product-campaign.md) |\r\n| 3 | create_manual_product_ads | POST | `api/v2/ads/create_manual_product_ads` | `create_manual_product_ads.py` | [apis/create-manual-product-ads.md](./apis/create-manual-product-ads.md) |\r\n| 4 | edit_gms_item_product_campaign | POST | `api/v2/ads/edit_gms_item_product_campaign` | `edit_gms_item_product_campaign.py` | [apis/edit-gms-item-product-campaign.md](./apis/edit-gms-item-product-campaign.md) |\r\n| 5 | edit_gms_product_campaign | POST | `api/v2/ads/edit_gms_product_campaign` | `edit_gms_product_campaign.py` | [apis/edit-gms-product-campaign.md](./apis/edit-gms-product-campaign.md) |\r\n| 6 | edit_manual_product_ad_keywords | POST | `api/v2/ads/edit_manual_product_ad_keywords` | `edit_manual_product_ad_keywords.py` | [apis/edit-manual-product-ad-keywords.md](./apis/edit-manual-product-ad-keywords.md) |\r\n| 7 | edit_manual_product_ads | POST | `api/v2/ads/edit_manual_product_ads` | `edit_manual_product_ads.py` | [apis/edit-manual-product-ads.md](./apis/edit-manual-product-ads.md) |\r\n| 8 | get_ads_facil_shop_rate | GET | `api/v2/ads/get_ads_facil_shop_rate` | `get_ads_facil_shop_rate.py` | [apis/get-ads-facil-shop-rate.md](./apis/get-ads-facil-shop-rate.md) |\r\n| 9 | get_all_cpc_ads_daily_performance | GET | `api/v2/ads/get_all_cpc_ads_daily_performance` | `get_all_cpc_ads_daily_performance.py` | [apis/get-all-cpc-ads-daily-performance.md](./apis/get-all-cpc-ads-daily-performance.md) |\r\n| 10 | get_all_cpc_ads_hourly_performance | GET | `api/v2/ads/get_all_cpc_ads_hourly_performance` | `get_all_cpc_ads_hourly_performance.py` | [apis/get-all-cpc-ads-hourly-performance.md](./apis/get-all-cpc-ads-hourly-performance.md) |\r\n| 11 | get_create_product_ad_budget_suggestion | GET | `api/v2/ads/get_create_product_ad_budget_suggestion` | `get_create_product_ad_budget_suggestion.py` | [apis/get-create-product-ad-budget-suggestion.md](./apis/get-create-product-ad-budget-suggestion.md) |\r\n| 12 | get_gms_campaign_performance | GET | `api/v2/ads/get_gms_campaign_performance` | `get_gms_campaign_performance.py` | [apis/get-gms-campaign-performance.md](./apis/get-gms-campaign-performance.md) |\r\n| 13 | get_gms_item_performance | GET | `api/v2/ads/get_gms_item_performance` | `get_gms_item_performance.py` | [apis/get-gms-item-performance.md](./apis/get-gms-item-performance.md) |\r\n| 14 | get_product_campaign_daily_performance | GET | `api/v2/ads/get_product_campaign_daily_performance` | `get_product_campaign_daily_performance.py` | [apis/get-product-campaign-daily-performance.md](./apis/get-product-campaign-daily-performance.md) |\r\n| 15 | get_product_campaign_hourly_performance | GET | `api/v2/ads/get_product_campaign_hourly_performance` | `get_product_campaign_hourly_performance.py` | [apis/get-product-campaign-hourly-performance.md](./apis/get-product-campaign-hourly-performance.md) |\r\n| 16 | get_product_level_campaign_id_list | GET | `api/v2/ads/get_product_level_campaign_id_list` | `get_product_level_campaign_id_list.py` | [apis/get-product-level-campaign-id-list.md](./apis/get-product-level-campaign-id-list.md) |\r\n| 17 | get_product_level_campaign_setting_info | GET | `api/v2/ads/get_product_level_campaign_setting_info` | `get_product_level_campaign_setting_info.py` | [apis/get-product-level-campaign-setting-info.md](./apis/get-product-level-campaign-setting-info.md) |\r\n| 18 | get_product_recommended_roi_target | GET | `api/v2/ads/get_product_recommended_roi_target` | `get_product_recommended_roi_target.py` | [apis/get-product-recommended-roi-target.md](./apis/get-product-recommended-roi-target.md) |\r\n| 19 | get_recommended_item_list | GET | `api/v2/ads/get_recommended_item_list` | `get_recommended_item_list.py` | [apis/get-recommended-item-list.md](./apis/get-recommended-item-list.md) |\r\n| 20 | get_recommended_keyword_list | GET | `api/v2/ads/get_recommended_keyword_list` | `get_recommended_keyword_list.py` | [apis/get-recommended-keyword-list.md](./apis/get-recommended-keyword-list.md) |\r\n| 21 | get_shop_toggle_info | GET | `api/v2/ads/get_shop_toggle_info` | `get_shop_toggle_info.py` | [apis/get-shop-toggle-info.md](./apis/get-shop-toggle-info.md) |\r\n| 22 | get_total_balance | GET | `api/v2/ads/get_total_balance` | `get_total_balance.py` | [apis/get-total-balance.md](./apis/get-total-balance.md) |\r\n| 23 | list_gms_user_deleted_item | GET | `api/v2/ads/list_gms_user_deleted_item` | `list_gms_user_deleted_item.py` | [apis/list-gms-user-deleted-item.md](./apis/list-gms-user-deleted-item.md) |\r\n通用入口：`ads_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n### 账户与推荐\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_total_balance` | 广告账户余额 — [apis/get-total-balance.md](./apis/get-total-balance.md) |\r\n| `get_shop_toggle_info` | 自动充值、Campaign Surge 开关 — [apis/get-shop-toggle-info.md](./apis/get-shop-toggle-info.md) |\r\n| `get_recommended_keyword_list` | 推荐关键词 — [apis/get-recommended-keyword-list.md](./apis/get-recommended-keyword-list.md) |\r\n| `get_recommended_item_list` | 推荐推广商品 — [apis/get-recommended-item-list.md](./apis/get-recommended-item-list.md) |\r\n\r\n### 效果报表\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_all_cpc_ads_daily_performance` / `hourly` | 全部 CPC 广告效果 |\r\n| `get_product_campaign_daily_performance` / `hourly` | 商品广告活动效果 |\r\n| `get_gms_campaign_performance` / `get_gms_item_performance` | GMS 广告效果 |\r\n\r\n### 手动商品广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_product_level_campaign_id_list` | 商品级 campaign ID 列表 — [apis/get-product-level-campaign-id-list.md](./apis/get-product-level-campaign-id-list.md) |\r\n| `get_product_level_campaign_setting_info` | campaign 设置详情 — [apis/get-product-level-campaign-setting-info.md](./apis/get-product-level-campaign-setting-info.md) |\r\n| `create_manual_product_ads` | 创建手动选品广告 — [apis/create-manual-product-ads.md](./apis/create-manual-product-ads.md) |\r\n| `edit_manual_product_ads` / `edit_manual_product_ad_keywords` | 编辑广告/关键词 |\r\n| `get_create_product_ad_budget_suggestion` | 预算建议 — [apis/get-create-product-ad-budget-suggestion.md](./apis/get-create-product-ad-budget-suggestion.md) |\r\n| `get_product_recommended_roi_target` | 推荐 ROI — [apis/get-product-recommended-roi-target.md](./apis/get-product-recommended-roi-target.md) |\r\n\r\n### GMS 广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `check_create_gms_product_campaign_eligibility` | 创建资格检查 — [apis/check-create-gms-product-campaign-eligibility.md](./apis/check-create-gms-product-campaign-eligibility.md) |\r\n| `create_gms_product_campaign` / `edit_gms_product_campaign` | 创建/编辑 GMS campaign |\r\n| `edit_gms_item_product_campaign` | 编辑 GMS 商品 campaign — [apis/edit-gms-item-product-campaign.md](./apis/edit-gms-item-product-campaign.md) |\r\n| `list_gms_user_deleted_item` | 用户删除商品列表 — [apis/list-gms-user-deleted-item.md](./apis/list-gms-user-deleted-item.md) |\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| errcode | 含义 | 建议 |\r\n|---------|------|------|\r\n| 1002 | 参数/未登录 | 检查 shopId 与 API Key |\r\n| 1003 | 代理/网络异常 | 稍后重试 |\r\n| 1004 | 无 **AD** 授权记录 | 即使店铺有 ERP，也须 auth 发起 `appType=ad` |\r\n| 1005 | Token 失效或 path 未白名单 | 重新 AD 授权；确认 `api/v2/ads/...` |\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\nexport KEY=$LINKFOXAGENT_API_KEY\r\nBASE=https://tool-gateway.linkfox.com\r\n\r\n# 业务转发：只传 path + shopId（服务端注入 AD token）\r\ncurl -X POST $BASE/shopee/developerProxy -H \"Authorization: $KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/ads/get_total_balance\",\r\n    \"method\": \"GET\",\r\n    \"shopId\": \"67890\"\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-ads\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"广告余额查询正常\"}'\r\n```\n\nFile v1.0.4:references/apis/check-create-gms-product-campaign-eligibility.md\n\n# check_create_gms_product_campaign_eligibility\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/check_create_gms_product_campaign_eligibility.py` |\n| Method / path | GET `api/v2/ads/check_create_gms_product_campaign_eligibility` |\n| 官方文档 | [check_create_gms_product_campaign_eligibility](https://open.shopee.com/documents/v2/v2.ads.check_create_gms_product_campaign_eligibility?module=117&type=1) |\n| 用途 | GMS product campaign eligibility |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：GMS product campaign eligibility\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/check_create_gms_product_campaign_eligibility.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"check_create_gms_product_campaign_eligibility\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`checkCreateGmsProductCampaignEligibility`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/create-gms-product-campaign.md\n\n# create_gms_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/create_gms_product_campaign.py` |\n| Method / path | POST `api/v2/ads/create_gms_product_campaign` |\n| 官方文档 | [create_gms_product_campaign](https://open.shopee.com/documents/v2/v2.ads.create_gms_product_campaign?module=117&type=1) |\n| 用途 | Create GMS product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Create GMS product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/create_gms_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"create_gms_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`createGmsProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/create-manual-product-ads.md\n\n# create_manual_product_ads\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/create_manual_product_ads.py` |\n| Method / path | POST `api/v2/ads/create_manual_product_ads` |\n| 官方文档 | [create_manual_product_ads](https://open.shopee.com/documents/v2/v2.ads.create_manual_product_ads?module=117&type=1) |\n| 用途 | Create manual selection product ads; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Create manual selection product ads; pass full body\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/create_manual_product_ads.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"create_manual_product_ads\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`createManualProductAds`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/edit-gms-item-product-campaign.md\n\n# edit_gms_item_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_gms_item_product_campaign.py` |\n| Method / path | POST `api/v2/ads/edit_gms_item_product_campaign` |\n| 官方文档 | [edit_gms_item_product_campaign](https://open.shopee.com/documents/v2/v2.ads.edit_gms_item_product_campaign?module=117&type=1) |\n| 用途 | Edit GMS item product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit GMS item product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_gms_item_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_gms_item_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editGmsItemProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/edit-gms-product-campaign.md\n\n# edit_gms_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_gms_product_campaign.py` |\n| Method / path | POST `api/v2/ads/edit_gms_product_campaign` |\n| 官方文档 | [edit_gms_product_campaign](https://open.shopee.com/documents/v2/v2.ads.edit_gms_product_campaign?module=117&type=1) |\n| 用途 | Edit GMS product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit GMS product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_gms_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_gms_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editGmsProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/edit-manual-product-ad-keywords.md\n\n# edit_manual_product_ad_keywords\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_manual_product_ad_keywords.py` |\n| Method / path | POST `api/v2/ads/edit_manual_product_ad_keywords` |\n| 官方文档 | [edit_manual_product_ad_keywords](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ad_keywords?module=117&type=1) |\n| 用途 | Edit manual product ad keywords |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit manual product ad keywords\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_manual_product_ad_keywords.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_manual_product_ad_keywords\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editManualProductAdKeywords`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/edit-manual-product-ads.md\n\n# edit_manual_product_ads\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_manual_product_ads.py` |\n| Method / path | POST `api/v2/ads/edit_manual_product_ads` |\n| 官方文档 | [edit_manual_product_ads](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ads?module=117&type=1) |\n| 用途 | Edit manual product ads |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit manual product ads\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/edit_manual_product_ads.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"edit_manual_product_ads\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editManualProductAds`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/get-ads-facil-shop-rate.md\n\n# get_ads_facil_shop_rate\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_ads_facil_shop_rate.py` |\n| Method / path | GET `api/v2/ads/get_ads_facil_shop_rate` |\n| 官方文档 | [get_ads_facil_shop_rate](https://open.shopee.com/documents/v2/v2.ads.get_ads_facil_shop_rate?module=117&type=1) |\n| 用途 | Ads Facil program shop rate (official: facil) |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Ads Facil program shop rate (official: facil)\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_ads_facil_shop_rate.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"get_ads_facil_shop_rate\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAdsFacilShopRate`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.4:references/apis/get-all-cpc-ads-daily-performance.md\n\n# get_all_cpc_ads_daily_performance\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/get_all_cpc_ads_daily_performance.py` |\n| Method / path | GET `api/v2/ads/get_all_cpc_ads_daily_performance` |\n| 官方文档 | [get_all_cpc_ads_daily_performance](https://open.shopee.com/documents/v2/v2.ads.get_all_cpc_ads_daily_performance?module=117&type=1) |\n| 用途 | All CPC ads daily performance |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：All CPC ads daily performance\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/get_all_cpc_ads_daily_performance.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"get_all_cpc_ads_daily_performance\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`getAllCpcAdsDailyPerformance`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nArchive v1.0.3: 32 files, 30608 bytes\n\nFiles: references/api.md (9218b), scripts/_ads_api_runner.py (4247b), scripts/_ads_endpoints.py (6269b), scripts/_shopee_ads_common.py (11727b), scripts/ads_api.py (994b), scripts/check_auth_dependency.py (3975b), scripts/check_create_gms_product_campaign_eligibility.py (871b), scripts/create_gms_product_campaign.py (763b), scripts/create_manual_product_ads.py (751b), scripts/edit_gms_item_product_campaign.py (781b), scripts/edit_gms_product_campaign.py (751b), scripts/edit_manual_product_ad_keywords.py (787b), scripts/edit_manual_product_ads.py (739b), scripts/get_ads_facil_shop_rate.py (739b), scripts/get_all_cpc_ads_daily_performance.py (799b), scripts/get_all_cpc_ads_hourly_performance.py (805b), scripts/get_create_product_ad_budget_suggestion.py (835b), scripts/get_gms_campaign_performance.py (769b), scripts/get_gms_item_performance.py (745b), scripts/get_product_campaign_daily_performance.py (829b), scripts/get_product_campaign_hourly_performance.py (835b), scripts/get_product_level_campaign_id_list.py (805b), scripts/get_product_level_campaign_setting_info.py (835b), scripts/get_product_recommended_roi_target.py (805b), scripts/get_recommended_item_list.py (751b), scripts/get_recommended_keyword_list.py (769b), scripts/get_shop_toggle_info.py (721b), scripts/get_total_balance.py (703b), scripts/list_gms_user_deleted_item.py (757b), skill-card.md (2353b), SKILL.md (6512b), _meta.json (143b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: linkfox-shopee-store-ads\ndescription: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。\n---\n\n# Shopee 店铺 Ads\n\nShopee Open Platform **Ads 模块**（23 个 API，不含即将下线的 auto product ads）。**依赖 `linkfox-shopee-store-auth`**：先取 `accessToken`，再经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/ads/...`）。\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/linkfox-shopee-store-ads-<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\nAds 模块索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\n\n---\n\n## Prerequisites（必须先读）\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`** 并授权店铺。\n2. **不要**在本 skill 内实现授权/令牌逻辑。\n3. Ads API 需 Shopee **额外广告权限**；并非所有站点/店铺可用。\n\n---\n\n## Core Concepts\n\n- **转发链路**：`storeTokens` → `developerProxy` → 紫鸟 `shopee-proxy` → Shopee API\n- **余额**：`get_total_balance` 查广告账户余额\n- **手动商品广告**：`create_manual_product_ads` → `edit_manual_product_ads` / `edit_manual_product_ad_keywords`\n- **效果报表**：`get_all_cpc_ads_*_performance`、`get_product_campaign_*_performance`\n- **GMS**：`create_gms_product_campaign` 等系列\n- **未纳入**：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\n- **联盟营销 AMS**（module=127）→ 非本 skill\n\n## 可用脚本（Ads 模块 23 个 API）\n\n| 分组 | 脚本 |\n|------|------|\n| 账户/推荐 | `get_total_balance.py`、`get_shop_toggle_info.py`、`get_recommended_keyword_list.py`、`get_recommended_item_list.py` |\n| CPC 效果 | `get_all_cpc_ads_daily_performance.py`、`get_all_cpc_ads_hourly_performance.py` |\n| 商品广告 | `create_manual_product_ads.py`、`edit_manual_product_ads.py`、`get_product_level_campaign_id_list.py` 等 |\n| GMS | `create_gms_product_campaign.py`、`get_gms_campaign_performance.py` 等 |\n| 通用入口 | `ads_api.py`（JSON 含 `api` 字段） |\n\n完整列表见 `references/api.md`。共享：`_shopee_ads_common.py`、`_ads_endpoints.py`、`_ads_api_runner.py`。\n\n## Usage Scenarios\n\n### 1. 查余额与推荐\n1. `get_total_balance.py`\n2. `get_recommended_item_list.py` / `get_recommended_keyword_list.py`\n\n### 2. 创建手动商品广告\n1. `get_create_product_ad_budget_suggestion.py`\n2. `create_manual_product_ads.py` 传完整 `body`\n3. `get_product_campaign_daily_performance.py` 查效果\n\n## 调用原则\n\n- 先看 **`developerProxy.httpStatus`**，再读 `*Response` 字段\n- GET：业务参数放 JSON 顶层\n- POST：复杂接口传 `body`；create/edit 建议传唯一 `reference_id` 防重复\n- 每个脚本 docstring 含 **官方文档 URL**（`module=117`）\n\n## Not Applicable\n\n- 店铺授权 → `linkfox-shopee-store-auth`\n- 商品 listing → `linkfox-shopee-store-product`\n- 联盟营销 AMS（module=127）→ `linkfox-shopee-store-ams`\n- Amazon 广告 → `linkfox-amazon-ads-*` 系列\n\n## 积分消耗规则\n\n不消耗积分。\n\n**Feedback:**\n\nAuto-detect and report feedback via the Feedback API when any of the following apply:\n1. The functionality or purpose described in this skill does not match actual behavior\n2. The skill's results do not match the user's intent\n3. The user expresses dissatisfaction or praise about this skill\n4. Anything you believe could be improved\n\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\n\n\n---\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-ads\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1783945154006\n}\n\nFile v1.0.3:references/api.md\n\n# linkfox-shopee-store-ads — 参数与字段参考\r\n\r\nShopee **Ads 模块**全部 23 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\r\n\r\n> 未纳入：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n\r\n## 通用约定\r\n\r\n- **Base URL**：`${LINKFOX_TOOL_GATEWAY}`\r\n- **Method**：POST（网关），上游 Method 见各接口\r\n- **Auth**：Header `Authorization: <api_key>`（`LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY`）（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\r\n- **流程**：`POST /shopee/storeTokens` → `POST /shopee/developerProxy`\r\n- **path**：须 `api/v2/ads/...`\r\n- **标识**：店铺级广告 API，通常传 **`shopId`**\r\n- **权限**：Ads API 需 Shopee 额外开通广告权限；并非所有站点可用\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.ads.{api}?module=117&type=1`\r\n- **复杂 POST**（如 `create_manual_product_ads`）：推荐传完整 `body`；日期格式常为 DD-MM-YYYY\r\n\r\n---\r\n\r\n## Ads 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | check_create_gms_product_campaign_eligibility | GET | `api/v2/ads/check_create_gms_product_campaign_eligibility` | `check_create_gms_product_campaign_eligibility.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.check_create_gms_product_campaign_eligibility?module=117&type=1) |\r\n| 2 | create_gms_product_campaign | POST | `api/v2/ads/create_gms_product_campaign` | `create_gms_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.create_gms_product_campaign?module=117&type=1) |\r\n| 3 | create_manual_product_ads | POST | `api/v2/ads/create_manual_product_ads` | `create_manual_product_ads.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.create_manual_product_ads?module=117&type=1) |\r\n| 4 | edit_gms_item_product_campaign | POST | `api/v2/ads/edit_gms_item_product_campaign` | `edit_gms_item_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_gms_item_product_campaign?module=117&type=1) |\r\n| 5 | edit_gms_product_campaign | POST | `api/v2/ads/edit_gms_product_campaign` | `edit_gms_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_gms_product_campaign?module=117&type=1) |\r\n| 6 | edit_manual_product_ad_keywords | POST | `api/v2/ads/edit_manual_product_ad_keywords` | `edit_manual_product_ad_keywords.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ad_keywords?module=117&type=1) |\r\n| 7 | edit_manual_product_ads | POST | `api/v2/ads/edit_manual_product_ads` | `edit_manual_product_ads.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ads?module=117&type=1) |\r\n| 8 | get_ads_facil_shop_rate | GET | `api/v2/ads/get_ads_facil_shop_rate` | `get_ads_facil_shop_rate.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_ads_facil_shop_rate?module=117&type=1) |\r\n| 9 | get_all_cpc_ads_daily_performance | GET | `api/v2/ads/get_all_cpc_ads_daily_performance` | `get_all_cpc_ads_daily_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_all_cpc_ads_daily_performance?module=117&type=1) |\r\n| 10 | get_all_cpc_ads_hourly_performance | GET | `api/v2/ads/get_all_cpc_ads_hourly_performance` | `get_all_cpc_ads_hourly_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_all_cpc_ads_hourly_performance?module=117&type=1) |\r\n| 11 | get_create_product_ad_budget_suggestion | GET | `api/v2/ads/get_create_product_ad_budget_suggestion` | `get_create_product_ad_budget_suggestion.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_create_product_ad_budget_suggestion?module=117&type=1) |\r\n| 12 | get_gms_campaign_performance | GET | `api/v2/ads/get_gms_campaign_performance` | `get_gms_campaign_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_gms_campaign_performance?module=117&type=1) |\r\n| 13 | get_gms_item_performance | GET | `api/v2/ads/get_gms_item_performance` | `get_gms_item_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_gms_item_performance?module=117&type=1) |\r\n| 14 | get_product_campaign_daily_performance | GET | `api/v2/ads/get_product_campaign_daily_performance` | `get_product_campaign_daily_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_campaign_daily_performance?module=117&type=1) |\r\n| 15 | get_product_campaign_hourly_performance | GET | `api/v2/ads/get_product_campaign_hourly_performance` | `get_product_campaign_hourly_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_campaign_hourly_performance?module=117&type=1) |\r\n| 16 | get_product_level_campaign_id_list | GET | `api/v2/ads/get_product_level_campaign_id_list` | `get_product_level_campaign_id_list.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_level_campaign_id_list?module=117&type=1) |\r\n| 17 | get_product_level_campaign_setting_info | GET | `api/v2/ads/get_product_level_campaign_setting_info` | `get_product_level_campaign_setting_info.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_level_campaign_setting_info?module=117&type=1) |\r\n| 18 | get_product_recommended_roi_target | GET | `api/v2/ads/get_product_recommended_roi_target` | `get_product_recommended_roi_target.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_recommended_roi_target?module=117&type=1) |\r\n| 19 | get_recommended_item_list | GET | `api/v2/ads/get_recommended_item_list` | `get_recommended_item_list.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_recommended_item_list?module=117&type=1) |\r\n| 20 | get_recommended_keyword_list | GET | `api/v2/ads/get_recommended_keyword_list` | `get_recommended_keyword_list.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_recommended_keyword_list?module=117&type=1) |\r\n| 21 | get_shop_toggle_info | GET | `api/v2/ads/get_shop_toggle_info` | `get_shop_toggle_info.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_shop_toggle_info?module=117&type=1) |\r\n| 22 | get_total_balance | GET | `api/v2/ads/get_total_balance` | `get_total_balance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1) |\r\n| 23 | list_gms_user_deleted_item | GET | `api/v2/ads/list_gms_user_deleted_item` | `list_gms_user_deleted_item.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.list_gms_user_deleted_item?module=117&type=1) |\r\n通用入口：`ads_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n### 账户与推荐\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_total_balance` | 广告账户余额 |\r\n| `get_shop_toggle_info` | 自动充值、Campaign Surge 开关 |\r\n| `get_recommended_keyword_list` | 推荐关键词 |\r\n| `get_recommended_item_list` | 推荐推广商品 |\r\n\r\n### 效果报表\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_all_cpc_ads_daily_performance` / `hourly` | 全部 CPC 广告效果 |\r\n| `get_product_campaign_daily_performance` / `hourly` | 商品广告活动效果 |\r\n| `get_gms_campaign_performance` / `get_gms_item_performance` | GMS 广告效果 |\r\n\r\n### 手动商品广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_product_level_campaign_id_list` | 商品级 campaign ID 列表 |\r\n| `get_product_level_campaign_setting_info` | campaign 设置详情 |\r\n| `create_manual_product_ads` | 创建手动选品广告 |\r\n| `edit_manual_product_ads` / `edit_manual_product_ad_keywords` | 编辑广告/关键词 |\r\n| `get_create_product_ad_budget_suggestion` | 预算建议 |\r\n| `get_product_recommended_roi_target` | 推荐 ROI |\r\n\r\n### GMS 广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `check_create_gms_product_campaign_eligibility` | 创建资格检查 |\r\n| `create_gms_product_campaign` / `edit_gms_product_campaign` | 创建/编辑 GMS campaign |\r\n| `edit_gms_item_product_campaign` | 编辑 GMS 商品 campaign |\r\n| `list_gms_user_deleted_item` | 用户删除商品列表 |\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| errcode | 含义 | 建议 |\r\n|---------|------|------|\r\n| 1002 | 参数/未登录 | 检查 shopId 与 API Key |\r\n| 1003 | 代理/网络异常 | 重试 |\r\n| 1004 | 无授权记录 | auth skill |\r\n| 1005 | path 未白名单 | 确认 `api/v2/ads/...` |\r\n| HTTP 402 | 计费/积分不足 | 按 SKILL.md 的 **## 解决认证和积分问题** 处理 |\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\nexport KEY=${LINKFOX_AGENT_API_KEY}\r\nBASE=${LINKFOX_TOOL_GATEWAY}\r\n\r\ncurl -X POST $BASE/shopee/developerProxy -H \"Authorization: $KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/ads/get_total_balance\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\",\r\n    \"shopId\": \"67890\"\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-ads\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"广告余额查询正常\"}'\r\n```\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nHelps agents work with Shopee in-store advertising for authorized shops, including ad balance checks, CPC and campaign performance reports, manual product ads, GMS campaigns, keyword recommendations, and campaign edits. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[linkfox-ai](https://clawhub.ai/user/linkfox-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal Shopee sellers, e-commerce operators, and developers use this skill to inspect ad account balances, retrieve advertising performance reports, and create or edit product ad campaigns for stores they have authorized. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can create or edit live Shopee advertising campaigns for authorized accounts. <br>\nMitigation: Require explicit user approval before campaign create or edit calls and use only Shopee ad accounts the user intends the agent to manage. <br>\nRisk: Full Shopee Ads API responses are persistently stored in local linkfox response folders. <br>\nMitigation: Review before installing in workspaces with sensitive business data and periodically delete retained response folders 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-ads) <br>\n- [Shopee Ads API reference](references/api.md) <br>\n- [Shopee Open Platform Ads documentation](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Shell commands, Configuration, JSON files, Guidance] <br>\n**Output Format:** [Markdown guidance with shell commands and saved JSON API responses] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Scripts save full API responses under a local linkfox response folder and may print either full JSON or summaries depending on response size.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (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.2: 32 files, 30074 bytes\n\nFiles: references/api.md (9044b), scripts/_ads_api_runner.py (4247b), scripts/_ads_endpoints.py (6269b), scripts/_shopee_ads_common.py (11628b), scripts/ads_api.py (994b), scripts/check_auth_dependency.py (3975b), scripts/check_create_gms_product_campaign_eligibility.py (871b), scripts/create_gms_product_campaign.py (763b), scripts/create_manual_product_ads.py (751b), scripts/edit_gms_item_product_campaign.py (781b), scripts/edit_gms_product_campaign.py (751b), scripts/edit_manual_product_ad_keywords.py (787b), scripts/edit_manual_product_ads.py (739b), scripts/get_ads_facil_shop_rate.py (739b), scripts/get_all_cpc_ads_daily_performance.py (799b), scripts/get_all_cpc_ads_hourly_performance.py (805b), scripts/get_create_product_ad_budget_suggestion.py (835b), scripts/get_gms_campaign_performance.py (769b), scripts/get_gms_item_performance.py (745b), scripts/get_product_campaign_daily_performance.py (829b), scripts/get_product_campaign_hourly_performance.py (835b), scripts/get_product_level_campaign_id_list.py (805b), scripts/get_product_level_campaign_setting_info.py (835b), scripts/get_product_recommended_roi_target.py (805b), scripts/get_recommended_item_list.py (751b), scripts/get_recommended_keyword_list.py (769b), scripts/get_shop_toggle_info.py (721b), scripts/get_total_balance.py (703b), scripts/list_gms_user_deleted_item.py (757b), skill-card.md (2895b), SKILL.md (5475b), _meta.json (143b)\n\nFile v1.0.2:SKILL.md\n\n---\r\nname: linkfox-shopee-store-ads\r\ndescription: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。\r\n---\r\n\r\n# Shopee 店铺 Ads\r\n\r\nShopee Open Platform **Ads 模块**（23 个 API，不含即将下线的 auto product ads）。**依赖 `linkfox-shopee-store-auth`**：先取 `accessToken`，再经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/ads/...`）。\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/linkfox-shopee-store-ads-<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\nAds 模块索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&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. **不要**在本 skill 内实现授权/令牌逻辑。\r\n3. Ads API 需 Shopee **额外广告权限**；并非所有站点/店铺可用。\r\n\r\n---\r\n\r\n## Core Concepts\r\n\r\n- **转发链路**：`storeTokens` → `developerProxy` → 紫鸟 `shopee-proxy` → Shopee API\r\n- **余额**：`get_total_balance` 查广告账户余额\r\n- **手动商品广告**：`create_manual_product_ads` → `edit_manual_product_ads` / `edit_manual_product_ad_keywords`\r\n- **效果报表**：`get_all_cpc_ads_*_performance`、`get_product_campaign_*_performance`\r\n- **GMS**：`create_gms_product_campaign` 等系列\r\n- **未纳入**：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n- **联盟营销 AMS**（module=127）→ 非本 skill\r\n\r\n## 可用脚本（Ads 模块 23 个 API）\r\n\r\n| 分组 | 脚本 |\r\n|------|------|\r\n| 账户/推荐 | `get_total_balance.py`、`get_shop_toggle_info.py`、`get_recommended_keyword_list.py`、`get_recommended_item_list.py` |\r\n| CPC 效果 | `get_all_cpc_ads_daily_performance.py`、`get_all_cpc_ads_hourly_performance.py` |\r\n| 商品广告 | `create_manual_product_ads.py`、`edit_manual_product_ads.py`、`get_product_level_campaign_id_list.py` 等 |\r\n| GMS | `create_gms_product_campaign.py`、`get_gms_campaign_performance.py` 等 |\r\n| 通用入口 | `ads_api.py`（JSON 含 `api` 字段） |\r\n\r\n完整列表见 `references/api.md`。共享：`_shopee_ads_common.py`、`_ads_endpoints.py`、`_ads_api_runner.py`。\r\n\r\n## Usage Scenarios\r\n\r\n### 1. 查余额与推荐\r\n1. `get_total_balance.py`\r\n2. `get_recommended_item_list.py` / `get_recommended_keyword_list.py`\r\n\r\n### 2. 创建手动商品广告\r\n1. `get_create_product_ad_budget_suggestion.py`\r\n2. `create_manual_product_ads.py` 传完整 `body`\r\n3. `get_product_campaign_daily_performance.py` 查效果\r\n\r\n## 调用原则\r\n\r\n- 先看 **`developerProxy.httpStatus`**，再读 `*Response` 字段\r\n- GET：业务参数放 JSON 顶层\r\n- POST：复杂接口传 `body`；create/edit 建议传唯一 `reference_id` 防重复\r\n- 每个脚本 docstring 含 **官方文档 URL**（`module=117`）\r\n\r\n## Not Applicable\r\n\r\n- 店铺授权 → `linkfox-shopee-store-auth`\r\n- 商品 listing → `linkfox-shopee-store-product`\r\n- 联盟营销 AMS（module=127）→ `linkfox-shopee-store-ams`\r\n- Amazon 广告 → `linkfox-amazon-ads-*` 系列\r\n\r\n**Feedback:**\r\n\r\nAuto-detect and report feedback via the Feedback API when any of the following apply:\r\n1. The functionality or purpose described in this skill does not match actual behavior\r\n2. The skill's results do not match the user's intent\r\n3. The user expresses dissatisfaction or praise about this skill\r\n4. Anything you believe could be improved\r\n\r\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\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-ads\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1783337261186\n}\n\nFile v1.0.2:references/api.md\n\n# linkfox-shopee-store-ads — 参数与字段参考\r\n\r\nShopee **Ads 模块**全部 23 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\r\n\r\n> 未纳入：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n\r\n## 通用约定\r\n\r\n- **Base URL**：`${LINKFOX_TOOL_GATEWAY}`\r\n- **Method**：POST（网关），上游 Method 见各接口\r\n- **Auth**：Header `Authorization: <api_key>`（`LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY`）\r\n- **流程**：`POST /shopee/storeTokens` → `POST /shopee/developerProxy`\r\n- **path**：须 `api/v2/ads/...`\r\n- **标识**：店铺级广告 API，通常传 **`shopId`**\r\n- **权限**：Ads API 需 Shopee 额外开通广告权限；并非所有站点可用\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.ads.{api}?module=117&type=1`\r\n- **复杂 POST**（如 `create_manual_product_ads`）：推荐传完整 `body`；日期格式常为 DD-MM-YYYY\r\n\r\n---\r\n\r\n## Ads 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | check_create_gms_product_campaign_eligibility | GET | `api/v2/ads/check_create_gms_product_campaign_eligibility` | `check_create_gms_product_campaign_eligibility.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.check_create_gms_product_campaign_eligibility?module=117&type=1) |\r\n| 2 | create_gms_product_campaign | POST | `api/v2/ads/create_gms_product_campaign` | `create_gms_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.create_gms_product_campaign?module=117&type=1) |\r\n| 3 | create_manual_product_ads | POST | `api/v2/ads/create_manual_product_ads` | `create_manual_product_ads.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.create_manual_product_ads?module=117&type=1) |\r\n| 4 | edit_gms_item_product_campaign | POST | `api/v2/ads/edit_gms_item_product_campaign` | `edit_gms_item_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_gms_item_product_campaign?module=117&type=1) |\r\n| 5 | edit_gms_product_campaign | POST | `api/v2/ads/edit_gms_product_campaign` | `edit_gms_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_gms_product_campaign?module=117&type=1) |\r\n| 6 | edit_manual_product_ad_keywords | POST | `api/v2/ads/edit_manual_product_ad_keywords` | `edit_manual_product_ad_keywords.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ad_keywords?module=117&type=1) |\r\n| 7 | edit_manual_product_ads | POST | `api/v2/ads/edit_manual_product_ads` | `edit_manual_product_ads.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ads?module=117&type=1) |\r\n| 8 | get_ads_facil_shop_rate | GET | `api/v2/ads/get_ads_facil_shop_rate` | `get_ads_facil_shop_rate.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_ads_facil_shop_rate?module=117&type=1) |\r\n| 9 | get_all_cpc_ads_daily_performance | GET | `api/v2/ads/get_all_cpc_ads_daily_performance` | `get_all_cpc_ads_daily_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_all_cpc_ads_daily_performance?module=117&type=1) |\r\n| 10 | get_all_cpc_ads_hourly_performance | GET | `api/v2/ads/get_all_cpc_ads_hourly_performance` | `get_all_cpc_ads_hourly_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_all_cpc_ads_hourly_performance?module=117&type=1) |\r\n| 11 | get_create_product_ad_budget_suggestion | GET | `api/v2/ads/get_create_product_ad_budget_suggestion` | `get_create_product_ad_budget_suggestion.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_create_product_ad_budget_suggestion?module=117&type=1) |\r\n| 12 | get_gms_campaign_performance | GET | `api/v2/ads/get_gms_campaign_performance` | `get_gms_campaign_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_gms_campaign_performance?module=117&type=1) |\r\n| 13 | get_gms_item_performance | GET | `api/v2/ads/get_gms_item_performance` | `get_gms_item_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_gms_item_performance?module=117&type=1) |\r\n| 14 | get_product_campaign_daily_performance | GET | `api/v2/ads/get_product_campaign_daily_performance` | `get_product_campaign_daily_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_campaign_daily_performance?module=117&type=1) |\r\n| 15 | get_product_campaign_hourly_performance | GET | `api/v2/ads/get_product_campaign_hourly_performance` | `get_product_campaign_hourly_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_campaign_hourly_performance?module=117&type=1) |\r\n| 16 | get_product_level_campaign_id_list | GET | `api/v2/ads/get_product_level_campaign_id_list` | `get_product_level_campaign_id_list.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_level_campaign_id_list?module=117&type=1) |\r\n| 17 | get_product_level_campaign_setting_info | GET | `api/v2/ads/get_product_level_campaign_setting_info` | `get_product_level_campaign_setting_info.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_level_campaign_setting_info?module=117&type=1) |\r\n| 18 | get_product_recommended_roi_target | GET | `api/v2/ads/get_product_recommended_roi_target` | `get_product_recommended_roi_target.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_recommended_roi_target?module=117&type=1) |\r\n| 19 | get_recommended_item_list | GET | `api/v2/ads/get_recommended_item_list` | `get_recommended_item_list.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_recommended_item_list?module=117&type=1) |\r\n| 20 | get_recommended_keyword_list | GET | `api/v2/ads/get_recommended_keyword_list` | `get_recommended_keyword_list.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_recommended_keyword_list?module=117&type=1) |\r\n| 21 | get_shop_toggle_info | GET | `api/v2/ads/get_shop_toggle_info` | `get_shop_toggle_info.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_shop_toggle_info?module=117&type=1) |\r\n| 22 | get_total_balance | GET | `api/v2/ads/get_total_balance` | `get_total_balance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1) |\r\n| 23 | list_gms_user_deleted_item | GET | `api/v2/ads/list_gms_user_deleted_item` | `list_gms_user_deleted_item.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.list_gms_user_deleted_item?module=117&type=1) |\r\n通用入口：`ads_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n### 账户与推荐\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_total_balance` | 广告账户余额 |\r\n| `get_shop_toggle_info` | 自动充值、Campaign Surge 开关 |\r\n| `get_recommended_keyword_list` | 推荐关键词 |\r\n| `get_recommended_item_list` | 推荐推广商品 |\r\n\r\n### 效果报表\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_all_cpc_ads_daily_performance` / `hourly` | 全部 CPC 广告效果 |\r\n| `get_product_campaign_daily_performance` / `hourly` | 商品广告活动效果 |\r\n| `get_gms_campaign_performance` / `get_gms_item_performance` | GMS 广告效果 |\r\n\r\n### 手动商品广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_product_level_campaign_id_list` | 商品级 campaign ID 列表 |\r\n| `get_product_level_campaign_setting_info` | campaign 设置详情 |\r\n| `create_manual_product_ads` | 创建手动选品广告 |\r\n| `edit_manual_product_ads` / `edit_manual_product_ad_keywords` | 编辑广告/关键词 |\r\n| `get_create_product_ad_budget_suggestion` | 预算建议 |\r\n| `get_product_recommended_roi_target` | 推荐 ROI |\r\n\r\n### GMS 广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `check_create_gms_product_campaign_eligibility` | 创建资格检查 |\r\n| `create_gms_product_campaign` / `edit_gms_product_campaign` | 创建/编辑 GMS campaign |\r\n| `edit_gms_item_product_campaign` | 编辑 GMS 商品 campaign |\r\n| `list_gms_user_deleted_item` | 用户删除商品列表 |\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| errcode | 含义 | 建议 |\r\n|---------|------|------|\r\n| 1002 | 参数/未登录 | 检查 shopId 与 API Key |\r\n| 1003 | 代理/网络异常 | 重试 |\r\n| 1004 | 无授权记录 | auth skill |\r\n| 1005 | path 未白名单 | 确认 `api/v2/ads/...` |\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\nexport KEY=${LINKFOX_AGENT_API_KEY}\r\nBASE=${LINKFOX_TOOL_GATEWAY}\r\n\r\ncurl -X POST $BASE/shopee/developerProxy -H \"Authorization: $KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/ads/get_total_balance\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\",\r\n    \"shopId\": \"67890\"\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-ads\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"广告余额查询正常\"}'\r\n```\n\nFile v1.0.2:skill-card.md\n\n## Description: <br>\nProvides an agent-facing interface to Shopee Open Platform Ads APIs for checking balances, recommendations, campaign performance, and creating or editing product and GMS ad campaigns through LinkFox. <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>\nE-commerce operators and agents use this skill to inspect Shopee advertising account state, retrieve performance and recommendation data, and prepare or execute product ad campaign changes for authorized stores. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can create or edit live Shopee advertising campaigns and affect ad spend. <br>\nMitigation: Require explicit user confirmation before create or edit operations, especially changes involving campaign budget, bidding, keywords, products, or ROI targets. <br>\nRisk: The skill handles LinkFox credentials and authorized Shopee ad account access. <br>\nMitigation: Use it only in trusted agent environments with authorized accounts and avoid exposing API keys in prompts, logs, or shared terminals. <br>\nRisk: Saved response files may contain ad account details, performance data, recommendations, or other sensitive business information. <br>\nMitigation: Run it in a private workspace, review files written under linkfox session data directories, and delete saved responses when they are no longer needed. <br>\nRisk: The artifact includes feedback reporting behavior that may send skill feedback to LinkFox. <br>\nMitigation: Avoid including confidential business data in feedback content and review the feedback behavior before deployment in sensitive environments. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/linkfox-ai/skills/linkfox-shopee-store-ads) <br>\n- [Shopee Ads API reference](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1) <br>\n- [Skill API reference](references/api.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, files] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON API or script outputs saved as files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Full responses are written under linkfox session data directories; 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: 31 files, 28616 bytes\n\nFiles: references/api.md (9044b), scripts/_ads_api_runner.py (4247b), scripts/_ads_endpoints.py (6269b), scripts/_shopee_ads_common.py (11628b), scripts/ads_api.py (994b), scripts/check_auth_dependency.py (3975b), scripts/check_create_gms_product_campaign_eligibility.py (871b), scripts/create_gms_product_campaign.py (763b), scripts/create_manual_product_ads.py (751b), scripts/edit_gms_item_product_campaign.py (781b), scripts/edit_gms_product_campaign.py (751b), scripts/edit_manual_product_ad_keywords.py (787b), scripts/edit_manual_product_ads.py (739b), scripts/get_ads_facil_shop_rate.py (739b), scripts/get_all_cpc_ads_daily_performance.py (799b), scripts/get_all_cpc_ads_hourly_performance.py (805b), scripts/get_create_product_ad_budget_suggestion.py (835b), scripts/get_gms_campaign_performance.py (769b), scripts/get_gms_item_performance.py (745b), scripts/get_product_campaign_daily_performance.py (829b), scripts/get_product_campaign_hourly_performance.py (835b), scripts/get_product_level_campaign_id_list.py (805b), scripts/get_product_level_campaign_setting_info.py (835b), scripts/get_product_recommended_roi_target.py (805b), scripts/get_recommended_item_list.py (751b), scripts/get_recommended_keyword_list.py (769b), scripts/get_shop_toggle_info.py (721b), scripts/get_total_balance.py (703b), scripts/list_gms_user_deleted_item.py (757b), SKILL.md (5475b), _meta.json (143b)\n\nFile v1.0.1:SKILL.md\n\n---\r\nname: linkfox-shopee-store-ads\r\ndescription: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。\r\n---\r\n\r\n# Shopee 店铺 Ads\r\n\r\nShopee Open Platform **Ads 模块**（23 个 API，不含即将下线的 auto product ads）。**依赖 `linkfox-shopee-store-auth`**：先取 `accessToken`，再经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/ads/...`）。\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/linkfox-shopee-store-ads-<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\nAds 模块索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&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. **不要**在本 skill 内实现授权/令牌逻辑。\r\n3. Ads API 需 Shopee **额外广告权限**；并非所有站点/店铺可用。\r\n\r\n---\r\n\r\n## Core Concepts\r\n\r\n- **转发链路**：`storeTokens` → `developerProxy` → 紫鸟 `shopee-proxy` → Shopee API\r\n- **余额**：`get_total_balance` 查广告账户余额\r\n- **手动商品广告**：`create_manual_product_ads` → `edit_manual_product_ads` / `edit_manual_product_ad_keywords`\r\n- **效果报表**：`get_all_cpc_ads_*_performance`、`get_product_campaign_*_performance`\r\n- **GMS**：`create_gms_product_campaign` 等系列\r\n- **未纳入**：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n- **联盟营销 AMS**（module=127）→ 非本 skill\r\n\r\n## 可用脚本（Ads 模块 23 个 API）\r\n\r\n| 分组 | 脚本 |\r\n|------|------|\r\n| 账户/推荐 | `get_total_balance.py`、`get_shop_toggle_info.py`、`get_recommended_keyword_list.py`、`get_recommended_item_list.py` |\r\n| CPC 效果 | `get_all_cpc_ads_daily_performance.py`、`get_all_cpc_ads_hourly_performance.py` |\r\n| 商品广告 | `create_manual_product_ads.py`、`edit_manual_product_ads.py`、`get_product_level_campaign_id_list.py` 等 |\r\n| GMS | `create_gms_product_campaign.py`、`get_gms_campaign_performance.py` 等 |\r\n| 通用入口 | `ads_api.py`（JSON 含 `api` 字段） |\r\n\r\n完整列表见 `references/api.md`。共享：`_shopee_ads_common.py`、`_ads_endpoints.py`、`_ads_api_runner.py`。\r\n\r\n## Usage Scenarios\r\n\r\n### 1. 查余额与推荐\r\n1. `get_total_balance.py`\r\n2. `get_recommended_item_list.py` / `get_recommended_keyword_list.py`\r\n\r\n### 2. 创建手动商品广告\r\n1. `get_create_product_ad_budget_suggestion.py`\r\n2. `create_manual_product_ads.py` 传完整 `body`\r\n3. `get_product_campaign_daily_performance.py` 查效果\r\n\r\n## 调用原则\r\n\r\n- 先看 **`developerProxy.httpStatus`**，再读 `*Response` 字段\r\n- GET：业务参数放 JSON 顶层\r\n- POST：复杂接口传 `body`；create/edit 建议传唯一 `reference_id` 防重复\r\n- 每个脚本 docstring 含 **官方文档 URL**（`module=117`）\r\n\r\n## Not Applicable\r\n\r\n- 店铺授权 → `linkfox-shopee-store-auth`\r\n- 商品 listing → `linkfox-shopee-store-product`\r\n- 联盟营销 AMS（module=127）→ `linkfox-shopee-store-ams`\r\n- Amazon 广告 → `linkfox-amazon-ads-*` 系列\r\n\r\n**Feedback:**\r\n\r\nAuto-detect and report feedback via the Feedback API when any of the following apply:\r\n1. The functionality or purpose described in this skill does not match actual behavior\r\n2. The skill's results do not match the user's intent\r\n3. The user expresses dissatisfaction or praise about this skill\r\n4. Anything you believe could be improved\r\n\r\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\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-ads\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1783067225734\n}\n\nFile v1.0.1:references/api.md\n\n# linkfox-shopee-store-ads — 参数与字段参考\r\n\r\nShopee **Ads 模块**全部 23 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\r\n\r\n> 未纳入：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n\r\n## 通用约定\r\n\r\n- **Base URL**：`${LINKFOX_TOOL_GATEWAY}`\r\n- **Method**：POST（网关），上游 Method 见各接口\r\n- **Auth**：Header `Authorization: <api_key>`（`LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY`）\r\n- **流程**：`POST /shopee/storeTokens` → `POST /shopee/developerProxy`\r\n- **path**：须 `api/v2/ads/...`\r\n- **标识**：店铺级广告 API，通常传 **`shopId`**\r\n- **权限**：Ads API 需 Shopee 额外开通广告权限；并非所有站点可用\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.ads.{api}?module=117&type=1`\r\n- **复杂 POST**（如 `create_manual_product_ads`）：推荐传完整 `body`；日期格式常为 DD-MM-YYYY\r\n\r\n---\r\n\r\n## Ads 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | check_create_gms_product_campaign_eligibility | GET | `api/v2/ads/check_create_gms_product_campaign_eligibility` | `check_create_gms_product_campaign_eligibility.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.check_create_gms_product_campaign_eligibility?module=117&type=1) |\r\n| 2 | create_gms_product_campaign | POST | `api/v2/ads/create_gms_product_campaign` | `create_gms_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.create_gms_product_campaign?module=117&type=1) |\r\n| 3 | create_manual_product_ads | POST | `api/v2/ads/create_manual_product_ads` | `create_manual_product_ads.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.create_manual_product_ads?module=117&type=1) |\r\n| 4 | edit_gms_item_product_campaign | POST | `api/v2/ads/edit_gms_item_product_campaign` | `edit_gms_item_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_gms_item_product_campaign?module=117&type=1) |\r\n| 5 | edit_gms_product_campaign | POST | `api/v2/ads/edit_gms_product_campaign` | `edit_gms_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_gms_product_campaign?module=117&type=1) |\r\n| 6 | edit_manual_product_ad_keywords | POST | `api/v2/ads/edit_manual_product_ad_keywords` | `edit_manual_product_ad_keywords.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ad_keywords?module=117&type=1) |\r\n| 7 | edit_manual_product_ads | POST | `api/v2/ads/edit_manual_product_ads` | `edit_manual_product_ads.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ads?module=117&type=1) |\r\n| 8 | get_ads_facil_shop_rate | GET | `api/v2/ads/get_ads_facil_shop_rate` | `get_ads_facil_shop_rate.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_ads_facil_shop_rate?module=117&type=1) |\r\n| 9 | get_all_cpc_ads_daily_performance | GET | `api/v2/ads/get_all_cpc_ads_daily_performance` | `get_all_cpc_ads_daily_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_all_cpc_ads_daily_performance?module=117&type=1) |\r\n| 10 | get_all_cpc_ads_hourly_performance | GET | `api/v2/ads/get_all_cpc_ads_hourly_performance` | `get_all_cpc_ads_hourly_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_all_cpc_ads_hourly_performance?module=117&type=1) |\r\n| 11 | get_create_product_ad_budget_suggestion | GET | `api/v2/ads/get_create_product_ad_budget_suggestion` | `get_create_product_ad_budget_suggestion.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_create_product_ad_budget_suggestion?module=117&type=1) |\r\n| 12 | get_gms_campaign_performance | GET | `api/v2/ads/get_gms_campaign_performance` | `get_gms_campaign_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_gms_campaign_performance?module=117&type=1) |\r\n| 13 | get_gms_item_performance | GET | `api/v2/ads/get_gms_item_performance` | `get_gms_item_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_gms_item_performance?module=117&type=1) |\r\n| 14 | get_product_campaign_daily_performance | GET | `api/v2/ads/get_product_campaign_daily_performance` | `get_product_campaign_daily_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_campaign_daily_performance?module=117&type=1) |\r\n| 15 | get_product_campaign_hourly_performance | GET | `api/v2/ads/get_product_campaign_hourly_performance` | `get_product_campaign_hourly_performance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_campaign_hourly_performance?module=117&type=1) |\r\n| 16 | get_product_level_campaign_id_list | GET | `api/v2/ads/get_product_level_campaign_id_list` | `get_product_level_campaign_id_list.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_level_campaign_id_list?module=117&type=1) |\r\n| 17 | get_product_level_campaign_setting_info | GET | `api/v2/ads/get_product_level_campaign_setting_info` | `get_product_level_campaign_setting_info.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_level_campaign_setting_info?module=117&type=1) |\r\n| 18 | get_product_recommended_roi_target | GET | `api/v2/ads/get_product_recommended_roi_target` | `get_product_recommended_roi_target.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_product_recommended_roi_target?module=117&type=1) |\r\n| 19 | get_recommended_item_list | GET | `api/v2/ads/get_recommended_item_list` | `get_recommended_item_list.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_recommended_item_list?module=117&type=1) |\r\n| 20 | get_recommended_keyword_list | GET | `api/v2/ads/get_recommended_keyword_list` | `get_recommended_keyword_list.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_recommended_keyword_list?module=117&type=1) |\r\n| 21 | get_shop_toggle_info | GET | `api/v2/ads/get_shop_toggle_info` | `get_shop_toggle_info.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_shop_toggle_info?module=117&type=1) |\r\n| 22 | get_total_balance | GET | `api/v2/ads/get_total_balance` | `get_total_balance.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1) |\r\n| 23 | list_gms_user_deleted_item | GET | `api/v2/ads/list_gms_user_deleted_item` | `list_gms_user_deleted_item.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.list_gms_user_deleted_item?module=117&type=1) |\r\n通用入口：`ads_api.py`（JSON 含 `\"api\": \"<上表 API 名>\"`）。\r\n\r\n---\r\n\r\n## 常用接口说明\r\n\r\n### 账户与推荐\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_total_balance` | 广告账户余额 |\r\n| `get_shop_toggle_info` | 自动充值、Campaign Surge 开关 |\r\n| `get_recommended_keyword_list` | 推荐关键词 |\r\n| `get_recommended_item_list` | 推荐推广商品 |\r\n\r\n### 效果报表\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_all_cpc_ads_daily_performance` / `hourly` | 全部 CPC 广告效果 |\r\n| `get_product_campaign_daily_performance` / `hourly` | 商品广告活动效果 |\r\n| `get_gms_campaign_performance` / `get_gms_item_performance` | GMS 广告效果 |\r\n\r\n### 手动商品广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `get_product_level_campaign_id_list` | 商品级 campaign ID 列表 |\r\n| `get_product_level_campaign_setting_info` | campaign 设置详情 |\r\n| `create_manual_product_ads` | 创建手动选品广告 |\r\n| `edit_manual_product_ads` / `edit_manual_product_ad_keywords` | 编辑广告/关键词 |\r\n| `get_create_product_ad_budget_suggestion` | 预算建议 |\r\n| `get_product_recommended_roi_target` | 推荐 ROI |\r\n\r\n### GMS 广告\r\n\r\n| API | 要点 |\r\n|-----|------|\r\n| `check_create_gms_product_campaign_eligibility` | 创建资格检查 |\r\n| `create_gms_product_campaign` / `edit_gms_product_campaign` | 创建/编辑 GMS campaign |\r\n| `edit_gms_item_product_campaign` | 编辑 GMS 商品 campaign |\r\n| `list_gms_user_deleted_item` | 用户删除商品列表 |\r\n\r\n---\r\n\r\n## 网关错误码\r\n\r\n| errcode | 含义 | 建议 |\r\n|---------|------|------|\r\n| 1002 | 参数/未登录 | 检查 shopId 与 API Key |\r\n| 1003 | 代理/网络异常 | 重试 |\r\n| 1004 | 无授权记录 | auth skill |\r\n| 1005 | path 未白名单 | 确认 `api/v2/ads/...` |\r\n\r\n---\r\n\r\n## curl 示例\r\n\r\n```bash\r\nexport KEY=${LINKFOX_AGENT_API_KEY}\r\nBASE=${LINKFOX_TOOL_GATEWAY}\r\n\r\ncurl -X POST $BASE/shopee/developerProxy -H \"Authorization: $KEY\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\r\n    \"path\": \"api/v2/ads/get_total_balance\",\r\n    \"method\": \"GET\",\r\n    \"accessToken\": \"xxx\",\r\n    \"shopId\": \"67890\"\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-ads\",\"sentiment\":\"POSITIVE\",\r\n       \"category\":\"OTHER\",\"content\":\"广告余额查询正常\"}'\r\n```\n\nArchive v1.0.0: 31 files, 28596 bytes\n\nFiles: references/api.md (9046b), scripts/_ads_api_runner.py (4247b), scripts/_ads_endpoints.py (6269b), scripts/_shopee_ads_common.py (11629b), scripts/ads_api.py (994b), scripts/check_auth_dependency.py (3975b), scripts/check_create_gms_product_campaign_eligibility.py (871b), scripts/create_gms_product_campaign.py (763b), scripts/create_manual_product_ads.py (751b), scripts/edit_gms_item_product_campaign.py (781b), scripts/edit_gms_product_campaign.py (751b), scripts/edit_manual_product_ad_keywords.py (787b), scripts/edit_manual_product_ads.py (739b), scripts/get_ads_facil_shop_rate.py (739b), scripts/get_all_cpc_ads_daily_performance.py (799b), scripts/get_all_cpc_ads_hourly_performance.py (805b), scripts/get_create_product_ad_budget_suggestion.py (835b), scripts/get_gms_campaign_performance.py (769b), scripts/get_gms_item_performance.py (745b), scripts/get_product_campaign_daily_performance.py (829b), scripts/get_product_campaign_hourly_performance.py (835b), scripts/get_product_level_campaign_id_list.py (805b), scripts/get_product_level_campaign_setting_info.py (835b), scripts/get_product_recommended_roi_target.py (805b), scripts/get_recommended_item_list.py (751b), scripts/get_recommended_keyword_list.py (769b), scripts/get_shop_toggle_info.py (721b), scripts/get_total_balance.py (703b), scripts/list_gms_user_deleted_item.py (757b), SKILL.md (5475b), _meta.json (143b)\n\nFile v1.0.0:SKILL.md\n\n---\r\nname: linkfox-shopee-store-ads\r\ndescription: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。\r\n---\r\n\r\n# Shopee 店铺 Ads\r\n\r\nShopee Open Platform **Ads 模块**（23 个 API，不含即将下线的 auto product ads）。**依赖 `linkfox-shopee-store-auth`**：先取 `accessToken`，再经 **`POST /shopee/developerProxy`** 转发（`path` 须 `api/v2/ads/...`）。\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/linkfox-shopee-store-ads-<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\nAds 模块索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&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. **不要**在本 skill 内实现授权/令牌逻辑。\r\n3. Ads API 需 Shopee **额外广告权限**；并非所有站点/店铺可用。\r\n\r\n---\r\n\r\n## Core Concepts\r\n\r\n- **转发链路**：`storeTokens` → `developerProxy` → 紫鸟 `shopee-proxy` → Shopee API\r\n- **余额**：`get_total_balance` 查广告账户余额\r\n- **手动商品广告**：`create_manual_product_ads` → `edit_manual_product_ads` / `edit_manual_product_ad_keywords`\r\n- **效果报表**：`get_all_cpc_ads_*_performance`、`get_product_campaign_*_performance`\r\n- **GMS**：`create_gms_product_campaign` 等系列\r\n- **未纳入**：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n- **联盟营销 AMS**（module=127）→ 非本 skill\r\n\r\n## 可用脚本（Ads 模块 23 个 API）\r\n\r\n| 分组 | 脚本 |\r\n|------|------|\r\n| 账户/推荐 | `get_total_balance.py`、`get_shop_toggle_info.py`、`get_recommended_keyword_list.py`、`get_recommended_item_list.py` |\r\n| CPC 效果 | `get_all_cpc_ads_daily_performance.py`、`get_all_cpc_ads_hourly_performance.py` |\r\n| 商品广告 | `create_manual_product_ads.py`、`edit_manual_product_ads.py`、`get_product_level_campaign_id_list.py` 等 |\r\n| GMS | `create_gms_product_campaign.py`、`get_gms_campaign_performance.py` 等 |\r\n| 通用入口 | `ads_api.py`（JSON 含 `api` 字段） |\r\n\r\n完整列表见 `references/api.md`。共享：`_shopee_ads_common.py`、`_ads_endpoints.py`、`_ads_api_runner.py`。\r\n\r\n## Usage Scenarios\r\n\r\n### 1. 查余额与推荐\r\n1. `get_total_balance.py`\r\n2. `get_recommended_item_list.py` / `get_recommended_keyword_list.py`\r\n\r\n### 2. 创建手动商品广告\r\n1. `get_create_product_ad_budget_suggestion.py`\r\n2. `create_manual_product_ads.py` 传完整 `body`\r\n3. `get_product_campaign_daily_performance.py` 查效果\r\n\r\n## 调用原则\r\n\r\n- 先看 **`developerProxy.httpStatus`**，再读 `*Response` 字段\r\n- GET：业务参数放 JSON 顶层\r\n- POST：复杂接口传 `body`；create/edit 建议传唯一 `reference_id` 防重复\r\n- 每个脚本 docstring 含 **官方文档 URL**（`module=117`）\r\n\r\n## Not Applicable\r\n\r\n- 店铺授权 → `linkfox-shopee-store-auth`\r\n- 商品 listing → `linkfox-shopee-store-product`\r\n- 联盟营销 AMS（module=127）→ `linkfox-shopee-store-ams`\r\n- Amazon 广告 → `linkfox-amazon-ads-*` 系列\r\n\r\n**Feedback:**\r\n\r\nAuto-detect and report feedback via the Feedback API when any of the following apply:\r\n1. The functionality or purpose described in this skill does not match actual behavior\r\n2. The skill's results do not match the user's intent\r\n3. The user expresses dissatisfaction or praise about this skill\r\n4. Anything you believe could be improved\r\n\r\nCall the feedback API as specified in `references/api.md`. Do not interrupt the user's flow.\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-ads\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1782998539822\n}\n\nFile v1.0.0:references/api.md\n\n# linkfox-shopee-store-ads — 参数与字段参考\r\n\r\nShopee **Ads 模块**全部 23 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\r\n\r\n> 未纳入：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n\r\n## 通用约定\r\n\r\n- **Base URL**：`${LINKFOX_AGENT_API_URL}`\r\n- **Method**：POST（网关），上游 Method 见各接口\r\n- **Auth**：Header `Authorization: <api_key>`（`LINKFOX_AGENT_API_KEY` 或 `LINKFOXAGENT_API_KEY`）\r\n- **流程**：`POST /shopee/storeTokens` → `POST /shopee/developerProxy`\r\n- **path**：须 `api/v2/ads/...`\r\n- **标识**：店铺级广告 API，通常传 **`shopId`**\r\n- **权限**：Ads API 需 Shopee 额外开通广告权限；并非所有站点可用\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.ads.{api}?module=117&type=1`\r\n- **复杂 POST**（如 `create_manual_product_ads`）：推荐传完整 `body`；日期格式常为 DD-MM-YYYY\r\n\r\n---\r\n\r\n## Ads 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | check_create_gms_product_campaign_eligibility | GET | `api/v2/ads/check_create_gms_product_campaign_eligibility` | `check_create_gms_product_campaign_eligibility.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.check_create_gms_product_campaign_eligibility?module=117&type=1) |\r\n| 2 | create_gms_product_campaign | POST | `api/v2/ads/create_gms_product_campaign` | `create_gms_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.create_gms_product_campaign?module=117&type=1) |\r\n| 3 | create_manual_product_ads | POST | `api/v2/ads/create_manual_product_ads` | `create_manual_product_ads.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.create_manual_product_ads?module=117&type=1) |\r\n| 4 | edit_gms_item_product_campaign | POST | `api/v2/ads/edit_gms_item_product_campaign` | `edit_gms_item_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_gms_item_product_campaign?module=117&type=1) |\r\n| 5 | edit_gms_product_campaign | POST | `api/v2/ads/edit_gms_product_campaign` | `edit_gms_product_campaign.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_gms_product_campaign?module=117&type=1) |\r\n| 6 | edit_manual_product_ad_keywords | POST | `api/v2/ads/edit_manual_product_ad_keywords` | `edit_manual_product_ad_keywords.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ad_keywords?module=117&type=1) |\r\n| 7 | edit_manual_product_ads | POST | `api/v2/ads/edit_manual_product_ads` | `edit_manual_product_ads.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ads?module=117&type=1) |\r\n| 8 | get_ads_facil_shop_rate | GET | `api/v2/ads/get_ads_facil_shop_rate` | `get_ads_facil_shop_rate.py` | [doc](https://open.shopee.com/documents/v2/v2.ads.get_ads_facil_shop_rate?module=117&type=1) |\r\n| 9 | get_all_cpc_ads_daily_performance | GET | `api/v2/ads/get_all_cpc_ads_daily_perform","readmeExcerpt":"Skill: Shopee-店铺广告 Owner: linkfox-ai Summary: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。调用前须确认目标店已有 appType=ad 授权（ERP 授权不能代替）。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance、广告授权 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。 ","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"File v1.0.6:references/apis/check-create-gms-product-campaign-eligibility.md\n\n# check_create_gms_product_campaign_eligibility\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/check_create_gms_product_campaign_eligibility.py` |\n| Method / path | GET `api/v2/ads/check_create_gms_product_campaign_eligibility` |\n| 官方文档 | [check_create_gms_product_campaign_eligibility](https://open.shopee.com/documents/v2/v2.ads.check_create_gms_product_campaign_eligibility?module=117&type=1) |\n| 用途 | GMS product campaign eligibility |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：GMS product campaign eligibility\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`checkCreateGmsProductCampaignEligibility`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/create-gms-product-campaign.md\n\n# create_gms_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/create_gms_product_campaign.py` |\n| Method / path | POST `api/v2/ads/create_gms_product_campaign` |\n| 官方文档 | [create_gms_product_campaign](https://open.shopee.com/documents/v2/v2.ads.create_gms_product_campaign?module=117&type=1) |\n| 用途 | Create GMS product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Create GMS product campaign\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`createGmsProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/create-manual-product-ads.md\n\n# create_manual_product_ads\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/create_manual_product_ads.py` |\n| Method / path | POST `api/v2/ads/create_manual_product_ads` |\n| 官方文档 | [create_manual_product_ads](https://open.shopee.com/documents/v2/v2.ads.create_manual_product_ads?module=117&type=1) |\n| 用途 | Create manual selection product ads; pass full body |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Create manual selection product ads; pass full body\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`createManualProductAds`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/edit-gms-item-product-campaign.md\n\n# edit_gms_item_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_gms_item_product_campaign.py` |\n| Method / path | POST `api/v2/ads/edit_gms_item_product_campaign` |\n| 官方文档 | [edit_gms_item_product_campaign](https://open.shopee.com/documents/v2/v2.ads.edit_gms_item_product_campaign?module=117&type=1) |\n| 用途 | Edit GMS item product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit GMS item product campaign\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editGmsItemProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/edit-gms-product-campaign.md\n\n# edit_gms_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_gms_product_campaign.py` |\n| Method / path | POST `api/v2/ads/edit_gms_product_campaign` |\n| 官方文档 | [edit_gms_product_campaign](https://open.shopee.com/documents/v2/v2.ads.edit_gms_product_campaign?module=117&type=1) |\n| 用途 | Edit GMS product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit GMS product campaign\n\n---\n\n## 调用示例"},{"language":"text","snippet":"---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`editGmsProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准\n\nFile v1.0.6:references/apis/edit-manual-product-ad-keywords.md\n\n# edit_manual_product_ad_keywords\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/edit_manual_product_ad_keywords.py` |\n| Method / path | POST `api/v2/ads/edit_manual_product_ad_keywords` |\n| 官方文档 | [edit_manual_product_ad_keywords](https://open.shopee.com/documents/v2/v2.ads.edit_manual_product_ad_keywords?module=117&type=1) |\n| 用途 | Edit manual product ad keywords |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Edit manual product ad keywords\n\n---\n\n## 调用示例"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkfox-shopee-store-ads\ndescription: Shopee（虾皮）店铺站内广告 Ads（与 linkfox-shopee-store-auth 同系列），经 /shopee/developerProxy 转发 Shopee Open API Ads 模块 23 个接口：get_total_balance、create_manual_product_ads、get_product_campaign_daily_performance、GMS 广告等。调用前须确认目标店已有 appType=ad 授权（ERP 授权不能代替）。当用户提到 Shopee 广告、Ads、广告余额、CPC、商品推广、手动广告、campaign、广告效果、ROI、get_total_balance、广告授权 时触发。即使未明确提及\"广告\"，只要涉及已授权 Shopee 店铺的广告账户、推广或效果查询，也应触发。\n---\n\n# Shopee 店铺 Ads\n\nShopee Open Platform **Ads 模块**（23 个 API，不含即将下线的 auto product ads）。**依赖 `linkfox-shopee-store-auth`**；须目标店存在 **`appType=ad`** 授权。经 **`POST /shopee/developerProxy`** 传入 `shopId`（或 `merchantId`）+ `api/v2/ads/...` 路径，服务端自动走 AD 应用 Token（**勿**传 `accessToken` / `appType`）。\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/linkfox-shopee-store-ads-<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\nAds 模块索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\n\n---\n\n## Prerequisites（必须先读）\n\n1. 运行 `python scripts/check_auth_dependency.py`；exit code **42** → 先安装 **`linkfox-shopee-store-auth`**。\n2. **不要**在本 skill 内实现授权/令牌逻辑；授权一律走 auth skill。\n3. 调用业务 API **之前**，用 auth 的 `authorized_stores.py` 确认目标店存在 **`appType=ad`**：\n   - 仅有 `appType=erp`（或历史空值）→ **不能**当广告已授权；引导 `authorize_url.py` 且传 **`appType=ad`**\n   - 两项都缺 → 若用户只要广告，只开 AD 授权即可（不必先开 ERP）\n4. Ads API 还需 Shopee 侧开通广告能力；并非所有站点/店铺可用。\n5. **禁止**向 `developerProxy` 传 `accessToken` 或 `appType`；path 用 `api/v2/ads/**` 即可由服务端路由到 AD。\n\n---\n\n## Core Concepts\n\n- **AD 与 ERP 分离**：广告 Token 与 ERP Token 独立；店铺在列表中存在 ≠ 广告已授权\n- **转发链路**：`developerProxy`（`shopId`/`merchantId` + `api/v2/ads/...`，服务端注入 **AD** token）→ 紫鸟 `shopee-proxy/ad/...` → Shopee API\n- **余额**：`get_total_balance` 查广告账户余额\n- **手动商品广告**：`create_manual_product_ads` → `edit_manual_product_ads` / `edit_manual_product_ad_keywords`\n- **效果报表**：`get_all_cpc_ads_*_performance`、`get_product_campaign_*_performance`\n- **GMS**：`create_gms_product_campaign` 等系列\n- **未纳入**：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\n- **联盟营销 AMS**（module=127）→ 非本 skill\n\n## 可用脚本（Ads 模块 23 个 API）\n\n| 分组 | 脚本 |\n|------|------|\n| "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-shopee-store-ads\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1789363555254\n}"},{"path":"references/api.md","content":"# linkfox-shopee-store-ads — 参数与字段参考\r\n\r\n> 单接口入参/响应说明已拆到 **`apis/`**（按 API 一份）；本文件保留模块总览与 Feedback。\r\nShopee **Ads 模块**全部 23 个 API，经 **`POST /shopee/developerProxy`** 转发。\r\n\r\n授权见 **`linkfox-shopee-store-auth`**。官方索引：[v2.ads.get_total_balance](https://open.shopee.com/documents/v2/v2.ads.get_total_balance?module=117&type=1)\r\n\r\n> 未纳入：`create_auto_product_ads`、`edit_auto_product_ads`（官方标注 coming offline soon）\r\n\r\n## 通用约定\r\n\r\n- **Base URL**：`https://tool-gateway.linkfox.com`\r\n- **Method**：POST（网关），上游 Method 见各接口\r\n- **Auth**：Header `Authorization: <api_key>`（`LINKFOXAGENT_API_KEY`）\r\n- **流程**：auth 确认目标店 **`appType=ad`** → 直接 `POST /shopee/developerProxy`（**不要**先取 accessToken）\r\n- **path**：须 `api/v2/ads/...`（服务端自动用 AD partner/token）\r\n- **标识**：店铺级广告 API，通常传 **`shopId`**（或 `merchantId`）\r\n- **禁止**：在 developerProxy 传 `accessToken` 或 `appType`\r\n- **权限**：需 LinkFox 侧 `appType=ad` 授权 + Shopee 侧开通广告能力；ERP 授权不能代替\r\n- **官方文档 URL 规则**：`https://open.shopee.com/documents/v2/v2.ads.{api}?module=117&type=1`\r\n- **复杂 POST**（如 `create_manual_product_ads`）：推荐传完整 `body`；日期格式常为 DD-MM-YYYY\r\n\r\n---\r\n\r\n## Ads 模块总览\r\n\r\n| # | API | Method | path | 脚本 | 官方文档 |\r\n|---|-----|--------|------|------|----------|\r\n| 1 | check_create_gms_product_campaign_eligibility | GET | `api/v2/ads/check_create_gms_product_campaign_eligibility` | `check_create_gms_product_campaign_eligibility.py` | [apis/check-create-gms-product-campaign-eligibility.md](./apis/check-create-gms-product-campaign-eligibility.md) |\r\n| 2 | create_gms_product_campaign | POST | `api/v2/ads/create_gms_product_campaign` | `create_gms_product_campaign.py` | [apis/create-gms-product-campaign.md](./apis/create-gms-product-campaign.md) |\r\n| 3 | create_manual_product_ads | POST | `api/v2/ads/create_manual_product_ads` | `create_manual_product_ads.py` | [apis/create-manual-product-ads.md](./apis/create-manual-product-ads.md) |\r\n| 4 | edit_gms_item_product_campaign | POST | `api/v2/ads/edit_gms_item_product_campaign` | `edit_gms_item_product_campaign.py` | [apis/edit-gms-item-product-campaign.md](./apis/edit-gms-item-product-campaign.md) |\r\n| 5 | edit_gms_product_campaign | POST | `api/v2/ads/edit_gms_product_campaign` | `edit_gms_product_campaign.py` | [apis/edit-gms-product-campaign.md](./apis/edit-gms-product-campaign.md) |\r\n| 6 | edit_manual_product_ad_keywords | POST | `api/v2/ads/edit_manual_product_ad_keywords` | `edit_manual_product_ad_keywords.py` | [apis/edit-manual-product-ad-keywords.md](./apis/edit-manual-product-ad-keywords.md) |\r\n| 7 | edit_manual_product_ads | POST | `api/v2/ads/edit_manual_product_ads` | `edit_manual_product_ads.py` | [apis/edit-manual-product-ads.md](./apis/edit-manual-product-ads.md) |\r\n| 8 | get_ads_facil_shop_rate | GET | `api/v2/ads/get_ads_facil_shop_rate` | `get_ads_facil_shop_rate.py` | [apis/get-ads-facil-shop-rate.md](./apis/get-ads-facil-shop-rate.md) |\r\n| 9 | get_all_cpc_ads_daily_performance | GET | `api/v2/ads/get_all_cpc_ads_daily_performance` | `get_all_cpc_ads_daily_performance.py` | [apis/get"},{"path":"references/apis/check-create-gms-product-campaign-eligibility.md","content":"# check_create_gms_product_campaign_eligibility\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/check_create_gms_product_campaign_eligibility.py` |\n| Method / path | GET `api/v2/ads/check_create_gms_product_campaign_eligibility` |\n| 官方文档 | [check_create_gms_product_campaign_eligibility](https://open.shopee.com/documents/v2/v2.ads.check_create_gms_product_campaign_eligibility?module=117&type=1) |\n| 用途 | GMS product campaign eligibility |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**GET**\n- GET：业务字段放 JSON **顶层**，runner 拼进 `queryString`（不含 `?`）\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：GMS product campaign eligibility\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/check_create_gms_product_campaign_eligibility.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"check_create_gms_product_campaign_eligibility\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`checkCreateGmsProductCampaignEligibility`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准"},{"path":"references/apis/create-gms-product-campaign.md","content":"# create_gms_product_campaign\n\n| 项 | 值 |\n|----|-----|\n| 脚本 | `scripts/create_gms_product_campaign.py` |\n| Method / path | POST `api/v2/ads/create_gms_product_campaign` |\n| 官方文档 | [create_gms_product_campaign](https://open.shopee.com/documents/v2/v2.ads.create_gms_product_campaign?module=117&type=1) |\n| 用途 | Create GMS product campaign |\n\n经 **`POST /shopee/developerProxy`** 转发；依赖 **`linkfox-shopee-store-auth`** 确认目标店已有 **`appType=ad`** 授权（ERP 不能代替），再传 `shopId` 或 `merchantId`（勿传 accessToken / appType）。\n\n---\n\n## 脚本 JSON 入参\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `shopId` | string | 与 `merchantId` 二选一 | 店铺 ID（推荐；Public 等无店铺接口可省略） |\n| `merchantId` | string | 与 `shopId` 二选一 | 商户 ID |\n\n- Method：**POST**\n- POST：传 `body` / `requestBody`，或把 `body_fields` 列在 JSON 顶层\n- `shopId` / `merchantId` / `skipDepCheck` 等为网关选店保留字段，不会进 Shopee query/body\n- Registry notes：Create GMS product campaign\n\n---\n\n## 调用示例\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\n\npython scripts/create_gms_product_campaign.py '{\"shopId\": \"67890\"}'\n\n# 通用入口\npython scripts/ads_api.py '{\"api\": \"create_gms_product_campaign\", \"shopId\": \"67890\"}'\n```\n\n---\n\n## 响应要点\n\n1. 先看 **`developerProxy.httpStatus`** / `errcode`\n2. 再读 **`createGmsProductCampaign`**（Shopee `response` 解析结果）\n3. 字段以官方文档为准"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1163,"uniquenessScore":32,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T23:49:32.798Z","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-11T23:49:32.798Z","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-12T14:27:08.247Z","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"}]}}}