SEO keywords: how to find and map them to pages

AI Writing · content clustering, internal linking, keyword mapping, search intent, serp analysis
Ivaylo

Ivaylo

March 13, 2026

We keep seeing teams treat seo keywords like magic words you sprinkle onto a page until Google smiles. That is not how it works in 2026, and it is the fastest way to waste a quarter shipping content that never ranks, never converts, and quietly poisons your site architecture with cannibalization.

This is the version of keyword research we wish someone forced us to use years ago: start with what your audience is actually trying to get done, expand only enough to see the shape of demand, then map each query family to the right page on purpose. Not “a blog post per keyword.” A page map.

What people mean by “SEO keywords” now (and why exact-match isn’t the goal)

When we say “keyword” in practice, we mean a search query someone types (or dictates) that reveals intent. In the old mental model, the keyword was a phrase you repeated. In the current one, the keyword is evidence: evidence of what the person wants, what format they expect, and what they will consider a good answer.

What trips people up is mixing up “keyword” with “exact phrase.” Google can and does rank pages that do not contain the exact wording because it’s matching meaning, not string matching. Still, the query matters because users search with words, and those words tell you which page you should build and what it must include.

The part everyone messes up: turning a messy list into a page map

We have watched smart teams nail the “collect keywords” part, then fall apart at the mapping step. They end up with five half-redundant articles targeting the same concept, each with slightly different wording, and none of them wins because Google sees a site that cannot decide what its best answer is.

Here is the framework we use now because it is repeatable and it prevents accidental self-sabotage.

Start with a spreadsheet (or a database if you are fancy, but a spreadsheet is fine). Every row is a candidate query. Before you touch volume, you assign two labels:

First, intent: informational, navigational, transactional. Be strict. “How to fix X” is informational. “Brand + login” is navigational. “Buy X” and “X pricing” are transactional. If you cannot label intent confidently, your content will be mush.

Second, required content type: guide, category page, product/service page, comparison, troubleshooting, glossary, calculator, whatever fits your business. This is the missing bridge between “keyword” and “page.” The SERP is already telling you what Google thinks the right format is.

Now the mapping rule that actually keeps you sane: one primary keyword per page, plus a handful of close variants that belong on that same page. In our experience, 3 to 8 close variants is the sweet spot. Enough to cover natural wording and headings. Not so many that you are cramming unrelated intents together.

Where this falls apart is when people confuse “similar words” with “same page.” Similar wording can still hide different intent. You can see it in one annoying pattern:

“best” and “reviews” and “top” usually want a comparison page with a shortlist, criteria, and clear recommendations.

“buy” and “price” and “deal” want a transactional page with inventory, pricing clarity, shipping/returns, and trust signals.

“how to” and “setup” and “fix” want an instructional page with steps, screenshots, and troubleshooting.

If you mash those into one URL, you create an intent conflict. Google does not know what you want to rank for, and users bounce because the page feels like it is trying to do three jobs.

A simple decision tree: new page vs update an existing page

We used to default to “new page” because shipping feels good. It is also how you create a content graveyard.

Run every keyword through this decision tree:

If an existing page already targets the same intent and content type, update that page. Add the query as a variant. Expand sections that match the question. Improve examples. Do not publish a new URL.

If an existing page targets a different intent or a different content type, create a new page. Then add internal links both ways so your site admits the relationship.

If you have two existing pages that both partially match, pick a winner URL. Consolidate. Redirect the loser or re-scope it so it serves a different intent.

The quick cannibalization check we use is blunt but effective: search your own site (site:yourdomain.com + the query) and look at what Google is already choosing. If Google alternates between multiple URLs for the same query over time, you likely have overlap. It is fixable. It is also common.

We have messed this up ourselves. One time we published a “best X” comparison, then later published “X reviews” thinking it was different enough. It was not. Rankings yo-yoed for weeks, and the “better” page kept swapping in and out. We ended up merging them, and the combined page stabilized within a month.

The page mapping spec we actually ship

Every mapped page in our plan has the same minimal spec. Not a huge content brief. Just enough structure to prevent vague work.

Primary keyword: one query that defines the page.

Close variants: 3 to 8 phrases that share the same intent and would be satisfied by the same page.

Intent label: informational, navigational, transactional.

Content type: guide, category, product/service, comparison, troubleshooting.

