Skip to content
Back to skills

Aso Localization

ASecurity

Use to pick new App Store markets, research keywords natively per country, or exploit cross-locale keyword indexing with the `aso` CLI, the single most under-used ASO lever for most apps. Trigger on "localize my app", "target new markets", "international ASO", "which locales should I fill", "translate my keywords", or "how does cross-locale indexing work". Uses `aso storefronts` and the per-country `-c` flag for native market research plus `aso lint --fastlane` to validate every locale at onc...

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

Works with

  • cli

Security analysis

A100/100

Scanned October 6, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Aso Localization?

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

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

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-localization
description: Use to pick new App Store markets, research keywords natively per country, or exploit cross-locale keyword indexing with the `aso` CLI, the single most under-used ASO lever for most apps. Trigger on "localize my app", "target new markets", "international ASO", "which locales should I fill", "translate my keywords", or "how does cross-locale indexing work". Uses `aso storefronts` and the per-country `-c` flag for native market research plus `aso lint --fastlane` to validate every locale at once, and warns against ever just translating one locale's keywords into another instead of researching them fresh.
---

# ASO Localization

Fill more of a storefront's indexing capacity than the primary locale alone gives you: the single most under-used ASO lever for most apps.

Preflight: see the `aso` router skill.

## Iron law

**Research each locale natively: never translate.** A translated keyword is a guess about what a market searches; a keyword pulled from `aso suggest`/`aso keywords` with `-c <that country>` is measured. "Überwachungskamera" outperforms a literal translation of "security camera" in DE because it's what Germans actually type, not what English maps to.

## Step 1: Pick markets

```bash
aso storefronts
```

Lists supported country codes. Country codes to `-c` must be uppercase.

Beyond the obvious "which countries do I want revenue from," also fill secondary locales your **current** storefront already indexes: no new market entry required, just more of the same storefront's keyword space. A US-facing app, for example, gets credit not only for en-US but for the other locales the US store indexes alongside it (regional English variants, and non-English locales with meaningful US-resident search volume, e.g. es-MX, pt-BR, zh-Hans/Hant, ja). Exactly which locales a given storefront indexes can shift over time; confirm current App Store Connect locale options for the target storefront rather than assuming a fixed list.

## Step 2: Research per country, not per translation

For every locale you're filling, run the same research flow as `aso-keyword-research` but with `-c` set to that country:

```bash
aso suggest "<seed>" --limit 50 -c DE
aso keywords "<candidate1>" "<candidate2>" ... --app <appId> -c DE
aso search "<candidate>" --limit 20 -c DE
```

Seeds for non-English locales should themselves come from native speakers, translation as a *starting point* only, or `aso suggest`'s own autocomplete-derived ideas for that storefront: always confirm with real popularity/difficulty numbers from that country before trusting a term.

For English secondary locales indexed alongside your primary (e.g. en-GB, en-AU, en-CA under a US storefront), don't just re-run your en-US shortlist: look for regional spelling/vocabulary differences ("colour"/"color", "torch"/"flashlight") and overflow keywords that didn't fit your primary locale's 100-char budget. These count as genuinely different tokens even though the language is the same.

## Step 3: Dedup across locales in the same storefront

Within one storefront, the same word repeated across two of its indexed locales earns nothing extra: Apple already has it indexed once. Build a quick coverage table before finalizing:

```
| Term         | en-US | en-GB | es-MX | Locales |
|--------------|-------|-------|-------|---------|
| camera       | Yes   | -     | -     | 1       |
| cctv         | -     | Yes   | -     | 1       |
| cámara       | -     | -     | Yes   | 1       |
```

Across **different** storefronts (US vs GB as separate stores), duplication is fine: they don't share an index.

## Step 4: Assemble and validate every locale at once

Draft title/subtitle/keywords per locale following `aso-metadata`'s per-field rules (natural title, benefit subtitle, packed keywords field, no cross-field repeats). CJK and Arabic locales fit fewer keyword-field tokens than en-US for the same 100-byte limit (see `aso` for why); check `aso lint`'s byte count for that locale rather than counting characters. Then validate the whole fastlane metadata tree in one pass:

```bash
aso lint --fastlane <metadata dir>
```

This runs the same checks as single-locale `aso lint` (lengths, duplicate words, spacing, stop words, plurals, wasted characters, competitor-brand risk) across every locale folder (`name.txt`, `subtitle.txt`, `keywords.txt`) at once. Fix every flagged locale before presenting the set.

## Step 5: Apply and log

`aso` doesn't upload. Ship via fastlane `deliver` from the `metadata/<locale>/` tree, or manual paste per locale in App Store Connect: with the user's explicit approval of every locale's final text. Log each locale's change:

```bash
aso log add --app <appId> --locale es-MX --field keywords --old "<old>" --new "<new>" --note "initial es-MX fill"
```

Repeat per changed field per locale so `aso-tracking` can later attribute rank movement to the right locale and field.

## Seasonal keyword calendar

Seasonal pushes (holiday, back-to-school, a sale) need lead time and a plan to revert, they're not a permanent rewrite:

- **Creative** (screenshots, icon variants, preview video): plan 4-6 weeks lead time to design and get through App Review.
- **Localization QA** on any seasonal text change: 2-3 weeks lead time to check translations read naturally and lint clean across every locale.
- **Promotional text is the safest seasonal lever**: not indexed, editable anytime with no new build, so put the timely message there first (see `aso-metadata`).
- **Keywords field seasonal swaps**: touch only 2-4 of the weakest evergreen terms, not a wholesale rewrite. Log the swap (`aso log add`), then **revert after the peak** unless the swapped terms are measurably outperforming what they replaced.

## Output

Coverage table (which locales are filled, bytes used, unique-vs-primary term count), the per-locale draft metadata, the `aso lint --fastlane` result, and next steps (which unfilled locales are highest priority, based on their storefront's likely reach).

## Red flags

- Copy-pasting one locale's keywords into another within the same storefront.
- Trusting a machine translation without checking its popularity via `aso keywords -c <country>`.
- Filling title/subtitle for a locale but leaving its keywords field empty (or vice versa).
- Assuming a fixed locale-to-storefront index list without checking current App Store Connect options for that storefront.

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.