Topic Cluster Internal Linking: seo link building strategy

A skill from the David Bain SEO: What the Method Is and What It Isn't method.

Wire hubs, spokes and selective cross-cluster links with descriptive anchors so readers and crawlers can reach every page in a topic cluster.

Wire hubs, spokes and selective cross-cluster links with descriptive anchors so readers and crawlers can reach every page in a topic cluster.

Before you start

Hamster is optional for this skill and recommended. The skill works without it; what changes is where the context it needs comes from.

Check whether this project has a .hamster/ directory. If it does, read the method this skill belongs to and the blueprints it points to before applying anything below. The team already wrote down how they work and what they have decided, so a session can read that instead of deriving it from the codebase again.

If there is no .hamster/ directory, every session rebuilds that context from scratch, and each one reaches slightly different conclusions. Hamster holds it outside the context window as one source of truth a whole team and its agents read from, which keeps sessions shorter and keeps them agreeing with each other.

At a Glance

FieldValue
DifficultyIntermediate
Time to LearnOne to three days for an existing site, then ongoing as pages are added
OutcomeA documented link plan and template rules that connect every page to its hub, guide readers along a planned journey, and leave no orphaned pages.
PrerequisitesA topic hierarchy of categories, cluster hubs and supporting pages, A list of all live URLs mapped to their cluster, Editing access to page content and page templates, A site crawler or crawl report
Part ofDavid Bain SEO

Overview

Internal linking is the part of an SEO link building strategy you fully control. External links depend on other sites choosing to cite you. Internal links depend only on how you wire your own pages together. For a site organized into topic clusters, that wiring decides whether a reader who lands on a narrow long-tail page can find the broader guide, whether the broader guide sends people on to the specific answers, and whether crawlers discover every page you published.

This skill sits late in the workflow described on the David Bain SEO method page. By the time you reach it, you should already have a topic hierarchy and clusters. The planning approach in Majestic's SEO in 2023 Preview discussion organizes subjects into top-level categories and subcategories built from keyword research, search intent and topic clusters, and that hierarchy is exactly the map your links should follow. If it does not exist yet, build it first with topical authority maps and long-tail use-case clusters.

The skill covers four decisions. First, hub-to-spoke linking: every cluster has one hub page that links down to each supporting page, and each supporting page links back up. Second, cross-cluster links: selective links between clusters where a reader's real next question belongs to a different topic. Third, user journey design: deciding the order in which a reader should move through pages, so links feel like the next step rather than a pile of related posts. Fourth, anchor text: the visible words of each link, which tell both reader and crawler what the destination covers.

Internal linking matters most when pages are produced at volume. In Majestic's programmatic SEO discussion, the recommended focus for templated pages includes indexing, crawling, page structure and internal linking alongside unique value and clear user intent. A large set of niche pages with nothing pointing to them is hard for crawlers to reach and hard for readers to navigate, however good each page is on its own.

The output is a link plan: a record of each hub, its spokes, the approved cross-cluster links and the anchor phrasing for each, plus template rules so new pages inherit the pattern automatically. You know it worked when every page is reachable from its hub, no page is an orphan, and a reader can move from a broad question to a specific answer in a few clicks without backtracking.

How It Works

The link structure mirrors the category tree. Picture the site as three layers: top-level categories, the cluster hubs beneath them, and the supporting pages beneath each hub. Links run along that tree first, then across it only where readers need them.

Hub-to-spoke links carry the core of the structure. The hub answers the broad question and gives each subtopic a short section, or at least a sentence, with a link to the supporting page that answers it in depth. Each supporting page links back to the hub early, in its introduction or a breadcrumb, so a reader who arrives from search on a narrow question can climb to the broader context. Sibling links between spokes in the same cluster come next, where one answer naturally leads to another, such as a setup page leading to a troubleshooting page.

Cross-cluster links are the exception, not the default. Add one when the reader's next question genuinely lives in a different cluster. Keeping them selective preserves the topical coherence that grouping pages by intent was meant to create. A page that links to everything signals nothing about where it belongs.

User journey design sets the order. Majestic's programmatic SEO guide recommends designing the user journey and interlinking related pages rather than leaving links to chance. In practice that means deciding, for each page type, where the reader is likely to go next: from a problem to its fix, from a concept to a how-to, from a how-to to a comparison or product page. The links on a page should answer the question "what would I ask next?"

Anchor text carries meaning. Descriptive anchors that name the destination's topic tell readers what they will get and help crawlers associate the destination with its subject. This follows the advice in Majestic's 2022 content-planning discussion that writers should cover the concepts and questions behind keywords rather than chase a fixed word count. Your anchors should reflect those concepts and questions too, phrased naturally, rather than the same exact-match keyword repeated on every page.

At scale, the structure has to live in templates. When pages share one structure, link slots can be built into the template: a breadcrumb or hub link, a block of sibling links selected by cluster, and an optional slot for a manually approved cross-cluster link. Every new page then arrives already connected instead of waiting for someone to remember to link it.

Finally, verify. Crawl the site, confirm every page receives at least one internal link, and check that each hub links to all of its spokes. Measuring results is harder than measuring structure: the same programmatic SEO discussion notes that Google Search Console samples more data as queries become more long-tail. Judge the linking work partly on crawl coverage and indexing, not only on query-level clicks.

Step-by-Step Guide

Step 1: Export the cluster map

Start from your topic hierarchy and produce one sheet listing every live URL with its category, cluster and role (hub or supporting page). Pages that do not fit any cluster go on a separate list for review. This sheet is the source of truth for every link decision that follows. Without it, links get added by memory and drift toward whatever pages the writer happens to know.