Cannibalization notes: which existing URLs are related, what will be merged, what will be redirected, what will be re-scoped.

That’s the whole thing. It is boring. It is also the difference between a site that accumulates relevance and one that spins.

Seed keyword ideation that starts with the audience, not tools

Tools are good at expanding your inputs. They are bad at deciding what is relevant to your business. If your seed set is sloppy, your output will be nonsense at scale.

We start with jobs-to-be-done style prompts. What are people trying to accomplish right before they would need us? What are they trying to avoid? What do they call the problem in plain language? Then we draw boundaries: what we do not want to rank for.

The annoying part is that this requires you to say no. If you sell a narrow product, you do not get to chase every adjacent head term. Broad terms look tempting because they have volume. They also come with unclear intent and SERPs dominated by strong domains. That is how teams end up ranking for nothing and blaming “SEO.”

Language mining beats brainstorming. We pull phrases from:

Sales calls and demos, especially the first 5 minutes when people describe the problem.

Support tickets, because complaints are keyword gold.

Community posts and Reddit threads, because jargon shows up there before it shows up in “official” content.

Anyway, back to the point: the goal is not a long list. The goal is a clean seed list that matches what you actually offer.

Keyword expansion without tool paralysis (and why SERP mining still works)

If you have budget, use a mainstream tool stack. If you do not, you can still do real research.

Our minimal setup is Google itself plus one volume source. Google Autocomplete gives you phrasing variants people actually type. People Also Ask gives you question framing and subtopics that often become H2s. Related Searches at the bottom gives you alternative wording and adjacent angles.

What nobody mentions is that the question keywords often define page structure better than the “main” keyword. Teams collect thousands of phrases, then write a generic page with no real questions answered. If we see “People Also Ask” full of troubleshooting and comparisons, we bake those into the outline early.

For volume and competition, Google Keyword Planner is fine for directional data, especially if you set the geography correctly. Paid tools like Ahrefs or Semrush are faster for clustering and difficulty estimates, but they are not required to get started. We have paid for them and still found that a careful SERP review beats a single difficulty score.

Prioritization math that you will actually use

If you sort by search volume, you will select the hardest terms with the least clear intent. That is not a moral failing. It is how most keyword tools default.

We use three decision metrics because they map to real outcomes: monthly search volume, competition or difficulty, and relevancy. Then we add an explicit intent fit check.

Here is the simple scoring model we use when we need to pick what to do next:

  • Relevancy (0 to 3): 0 means we cannot serve the user well, 3 means the page is core to what we do.
  • Intent fit (0 to 3): 0 means wrong format for us, 3 means we can satisfy the intent cleanly.
  • Feasibility (0 to 3): based on competition/difficulty and SERP reality. If the top results are all massive domains and the content type is locked, it gets a low score.
  • Demand (0 to 3): based on monthly volume directionally. “Too low to estimate” can still be a 1 if it clearly shows up across Autocomplete and PAA.

Add them up. Anything under 7 is usually not worth building right now unless it is strategically important. Anything 9 or above goes into the near-term plan.

This keeps us honest. It also prevents the classic ROI trap where a team spends months chasing a head term like “shoes” (huge volume, brutal competition, unclear intent) instead of owning a set of long-tail pages that bring qualified visitors.

Keyword clusters and hub-and-spoke architecture that actually accumulates rankings

Single pages rarely win long-term on their own unless you already have authority. Most smaller sites need clustered coverage so Google can see you are not answering one question by accident.

A cluster is a family of keywords that share a topic and usually a related intent. You build one hub page that covers the broader concept, then spokes that handle the specific sub-questions, comparisons, and edge cases. The internal links are not decoration. They are the structure.

We do clustering without paid tools when we have to, using SERP similarity.

Pick two candidate queries. Google them. Compare the top 10 results. If 5 or more URLs overlap, those queries are probably the same cluster and often belong on the same page or at least the same hub. If there is little overlap, you are looking at different intents or different content types, and splitting pages is safer.

This overlap check also predicts cannibalization. If two of your own URLs show up for the same query and the SERP overlap is high, you are competing with yourself.

Assigning hub vs spoke roles without overthinking it

We choose the hub page based on which page can honestly be the “best general answer” for the topic on our site. Often it is a broad guide or a category page.

