A new pricing page goes live, gets a sitemap entry and waits. No blog post links to it, no breadcrumb reaches it, and the only path is the main navigation. Months later it has impressions but almost no clicks. Internal linking is the part of SEO you fully control: every link is a crawl path, a context signal and a route for readers. A topic map turns a pile of posts into a structure that search engines and people can follow.
Part of the SEO publishing guide. Audit the page itself in the SEO analyzer, then map the links around it with the workflow below.
Write descriptive anchors, not exact-match noise
Anchor text tells a reader what waits on the other side. “Read more” and “click here” waste that sentence. A descriptive anchor uses the target page's topic in natural language: “compare CRM pricing” or “how canonical tags work”. The surrounding sentence should still make sense if the link disappeared, because that is how a skimmer reads it.
Exact-match anchors are not forbidden, but repetition is a footprint. Thirty links that all say “best CRM software” look engineered, and they read badly. Use a mix of the page title, a close variant and a phrase from the sentence. Keep the anchor honest: if the target is a pricing page, do not label it “free trial” unless the trial is the point of the page.
Two to four contextual links per article
Two to four contextual links per article is a practical working range for most posts. It is not a quota. A short news post may need one; a 3,000-word guide may justify six if each link answers a different next question. The test is usefulness: would a reader pause here and want that page? If the answer is no, the link is decoration.
Where links appear matters. Body links carry context because they sit inside a sentence. Navigation and footer links are sitewide, so they spread attention across every page and say little about the current topic. Put the links that matter in the body, keep navigation stable, and reserve the footer for policies and utility pages. A page with forty body links is not a topic map; it is a directory.
| Link type | Role | Example anchor | Watch for |
|---|---|---|---|
| Contextual body link | Passes topic context and helps the reader continue | “compare CRM pricing” | Too many per paragraph; vague anchors |
| Hub to spoke | Routes readers from the overview to a focused guide | “canonical tag guide” | Linking every spoke from every hub |
| Spoke to hub | Returns readers to the broad topic | “SEO publishing guide” | Using the same anchor on every page |
| Breadcrumb | Shows hierarchy and gives crawlers a path | “Guides” | Broken intermediate links |
| Navigation or footer | Sitewide access to core sections | “Pricing” | Using sitewide links as the only in-links |
| Related posts | Discovery after the main content | Auto-generated title | Flat mesh with no descriptive context |
Build hub-and-spoke paths
A hub-and-spoke model gives every cluster a center. The pillar page covers the broad topic and links to each focused guide. Each guide links back to the pillar and, where useful, sideways to one or two siblings that answer the next question. A reader on a title-length guide may want the canonical guide or the meta description guide; a reader on a pricing post may want the comparison post.
Spoke-to-spoke links should be earned by relevance, not generated by a related-posts widget that links everything to everything. A widget can help discovery, but it rarely produces descriptive anchors. Build the important paths by hand in the body, then let the widget fill the gaps. The result is a map with a center, not a flat mesh where every page is equally close to every other page.
Find and fix orphan pages
An orphan page has no internal links pointing to it. It may be in the sitemap, it may rank for its brand name, but nothing on the site recommends it. Orphans appear after redesigns, when a category is removed from navigation, when a post is unpublished without redirects, or when a new landing page is built for ads and never added to the content plan.
Find them by comparing the sitemap with the link graph from a crawl, not by guessing. Then add links from pages that already discuss the topic. A pricing page needs links from posts about plans, upgrades, costs and comparisons, with anchors that match those sections. A single sitewide footer link technically removes the orphan status, but it passes little context. Contextual links from relevant pages do the real work.
Navigation and breadcrumbs are part of the map
Navigation and breadcrumbs are part of the map, not a substitute for it. A breadcrumb shows where a page sits in the hierarchy: Home > Guides > SEO > Canonical tags. That path helps users and gives crawlers a consistent route. Keep it stable across the template, and make sure the breadcrumb links resolve to real pages rather than redirect chains.
Main navigation should expose the handful of sections that matter most. It is not a place to dump every cluster. If a page only exists in the footer or the sitemap, it has a weak path. If it appears in the main navigation, it competes with everything else for attention. Decide which pages deserve the persistent slots, and link the rest from relevant body copy.
Build the map in a spreadsheet
Build the map in a spreadsheet before you edit templates. Columns: source URL, target URL, anchor text, section of the source page, and status. Start with the ten pages that matter commercially, then add the supporting guides. For each source, list two to four targets and write the sentence that will carry the link. That sentence is the real work; the HTML is trivial.
For new posts, add the links before publishing, not after. For old posts, review the map quarterly and fix broken links, redirected targets and anchors that no longer describe the page. When a page is merged or retired, update every source row and redirect the old URL. A map that is not maintained becomes a list of 404s.
What to measure, and what the analyzer cannot do
Use crawl depth, orphan count and internal clicks to judge the map. Search Console's link report and a crawler can show which pages have few in-links; analytics can show whether readers follow the paths you built. Do not expect every link to earn clicks. Some exist for crawlers and for the reader who needs the next step, and a low click count is not automatically a failure.
The SEO analyzer checks on-page factors such as title, description, headings, density and links in the submitted content. It is not an internal-link crawler, so it will not discover orphan pages or draw your site graph. Pair it with a crawl for the structural view, and judge the two together.
Two fixes that change the graph
Example 1: an orphan pricing page
A 1,200-word pricing page is live and indexed, but no post links to it and it is missing from navigation. Four posts discuss plans, upgrades, costs and comparisons but never link. Add one contextual link in each: “pricing plans” from the plans post, “plan limits” from the upgrade post, “cost comparison” from the comparison post and “upgrade path” from the onboarding post. The page now has four relevant paths with four different anchors, and readers can reach it from the moment they need it.
Example 2: exact-match anchor stuffing
Twenty-two links across the blog all use “best CRM software”. The phrase is accurate for a few, awkward for most, and repetitive enough to look manipulative. Rewrite fifteen of them to match the sentence: “CRM for small teams”, “compare CRM pricing”, “CRM features” and “sales pipeline setup”. Keep the exact phrase where it genuinely fits. The link count stays the same; the context improves and the pattern stops looking automated.
Start with the 60-to-80 score rescue if the page itself is weak, and use sitemap splitting to keep large URL sets manageable. For AI citation structure, the GEO checklist shows how linked, self-contained passages help retrieval systems.