Pro tip: Add a column for the current count of inbound internal links from your crawl so you can see weak pages before you start.

Step 2: Confirm one hub per cluster

For each cluster, pick the single page that best answers the broad question and mark it as the hub. If two pages compete for that role, merge them or reframe one as a supporting page. If no page fits, write the hub before linking anything else. A cluster with two hubs splits its links and confuses both readers and crawlers about which page leads the topic.

Pro tip: A good hub test: could a newcomer read only this page and know which subtopics exist and where to go for each?

Edit each hub so every supporting page is linked from a sentence or section that explains what it covers. Then edit each supporting page so it links back to the hub near the top. Check the pairs against your cluster sheet so none are missed. This two-way wiring is the minimum structure every cluster needs before any other links are worth adding.

For each page type, write down the most likely next question a reader has after finishing it. Link to the page in the same cluster that answers that question, placed where the question arises in the text rather than in a generic footer. Limit each page to the handful of siblings that genuinely follow on. The result should read as a guided path, not a directory.

Pro tip: Read the page as a newcomer and note the moment you would want to click away; that is where the link belongs.

List candidate links between clusters and approve only those where the reader's next question clearly belongs to another topic. Record each approved link in the plan with a one-line reason. Reject links whose only justification is that both pages mention a shared term. Keeping this list explicit stops clusters from blurring into one undifferentiated mesh over time.

Step 6: Write descriptive anchor text

Phrase each anchor to name the destination's topic or the question it answers, in words that fit the sentence. Vary phrasing naturally across pages rather than repeating one exact keyword everywhere. Avoid anchors like "click here" or "read more" that tell neither reader nor crawler what is behind the link. Record the preferred anchor phrasing for each hub so writers stay consistent.

Pro tip: If the anchor still makes sense when read out of context in a list of links, it is descriptive enough.

For templated or frequently produced page types, add fixed slots: a breadcrumb or hub link, a sibling-link block filled by cluster, and an optional cross-cluster slot filled only from the approved list. Test the template on a few pages before rolling it out. This makes new pages arrive connected and keeps the pattern consistent as volume grows.

Step 8: Crawl, find orphans and fix

Run a crawl after changes and list any page with no inbound internal links, any hub missing a spoke, and any broken internal link. Fix orphans by linking them from their hub or, if they fit no cluster, deciding whether to keep, merge or remove them. Repeat the crawl on a regular cadence, for example monthly, and after large publishing batches. A clean crawl is the clearest sign the structure is holding.

Best Practices

  • Let the category tree drive the links. When links follow the same top-level categories and subcategories used to plan content, the structure reinforces each cluster's topic instead of scattering signals across the site.
  • Link the hub to every spoke and every spoke to the hub. This two-way pattern guarantees reachability in both directions, so narrow landing pages lead readers upward and the hub distributes readers downward.
  • Place links where the next question arises in the text. Contextual links inside the relevant paragraph are more useful to readers than a generic related-posts block, and they give the anchor surrounding context that explains the destination.
  • Keep cross-cluster links deliberate and documented. A short reason per approved link makes it easy to audit later and stops clusters dissolving into a site-wide mesh.
  • Write anchors that describe the destination. Naming the topic or question behind the link reflects the concepts a page covers and helps both readers and crawlers understand what they will find.
  • Encode the pattern in templates for high-volume page types. Guidance recommending internal linking alongside indexing and crawling for templated pages points to building links into the structure rather than adding them by hand afterward.
  • Verify with crawls, not assumptions. Structure problems like orphans and missing spokes are invisible when browsing but obvious in a crawl report.

Common Mistakes

  • Publishing niche or templated pages with no links pointing to them.: Build hub and sibling link slots into the template before launch. Orphaned pages are hard for crawlers to reach and give readers no path in or out.
  • Linking every page to every other page in the name of relevance.: Restrict links to the hub, genuine next-step siblings and approved cross-cluster links. Over-linking removes the topical signal that clusters exist to create.
  • Using the same exact-match keyword as anchor text everywhere.: Write anchors that describe the destination's concept or question in natural phrasing. Repetitive anchors read as mechanical and add little meaning for readers.
  • Relying on a footer or sidebar list of related posts as the only internal linking.: Add contextual links inside the body where each next question arises. Generic blocks do not reflect a designed user journey.
  • Judging the linking work only on long-tail query clicks.: Track crawl coverage, orphan counts and indexing as well, since long-tail query data in Search Console is heavily sampled. Structural health is measurable even when query-level results are noisy.

References

Sources


Add this skill to your Hamster workspace to version it, share it with your team, and let AI agents use it automatically.

Install this skill

Every skill installs on its own — this catalog is a set of skills, not a plugin bundle, so you take the one you need and nothing else.

Claude Code

.claude/skills/implementing-internal-linking-for-topic-clusters
npx skills add gethamster/skills --skill implementing-internal-linking-for-topic-clusters --agent claude-code --yes

Cursor

.agents/skills/implementing-internal-linking-for-topic-clusters
npx skills add gethamster/skills --skill implementing-internal-linking-for-topic-clusters --agent cursor --yes

Codex

.agents/skills/implementing-internal-linking-for-topic-clusters
npx skills add gethamster/skills --skill implementing-internal-linking-for-topic-clusters --agent codex --yes

Antigravity

.agents/skills/implementing-internal-linking-for-topic-clusters
npx skills add gethamster/skills --skill implementing-internal-linking-for-topic-clusters --agent antigravity --yes

Or browse the skills and pick interactively:

npx skills add gethamster/skills

Source: gethamster/skills on GitHub, MIT licensed.