Free resources
Free Sheets template

Gemini for App Store Keyword Research

A Google Sheets template and 12 copy-paste prompts: seed → expansion → clusters → scoring → title, subtitle and keyword field, plus localization for 10 storefronts.

By Dheeraj Sharma, Founder of GROWNX, indie developer with multiple live iOS apps

Why do keyword research in a spreadsheet with Gemini?

Keyword research is a spreadsheet job: hundreds of candidates, a few scores, a lot of sorting. Gemini now runs inside Google Sheets, so the brainstorming, clustering and translation can happen in the same sheet where you score and pick.

The .xlsx template download is coming soon. Until then, you can rebuild it in Google Sheets from the tab-by-tab layout below. The counters, duplicate checks and scoring formulas work in Sheets, Excel and LibreOffice. The Gemini prompts are written out in each tab, ready to paste.

What you need

Two limits of the AI function to know about (from Google's help page): it returns text only, and it can't be nested inside another formula. So the template puts the AI output in one column and splits it with an ordinary formula in the next column.

The workflow (about 45 minutes for your first app)

  1. Seeds (5 min): write 10 seed keywords that describe the job your app does.
  2. Expansion (10 min): Gemini turns each seed into 15 long-tail search phrases. Paste them into the Keywords tab (one per row).
  3. Clusters (5 min): Gemini groups the keywords by search intent.
  4. Scoring (15 min): add relevance, volume and difficulty (1–5 each). The sheet calculates the score and tier.
  5. Metadata Builder (10 min): your top cluster goes into the title, the next into the subtitle, the rest into the 100-character keyword field. Live counters and a duplicate check tell you when it's right.
  6. Localization (optional, about 10 min per storefront): Gemini adapts your keywords for other storefronts, with an intent check.

The template: tab by tab

Tab 1: Start Here

Instructions, the scoring rubric and links between tabs.

Tab 2: Seeds

Column Contents
A: Seed keyword 10 seeds, e.g. calorie counter, macro tracker, food diary
B: Where it came from Your listing, a competitor title, a review phrase
C: Gemini expansion The AI prompt (Prompt 2 below). The result is 15 phrases separated by semicolons
D: Split helper =IFERROR(SPLIT(C2,";"),"") spreads the phrases across the row, ready to copy into the Keywords tab (Sheets)

Tab 3: Keywords (the master list)

Column Contents Formula
A: Keyword One phrase or word per row
B: Seed Which seed it came from
C: Cluster Filled from Prompt 4
D: Relevance (1–5) How well your app satisfies this search
E: Volume (1–5) From Apple Ads popularity or your ASO tool, mapped to 1–5
F: Difficulty (1–5) 5 = dominated by big brands
G: Score Relevance × Volume × (6 − Difficulty), max 125 =IF(COUNT(D2:F2)=3,D2*E2*(6-F2),"")
H: Tier A / B / C =IF(G2="","",IF(G2>=60,"A",IF(G2>=30,"B","C")))
I: Assign to Title / Subtitle / Keyword field / Test later / Drop Dropdown
J: Characters Length of the keyword =LEN(A2)
K: Times in metadata How often this word appears across title + subtitle + keyword field (single words) Counts against the Metadata Builder
L: Status Duplicate / Used / Unused =IF(A2="","",IF(K2>1,"DUPLICATE",IF(K2=1,"Used","Unused")))

Tab 4: Clusters

Column Contents Formula
A: Cluster Cluster name
B: User intent One sentence from Prompt 4
C: # Keywords =COUNTIF(Keywords!C:C,A2)
D: Average score =IFERROR(AVERAGEIF(Keywords!C:C,A2,Keywords!G:G),"")
E: Best score =IFERROR(MAXIFS(Keywords!G:G,Keywords!C:C,A2),"")
F: Recommended field Highest average → Title, next → Subtitle, rest → Keyword field

Tab 5: Metadata Builder

Field Limit Live counter Status
Title 30 =LEN(B3) =IF(C3>30,"OVER by "&(C3-30),"OK, "&(30-C3)&" left")
Subtitle 30 =LEN(B4) same pattern
Keyword field 100 =LEN(B5) same pattern, plus a spaces check: =IF(ISNUMBER(SEARCH(" ",B5)),"Remove spaces","No spaces ✓")
Promotional text 170 =LEN(B6) same pattern

A helper cell normalises all indexed text (title + subtitle + keyword field), lowercases it and strips punctuation. The Keywords tab counts each word against it, so any word used twice is flagged DUPLICATE.

Bonus Sheets-only formula that lists every duplicated word in one cell (put the normalised text in B10):

=JOIN(", ",UNIQUE(FILTER(FLATTEN(SPLIT(TRIM(B10)," ")),COUNTIF(FLATTEN(SPLIT(TRIM(B10)," ")),FLATTEN(SPLIT(TRIM(B10)," ")))>1)))

Tab 6: Localization

Column Contents
A: Storefront e.g. United Kingdom
B: Locale e.g. English (UK)
C: Local keyword ideas Gemini output (Prompt 9)
D: Local title / E: length =LEN(D2)
F: Local subtitle / G: length =LEN(F2)
H: Local keyword field / I: length =LEN(H2)
J: Native speaker checked? Yes / No

Tab 7: Prompts

All 12 prompts below, ready to paste.

The scoring rubric

Score Relevance Volume Difficulty
1 Barely related Almost no searches Easy: few strong apps
2 Related, but not your core use Low
3 Partly satisfies the search Medium Mixed results
4 Strong match High
5 Exactly what your app does Very high Top results are big brands with huge rating counts

Score = Relevance × Volume × (6 − Difficulty). Difficulty is inverted so easier keywords score higher. Relevance multiplies everything: a high-volume keyword your app doesn't satisfy still scores low, and it would hurt conversion anyway.

The tier cut-offs (A ≥ 60, B ≥ 30) are a starting point, not a law. Adjust them once you see your own distribution.

The 12 prompts

Each prompt works in an =AI() cell (with the range shown) or pasted into the Gemini side panel.

Prompt 1: Seed keywords (Seeds tab, run once)

=AI("I'm doing App Store keyword research for an iOS app. App description: [ONE SENTENCE]. Target user: [WHO]. List 10 seed search terms (1–3 words each) a real iPhone user would type to find an app like this. Focus on the problem and the outcome, not feature jargon. Return them separated by semicolons, lowercase, no numbering.")

Prompt 2: Long-tail expansion (Seeds tab, column C, one per seed)

=AI("Give 15 App Store search phrases (2–4 words, lowercase) that a US iPhone user might type, closely related to the seed keyword in the cell. Include problem-based and outcome-based phrasing. No brand names. Return only the phrases separated by semicolons.", A2)

Prompt 3: Clean and de-duplicate (side panel, after pasting all phrases into the Keywords tab)

Look at the keywords in column A of the Keywords tab. Remove exact duplicates, near-duplicates that differ only by plural or word order, and anything containing a brand name or trademark. Return the cleaned list.

Prompt 4: Intent clusters (Keywords tab, column C)

=AI("Assign this App Store keyword to exactly one of these intent clusters: [CLUSTER 1], [CLUSTER 2], [CLUSTER 3], [CLUSTER 4], [CLUSTER 5]. Return only the cluster name.", A2)

Not sure what your clusters are yet? Ask the side panel first: "Suggest 4–6 intent clusters for the keywords in column A, each with a one-sentence user intent."

Prompt 5: Relevance first pass (Keywords tab, column D; you review it afterwards)

=AI("My app: [ONE SENTENCE]. On a scale of 1–5, how well would this app satisfy someone who searches the keyword in the cell? 5 = exactly what they want, 1 = barely related. Return only the number.", A2)

Always review these by hand. You know your app better than the model does.

Prompt 6: Title options (Metadata Builder)

=AI("Write 5 App Store title options, each 30 characters or fewer including spaces, that start with the brand '[BRAND]' and include the most important keyword from this list. Show the character count after each. Separate options with semicolons.", Clusters!A2:B2)

Prompt 7: Subtitle options

=AI("My App Store title is in the first cell. Write 5 subtitles, each 30 characters or fewer, that do not repeat any word from the title, use keywords from the second cell, and state a user benefit. Show the character count after each. Separate with semicolons.", B3:B4)

(Put your title in B3 and paste your second-cluster keywords into B4 temporarily, or point the range at any two cells holding them.)

Prompt 8: Keyword field packing

Using the Keywords tab rows where "Assign to" = Keyword field, sorted by Score, build a 100-character App Store keyword field: single words, comma-separated, no spaces, no word that already appears in the title "[TITLE]" or subtitle "[SUBTITLE]", no plurals of words already present. Show the string and its character count.

Paste the result into B5 of the Metadata Builder and check that the counter and DUPLICATE flags agree.

Prompt 9: Localize with intent (Localization tab, column C)

=AI("Act as a native App Store user in [COUNTRY], speaking [LANGUAGE]. For an app that [ONE SENTENCE], list the 15 search terms locals would most likely type, in [LANGUAGE]. Do not just translate English terms: if locals use an English loanword or a different concept, use that. After each term add a literal English back-translation in brackets. Separate with semicolons.")

Prompt 10: Cultural intent check

=AI("For the App Store in [COUNTRY], check this keyword list for: words that mean something different locally, terms that are offensive or awkward, and literal translations locals wouldn't search. Return only the problem keywords with a one-line reason each, or 'No issues'.", C2)

Prompt 11: Google Trends sanity check (side panel or gemini.google.com)

I'm comparing these App Store keyword candidates: [5 KEYWORDS]. Using Google Search and Google Trends data you can access, tell me which have rising, stable or declining interest over the past 12 months in [COUNTRY], and any seasonal pattern. Say clearly where you are unsure. I'll verify in Google Trends myself.

Then verify in Google Trends (trends.google.com). Compare up to 5 terms, set the country, and look at "Related queries" for rising phrases. Web search interest is not App Store search volume, so use it as a direction signal (rising, seasonal, dying), not a volume score. YouTube search suggestions (start typing in YouTube's search bar) are another quick source of real user phrasing, especially for how-to and problem queries.

Prompt 12: Final review

Review my final App Store metadata. Title: [B3]. Subtitle: [B4]. Keyword field: [B5]. Check: limits (30/30/100), duplicate words across fields, spaces in the keyword field, filler words (app, free, iphone, category name), trademarks, and whether the title and subtitle read naturally to a human. Return a pass/fail list and a corrected version if needed.

Localizing for 10 storefronts

A practical first set for an English-language app, with what to check in each. Pick based on your own App Store Connect impressions by territory, not this list.

# Storefront Locale(s) to fill What to check
1 United States English (US) + Spanish (Mexico) Use the Spanish (Mexico) keyword field for extra English keywords only if you're confident about cross-locale indexing (practitioner-reported, not Apple-documented)
2 United Kingdom English (UK) Spelling (colour, organise), different terms (mobile vs cell, "slimming" vs "diet")
3 Canada English (CA) + French (CA) Quebec French terms differ from France French
4 Australia English (AU) Local terms and spelling
5 Germany German Compound words (Kalorienzähler); Germans often search English loanwords too
6 France French Formal vs informal tone in the subtitle
7 Japan Japanese Katakana loanwords vs kanji; have a native speaker check
8 Brazil Portuguese (Brazil) Not the same as Portugal Portuguese
9 Mexico Spanish (Mexico) Not the same as Spain Spanish
10 South Korea Korean Native check essential

Rules for every storefront

Try GROWNX free: Free plan available

Track your ASO in GROWNX. GROWNX is one ASO dashboard for keywords, listing audits and competitors, built by an indie developer with multiple live iOS apps.

Free plan available. Start free.
Start free →

More free resources