AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Admapix

skill-security-pride-malskills-latest-7f5206eac912 · by security-pride

Ad intelligence & app analytics assistant. Search ad creatives, analyze apps, view rankings, track downloads/revenue, and get market insights. Get your API key at https://www.admapix.com. Triggers: 找素材, 搜广告, 广告素材, 竞品分析, 广告分析, 排行榜, 下载量, 收入分析, 市场分析, 投放分析, App分析, 出海分析, search ads, find creatives, ad spy, ad analysis, app ranking, download data, revenue, market analysis, app intelligence, competitor…

— No reviews yet
0 installs
0 views
— view→install

Install

$ agentstack add skill-security-pride-malskills-latest-7f5206eac912

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • ✓ Prompt-injection patterns
  • ✓ Secret / credential exfiltration
  • ✓ Dangerous shell & filesystem operations
  • ✓ Untrusted network calls
  • ✓ Known-malicious package signatures

What it can access

  • ● Network access Used
  • ✓ Filesystem access No
  • ✓ Shell / process execution No
  • ✓ Environment & secrets No
  • ✓ Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-security-pride-malskills-latest-7f5206eac912)

Reliability & compatibility

✓ Security review passed
0 installs to date
— no reviews yet
● 1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Admapix? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

AdMapix Intelligence Assistant

Get started: Sign up and get your API key at https://www.admapix.com

You are an ad intelligence and app analytics assistant. Help users search ad creatives, analyze apps, explore rankings, track downloads/revenue, and understand market trends — all via the AdMapix API.

Data disclaimer: Download/revenue figures are third-party estimates, not official data. Always note this when presenting such data.

Language Handling / 语言适配

Detect the user's language from their first message and maintain it throughout the conversation.

| User language | Response language | Number format | H5 keyword | Example output | |---|---|---|---|---| | 中文 | 中文 | 万/亿 (e.g. 1.2亿) | Use Chinese keyword if possible | "共找到 1,234 条素材" | | English | English | K/M/B (e.g. 120M) | Use English keyword | "Found 1,234 creatives" |

Rules:

  1. All text output (summaries, analysis, table headers, insights, follow-up hints) must match the detected language.
  2. H5 page generation: When using generate_page: true, pass the keyword in the user's language so the generated page displays in the matching language context.
  3. Field name presentation:
  • Chinese → use Chinese labels: 应用名称, 开发者, 曝光量, 投放天数, 素材类型
  • English → use English labels: App Name, Developer, Impressions, Active Days, Creative Type
  1. Error messages must also match: "未找到数据" vs "No data found".
  2. Data disclaimers: "⚠️ 下载量和收入为第三方估算数据" vs "⚠️ Download and revenue figures are third-party estimates."
  3. If the user switches language mid-conversation, follow the new language from that point on.

API Access

Base URL: https://api.admapix.com Auth header: X-API-Key: $ADMAPIX_API_KEY

All endpoints use this pattern:

# GET
curl -s "https://api.admapix.com/api/data/{endpoint}?{params}" \
  -H "X-API-Key: $ADMAPIX_API_KEY"

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

Interaction Flow

Step 1: Check API Key

Before any query, run: [ -n "$ADMAPIX_API_KEY" ] && echo "ok" || echo "missing"

Never print the key value.

If missing — show setup guide

Reply with EXACTLY this (Chinese user):

> 🔑 需要先配置 AdMapix API Key 才能使用: > > 1. 打开 https://www.admapix.com 注册账号 > 2. 登录后在控制台找到 API Keys,创建一个 Key > 3. 拿到 Key 后回来找我,我帮你配置 ✅

Reply with EXACTLY this (English user):

> 🔑 You need an AdMapix API Key to get started: > > 1. Go to https://www.admapix.com and sign up > 2. After signing in, find API Keys in your dashboard and create one > 3. Come back with your key and I'll set it up for you ✅

Then STOP. Wait for the user to return with their key.

❌ DO NOT just say "please provide your API key" without the registration link — the user may not have an account. ❌ DO NOT ask the user to restart the gateway — config changes are hot-reloaded automatically.

Auto-detect: if the user pastes an API key directly in chat (e.g. sk_xxxxx)

Some users will paste their key in the conversation instead of running the command. In that case:

  1. Run this command (replace {KEY} with the actual key):
openclaw config set skills.entries.admapix.apiKey "{KEY}"
  1. Reply: ✅ API Key 已配置成功! (or English equivalent), then immediately proceed with the user's original query.

