Skills/ #agents/ #creative/ #research

AdMapix

AdMapix raw data layer for ad creatives, apps, rankings, downloads/revenue, and market metadata. Returns structured JSON from the AdMapix API; the calling ag...

fly0pants@fly0pants

Install

Run this command against the local KakaHub registry.

Install admapix from the local KakaHub registry at http://localhost:13001. Review the README, manifest, and permissions before using it in the current workspace.Download

README

--- name: admapix description: "AdMapix raw data layer for ad creatives, apps, rankings, downloads/revenue, and market metadata. Returns structured JSON from the AdMapix API; the calling agent composes and analyzes. Use for 搜广告, 找素材, 广告素材, 竞品分析, 排行榜, 下载量, 收入, 市场分析, App数据, ad creative, search ads, app intelligence, rankings, downloads, revenue, market data." metadata: {"openclaw":{"primaryEnv":"ADMAPIX_API_KEY"}} ---

AdMapix Data Layer

A thin client over the AdMapix read API. It fetches **raw structured data** and returns it as JSON. It does **not** analyze, summarize, rank, generate pages, or run autonomous research — the calling agent (e.g. Claude Code, Codex) decides which endpoints to call, composes multi-call workflows from the metadata, and does any analysis itself.

**Out of scope** (never done inside this skill): HTML/H5 page generation, hosted "deep research", autonomous multi-step research, summaries, insights, recommendations, dashboards, message-send.

Auth

Use `ADMAPIX_API_KEY` as the `X-API-Key` header. Never print or expose the key.

bashadmapix_auth_header="X-API-Key: ${ADMAPIX_API_KEY}"
# GET
curl -s "https://api.admapix.com/api/data/{endpoint}?{params}" -H "$admapix_auth_header"
# POST
curl -s -X POST "https://api.admapix.com/api/data/{endpoint}" \
  -H "$admapix_auth_header" -H "Content-Type: application/json" -d '{...}'

For creative search, prefer the `admapix.search_creatives` MCP tool when available; otherwise call `POST /api/data/search` directly.

Step 1 — Check the key

Before any API call, verify the key is configured (without printing its value):

bash[ -n "${ADMAPIX_API_KEY:-}" ] && echo ok || echo missing

Step 2 — If missing, show the setup guide

If the key is missing (and no MCP tool is available), do **not** call the API. Show the user how to get and configure a key — in their language — then ask them to retry. Detect language from the user's message.

**中文用户:**

> 🔑 需要先配置 AdMapix API Key 才能使用: > 1. 打开 https://www.admapix.com 注册账号 > 2. 登录后在控制台找到 **API Keys**,创建一个 Key > 3. 选择一种方式配置: > - **OpenClaw / ClawHub**:在终端运行 `openclaw config set skills.entries.admapix.apiKey "你的_API_KEY"` > - **通用环境变量**:在终端运行 `export ADMAPIX_API_KEY="你的_API_KEY"` > 4. 配置完成后重新发起查询 ✅

**English users:**

> 🔑 You need an AdMapix API Key to get started: > 1. Sign up at https://www.admapix.com > 2. After signing in, open **API Keys** in your dashboard and create one > 3. Configure it one of these ways: > - **OpenClaw / ClawHub**: run `openclaw config set skills.entries.admapix.apiKey "YOUR_API_KEY"` in your terminal > - **Generic env var**: run `export ADMAPIX_API_KEY="YOUR_API_KEY"` in your terminal > 4. Re-run your query after setup ✅

If the host provides a secure secret/config command, point the user to that instead. Never accept, echo, or store the key from chat — keep it out of responses, logs, and links. For programmatic callers, also return the `missing_api_key` error (see Error Handling).

Endpoint Catalog

Each endpoint is a raw data source. **Read the listed reference file before using an endpoint you have not called yet** — it carries the exact params and response fields. Compose multiple calls as needed; the skill itself stays single-call-per-request and returns raw JSON.

Creatives / ads — `references/api-creative.md`

| Endpoint | Method | Purpose | |---|---|---| | `/api/data/search` | POST | Search ad creatives | | `/api/data/count` | POST | Count creatives for a query | | `/api/data/count-all` | POST | Counts broken down by dimension | | `/api/data/distribute` | POST | Creative distribution breakdown | | `/api/data/distribute-dims` | GET | Available distribute dimensions | | `/api/data/content-detail` | GET | Single creative detail (`related=imagevideo|trend`) | | `/api/data/item-apps` | POST | Apps associated with a creative | | `/api/data/screen-types` | GET | Screen / element type codes | | `/api/data/page-config` | GET | Search page config |

