Skip to the content

metadata-optimization

Rewrite an app Product's App Store metadata — title, subtitle, keywords field, description, promotional text.

Written by Kwern, after the skill of the same name in Eronred's aso-skills, MIT. Updated 2026-10-05.

The file, as Kwern runs it

Nothing below is rewritten or cut. The description a model routes on comes first, then the file itself. The whole thing, frontmatter included, is at /skills/metadata-optimization.md.

description

Rewrite an app Product's App Store metadata — title, subtitle, keywords field, description, promotional text. Use for "optimize my title", "write my subtitle", "keywords field", "character limits", "app description". For a whole-listing audit use aso; for other markets use localization.

Write App Store metadata that ranks for the Product's target keywords and converts the visitor who lands on the listing. Output is one listing Proposal per field and Locale, which Kwern writes to App Store Connect when the User approves it, plus a metadata package with the alternatives and the reasoning, saved with save_output.

Gather

  1. read_context — positioning, ICP, voice, competitors, target keywords if the Foundation doc names them.
  2. app_store_listing — current name, description, genres.
  3. connector_asc_localizations when the ASC Connector exists — the title, the subtitle, the promotional text and the private keywords field of every Locale, the primary first. Without it, treat the subtitle, the promotional text and the keywords field as unknown and say so in the package.
  4. With the Apple Ads Connector: connector_apple_ads_search_terms for the search terms that already convert, connector_apple_ads_suggestions for the keywords the Run has not found yet, then connector_apple_ads_search_term_popularity on every candidate keyword in each storefront the package targets. Without it, infer keywords from the Foundation doc and the competitors' listings through fetch_url on iTunes Search (https://itunes.apple.com/search?term=<name>&entity=software&country=<storefront>&limit=1).
  5. connector_asc_analytics when available — the page counts, the baseline the package must beat. Page conversion is pageDownloads ÷ pageViews, overall and per source type: downloads also counts the downloads made straight from search results, which no page view precedes, so divide the page downloads. Compare sources by their own rate, since a searcher and a browser convert differently, and quote a source's counts without a rate while it has fewer than 1,000 page views over the period.

The locale is the Product's primary storefront unless the Run says otherwise.

Write

Rules for each field are in references/field-rules.md: limits, what is indexed, formulas, and the mistakes to flag. Apply them in this order, because each field must avoid the keywords the previous one already covers:

  1. Title — brand + #1 keyword, three options with character counts.
  2. Subtitle — secondary keywords, benefit-led, no word repeated from the title, three options.
  3. Keywords field — 100 chars, comma-separated, no spaces, singular forms, no word already in title/subtitle, ranked by relevance × popularity and observed search-term performance.
  4. Description — conversion only (not indexed): hook in the first 170 characters, social proof, four to six benefit bullets, how it works, a review quote drawn from app_store_reviews, call to action.
  5. Promotional text — 170 chars, changeable without review; propose one for the current moment (launch, season, milestone).

Output: metadata package

For every field: recommended version, alternative A (different keyword emphasis), alternative B (different positioning angle), each with chars/limit, keywords covered, one-line rationale. Then:

  • Keyword coverage matrix — each target keyword × where it lands (title / subtitle / keywords field), so no keyword is covered twice and none is missing.
  • Before / after — current vs recommended per field, with the keywords gained.
  • Apply — which fields need a version the User can still edit in App Store Connect: title, subtitle, keywords field and description do; the promotional text does not.

Propose

Each field you change is one propose per Locale, with appStoreField (name for the title, subtitle, keywords, description, promotionalText) and the Locale's code in locale: content is the recommended version, whole, and why names the keywords it gains and the baseline it must beat. The alternatives stay in the package.

Done when every changed field has its Proposal in every Locale the package targets, every target keyword appears in the matrix exactly once, every recommended field is within its limit, and the package names the data it lacked (keywords field, search terms, popularity, conversion) when a Connector was absent.

  • aso — full listing audit; run it first when the target keywords are unknown.
  • localization — this package for other storefronts.
  • custom-product-pages — variants of the description and screenshots per audience.

What it discloses

The Skill reads these files only when it needs them, so the model spends nothing on them the rest of the time.

  • references/field-rules.md

From your accounts to a proposal

  1. 01

    Connect what it reads

    Give the ASO agent the accounts it works on. Kwern never asks for a password, and an agent missing a connection says so instead of guessing.

  2. 02

    The loop runs weekly

    Before it writes a word it reads the foundation doc, which holds the positioning, the audience and the voice, and whatever its connectors return that day.

  3. 03

    The metadata-optimization skill runs

    The agent activates it when the run calls for it, and what the model then reads is the file on this page, word for word.

  4. 04

    A proposal waits for you

    Nothing is published and nothing is spent until you approve it. Approve and Kwern posts it where it holds the keys; where it does not, it hands you the text and the link.

The file, the agency, and the agent

On your ownAn agencyKwern
The methodWhatever you remember to do that weekTheirs, and you never get to read itThis file, open on this page
Who runs itYou, when there is timeAn account manager, between other accountsThe ASO agent, weekly
What it readsWhat you can pull by handWhat you remembered to send themYour connected accounts and your foundation doc
What comes outA draft, sometimesA deck, and a report at the end of the monthA proposal you approve or throw away
What it costsYour eveningsA retainerOne subscription, and the model on your own key

Questions about metadata-optimization

Pair it with

The other skills the same agents reach for during a run.

aso
When the user wants to audit or optimize an App Store or Google Play listing.
competitor-profiling
When the user wants to research, profile, or analyze competitors from their URLs.
copywriting
When the user wants to write, rewrite, or improve marketing copy for any page, including homepage, landing pages,…
app-icon-optimization
Brief and evaluate an app Product's App Store icon for tap-through in search and browse.
app-preview-video
Storyboard an app Product's App Store preview video — the 15–30 s autoplay clip in search and on the product page —…
category-positioning
Recommend the App Store primary and secondary category for an app Product, scoring truth fit, competitive density,…
custom-product-pages
Plan an app Product's Custom Product Pages — one brief per audience with the ad groups it serves, screenshot plan and…
in-app-events
Plan an app Product's App Store In-App Events — one brief per event (name, descriptions, badge, dates, purpose) plus…
localization
Write an app Product's App Store metadata for its priority storefronts — title, subtitle, keywords field, description…
rating-prompt-strategy
Design when and to whom an app Product asks for a rating so the volume of 4–5 star ratings rises.
review-management
Analyze an app Product's App Store reviews into themes and draft replies as "Reply to review" Proposals.
screenshot-optimization
Plan an app Product's App Store screenshot set — per-slot message, caption copy, order, device sizes — plus A/B…
seasonal-aso
Build an app Product's seasonal calendar and, per moment, the keyword, promotional text and screenshot changes with…

Someone is asking for what you built today.

On Reddit, on X, in ChatGPT's answers. Kwern finds them every morning and drafts the reply in your voice; you decide what goes out.