← All posts

STAYCHARTED BLOG · SEO · GOOGLE SEARCH CONSOLE

Map search queries to the right pages with Google Search Console and AI

Use Google Search Console query–page data to train an AI keyword-mapping model. Review page mismatches, possible content gaps and new queries in Google Sheets.

By Manoj Mohandas ·

Why keyword maps go stale

Most SEO teams keep a keyword map in a spreadsheet: one row per query, one column for the target page. It works when it's made, then falls behind:

  • New queries appear every month. Search Console shows hundreds of queries you never planned for, many of them long and phrased like questions to an AI assistant.
  • Mapping is judgement. "Spend taxonomy" could belong on your spend classification post or your taxonomy guide. Two people on the same team will map it differently.
  • It doesn't scale. A catalog site or an agency with ten clients has tens of thousands of queries. Nobody maps those by hand every month.

The judgement your team applied to the first few hundred queries is exactly what a model can learn, and then apply the same way to the rest.

What Search Console already tells you

Google Search Console reports clicks, impressions, click-through rate and average position. For this workflow you need query and page together in each row, rather than separate query and page totals.

A page receiving clicks for a query is a useful candidate label, but it is not proof that the page best answers the query. Review examples against your site's intended structure before training. Otherwise, the model can learn today's misrouting rather than your preferred mapping.

Google limits the rows available through report exports and the Search Analytics API, and omits anonymized queries. This map covers the queries present in your export; it is not a complete inventory of search demand. See Google's report export guidance and Search Analytics API documentation.

How to map keywords with AI, in one Google Sheet

Use the StayCharted Google Sheets add-on to train from a prepared Training tab and fill a separate monthly data tab. Setup time depends on the size and quality of your export.

1. Get query–page pairs

Use three to twelve months of data where available. For a small sample, filter the Search Console Performance report to one page, export its queries and add that page URL to each row. Repeat for the pages you want to model. A general Queries-tab export alone does not identify the page for each query.

For larger sites, use an export integration or the Search Analytics API with both query and page dimensions. BigQuery bulk export is another option for properties where it is configured. Apply the same search type and date range across the data.

Keep an untouched copy of the source. A convenient working layout is:

Column Value
A query
B page
C clicks
D shown_group
E average position
F target_group (model answer)
G target_group confidence
H action

Keep impressions in another column for prioritizing review.

2. Choose useful page groups

You can map to individual pages or broader groups. Broader groups help when individual pages have too few examples, but do not tell you which exact URL should rank. Choose groups that reflect search intent, not just folder names.

For a starting point, this formula in D2 takes up to two URL path segments and uses / for the homepage:

Show Code example
=IF(B2="", "", IFERROR(REGEXEXTRACT(B2, "^https?://[^/]+(/[^/?#]+(?:/[^/?#]+)?)"), "/"))

For example, /blog/spend-classification-machine-learning remains a specific page, while /products/fasteners/bolts becomes /products/fasteners. Review the output and normalize URL variants before training. Mapping every blog post to /blog would be too broad to identify competition between individual articles.

3. Review candidate training answers

Work on a separate preparation tab. If several URLs belong to the same group, aggregate clicks for each query + group first, such as with a pivot table. Then compare the groups for each query. Do not pick the largest individual URL row when you mean to compare total group clicks.

Use the highest-click group as a candidate answer, not an automatic truth. Check ties, weak click counts, overlapping groups and pages that attract queries they should not own. If using average position as an additional check, preserve the aggregation returned by Google or calculate an impression-weighted value; do not average daily averages without their weights.

Copy one reviewed row per query into Training, with only query and target_group. Keep all source rows on your monthly data tab so you can still inspect queries that appeared for multiple pages. Aim for around 20 reviewed examples per group as a starting point, and more for overlapping groups; test results determine whether that is enough.

4. Train from the sheet

Install StayCharted AI Model Trainer for Google Sheets, open the Training tab and launch the add-on from Extensions. Choose query as the input and target_group as the answer.

Try an AI Classifier Model, which can use semantic similarity and supports multiple languages. Inspect held-out accuracy and mistakes for each group before relying on its suggestions. Similar wording does not always mean the same intent: “how to categorize spend” and “spend categorization software” might belong on different pages in your site.

Keep test queries distinct from training examples. Near-duplicate queries across both sets can make the score look more encouraging than performance on new searches.