Metadata / filters — `references/api-creative.md` + `references/param-mappings.md`

| Endpoint | Method | Purpose | |---|---|---| | `/api/data/filter-options` | GET | **All filter metadata**: `countries`, `mediaChannels`, `adTypes`, `device`, `tradeLevel(Tree)`, `productModel`, etc. Pull this to discover valid codes for any filter. |

Apps / products / companies — `references/api-product.md`

| Endpoint | Method | Purpose | |---|---|---| | `/api/data/unified-product-search` | POST | Unified app/product search | | `/api/data/product-search` | POST | Product search | | `/api/data/company-search` | POST | Developer / company search | | `/api/data/app-detail` | GET | App detail by `unifiedProductId` | | `/api/data/developer-detail` | GET | Developer detail | | `/api/data/app-profile` | GET | App profile | | `/api/data/similar-apps` | POST | Similar apps | | `/api/data/sdk-detail` | GET | SDKs used by a package | | `/api/data/product-content-search` | POST | Creatives for a product | | `/api/data/product-content-counts` | POST | Creative counts for a product | | `/api/data/product-list`, `/for-product-list`, `/product-agg-list` | POST | Product lists / aggregations |

Rankings — `references/api-ranking.md`

| Endpoint | Method | Purpose | |---|---|---| | `/api/data/store-rank` | POST | App-store rankings (free / paid / grossing) | | `/api/data/generic-rank` | POST | Generic ranking lists | | `/api/data/store-categories` | GET | Store category codes | | `/api/data/store-countries` | GET | Store country codes |

Downloads & revenue (third-party estimates) — `references/api-download-revenue.md`

| Endpoint | Method | Purpose | |---|---|---| | `/api/data/download-date`, `download-detail`, `download-country` | GET/POST | Download estimates by date / detail / country | | `/api/data/revenue-date`, `revenue-detail`, `revenue-country` | GET/POST | Revenue estimates by date / detail / country |

> ⚠️ Download/revenue figures are third-party **estimates**, not official data. Return the raw numbers as-is; the calling agent must note they are estimates when presenting.

Distribution — `references/api-distribution.md`

| Endpoint | Method | Purpose | |---|---|---| | `/api/data/app-distribution` | POST | App-level distribution | | `/api/data/global-promote` | POST | Global promotion data |

Market — `references/api-market.md`

| Endpoint | Method | Purpose | |---|---|---| | `/api/data/market-search` | POST | Market-level search / aggregation |

Parameter Mapping

Read `references/param-mappings.md` to translate natural language into codes:

  • creative type (`010`=video, etc.), industry (`trade_level1`: `602`=Game, `607`=Finance…), country / region groups, relative date ranges, sorting, page size.
  • For codes not in param-mappings (sub-industries, media channels, devices, store categories…), pull `GET /api/data/filter-options` or the endpoint-specific dimension call (e.g. `store-categories`).

For the creative `search` endpoint, `page_size` is capped at **10** (clamp any larger request down to 10; use `page` for more). Other list endpoints use their own documented ranges.

Output Rules

Return the API response as **raw structured JSON** — keep the API field names; do not rename, drop, summarize, rank, or editorialize. The calling agent composes and analyzes.

  • Response shapes vary by endpoint. Creative search via direct API returns `pageIndex` / `pageSize` / `totalSize` / `list`; the MCP tool additionally wraps it with `request` / `page` / `page_size`. `totalSize` may be `null` on filtered queries — use the length of `list`.
  • An empty `list` is a valid result (no matches), not an error.
  • Pass through extra fields (e.g. `gptCorrect` spelling suggestions) unchanged; do not silently swap a keyword.

Do not: generate H5 / landing / card / dashboard pages, hide records behind links, run hosted "deep research" or autonomous multi-step research, or produce analysis / recommendations unless the user explicitly asks after receiving the data.

Error Handling

**Agent-level** (no request was made — no MCP tool and `ADMAPIX_API_KEY` is missing):

json{ "error": { "code": "missing_api_key", "message": "Missing ADMAPIX_API_KEY environment variable", "retry": false } }