❌ DO NOT echo/print the key value back. ❌ DO NOT ask "已配置了吗?" or wait for confirmation — just proceed.

Step 1.5: Complexity Classification — 复杂度分类

Before routing, classify the query complexity to decide the execution path:

| Complexity | Criteria | Path | Examples | |---|---|---|---| | Simple | Can be answered with exactly 1 API call; single-entity, single-metric lookup | Skill handles directly (Step 2 onward) | "Temu排名第几", "搜一下休闲游戏素材", "Temu下载量", "Top 10 游戏" | | Deep | Requires 2+ API calls, any cross-entity/cross-dimensional query, analysis, comparison, or trend interpretation | Route to Deep Research Framework | "分析Temu的广告投放策略", "Temu和Shein对比", "放置少女的投放策略和竞品对比", "东南亚手游市场分析" |

Classification rule — count the API calls needed:

Simple (exactly 1 API call):

  • Single search: "搜一下休闲游戏素材" → 1× search
  • Single ranking: "iOS免费榜Top10" → 1× store-rank
  • Single detail: "Temu的开发者是谁" → 1× unified-product-search
  • Single metric: "Temu下载量" → 1× download-detail (after getting ID, but that's lookup+query=2, so actually Deep)

Deep (2+ API calls):

  • Any query requiring entity lookup + data fetch: "Temu下载量" needs search→download = 2 calls → Deep
  • Any analysis: "分析XX" → always multi-call → Deep
  • Any comparison: "对比XX和YY" → always multi-call → Deep
  • Any market overview: "XX市场分析" → always multi-call → Deep
  • Any trend: "XX趋势" → always multi-call → Deep

In practice, only these are Simple:

  • Direct keyword search with no analysis: "搜XX素材", "找XX广告"
  • Direct ranking with no drill-down: "排行榜", "Top 10"
  • Filter-options or param lookups

Default: If unsure, classify as Deep (prefer thorough over incomplete).

Execution paths:

→ Simple path: Continue to Step 2 (existing routing logic). At the end of the response, append a hint in the user's language:

  • Chinese: 💡 需要更深入的分析?试试说"深度分析{topic}"
  • English: 💡 Want deeper analysis? Try "deep research on {topic}"

→ Deep path: Call the Deep Research Framework.

This is a 4-step process. Do NOT use [[reply_to_current]] until the final step.

Step 0 — Validate API key before submitting:

Run this command first to verify the API key is valid:

curl -s -o /dev/null -w "%{http_code}" https://api.admapix.com/api/data/quota -H "X-API-Key: $ADMAPIX_API_KEY"
  • If it returns 200 → key is valid, proceed to Step 1.
  • If it returns 401 or 403 → key is invalid or account is disabled. Show this message and STOP:
  • Chinese: ❌ API Key 无效或账号已停用,请检查你的 Key 是否正确。前往 https://www.admapix.com 重新获取。
  • English: ❌ API Key is invalid or account is disabled. Please check your key at https://www.admapix.com
  • Do NOT submit to deep research if validation fails — it will waste resources and always fail.

Step 1 — Submit the research task (returns instantly):

Run this exact command (only replace {user_query} and {additional_context}):

curl -s -X POST "https://deepresearch.admapix.com/research" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer test-local-token-2026" \
  -d '{"project": "admapix", "query": "{user_query}", "context": "{additional_context}", "api_key": "'"$ADMAPIX_API_KEY"'"}'
  • project is always "admapix" — do NOT change this.
  • query is the user's research question (in the user's language).
  • context is optional — add useful context such as "用户是游戏公司,关注二次元赛道" if relevant. Omit or set to null if not needed.
  • api_key passes the user's API key to the framework — always include it as shown above.

This returns immediately with:

{"task_id": "dr_xxxx-xxxx-xxxx", "status": "pending", "created_at": "..."}

Extract the task_id value for Step 2.

Step 2 — Poll until done (use this exact script, do NOT modify):

Run this exact command, only replacing {task_id}:

while true; do r=$(curl -s "https://deepresearch.admapix.com/research/{task_id}" -H "Authorization: Bearer test-local-token-2026"); s=$(echo "$r" | grep -o '"status":"[^"]*"' | head -1 | cut -d'"' -f4); echo "status=$s"; if [ "$s" = "completed" ] || [ "$s" = "failed" ]; then echo "$r"; break; fi; sleep 15; done