5. Fill and add an action column

On the monthly data tab, fill target_group using the same query input. The add-on writes the answer and target_group confidence. It fills empty answer cells; it does not overwrite existing answers.

With the column layout above, put this formula in H2 and copy it down:

Show Code example
=IF(OR(F2="", G2=""), "",
  IF(G2<0.6, "Review mapping",
  IF(F2<>D2, "Check page match",
  IF(E2="", "Check position",
  IF(E2>10, "Improve page", "Mapped as expected")))))

The confidence threshold of 0.6 is an example. Choose a threshold from your model's measured errors and review workload; confidence is not a guarantee. Change the column letters if your sheet differs.

Each month

  1. Refresh your query–page data into a fresh monthly tab, keeping previous results separately.
  2. Fill the empty target_group cells and copy the action formula down.

The add-on shades answers below the model's review cutoff. Review those and a sample of confident answers too. Keep the same input format, add corrected examples to Training and retrain when your categories or site structure change. These Sheets fills do not automatically create StayCharted Review Queue items.

What the action column tells you

Action What to check Possible next step
Mapped as expected The model's group matches the shown group and average position is 10 or better Check a sample; watch clicks and intent
Improve page Matching group, average position below 10 Review relevance, page content, title and internal links
Check page match Predicted and shown groups differ Check intent and competing URLs before changing anything
Review mapping Confidence is below your chosen threshold Check ambiguous queries, weak examples and potential content gaps
Check position Position is missing Repair the source data before prioritizing

A mismatch is a lead for investigation, not proof of keyword cannibalization. Several pages can legitimately appear for a query. Compare their intent and performance before merging, redirecting or retitling them.

Low confidence can reflect overlapping groups or insufficient training examples, not just missing content. A model can also confidently assign a poor-fit query to a known group. Inspect the query and existing pages before deciding to write a new one.

Sort reviewed opportunities by impressions and business relevance. Search Console impressions describe your site's visibility, not total market search volume.

When an AI assistant is enough

If you have a few hundred queries and a dozen pages, provide them to ChatGPT or Claude, where your data-sharing policy permits, with a list of your pages and ask it to map them. For a one-off, that's fine.

A trained model is worth it when:

  • there are thousands of queries, every month, and you want the same query mapped the same way each time;
  • the pages are your own groupings, which an assistant needs supplied through context, instructions or a connection;
  • you want a confidence on each answer, to help people prioritize checks, alongside samples of confident answers;
  • you manage several sites: an agency can keep one workspace per client, each with its own model.

What it doesn't do

  • It doesn't predict rankings or traffic. It suggests a page group from the categories it learned. How well that page ranks is still up to the page.
  • It doesn't write content. It helps identify queries worth checking for content gaps; your team decides whether new content is needed.
  • It doesn't see your competitors or search volume. Search Console only covers queries where your site appeared. Rare queries are also left out of Search Console's query data to protect searchers' privacy.
  • It doesn't change your site. The map is a spreadsheet column; your team acts on it.

Common questions

What is keyword mapping?

Assigning each search query to the one page on your site that should rank for it, so pages don't compete with each other and every important query has a page.

Can AI do keyword mapping?

Yes. A model trained on queries your team has already mapped, or that your pages already win, can map new queries the same way and say how sure it is. A general AI assistant can do it for small lists if you give it your page structure.

How do I find keyword cannibalization in Search Console?

Compare the intended target with the pages receiving impressions and clicks for each query. Investigate competing pages with overlapping intent. A mismatch is a review signal, not proof of harmful competition.

How do I find content gaps with Search Console?

Review queries with impressions that your existing pages do not answer well. Low-confidence mappings can help prioritize review, but can also reflect weak training examples or overlapping categories. Check the pages before deciding a gap exists.

How many queries do I need to train a keyword-mapping model?

Around 20 reviewed examples per page group is a starting point, not a guarantee. Overlapping groups may need substantially more. Check held-out results by group and collect more examples where the errors matter.

Does it work for ecommerce sites with thousands of categories?

Start with your top-level categories or category groups. A model learns a category from many example queries, so map to the level where you have enough of them, then go deeper where the traffic is.

Sources and further reading

Put it into practice with StayCharted

Try it on your Search Console export →

Check plans and allowances · Security and your data