**API-level** (the call returned a non-2xx status). The API responds with `{ "detail": "...", "code": "..." }`; surface it plus the HTTP status, and never print the key. HTTP 401 with `INVALID_API_KEY` / `NOT_AUTHENTICATED` means the key is missing, malformed, or disabled — do not retry:

json{ "error": { "code": "invalid_api_key", "http_status": 401, "message": "Invalid API key format", "retry": false } }

Install resolver

{
  "artifact": {
    "downloadUrl": "/api/v1/download?slug=admapix&version=1.0.30&ownerHandle=fly0pants",
    "format": "zip",
    "generated": true,
    "kind": "skillArchive",
    "sha256": "657b05e42dcea994fbf6ba3ab9bea4f83440bdd806e52fbdf0c1718d5630e02e",
    "size": 10522
  },
  "owner": {
    "displayName": "fly0pants",
    "handle": "fly0pants",
    "id": "ab352bbb-79ea-4351-a314-a50645721347",
    "verified": false
  },
  "skill": {
    "displayName": "AdMapix",
    "latestVersion": "1.0.30",
    "license": "MIT-0",
    "name": "admapix",
    "ownerHandle": "fly0pants",
    "slug": "admapix",
    "stats": {
      "downloads": 131704,
      "installs": 4274,
      "stars": 289
    },
    "summary": "AdMapix raw data layer for ad creatives, apps, rankings, downloads/revenue, and market metadata. Returns structured JSON from the AdMapix API; the calling ag...",
    "tags": [
      "agents",
      "creative",
      "research",
      "ad-intelligence",
      "app-analytics",
      "ad-creatives",
      "ad-spy",
      "advertising"
    ],
    "type": "skill",
    "updatedAt": "2026-07-06T10:48:24.384Z"
  },
  "sourceHandoff": null,
  "version": {
    "checksum": null,
    "checksumAlgorithm": null,
    "id": "74c95808-346b-450a-9c25-9cecb4f508b5",
    "publishedAt": "2026-06-19T07:09:19.124Z",
    "size": null,
    "version": "1.0.30",
    "artifactStorageKey": null,
    "changelog": "**Summary:** Major refactor to make the skill a pure data-layer provider for AdMapix API, removing analysis, summaries, and autonomous workflows.\n\n- Now returns only raw structured JSON from AdMapix API endpoints; all analysis and composition moved to the calling agent.\n- Removed generation of HTML/H5 pages, hosted research, summaries, rankings, and dashboards.\n- Updated instructions and endpoint catalog; clarified parameter mapping workflows and output rules.\n- Simplified authentication flow and setup guidance, with clear language adaptation.\n- Documented strict pass-through of API fields—no renaming, summarizing, or hiding data.\n- Explicitly marked download/revenue figures as third-party estimates for agent-side handling.",
    "manifest": {
      "clawhub": {
        "tags": {
          "latest": "1.0.30",
          "app-analytics": "1.0.29",
          "ad-intelligence": "1.0.29"
        },
        "owner": "fly0pants",
        "stats": {
          "stars": 289,
          "comments": 0,
          "installs": 4274,
          "versions": 25,
          "downloads": 131704
        },
        "topics": [
          "ad-intelligence",
          "app-analytics",
          "ad-creatives",
          "ad-spy",
          "advertising"
        ],
        "categories": [
          "agents",
          "creative",
          "research"
        ]
      },
      "install": "openclaw skills install @fly0pants/admapix"
    },
    "readme": "---\nname: admapix\ndescription: \"AdMapix raw data layer for ad creatives, apps, rankings, downloads/revenue, and market metadata. Returns structured JSON from the AdMapix API; the calling agent composes and analyzes. Use for 搜广告, 找素材, 广告素材, 竞品分析, 排行榜, 下载量, 收入, 市场分析, App数据, ad creative, search ads, app intelligence, rankings, downloads, revenue, market data.\"\nmetadata: {\"openclaw\":{\"primaryEnv\":\"ADMAPIX_API_KEY\"}}\n---\n\n# AdMapix Data Layer\n\nA thin client over the AdMapix read API. It fetches **raw structured data** and returns it as JSON. It does **not** analyze, summarize, rank, generate pages, or run autonomous research — the calling agent (e.g. Claude Code, Codex) decides which endpoints to call, composes multi-call workflows from the metadata, and does any analysis itself.\n\n**Out of scope** (never done inside this skill): HTML/H5 page generation, hosted \"deep research\", autonomous multi-step research, summaries, insights, recommendations, dashboards, message-send.\n\n## Auth\n\nUse `ADMAPIX_API_KEY` as the `X-API-Key` header. Never print or expose the key.\n\n```bash\nadmapix_auth_header=\"X-API-Key: ${ADMAPIX_API_KEY}\"\n# GET\ncurl -s \"https://api.admapix.com/api/data/{endpoint}?{params}\" -H \"$admapix_auth_header\"\n# POST\ncurl -s -X POST \"https://api.admapix.com/api/data/{endpoint}\" \\\n  -H \"$admapix_auth_header\" -H \"Content-Type: application/json\" -d '{...}'\n```\n\nFor creative search, prefer the `admapix.search_creatives` MCP tool when available; otherwise call `POST /api/data/search` directly.\n\n### Step 1 — Check the key\n\nBefore any API call, verify the key is configured (without printing its value):\n\n```bash\n[ -n \"${ADMAPIX_API_KEY:-}\" ] && echo ok || echo missing\n```\n\n### Step 2 — If missing, show the setup guide\n\nIf the key is missing (and no MCP tool is available), do **not** call the API. Show the user how to get and configure a key — in their language — then ask them to retry. Detect language from the user's message.\n\n**中文用户:**\n\n> 🔑 需要先配置 AdMapix API Key 才能使用:\n> 1. 打开 https://www.admapix.com 注册账号\n> 2. 登录后在控制台找到 **API Keys**,创建一个 Key\n> 3. 选择一种方式配置:\n>    - **OpenClaw / ClawHub**:在终端运行 `openclaw config set skills.entries.admapix.apiKey \"你的_API_KEY\"`\n>    - **通用环境变量**:在终端运行 `export ADMAPIX_API_KEY=\"你的_API_KEY\"`\n> 4. 配置完成后重新发起查询 ✅\n\n**English users:**\n\n> 🔑 You need an AdMapix API Key to get started:\n> 1. Sign up at https://www.admapix.com\n> 2. After signing in, open **API Keys** in your dashboard and create one\n> 3. Configure it one of these ways:\n>    - **OpenClaw / ClawHub**: run `openclaw config set skills.entries.admapix.apiKey \"YOUR_API_KEY\"` in your terminal\n>    - **Generic env var**: run `export ADMAPIX_API_KEY=\"YOUR_API_KEY\"` in your terminal\n> 4. Re-run your query after setup ✅\n\nIf the host provides a secure secret/config command, point the user to that instead. Never accept, echo, or store the key from chat — keep it out of responses, logs, and links. For programmatic callers, also return the `missing_api_key` error (see Error Handling).\n\n## Endpoint Catalog\n\nEach endpoint is a raw data source. **Read the listed reference file before using an endpoint you have not called yet** — it carries the exact params and response fields. Compose multiple calls as needed; the skill itself stays single-call-per-request and returns raw JSON.\n\n### Creatives / ads — `references/api-creative.md`\n\n| Endpoint | Method | Purpose |\n|---|---|---|\n| `/api/data/search` | POST | Search ad creatives |\n| `/api/data/count` | POST | Count creatives for a query |\n| `/api/data/count-all` | POST | Counts broken down by dimension |\n| `/api/data/distribute` | POST | Creative distribution breakdown |\n| `/api/data/distribute-dims` | GET | Available distribute dimensions |\n| `/api/data/content-detail` | GET | Single creative detail (`related=imagevideo|trend`) |\n| `/api/data/item-apps` | POST | Apps associated with a creative |\n| `/api/data/screen-types` | GET | Screen / element type codes |\n| `/api/data/page-config` | GET | Search page config |\n\n### Metadata / filters — `references/api-creative.md` + `references/param-mappings.md`\n\n| Endpoint | Method | Purpose |\n|---|---|---|\n| `/api/data/filter-options` | GET | **All filter metadata**: `countries`, `mediaChannels`, `adTypes`, `device`, `tradeLevel(Tree)`, `productModel`, etc. Pull this to discover valid codes for any filter. |\n\n### Apps / products / companies — `references/api-product.md`\n\n| Endpoint | Method | Purpose |\n|---|---|---|\n| `/api/data/unified-product-search` | POST | Unified app/product search |\n| `/api/data/product-search` | POST | Product search |\n| `/api/data/company-search` | POST | Developer / company search |\n| `/api/data/app-detail` | GET | App detail by `unifiedProductId` |\n| `/api/data/developer-detail` | GET | Developer detail |\n| `/api/data/app-profile` | GET | App profile |\n| `/api/data/similar-apps` | POST | Similar apps |\n| `/api/data/sdk-detail` | GET | SDKs used by a package |\n| `/api/data/product-content-search` | POST | Creatives for a product |\n| `/api/data/product-content-counts` | POST | Creative counts for a product |\n| `/api/data/product-list`, `/for-product-list`, `/product-agg-list` | POST | Product lists / aggregations |\n\n### Rankings — `references/api-ranking.md`\n\n| Endpoint | Method | Purpose |\n|---|---|---|\n| `/api/data/store-rank` | POST | App-store rankings (free / paid / grossing) |\n| `/api/data/generic-rank` | POST | Generic ranking lists |\n| `/api/data/store-categories` | GET | Store category codes |\n| `/api/data/store-countries` | GET | Store country codes |\n\n### Downloads & revenue (third-party estimates) — `references/api-download-revenue.md`\n\n| Endpoint | Method | Purpose |\n|---|---|---|\n| `/api/data/download-date`, `download-detail`, `download-country` | GET/POST | Download estimates by date / detail / country |\n| `/api/data/revenue-date`, `revenue-detail`, `revenue-country` | GET/POST | Revenue estimates by date / detail / country |\n\n> ⚠️ Download/revenue figures are third-party **estimates**, not official data. Return the raw numbers as-is; the calling agent must note they are estimates when presenting.\n\n### Distribution — `references/api-distribution.md`\n\n| Endpoint | Method | Purpose |\n|---|---|---|\n| `/api/data/app-distribution` | POST | App-level distribution |\n| `/api/data/global-promote` | POST | Global promotion data |\n\n### Market — `references/api-market.md`\n\n| Endpoint | Method | Purpose |\n|---|---|---|\n| `/api/data/market-search` | POST | Market-level search / aggregation |\n\n## Parameter Mapping\n\nRead `references/param-mappings.md` to translate natural language into codes:\n\n- creative type (`010`=video, etc.), industry (`trade_level1`: `602`=Game, `607`=Finance…), country / region groups, relative date ranges, sorting, page size.\n- For codes not in param-mappings (sub-industries, media channels, devices, store categories…), pull `GET /api/data/filter-options` or the endpoint-specific dimension call (e.g. `store-categories`).\n\nFor the creative `search` endpoint, `page_size` is capped at **10** (clamp any larger request down to 10; use `page` for more). Other list endpoints use their own documented ranges.\n\n## Output Rules\n\nReturn the API response as **raw structured JSON** — keep the API field names; do not rename, drop, summarize, rank, or editorialize. The calling agent composes and analyzes.\n\n- Response shapes vary by endpoint. Creative search via direct API returns `pageIndex` / `pageSize` / `totalSize` / `list`; the MCP tool additionally wraps it with `request` / `page` / `page_size`. `totalSize` may be `null` on filtered queries — use the length of `list`.\n- An empty `list` is a valid result (no matches), not an error.\n- Pass through extra fields (e.g. `gptCorrect` spelling suggestions) unchanged; do not silently swap a keyword.\n\nDo not: generate H5 / landing / card / dashboard pages, hide records behind links, run hosted \"deep research\" or autonomous multi-step research, or produce analysis / recommendations unless the user explicitly asks after receiving the data.\n\n## Error Handling\n\n**Agent-level** (no request was made — no MCP tool and `ADMAPIX_API_KEY` is missing):\n\n```json\n{ \"error\": { \"code\": \"missing_api_key\", \"message\": \"Missing ADMAPIX_API_KEY environment variable\", \"retry\": false } }\n```\n\n**API-level** (the call returned a non-2xx status). The API responds with `{ \"detail\": \"...\", \"code\": \"...\" }`; surface it plus the HTTP status, and never print the key. HTTP 401 with `INVALID_API_KEY` / `NOT_AUTHENTICATED` means the key is missing, malformed, or disabled — do not retry:\n\n```json\n{ \"error\": { \"code\": \"invalid_api_key\", \"http_status\": 401, \"message\": \"Invalid API key format\", \"retry\": false } }\n```\n"
  }
}

Versions

VersionSizeUpdated1.0.30Not availableJun 19, 2026