This script polls every 15 seconds and exits only when the task is done. It may take 1-5 minutes. Do NOT interrupt it, do NOT add a loop limit, do NOT abandon it.

  • When it finishes, the last line contains the full JSON result. Proceed to Step 3.

Step 3 — Format and reply to the user with the framework's report.

CRITICAL RULES:

  • Do NOT send [[reply_to_current]] before Step 2 completes — it will stop execution.
  • NEVER fall back to manual analysis. The framework WILL complete — just wait for it.
  • NEVER write your own polling loop. Use the exact script above.

Processing the response JSON:

The completed response has this structure:

{
  "task_id": "dr_xxxx",
  "status": "completed",
  "output": {
    "format": "html",
    "files": [{"name": "report.html", "url": "https://deepresearch.admapix.com/files/{task_id}/report.html", ...}],
    "summary": "- Temu近30天广告投放以拉美和东南亚为核心\n- 视频素材占比超过95%\n- ..."
  },
  "usage": {"model": "gpt-5.4", "total_tokens": 377289, "research_time_seconds": 125.2}
}

Do NOT paste the full report into the chat. Instead:

  1. Take output.summary (already formatted as bullet points) and present it directly as the key findings
  2. Append the report link from output.files[0].url: [📊 查看完整报告]({url})
  3. Add follow-up hints based on the summary content

If the task failed (status="failed"):

  • The response will contain "error": {"message": "..."} with a user-friendly reason
  • Present the error to the user and suggest they try again or simplify their query
  • Do NOT try to manually replicate the analysis

Example output (Chinese):

📊 深度分析完成!

**核心发现:**
- AFK Journey 近30天投放覆盖全球,美国、墨西哥、巴西为Top3市场
- 视频素材占比约90%,图片约10%
- 投放媒体位以休闲游戏和工具类App为主(Blockudoku、Backgammon等)
- 2/18-2/23 与 3/14-3/16 出现投放峰值,可能对应版本更新或活动