Spokes are where you earn coverage depth: specific questions, “best” lists, alternatives, troubleshooting, integrations, “X vs Y,” and use-case pages.

Here is the internal linking rule set we follow because it is simple enough to maintain:

  • Every spoke links to the hub in a context that makes sense, using descriptive but varied anchor text. Not the same exact-match phrase every time.
  • The hub links back to spokes from relevant sections, not a giant “related posts” block that nobody reads.
  • If two spokes are closely related, link them to each other once, but do not create a spiderweb for its own sake.

The catch is that you cannot treat spokes like isolated blog posts. If you publish a spoke and never link it into the cluster, it is basically floating content. We have done this. It feels productive for a week. Then traffic stays flat.

A concrete example of intent-based clustering

Take a generic topic like “backyard chicken breeds.” The broad head term is hard and the intent is fuzzy. A hub might be a guide that helps someone choose based on climate, egg production, temperament, and local regulations.

Spokes could include “best backyard chicken breeds for cold weather,” “quiet chicken breeds for suburbs,” “Rhode Island Red vs Plymouth Rock,” and “how many chickens can I keep in [city].” Those are long-tail queries with specific intent and usually lower competition. They also naturally link back to the hub because the hub is where you explain the selection framework.

That is how you earn topical authority without pretending you can out-rank the entire internet for a two-word term.

On-page placement and restraint

This is table stakes, but teams still miss it in boring ways. Put the main keyword (or a close variation) in the meta title, meta description, H1, body content, and image ALT where it is actually describing the image.

Do not stuff the exact phrase everywhere. If the title becomes unreadable, you have already lost. Clarity beats repetition.

Off-page and anchor text nuance

Keyword-rich anchor text can help relevance signals. It can also become a spam pattern if you push exact-match money anchors too hard.

Our guardrail is simple: most anchors should be branded, partial match, or natural language. Use exact-match anchors sparingly, and mostly when the linking context makes it genuinely natural. If your backlink profile looks like it was generated from a spreadsheet, you are inviting problems.

Operationalizing the system: the template, cadence, and what to do when nothing moves

Keyword research is not a one-off project. It is a maintenance loop.

We keep a keyword-to-page map that is basically a living backlog. Each page has its primary keyword, variants, intent, content type, and cluster membership. Every month, we review three things.

First, rankings and impressions in Search Console: are we gaining visibility for the variants we expected, or only for weird edge queries? That tells us whether the page matches intent.

Second, cannibalization: are multiple URLs rotating for the same query? If yes, we consolidate or re-scope.

Third, content decay: are competitors adding fresher examples, better screenshots, updated pricing, or new comparisons? If yes, we refresh.

If rankings do not rise after a reasonable period, we assume one of two root causes. Either the page is not relevant enough to the intent compared to what is ranking, or we do not have the authority to compete yet. The fix is different.

If it is relevance, we change the content type, rewrite the page to match the SERP, or split intent-conflicted sections into separate pages.

If it is authority, we build cluster depth and internal linking first, then earn external links naturally through PR, partnerships, and citations. Also, sometimes the keyword target was just too ambitious. We have dropped targets after wasting weeks. It stings. It is still cheaper than pretending.

One last note on “too low to estimate” keywords: do not treat that as zero. Some of our highest converting pages started there. The tool could not see it. The customers could.

If you take nothing else from this, take the mapping discipline. Finding keywords is easy now. Deciding what page deserves them is the real work.

FAQ

What are SEO keywords?

SEO keywords are the search queries people type (or say) that reveal intent. In practice, they are signals you use to decide what page to build and what that page must cover.

How do I choose SEO keywords for a page?

Start by matching intent and content type to the SERP, then pick one primary query and 3 to 8 close variants that would be satisfied by the same page. If the SERP expects a comparison but you publish a tutorial, you picked the wrong target.

When should I create a new page vs update an existing page?

Update an existing page if it already targets the same intent and content type. Create a new page only when the intent or content type is genuinely different, or when you need to split conflicting intents to avoid cannibalization.

What is keyword cannibalization and how do I spot it?

Cannibalization is when multiple URLs on your site compete for the same query, so rankings rotate and none of the pages wins consistently. A fast check is site:yourdomain.com plus the query, then look for multiple relevant URLs and unstable winners in Search Console.