Overview
Keyword research decides which questions a site tries to rank for and in what order. The output is a prioritized list of terms tied to a page format and a target cluster. Volume alone is a trap; pair it with intent and difficulty or the list rots inside a spreadsheet.
Run the tool stack in pairs, never solo
One tool overstates its own database; two tools agreeing is a useful signal.
- Ahrefs and SEMrush for volume, keyword difficulty (KD), and competitor gap reports. Both for confirmation; pick one as the source of truth.
- Google Search Console for terms a site already ranks for on page 2 or 3. These are the cheapest wins; the page exists and Google has already decided it is relevant.
- Reddit and Quora for the phrasing humans actually use. Search a topic, read the top three threads, and copy the question titles. These are zero-volume in Ahrefs and high-converting in practice.
- Google autocomplete and the “People also ask” box on every target SERP. Free and drawn from real searches, though Google does not publish how predictions are ranked.
Classify every term by intent before ranking it
Four intent buckets. The page format follows the intent, not the keyword.
- Informational: “what is X,” “how does X work.” Definition-led explainer with H2-per-subquestion structure.
- Navigational: “X login,” “X docs.” Send the reader to the destination; do not write an article.
- Transactional: “buy X,” “X pricing,” “download X.” Price, plan, CTA above the fold.
- Commercial investigation: “X vs Y,” “best X for Y.” Comparison table, criteria, verdict.
Mismatched intent loses the slot. See content for the format-per-intent rules.
Verify intent by scraping the live SERP
Tools guess intent; the live SERP confirms it. For every shortlisted term, open the first ten organic results and classify what Google has already rewarded.
- Nine listicles? The slot is “best X.” Do not ship a 600-word explainer.
- Nine docs pages? Informational. A comparison post will not rank.
- Mixed formats? The intent is ambiguous; pick a different term.
- A
r/Redditthread or a Stack Overflow answer in the top five? The intent is informal; ship a direct, conversational answer.
Automate this with a SERP API (Serper, ScrapingBee, or DataForSEO) if the shortlist exceeds 50 terms.
Trade volume for difficulty deliberately
As a working heuristic, a 10,000-volume term at KD 80 is often worth less than ten 800-volume terms at KD 20. KD is a third-party tool score, not a Google metric, and each tool computes it differently; the bands below are practitioner rules of thumb.
- New site, fewer than 100 referring domains: target KD 0 to 20. Long-tail only.
- Established site, 100 to 1,000 referring domains: target KD 20 to 50.
- Authority site, over 1,000 referring domains: KD 50+ is reachable, slowly.
- Never chase a KD-90 term as a primary topic. Build the cluster underneath first.
Prefer long-tail terms with three or more words
Long-tail terms convert better, rank faster, and aggregate into authority on a topic.
- “Postgres” is a head term: high volume, KD 80+, navigational and informational both compete.
- “Postgres backup pg_dump parallel jobs” is long-tail: 50 to 200 monthly volume, KD under 10, one clear intent.
- A cluster of long-tail wins builds the topical depth that makes the head term reachable later. There is no fixed timeline; chasing the head term first on a new site rarely works.
Tie every term to a target page in a cluster
A keyword list with no page assignments is a wishlist. Each term maps to one URL, owned by one cluster.
- Pillar page: the head term of the cluster. One per cluster.
- Cluster pages: the long-tail variants and sub-questions. Five to fifteen per cluster.
- Never assign two URLs to the same term; the pages will cannibalize each other.
Pair the list with the architecture rules in content-clusters and the inbound link plan in internal-linking.