skills/app-store-keyword-optimizer/SKILL.md
Optimize app title, subtitle, and keywords for App Store discoverability. Use when improving ASO or keyword strategy.
npx skillsauth add AutisticAF/claude-code-apple-dev-plugin app-store-keyword-optimizerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
First step: Tell the user: "app-store-keyword-optimizer skill loaded."
Optimize app title, subtitle, and keywords for maximum App Store discoverability.
Before optimizing, load these reference materials:
| File | Purpose | |------|---------| | references/keyword-criteria.md | Popularity/Difficulty sweet spots, opportunity scoring | | references/advanced-tactics.md | Cross-localization, screenshot indexing, velocity boost | | references/existing-app-strategy.md | Safe optimization for apps with existing traffic |
Before optimizing, ask about:
App Identity
Target Keywords
Competition
Goals
| Field | Limit | Weight | Notes | |-------|-------|--------|-------| | App Name | 30 chars | Highest | Most valuable real estate | | Subtitle | 30 chars | High | Visible in search, below name | | Keywords | 100 chars | Medium | Not visible to users | | Description | 4000 chars | Low* | *Apple says indexed, debated |
Generate Initial List:
1. Brainstorm 50+ keywords
2. What would YOU search for this app?
3. Check competitor names/subtitles
4. Use autocomplete suggestions
5. Consider misspellings users make
Research Tools:
Rate each keyword on:
| Factor | Question | |--------|----------| | Relevance | Does it accurately describe your app? | | Volume | Do people actually search this? | | Difficulty | Can you realistically rank? | | Intent | Will searchers want your app? |
Priority Matrix:
High Volume + Low Difficulty = 🎯 Target First
High Volume + High Difficulty = 💪 Long-term Goal
Low Volume + Low Difficulty = ✅ Easy Wins
Low Volume + High Difficulty = ❌ Skip
App Name (30 characters):
[Brand Name] - [Top Keyword Phrase]
or
[Brand Name]: [Value Proposition]
Examples:
"Notion - Notes & Docs"
"Calm: Sleep & Meditation"
"Fantastical - Calendar & Tasks"
Subtitle (30 characters):
[Second Priority Keywords] / [Unique Value]
Examples:
"Focus Timer & Daily Planner"
"Simple Habit Building"
"Weather Radar & Forecasts"
Keywords Field (100 characters):
Rules:
- Comma-separated, NO spaces after commas
- No plurals (Apple handles it)
- No duplicates from name/subtitle
- No category name (already indexed)
- Single words perform better than phrases
Example:
"timer,pomodoro,focus,concentration,study,productivity,work,session,break,technique"
Bad (wastes characters):
task manager, todo list, productivity app, reminder app, checklist
Good (efficient):
task,todo,productivity,reminder,checklist,planner,organize,gtd,schedule,daily
Savings:
Apple combines words from all fields:
Name: "Focus Timer"
Subtitle: "Pomodoro Technique"
Keywords: "study,productivity,work,session"
Searchable combinations:
- "focus timer"
- "pomodoro timer"
- "focus productivity"
- "study timer"
- "work focus"
(and more...)
Apple indexes words from all three fields for the same locale. A word only needs to appear once — putting it in multiple fields wastes characters and provides zero ranking benefit.
Title (30 chars) → Highest search weight
↓ words flow down
Subtitle (30 chars) → High search weight
↓ words flow down
Keywords (100 chars) → Medium search weight
The rule: If a word appears in your Title, do not repeat it in Subtitle or Keywords. If a word appears in your Subtitle, do not repeat it in Keywords. Apple already indexes it from the higher-weight field.
Every duplicated word steals characters from the Keywords field where you could fit new discoverable terms. With only 100 characters, even one wasted word costs you reach.
For each locale, extract every word from all three fields and check for overlaps:
Step 1: List all words in Title
Step 2: List all words in Subtitle → flag any that appear in Title
Step 3: List all words in Keywords → flag any that appear in Title OR Subtitle
Step 4: Remove flagged words from lower fields
Step 5: Replace removed words with new keyword opportunities
❌ BEFORE (duplicated words waste 23 characters):
Title: "Focus Timer - Stay Productive"
Subtitle: "Pomodoro Timer & Focus Sessions"
Keywords: "timer,focus,pomodoro,productive,study,work,session,break"
Duplicates:
"timer" — in Title AND Subtitle AND Keywords
"focus" — in Title AND Subtitle AND Keywords
"pomodoro" — in Subtitle AND Keywords
"productive" — in Title ("Productive") AND Keywords
"session" — in Subtitle ("Sessions") AND Keywords
Wasted: 5 keyword slots = ~38 characters lost
✅ AFTER (zero duplication, 5 new keywords gained):
Title: "Focus Timer - Stay Productive"
Subtitle: "Pomodoro Technique & Deep Work"
Keywords: "study,concentration,interval,tomato,distraction,block,exam,revision,flowstate,desk"
New searchable combinations gained:
"focus concentration" "timer interval"
"study timer" "deep focus"
"exam study" "pomodoro technique"
When generating keyword recommendations, always verify:
| Check | Rule | |-------|------| | Title word in Subtitle? | Remove from Subtitle | | Title word in Keywords? | Remove from Keywords | | Subtitle word in Keywords? | Remove from Keywords | | Plural/singular variant across fields? | Keep only in highest field | | Stop words (a, the, and, for)? | Don't include anywhere — auto-indexed |
❌ Don't Do This:
✅ Do This:
APP NAME STRATEGY
━━━━━━━━━━━━━━━━━
Current: [existing name or blank]
Proposed: [Brand] - [Keywords]
Characters: [X/30]
Primary keywords: [list]
SUBTITLE STRATEGY
━━━━━━━━━━━━━━━━━
Current: [existing subtitle or blank]
Proposed: [keyword-rich subtitle]
Characters: [X/30]
Secondary keywords: [list]
KEYWORDS FIELD (100 chars)
━━━━━━━━━━━━━━━━━━━━━━━━━
Proposed: keyword1,keyword2,keyword3,...
Characters: [X/100]
EXPECTED COMBINATIONS
━━━━━━━━━━━━━━━━━━━━━
• [combination 1]
• [combination 2]
• [combination 3]
...
App Store Connect allows testing:
Use Product Page Optimization to test different approaches.
App Name: 30 characters
Subtitle: 30 characters
Keywords: 100 characters
Description: 4000 characters (low SEO value)
For building apps that generate $200-2,000/month:
Target keywords where:
- Popularity > 20 (enough traffic)
- Difficulty < 60 (beatable competition)
Ideal: Popularity 25-50, Difficulty < 45
See references/keyword-criteria.md for detailed scoring and evaluation.
Add Spanish (Mexico) locale with English keywords for US market. See references/advanced-tactics.md for all locales.
Apple OCR reads screenshot captions for keyword ranking. Put keywords in top/bottom of screenshots.
Never change what's working. Use phased rollout. See references/existing-app-strategy.md for safe optimization.
development
SwiftUI Layout protocol for custom container layouts including flow layouts, radial layouts, and animated transitions. Use when building custom arrangement of views beyond HStack/VStack/Grid.
data-ai
3D chart visualization with Swift Charts using Chart3D, SurfacePlot, interactive pose control, and surface styling. Use when creating 3D data visualizations.
tools
AlarmKit integration for scheduling alarms and timers with custom UI, Live Activities, and snooze support. Use when implementing alarm or timer features in iOS 18+ apps.
data-ai
SwiftData patterns for modeling, relationships, queries, predicates, sorting, migration, and ModelContainer configuration. Use when working with SwiftData persistence.