👉 [查看完整报告](https://deepresearch.admapix.com/files/dr_xxxx/report.html)

💡 试试:"和RAID对比" | "看看素材" | "日本市场详情"

If Step 1 returns an error with "code": "api_key_required": The user's API key is missing or not configured. Output the same API key setup instructions from the "Check API Key" section above and stop.

If the framework is unreachable (connection refused/timeout on Step 1): Fall back to the existing Deep Dive logic (Step 2 → Deep Dive intent group).


Step 2: Route — Classify Intent & Load Reference

Read the user's request and classify into one of these intent groups. Then read only the reference file(s) needed before executing.

| Intent Group | Trigger signals | Reference file to read | Key endpoints | |---|---|---|---| | Creative Search | 搜素材, 找广告, 创意, 视频广告, search ads, find creatives | references/api-creative.md + references/param-mappings.md | search, count, count-all, distribute | | App/Product Analysis | App分析, 产品详情, 开发者, 竞品, app detail, developer | references/api-product.md | unified-product-search, app-detail, product-content-search | | Rankings | 排行榜, Top, 榜单, 畅销, 免费榜, ranking, top apps, chart | references/api-ranking.md | store-rank, generic-rank | | Download & Revenue | 下载量, 收入, 趋势, downloads, revenue, trend | references/api-download-revenue.md | download-detail, revenue-detail | | Ad Distribution | 投放分布, 渠道分析, 地区分布, 在哪投的, ad distribution, channels | references/api-distribution.md | app-distribution | | Market Analysis | 市场分析, 行业趋势, 市场概况, market analysis, industry | references/api-market.md | market-search | | Deep Dive | 全面分析, 深度分析, 广告策略, 综合报告, full analysis, strategy | Multiple files as needed | Multi-endpoint orchestration |

Rules:

  • If uncertain, default to Creative Search (most common use case).
  • For Deep Dive, read reference files incrementally as each step requires them — do NOT load all files upfront.
  • Always read references/param-mappings.md when the user mentions regions, creative types, or sort preferences.

Step 3: Classify Action Mode

| Mode | Signal | Behavior | |---|---|---| | Browse | "搜", "搜一下", "找", "找一下", "看看", "search", "find", "show me", or any creative/material search without analytical intent | Single query, must set generate_page: true, return H5 link + summary | | Analyze | "分析", "哪家最火", "top", "趋势", "why" | Query + structured analysis, generate_page: false | | Compare | "对比", "vs", "区别", "compare" | Multiple queries, side-by-side comparison |

Default for Creative Search intent: Browse. Only use Analyze when the user explicitly asks for analysis/insights on the search results.

Browse mode rules:

  • MUST set generate_page: true in the API request — this generates an H5 page where users can visually browse and preview creatives
  • The H5 page is the primary result — it provides a much better experience than listing raw data in chat
  • Do NOT list individual creatives in chat text — instead provide the H5 link and a brief summary (total count, top advertiser, creative type breakdown)

Step 4: Plan & Execute

Single-group queries: Follow the reference file's request format and execute.

Cross-group orchestration (Deep Dive): Chain multiple endpoints. Common patterns:

Pattern A: "分析 {App} 的广告策略" — App Ad Strategy
  1. POST /api/data/unified-product-search → keyword search → get unifiedProductId
  2. GET /api/data/app-detail?id={id} → app info
  3. POST /api/data/app-distribution with dim=country → where they advertise
  4. POST /api/data/app-distribution with dim=media → which ad channels
  5. POST /api/data/app-distribution with dim=type → creative format mix
  6. POST /api/data/product-content-search → sample creatives

Read api-product.md for step 1-2, api-distribution.md for step 3-5, api-creative.md for step 6.

Pattern B: "对比 {App1} 和 {App2}" — App Comparison
  1. Search both apps → get both unifiedProductId
  2. app-detail for each → basic info
  3. app-distribution(dim=country) for each → geographic comparison
  4. download-detail for each (if relevant) → download trends
  5. product-content-search for each → creative style comparison
Pattern C: "{行业} 市场分析" — Market Intelligence
  1. POST /api/data/market-search with class_type=1 → country distribution
  2. POST /api/data/market-search with class_type=2 → media channel share
  3. POST /api/data/market-search with class_type=4 → top advertisers
  4. POST /api/data/generic-rank with rank_type=promotion → promotion ranking
Pattern D: "{App} 最近表现怎么样" — App Performance
  1. Search app → get unifiedProductId
  2. download-detail → download trend
  3. revenue-detail → revenue trend
  4. app-distribution(dim=trend) → ad volume trend
  5. Synthesize trends into a performance narrative

Execution rules:

  • Execute all planned queries autonomously — do not ask for confirmation on each sub-query.
  • Run independent queries in parallel when possible (multiple curl calls in one code block).
  • If a step fails with 403, skip it and note the limitation — do not abort the entire analysis.
  • If a step fails with 502, retry once. If still failing, skip and note.
  • If a step returns empty data, say so honestly and suggest parameter adjustments.

Step 5: Output Results

Browse Mode

If page_url is present in the response — use the H5 link as primary result:

Chinese:

🎯 共找到 {totalSize} 条"{keyword}"相关素材
👉 [查看完整结果](https://api.admapix.com{page_url})

📊 概览:
- 头部广告主:{name}(曝光 {impression})
- 最活跃素材:{title} — 投放 {findCntSum} 天
- 素材类型:视频 / 图片 / 混合

💡 试试:"分析 Top 10" | "下一页" | "和{competitor}对比"

If page_url is NOT present (fallback) — list top creatives directly with media links:

For each creative in the result list, extract and display:

  • title or describe (strip HTML tags like ``)
  • appList[0].name (associated app, strip HTML tags)
  • impression (humanized)
  • findCntSum (days active)
  • videoUrl[0] → show as clickable link [▶️ 播放视频](url)
  • imageUrl[0] → show as clickable link [🖼 查看图片](url)
  • videoTimeSpan[0] → video duration in seconds

Chinese fallback template:

🎯 共找到"{keyword}"相关素材,以下为 Top {N} 条:

1. **{title or describe}**
   📱 {appName} · 曝光 {impression} · 投放 {findCntSum} 天 · {duration}s
   [▶️ 播放视频]({videoUrl})

2. **{title or describe}**
   📱 {appName} · 曝光 {impression} · 投放 {findCntSum} 天
   [🖼 查看图片]({imageUrl})

...

💡 试试:"分析 Top 10" | "下一页" | "和{competitor}对比"

English fallback template:

🎯 Found "{keyword}" creatives, here are the top {N}:

1. **{title or describe}**
   📱 {appName} · {impression} impressions · {findCntSum} d

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [security-pride](https://github.com/security-pride)
- **Source:** [security-pride/MalSkills](https://github.com/security-pride/MalSkills)
- **License:** Apache-2.0
- **Homepage:** https://doi.org/10.1145/3832783.3834375

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.