skills/app-store/keyword-optimizer/SKILL.md
Optimize app title, subtitle, and keywords for maximum App Store discoverability. Use when launching a new app, improving search rankings, entering new markets/languages, or safely optimizing ASO for an app with existing traffic.
npx skillsauth add rshankras/claude-code-apple-skills 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.
Optimize app title, subtitle, and keywords for maximum App Store discoverability.
Before optimizing, load these reference materials:
| File | Purpose | |------|---------| | keyword-criteria.md | Popularity/Difficulty sweet spots, opportunity scoring | | advanced-tactics.md | Cross-localization, screenshot indexing, velocity boost | | 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 keyword-criteria.md for detailed scoring and evaluation.
Add Spanish (Mexico) locale with English keywords for US market. See 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 existing-app-strategy.md for safe optimization.
development
Build, install, and launch an iOS app on a physical iPhone or iPad entirely from the command line (no Xcode GUI), using xcodebuild + devicectl. Use when the user wants to run, test, or screenshot their app on a real device without opening Xcode.
development
Comprehensive iOS development guidance including Swift best practices, SwiftUI patterns, UI/UX review against HIG, and app planning. Use for iOS code review, best practices, accessibility audits, or planning new iOS apps.
development
Build, install, launch, and screenshot an iOS app in the Simulator to verify a change visually. Use when the user wants to run the app, see a change live, screenshot the running app, or confirm a UI fix actually works (not just that it compiles).
development
Audits skills in this repo for consistency, API drift, and structural gaps. Produces a prioritized report grouped by severity (Critical/High/Medium/Low). Use when asked to "audit skills", "check the skill repo for drift", or when planning bulk skill cleanup. Read-only — does not apply fixes.