Keyword opportunities
When the user wants the best untapped keywords for an app tracked in ASOScan — gap-scored suggestions ranked by opportunity score, each showing which competitors already rank for the term. Also use when the user mentions "what keywords should I target", "find keyword opportunities", "what am I missing", "keyword gaps vs my competitors", or "suggest keywords to add". Can also start tracking the chosen terms. For validating a specific term's volume/difficulty, see keyword-intelligence.From its SKILL.md
npx -y skills add ASOScan/aso-skills --skill keyword-opportunitiesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.7 KB, 858 tokens by cl100k_base, as published. Nobody here has run it
Keyword Opportunities
Answer "what should I target next?" with ASOScan's pre-computed, opportunity-scored suggestions — drawn from your metadata, competitors, AI, the category index, and search data — then track the winners, all from real numbers.
When to use
- "What keywords should I add / target?"
- "Where are my keyword gaps vs competitors?"
- "Suggest high-opportunity keywords for my app."
Calling the ASOScan API
Base https://asoscan.com/api/public/v1 · header Authorization: Bearer $ASOSCAN_API_KEY.
JSON, camelCase. If the key is unset, hand off to asoscan-setup.
- Find the app —
GET /apps→ use theid. - Opportunities —
GET /apps/{id}/opportunities?country=&limit=50(2 credits, limit 1–200). Each row:{ term, volume, difficulty, opportunityScore, competitorRanks[]{ name, rank, isYou } }. There is no "source" field — rank byopportunityScoreand readcompetitorRanksfor context (the entry withisYou: trueis the owner;rank: nullthere = you don't rank yet). - (Optional) validate a shortlisted term — the research call in keyword-intelligence (8 credits), for a few finalists only.
- (Optional) track the picks —
POST /apps/{id}/keywordswith{ "terms": [...], "country": "US" }(2 credits, needs a write key; up to 500 terms) →{ added[], skipped[]{ term, reason } }.
How to prioritize
Sort by opportunityScore, then sanity-check each candidate:
- Relevant? Would a searcher for this term actually want this app? Drop off-topic high-volume terms — irrelevant installs churn.
- Winnable? Is
difficultyrealistic for this app's authority? - A real gap? In
competitorRanks,isYouhas a null/poor rank while rivals rank well → the sharpest opportunity.
Group into Quick wins (high score, low difficulty, relevant, you don't rank) and Watchlist (promising but harder / needs validation).
Output template
### Keyword opportunities — {App} ({country}) · credits left: {remaining}
**Quick wins** (track these)
| Keyword | Volume | Difficulty | Score | You rank? | Rivals ranking |
|---|---|---|---|---|---|
| … | … | … | … | no | Rival A #4, Rival B #9 |
**Watchlist**
| Keyword | Volume | Difficulty | Score | Note |
|---|---|---|---|---|
**Next in ASOScan:** track the quick wins → POST /apps/{id}/keywords (write key),
then place them with `metadata-audit`.
If the user approves tracking, call the write endpoint and report added/skipped.
Errors, credits & honesty
401→ asoscan-setup ·403= no API access or a read-only key on the write call (tell them to create a read + write key) ·402out of credits ·429back off ·503not enabled yet. Opportunities = 2 credits, tracking = 2.- Present numbers cleanly; never track terms without asking; don't overpromise ranks.
- Full reference: https://asoscan.com/api/developers
Related
- keyword-intelligence — validate a shortlisted term.
- competitor-analysis — see which competitors drive the gap.
- metadata-audit — place the chosen keywords into the listing.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.