agentleFS
hristo2612hristo2612/aso-cli/skills/aso-keyword-research/SKILL.md

aso-keyword-research

Skill13 starsChanged 52 days agoMITView on GitHub

Use to find, discover, brainstorm, or expand candidate App Store keywords for an iOS/macOS app before writing metadata, backed by real `aso keywords`/`aso suggest` data rather than guessing. Trigger on "what keywords should I target", "help me find keywords", "keyword research for my app", "long-tail keywords for a new app", or "what should my next update focus on for search". Produces a ranked, scored keyword shortlist with tiers (primary, secondary, long-tail, defensive, competitor-gap) and a recommended token set, not a finished metadata draft, hand that to `aso-metadata`.

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. magnusrodseth/dotfiles★ 3same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository7 other files it gives its agents.

The file

Files
SKILL.md

ASO Keyword Research

Find keywords the app can realistically win, backed by aso data: never gut feel.

Preflight: see the aso router skill (CLI installed, session status). Popularity needs a session; difficulty/rank/opportunity work without one.

Iron law

Never shortlist a keyword without running it through aso keywords. Popularity and difficulty come from the CLI, not intuition.

Step 1: Seed keywords

Brainstorm 10-20 seeds across categories, not just the obvious core term:

CategoryExample (a security-camera app)
Core functionsecurity camera, home monitor
User intent / job-to-be-donewatch home, check on baby
Adjacent categorybaby monitor, pet camera, nanny cam
Problem solvedpackage theft, break-in
Featuremotion detection, night vision

Step 2: Expand each seed

aso suggest "<seed>" --limit 50 -c US

Returns Apple Ads recommendations (with popularity) plus App Store autocomplete ideas. Run this for your top 3-5 seeds; pool and dedupe the results.

Step 3: Score in batches

aso keywords <term1> <term2> ... <termN> --app <appId> -c US --min-popularity 10 --max-difficulty 60

Max 100 terms per call: chunk the pooled candidate list into batches of ≤100. Passing --app also returns your current rank per keyword, so you see baseline position, not just opportunity. Popularity is cached 24h; add --fresh if you need a live re-pull (e.g. right after a metadata change).

--min-popularity <n> and --max-difficulty <n> pre-filter the batch; terms cut this way show up under the response's filteredOut with a reason, skim them once in case a relevant term got cut for the wrong reason.

Each result gives popularity (5-100, 5 = Apple's floor), difficulty (0-100, the ASOManiac model, see aso for what it weighs), opportunity = popularity × (100 − difficulty) / 100, appCount, topApps, your rank, brand (true = someone else's brand term, exclude it), and confidence (high/medium/low, trust in that term's numbers). Drop every brand: true term from the candidate pool immediately, it isn't a keyword opportunity.

Step 4: Shortlist (relevance first, then opportunity)

  1. Cut anything irrelevant to the app, no matter how good the score: an off-topic keyword that ranks well converts nobody and can hurt review signals.
  2. Within the relevant set, sort by opportunity descending.
  3. Watch the popularity/difficulty shape, not just the composite score:
PopularityDifficultyRead
HighHighTrap: big number, you likely can't crack top 10
HighLowBest case: rare, grab it
ModerateLowBread and butter: most of your shortlist should live here
Low (incl. floored 5)LowLong-tail: cheap to win, worth it in volume

Long-tail strategy for new / small apps

An app with few ratings can't out-authority a competitor with 50k+ reviews on a difficulty 80 keyword, no matter the popularity. Calibrate the difficulty ceiling to the app's own ratings count:

App's rating countRealistic difficulty ceilingFocus
< 100≤ 30Long-tail, multi-word phrases, low-competition niches
100-1,000≤ 50Mix of long-tail + a few moderate battles
1,000-10,000≤ 70Broader mid-competition terms, start contesting category leaders
10,000+No hard ceilingCompete on head terms, but still mind opportunity

Bias new/small apps toward more, narrower keywords (3+ word phrases) over fewer broad ones: you win by being unambiguously the best answer to a specific query before you can compete on a generic one.

Keyword tiers

Tag every shortlisted term with one tier, don't just leave a flat opportunity-sorted list:

TierMeaning
PrimaryTop opportunity, relevant, within the app's difficulty ceiling: title/subtitle candidates
SecondarySolid opportunity, one step down from primary: keywords field candidates
Long-tailLow popularity (often floored at 5), low difficulty, multi-word: cheap volume in aggregate
DefensiveAlready ranking well here: keep it, don't let a rewrite accidentally drop it
Competitor-gapA specific competitor ranks, you don't (from aso-competitors)
Experimentalconfidence: low, or borderline relevance: worth a small test, not a big budget bet
Avoidbrand: true, irrelevant, or difficulty well above this app's ceiling

Step 5: Output

Ranked table, sorted by opportunity, relevant-only:

| # | Keyword          | Pop | Diff | Opportunity | Your rank | Tier |
|---|-------------------|-----|------|-------------|-----------|------|
| 1 | baby cam          | 44  | 18   | 36.1        | -         | Primary |
| 2 | nanny cam         | 35  | 15   | 29.8        | 34        | Secondary |
| 3 | discreet camera   | 5*  | 22   | 3.9         | -         | Long-tail |

(* = popularity floor, treat as "no signal" not "dead")

Close with:

  1. Top 10-15 by opportunity: the candidate pool.
  2. Recommended token set: which terms are strong enough for title (1-2), subtitle (2-4), and keywords field (remaining, packed toward 100 chars), token-level, not a finished draft. Hand off to aso-metadata to actually assemble and lint the fields.
  3. Watchlist: relevant but currently too competitive for this app's authority, revisit after ratings grow.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.