Skip to content
Back to skills

Aso Keyword Research

ASecurity

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...

  • 8 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentsrustgobashtestingsecurity

Works with

  • cli

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add hristo2612/aso-cli --skill aso-keyword-research --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Aso Keyword Research?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Aso Keyword Research
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hristo2612-aso-keyword-research/badge)](https://www.skillsdirectory.com/skills/hristo2612-aso-keyword-research)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: aso-keyword-research
description: 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`.
---

# 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:

| Category | Example (a security-camera app) |
|---|---|
| Core function | security camera, home monitor |
| User intent / job-to-be-done | watch home, check on baby |
| Adjacent category | baby monitor, pet camera, nanny cam |
| Problem solved | package theft, break-in |
| Feature | motion detection, night vision |

## Step 2: Expand each seed

```bash
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

```bash
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:

| Popularity | Difficulty | Read |
|---|---|---|
| High | High | Trap: big number, you likely can't crack top 10 |
| High | Low | Best case: rare, grab it |
| Moderate | Low | Bread and butter: most of your shortlist should live here |
| Low (incl. floored `5`) | Low | Long-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 count | Realistic difficulty ceiling | Focus |
|---|---|---|
| < 100 | ≤ 30 | Long-tail, multi-word phrases, low-competition niches |
| 100-1,000 | ≤ 50 | Mix of long-tail + a few moderate battles |
| 1,000-10,000 | ≤ 70 | Broader mid-competition terms, start contesting category leaders |
| 10,000+ | No hard ceiling | Compete 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:

| Tier | Meaning |
|---|---|
| Primary | Top opportunity, relevant, within the app's difficulty ceiling: title/subtitle candidates |
| Secondary | Solid opportunity, one step down from primary: keywords field candidates |
| Long-tail | Low popularity (often floored at 5), low difficulty, multi-word: cheap volume in aggregate |
| Defensive | Already ranking well here: keep it, don't let a rewrite accidentally drop it |
| Competitor-gap | A specific competitor ranks, you don't (from `aso-competitors`) |
| Experimental | `confidence: low`, or borderline relevance: worth a small test, not a big budget bet |
| Avoid | `brand: 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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.