{"id":27174,"plugin_id":"plugin_asdk_app_6ac31e16fb6881919510d9cb1ea39463","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-06T18:05:25.777Z","digest":"e4be9350326af5bbbc002d8671acc204a41992b16f03f238687ce4342a3edc65","against":null,"payload":{"description":"When the user wants to analyze keyword performance for an app tracked in ASOScan (real search volume, difficulty, the app's current rank and rank movement, daily rank history, weekly volume/difficulty trends), or live on-demand research for a new term. Also use when the user mentions \"how hard is this keyword\", \"search volume for X\", \"where do I rank for Y\", \"is my rank going up or down\", \"show my rank history\", or \"research this keyword\". For discovering new keywords to target, see keyword-opportunities.","included_files":[],"name":"keyword-intelligence","skill_md_contents":"---\nname: keyword-intelligence\ndescription: When the user wants to analyze keyword performance for an app tracked in ASOScan (real search volume, difficulty, the app's current rank and rank movement, daily rank history, weekly volume/difficulty trends), or live on-demand research for a new term. Also use when the user mentions \"how hard is this keyword\", \"search volume for X\", \"where do I rank for Y\", \"is my rank going up or down\", \"show my rank history\", or \"research this keyword\". For discovering new keywords to target, see keyword-opportunities.\nmetadata:\n  version: 1.3.1\n---\n\n# Keyword Intelligence\n\nTurn ASOScan's real keyword data into a clear read on which keywords are worth the\neffort and how the app is trending — so you prioritize from numbers, not hunches.\n\n## When to use\n\n- \"What's the volume/difficulty of `<keyword>`?\"\n- \"Where does my app rank for `<keyword>`? Is it moving?\"\n- \"Show me my rank history / volume trend for `<keyword>`.\"\n- \"Research `<a keyword I don't track yet>`.\"\n\n## Getting the data (two modes)\n\nPick the first mode that applies, then follow the steps below.\n\n1. **ASOScan tools are connected** (the ASOScan plugin or connector in ChatGPT or Claude, or any MCP client): use the tool named in the table. Do not ask for an API key and do not run `curl`. Tool results have the same fields as the API responses below, and a list comes back inside `items`. If a tool answers with a message instead of data (reconnect, credits used up, plan limit, \"preparing\"), pass that message on and stop.\n2. **No tools, but you can run shell commands and `ASOSCAN_API_KEY` is set**: make the API call in the table. Base `https://asoscan.com/api/public/v1`, header `Authorization: Bearer $ASOSCAN_API_KEY`, JSON with camelCase fields. Never print the key. Capture the HTTP status and handle errors as described at the bottom.\n3. **Neither**: hand off to **asoscan-setup**. It explains how to connect ASOScan in ChatGPT or Claude, or how to create an API key.\n\nASOScan only sees the apps in the user's own account and the competitors they track. Every call uses API credits (failed calls are free). Before a call that costs more than 2 API credits, or one that uses AI, tell the user the cost and wait for a yes. Before any call that changes data, ask first.\n\n| Step | Tool (connected) | API call (key) | API credits |\n|---|---|---|---|\n| Find the app | `list_my_apps` | `GET /apps` | 1 |\n| Tracked keywords | `get_tracked_keywords` | `GET /apps/{id}/keywords?country=&rankWindow=7d` | 1 |\n| Rank history | `get_keyword_rank_history` | `GET /apps/{id}/keywords/{keywordId}/history?days=30` | 1 |\n| Volume and difficulty trend | `get_keyword_metrics_history` | `GET /apps/{id}/keywords/{keywordId}/metrics-history?days=180` | 1 |\n| Live research | `research_keyword` | `GET /apps/{id}/keywords/research?term=&country=` | 8, say the cost first |\n\n## Steps\n\n1. **Find the app** — `GET /apps` → each `{ id, name, platform, storeId, category }`.\n   Use the `id`.\n2. **Tracked keywords + current state** — `GET /apps/{id}/keywords?country=&rankWindow=7d`\n   (1 credit). Each row: `{ id, term, country, rank, rankDelta, rankCheckedAt,\n   volume, difficulty, isFavorite }`. `rankWindow` = `1d|7d|30d`. Fetch the list\n   once and filter locally. The row's `id` is the `{keywordId}` for history calls.\n3. **Rank history** — `GET /apps/{id}/keywords/{keywordId}/history?days=30`\n   (1 credit) → `[{ rank, recordedAt }]` (days 1–365).\n4. **Volume/difficulty trend** — `GET /apps/{id}/keywords/{keywordId}/metrics-history?days=180`\n   (1 credit) → `{ term, country, volume[]{ at, value }, difficulty[]{ at, value } }`.\n5. **Live research** (a term not tracked yet) — `GET /apps/{id}/keywords/research?term=…&country=US`\n   (**8 credits — cache it**; URL-encode the term) → `{ term, platform, country,\n   volume, difficulty, competingAppsCount, topApps[] }`. A failed lookup is 400 (free).\n6. **Find easier alternatives when a term is hard.** If a researched term is high-volume but\n   **high-difficulty** (🟠 Stretch), research 2–3 long-tail variants of it — add a qualifier such as\n   `<term> games`, `<term> app`, `color <term>`, `best <term>` — via the research endpoint (step 5),\n   and surface any that keep useful volume at **lower difficulty** (a 🟢 Win-now alternative). Cache\n   each. This is the highest-leverage move for a Stretch term: point the user at a keyword they can\n   realistically win instead of one they can't.\n\n## How to read the numbers\n\n- **volume** — relative search demand (higher = more searches); compare within one market.\n- **difficulty** — how hard to rank (higher = harder). The prize is\n  **high-volume, low-difficulty** terms the app can realistically win.\n- **rank + rankDelta** — position (`null` = not ranked) and its change over the\n  window. **Positive `rankDelta` = improvement** (toward #1).\n\n| Tier | Signal | Action |\n|---|---|---|\n| 🟢 Win now | High volume · low difficulty · not ranking well yet | Prioritize in metadata |\n| 🟡 Defend | High volume · already top ~10 | Hold; watch rankDelta |\n| 🟠 Stretch | High volume · high difficulty | Long game; needs authority |\n| ⚪ Low leverage | Low volume | Only if highly relevant |\n\n## Output template\n\n```\n### Keyword intelligence — {App} ({country})   ·  credits left: {X-ApiCredits-Remaining}\n\n| Keyword | Volume | Difficulty | Rank | Δ ({window}) | Read |\n|---|---|---|---|---|---|\n| … | … | … | … | ▲/▼ … | Win now / Defend / … |\n\n**Trends:** {keyword}: rank {from → to} over {N}d; volume {trend}; difficulty {trend}.\n**What I'd do:** 1) {specific action tied to a keyword}  2) …\n```\n\nThen nudge the next step in ASOScan: track the winners via **keyword-opportunities**\nand place them with **metadata-audit**.\n\n## Errors, credits & honesty\n\n- `401` → asoscan-setup · `403` → plan without API access · `402` out of credits\n  (read `X-ApiCredits-Remaining`/`-Reset`) · `429` back off · `404` not tracked ·\n  `503` API not enabled yet. Successful calls spend credits; failed calls are free.\n- Present volume/difficulty as clean numbers — don't label them \"estimated\" or\n  guess their source. Never promise a specific rank.\n- Full reference: <https://asoscan.com/api/developers>\n\n## Related\n\n- **keyword-opportunities** — discover *new* keywords worth targeting.\n- **keyword-spy** — every keyword an app already ranks for.\n- **metadata-audit** — put the winning keywords into the listing.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}