Internal link architecture skill
- Why Internal Links Matter
by AgriciDaniel·MIT license·★ 2,219 Stars on the repo·GitHub ↗
Files of Internal link architecture
AgriciDaniel/
Show the full text340 lines
Internal Link Architecture
Contents
- Why Internal Links Matter
- Link Density Targets
- Anchor Text Distribution
- Link Placement Strategy
- Bidirectional Linking
- Hub-and-Spoke Model
- Orphan Page Detection
- Topic Cannibalization Detection
- Internal Link Audit Checklist
- Link Velocity Guidelines
- Internal Link Tracking
Why Internal Links Matter
Internal links are the primary mechanism for distributing page authority across a site. They tell search engines and AI systems which pages are important, how content relates, and what the site's topical structure looks like.
John Mueller (Google): Internal linking is "supercritical for SEO": it helps Google understand site structure and page importance.
seoClarity case study: 23% organic traffic increase from internal link optimization alone, with no new content published.
Link Density Targets
The number of internal links per post should scale with content length.
| Post Length | Internal Links | Notes |
|---|---|---|
| < 1,000 words | 3-5 | Short posts, fewer natural insertion points |
| 1,000-2,000 words | 5-7 | Standard blog posts |
| 2,000-3,000 words | 7-10 | Detailed guides |
| 3,000+ words (pillar) | 8-12 | Comprehensive pillar pages |
Hard Rules
- Minimum: 3 contextual internal links per post (no exceptions)
- Maximum: 10 links per post for standard content, 12 for pillar pages
- No orphan posts: Every published post must be linked from at least one other page on the site
- No dead ends: Every post must link out to at least 3 other pages
Anchor Text Distribution
Anchor text is the visible, clickable text of a hyperlink. Its optimization is critical but overuse of exact-match anchors triggers spam signals.
Recommended Distribution
| Anchor Type | Target Share | Example for "technical SEO" |
|---|---|---|
| Exact match | 5-10% | "technical SEO" |
| Partial match | 20-30% | "technical SEO best practices", "guide to technical SEO" |
| Semantic/related | 30-40% | "site architecture optimization", "crawlability improvements" |
| Branded | 10-15% | "our SEO guide", "[Brand] technical audit" |
| Natural/contextual | 15-25% | "the framework we outlined earlier", "as we discussed" |
Anchor Text Rules
- Descriptive: The anchor text should tell the reader what they will find at the destination
- Natural: Must read naturally in the sentence: if removing the link leaves awkward phrasing, rewrite
- Varied: Vary anchors naturally and avoid manipulative repetition; exact repeats are acceptable when they are the clearest wording
- Relevant: Anchor text must relate to the destination page's topic
- Reasonable length: 2-6 words is ideal, never an entire sentence
Anchor Text Anti-Patterns: NEVER Use
| Pattern | Problem | Fix |
|---|---|---|
| "click here" | Zero topical signal | "Read our [technical SEO checklist]" |
| "this article" | No descriptive value | "Our [guide to crawl budget optimization]" |
| "read more" | Generic, no context | "[How structured data improves AI visibility]" |
| "learn more" | Generic, no context | "Learn [how to audit your internal links]" |
| Naked URLs | Unreadable, no context | Replace with descriptive text |
| Full sentence as anchor | Looks spammy, dilutes signal | Reduce to 2-6 key words |
| Same exact anchor everywhere | Over-optimization signal | Vary anchor text across pages |
Link Placement Strategy
Where a link appears on the page affects how much weight it carries. Links higher on the page and within body content carry significantly more authority than links in footers or sidebars.
Placement Priority
| Location | Weight | Notes |
|---|---|---|
| First 2-3 paragraphs | Highest | Most crawled, most clicked |
| Within body content (contextual) | High | Natural editorial links |
| After key sections (H2s) | Medium-High | Contextually relevant transitions |
| Table of contents | Medium | Navigation aid, passes some authority |
| Related posts section | Medium-Low | Algorithmic, less editorial signal |
| Sidebar | Low | Often templated, discounted |
| Footer | Lowest | Heavily discounted by search engines |
Best Practices
- Place the most important internal link in the first 2-3 paragraphs
- Link to the pillar page early in every supporting article
- Distribute links naturally throughout the body: not clustered
- End sections with transitional links to related content
- Avoid placing all links in a "Related Articles" block at the bottom
Bidirectional Linking
When page A links to page B, page B should also link back to page A (where contextually relevant). This creates a strong topical relationship signal.
Implementation Process
When publishing a new post that links to existing content:
- Open each linked page
- Find a natural place to add a link back to the new post
- Use appropriate anchor text (not identical to the forward link)
When updating an existing post:
- Check if the linked pages reciprocate
- Add reciprocal links where missing
Example
Post A: "Complete Guide to Technical SEO"
- Contains: "...proper schema markup implementation is essential for AI visibility."
Post B: "Schema Markup Implementation Guide" (should link back)
- Add: "...schema is a critical component of technical SEO optimization, affecting how search engines interpret your content."
Hub-and-Spoke Model
The hub-and-spoke (or pillar-cluster) model is the most effective internal linking architecture for topical authority.
Structure
┌──────────────────┐
│ Pillar Page │
│ (Hub) │
│ /topic-guide │
└────────┬─────────┘
│
┌─────────────────┼──────────────────┐
│ │ │
┌──────▼──────┐ ┌─────▼──────┐ ┌───────▼──────┐
│ Spoke #1 │ │ Spoke #2 │ │ Spoke #3 │
│ Subtopic │ │ Subtopic │ │ Subtopic │
└──────┬──────┘ └─────┬──────┘ └───────┬──────┘
│ │ │
└────────────────┼───────────────────┘
(cross-links between spokes)
Requirements
| Element | Specification |
|---|---|
| Pillar page | 3,000-4,000 words, covers topic broadly |
| Supporting articles (spokes) | 8-12 articles, each covers a subtopic in depth |
| Pillar → Spoke links | Pillar links to ALL supporting articles |
| Spoke → Pillar links | Every supporting article links back to pillar |
| Spoke ↔ Spoke links | Cross-link between related subtopics (where natural) |
| Anchor text to pillar | Varied: use different anchor text from each spoke |
Example Topic Cluster: "Technical SEO"
Pillar: "The Complete Guide to Technical SEO in 2026"
Spokes:
- Schema Markup Implementation Guide
- Core Web Vitals Optimization
- Crawl Budget Management
- XML Sitemap Best Practices
- robots.txt Configuration Guide
- International SEO with hreflang
- Mobile-First Indexing Checklist
- Site Speed Optimization Techniques
- Structured Data Testing and Validation
- JavaScript SEO for Single-Page Applications
Each spoke links to the pillar and to 2-3 related spokes.
Orphan Page Detection
Orphan pages have zero internal links pointing to them. They are invisible to search crawlers navigating via internal links and will only be discovered through sitemap.xml (which carries less authority signal).
How to Find Orphan Pages
Site crawl: Use a crawler (Screaming Frog, Sitebulb) to map all internal links and identify pages with zero inbound internal links.
Manual check: For each published blog post URL, search the rest of the site for links pointing to it:
# Check if any page links to a specific URL grep -r "/blog/your-post-slug" ./content/ --include="*.md"CMS/database query: Query your content database for pages not referenced in any other page's body content.
Fixing Orphan Pages
For each orphan page:
- Identify 2-3 topically related existing pages
- Add a contextual link from each related page to the orphan
- Ensure the orphan page links back to at least one of those pages
- If no related content exists, consider whether the orphan should be consolidated into another page or removed
Topic Cannibalization Detection
Topic cannibalization occurs when multiple pages target the same primary keyword, causing them to compete against each other in search results. This splits authority and often results in neither page ranking well.
Symptoms
| Indicator | What It Means |
|---|---|
| Two pages ranking for same keyword, both fluctuating | Google is unsure which to show |
| One page dropped after publishing a similar new post | New post cannibalized the old one |
| Neither page ranks in top 10 despite strong content | Split authority |
| Search Console shows impressions split across URLs for same query | Confirmed cannibalization |
Detection Method
- In Google Search Console, filter by query and check which pages receive impressions
- If 2+ pages appear for the same query, cannibalization exists
- Review both pages' title tags, H1s, and meta descriptions for overlap
Resolution Strategies
| Strategy | When to Use |
|---|---|
| Merge | Both pages cover the same topic; combine the best content from both into one, redirect the weaker URL |
| Differentiate | Pages cover overlapping but distinct angles; sharpen each page's unique focus and keyword targeting |
| Canonical | One page is clearly the primary; add rel="canonical" from secondary to primary |
| 301 Redirect | Weaker page adds no unique value; redirect to stronger page |
| Noindex secondary | Keep both pages for users but exclude weaker from search |
Internal Link Audit Checklist
Run this audit quarterly or when publishing new content.
Per-Post Checks
| Check | Pass Criteria | Fail Action |
|---|---|---|
| Internal link count | 3-10 links (length-dependent) | Add links to related content |
| No orphan status | At least 1 internal link points to this page | Add links from 2-3 related pages |
| Anchor text variety | No single anchor used more than twice for same destination | Vary anchor text |
| No generic anchors | Zero instances of "click here", "read more", "this article" | Replace with descriptive text |
| Bidirectional links | Linked pages reciprocate where relevant | Add reciprocal links |
| Pillar link present | If part of a topic cluster, links to/from pillar | Add pillar connection |
| Links functional | All internal links return 200 | Fix broken links (301 or remove) |
| Link placement | At least 1 link in first 3 paragraphs | Move important link higher |
| No over-linking | No paragraph has more than 2 internal links | Remove least relevant link |
| Anchor describes destination | Reader can predict what they'll find | Rewrite anchor text |
Site-Wide Checks
| Check | Pass Criteria | Fail Action |
|---|---|---|
| Orphan page count | 0 orphan pages | Link to all orphans from related content |
| Cannibalization | No two pages target same primary keyword | Merge or differentiate |
| Pillar coverage | Every topic cluster has a pillar page | Create missing pillar pages |
| Spoke count per pillar | 8-12 supporting articles | Create more supporting content |
| Average internal links per page | 5-8 | Bulk-add links to under-linked pages |
| Max clicks from homepage | Any page reachable in 3-4 clicks | Restructure navigation |
| Broken internal links | 0 broken links (404s) | Fix or remove all broken links |
Link Velocity Guidelines
When adding internal links to existing content, avoid bulk-updating every page at once unless you have QA coverage. Pace changes so crawl logs, broken links, and editorial relevance can be reviewed.
| Action | Recommended Pace |
|---|---|
| New post with links | Normal: add all links at publish time |
| Updating existing posts | 3-5 posts per week maximum |
| New pillar page launch | Update all spokes within 1-2 weeks |
| Site-wide link audit fix | Spread changes over 2-4 weeks |
| Fixing orphan pages | 2-3 per day |
Internal Link Tracking
Maintain a simple tracking mechanism to ensure link health over time.
Recommended Fields
| Field | Purpose |
|---|---|
| Source URL | Page containing the link |
| Destination URL | Page being linked to |
| Anchor text | Clickable text used |
| Date added | When the link was created |
| Context | Why this link exists (editorial, navigation, pillar-spoke) |
| Status | Active, broken, or removed |
This tracking helps identify:
- Over-linked pages (too many pages linking to one destination)
- Under-linked pages (valuable content with few inbound links)
- Stale anchor text that needs updating after content refreshes
- Broken links after URL changes or content deletion
| 1 | # Internal Link Architecture |
| 2 | |
| 3 | ## Contents |
| 4 | |
| 5 | [Why Internal Links Matter] |
| 6 | [Link Density Targets] |
| 7 | [Anchor Text Distribution] |
| 8 | [Link Placement Strategy] |
| 9 | [Bidirectional Linking] |
| 10 | [Hub-and-Spoke Model] |
| 11 | [Orphan Page Detection] |
| 12 | [Topic Cannibalization Detection] |
| 13 | [Internal Link Audit Checklist] |
| 14 | [Link Velocity Guidelines] |
| 15 | [Internal Link Tracking] |
| 16 | |
| 17 | ## Why Internal Links Matter |
| 18 | |
| 19 | Internal links are the primary mechanism for distributing page authority across |
| 20 | a site. They tell search engines and AI systems which pages are important, how |
| 21 | content relates, and what the site's topical structure looks like. |
| 22 | |
| 23 | John Mueller (Google): Internal linking is "supercritical for SEO": it helps |
| 24 | Google understand site structure and page importance. |
| 25 | |
| 26 | seoClarity case study: 23% organic traffic increase from internal link |
| 27 | optimization alone, with no new content published. |
| 28 | |
| 29 | |
| 30 | |
| 31 | ## Link Density Targets |
| 32 | |
| 33 | The number of internal links per post should scale with content length. |
| 34 | |
| 35 | | Post Length | Internal Links | Notes | |
| 36 | |-------------|---------------|-------| |
| 37 | | < 1,000 words | 3-5 | Short posts, fewer natural insertion points | |
| 38 | | 1,000-2,000 words | 5-7 | Standard blog posts | |
| 39 | | 2,000-3,000 words | 7-10 | Detailed guides | |
| 40 | | 3,000+ words (pillar) | 8-12 | Comprehensive pillar pages | |
| 41 | |
| 42 | ### Hard Rules |
| 43 | |
| 44 | **Minimum**: 3 contextual internal links per post (no exceptions) |
| 45 | **Maximum**: 10 links per post for standard content, 12 for pillar pages |
| 46 | **No orphan posts**: Every published post must be linked from at least one |
| 47 | other page on the site |
| 48 | **No dead ends**: Every post must link out to at least 3 other pages |
| 49 | |
| 50 | |
| 51 | |
| 52 | ## Anchor Text Distribution |
| 53 | |
| 54 | Anchor text is the visible, clickable text of a hyperlink. Its optimization is |
| 55 | critical but overuse of exact-match anchors triggers spam signals. |
| 56 | |
| 57 | ### Recommended Distribution |
| 58 | |
| 59 | | Anchor Type | Target Share | Example for "technical SEO" | |
| 60 | |-------------|-------------|----------------------------| |
| 61 | | Exact match | 5-10% | "technical SEO" | |
| 62 | | Partial match | 20-30% | "technical SEO best practices", "guide to technical SEO" | |
| 63 | | Semantic/related | 30-40% | "site architecture optimization", "crawlability improvements" | |
| 64 | | Branded | 10-15% | "our SEO guide", "[Brand] technical audit" | |
| 65 | | Natural/contextual | 15-25% | "the framework we outlined earlier", "as we discussed" | |
| 66 | |
| 67 | ### Anchor Text Rules |
| 68 | |
| 69 | **Descriptive**: The anchor text should tell the reader what they will find |
| 70 | at the destination |
| 71 | **Natural**: Must read naturally in the sentence: if removing the link |
| 72 | leaves awkward phrasing, rewrite |
| 73 | **Varied**: Vary anchors naturally and avoid manipulative repetition; exact |
| 74 | repeats are acceptable when they are the clearest wording |
| 75 | **Relevant**: Anchor text must relate to the destination page's topic |
| 76 | **Reasonable length**: 2-6 words is ideal, never an entire sentence |
| 77 | |
| 78 | ### Anchor Text Anti-Patterns: NEVER Use |
| 79 | |
| 80 | | Pattern | Problem | Fix | |
| 81 | |---------|---------|-----| |
| 82 | | "click here" | Zero topical signal | "Read our [technical SEO checklist]" | |
| 83 | | "this article" | No descriptive value | "Our [guide to crawl budget optimization]" | |
| 84 | | "read more" | Generic, no context | "[How structured data improves AI visibility]" | |
| 85 | | "learn more" | Generic, no context | "Learn [how to audit your internal links]" | |
| 86 | | Naked URLs | Unreadable, no context | Replace with descriptive text | |
| 87 | | Full sentence as anchor | Looks spammy, dilutes signal | Reduce to 2-6 key words | |
| 88 | | Same exact anchor everywhere | Over-optimization signal | Vary anchor text across pages | |
| 89 | |
| 90 | |
| 91 | |
| 92 | ## Link Placement Strategy |
| 93 | |
| 94 | Where a link appears on the page affects how much weight it carries. Links |
| 95 | higher on the page and within body content carry significantly more authority |
| 96 | than links in footers or sidebars. |
| 97 | |
| 98 | ### Placement Priority |
| 99 | |
| 100 | | Location | Weight | Notes | |
| 101 | |----------|--------|-------| |
| 102 | | First 2-3 paragraphs | Highest | Most crawled, most clicked | |
| 103 | | Within body content (contextual) | High | Natural editorial links | |
| 104 | | After key sections (H2s) | Medium-High | Contextually relevant transitions | |
| 105 | | Table of contents | Medium | Navigation aid, passes some authority | |
| 106 | | Related posts section | Medium-Low | Algorithmic, less editorial signal | |
| 107 | | Sidebar | Low | Often templated, discounted | |
| 108 | | Footer | Lowest | Heavily discounted by search engines | |
| 109 | |
| 110 | ### Best Practices |
| 111 | |
| 112 | Place the most important internal link in the first 2-3 paragraphs |
| 113 | Link to the pillar page early in every supporting article |
| 114 | Distribute links naturally throughout the body: not clustered |
| 115 | End sections with transitional links to related content |
| 116 | Avoid placing all links in a "Related Articles" block at the bottom |
| 117 | |
| 118 | |
| 119 | |
| 120 | ## Bidirectional Linking |
| 121 | |
| 122 | When page A links to page B, page B should also link back to page A (where |
| 123 | contextually relevant). This creates a strong topical relationship signal. |
| 124 | |
| 125 | ### Implementation Process |
| 126 | |
| 127 | When publishing a new post that links to existing content: |
| 128 | Open each linked page |
| 129 | Find a natural place to add a link back to the new post |
| 130 | Use appropriate anchor text (not identical to the forward link) |
| 131 | |
| 132 | When updating an existing post: |
| 133 | Check if the linked pages reciprocate |
| 134 | Add reciprocal links where missing |
| 135 | |
| 136 | ### Example |
| 137 | |
| 138 | **Post A**: "Complete Guide to Technical SEO" |
| 139 | Contains: "...proper [schema markup implementation] |
| 140 | is essential for AI visibility." |
| 141 | |
| 142 | **Post B**: "Schema Markup Implementation Guide" (should link back) |
| 143 | Add: "...schema is a critical component of [technical SEO |
| 144 | optimization](/blog/technical-seo-guide), affecting how search engines |
| 145 | interpret your content." |
| 146 | |
| 147 | |
| 148 | |
| 149 | ## Hub-and-Spoke Model |
| 150 | |
| 151 | The hub-and-spoke (or pillar-cluster) model is the most effective internal |
| 152 | linking architecture for topical authority. |
| 153 | |
| 154 | ### Structure |
| 155 | |
| 156 | |
| 157 | ┌──────────────────┐ |
| 158 | │ Pillar Page │ |
| 159 | │ (Hub) │ |
| 160 | │ /topic-guide │ |
| 161 | └────────┬─────────┘ |
| 162 | │ |
| 163 | ┌─────────────────┼──────────────────┐ |
| 164 | │ │ │ |
| 165 | ┌──────▼──────┐ ┌─────▼──────┐ ┌───────▼──────┐ |
| 166 | │ Spoke #1 │ │ Spoke #2 │ │ Spoke #3 │ |
| 167 | │ Subtopic │ │ Subtopic │ │ Subtopic │ |
| 168 | └──────┬──────┘ └─────┬──────┘ └───────┬──────┘ |
| 169 | │ │ │ |
| 170 | └────────────────┼───────────────────┘ |
| 171 | (cross-links between spokes) |
| 172 | |
| 173 | |
| 174 | ### Requirements |
| 175 | |
| 176 | | Element | Specification | |
| 177 | |---------|--------------| |
| 178 | | Pillar page | 3,000-4,000 words, covers topic broadly | |
| 179 | | Supporting articles (spokes) | 8-12 articles, each covers a subtopic in depth | |
| 180 | | Pillar → Spoke links | Pillar links to ALL supporting articles | |
| 181 | | Spoke → Pillar links | Every supporting article links back to pillar | |
| 182 | | Spoke ↔ Spoke links | Cross-link between related subtopics (where natural) | |
| 183 | | Anchor text to pillar | Varied: use different anchor text from each spoke | |
| 184 | |
| 185 | ### Example Topic Cluster: "Technical SEO" |
| 186 | |
| 187 | **Pillar**: "The Complete Guide to Technical SEO in 2026" |
| 188 | |
| 189 | **Spokes**: |
| 190 | Schema Markup Implementation Guide |
| 191 | Core Web Vitals Optimization |
| 192 | Crawl Budget Management |
| 193 | XML Sitemap Best Practices |
| 194 | robots.txt Configuration Guide |
| 195 | International SEO with hreflang |
| 196 | Mobile-First Indexing Checklist |
| 197 | Site Speed Optimization Techniques |
| 198 | Structured Data Testing and Validation |
| 199 | JavaScript SEO for Single-Page Applications |
| 200 | |
| 201 | Each spoke links to the pillar and to 2-3 related spokes. |
| 202 | |
| 203 | |
| 204 | |
| 205 | ## Orphan Page Detection |
| 206 | |
| 207 | Orphan pages have zero internal links pointing to them. They are invisible to |
| 208 | search crawlers navigating via internal links and will only be discovered |
| 209 | through sitemap.xml (which carries less authority signal). |
| 210 | |
| 211 | ### How to Find Orphan Pages |
| 212 | |
| 213 | **Site crawl**: Use a crawler (Screaming Frog, Sitebulb) to map all internal |
| 214 | links and identify pages with zero inbound internal links. |
| 215 | |
| 216 | **Manual check**: For each published blog post URL, search the rest of the |
| 217 | site for links pointing to it: |
| 218 | |
| 219 | # Check if any page links to a specific URL |
| 220 | grep -r "/blog/your-post-slug" ./content/ --include="*.md" |
| 221 | |
| 222 | |
| 223 | **CMS/database query**: Query your content database for pages not referenced |
| 224 | in any other page's body content. |
| 225 | |
| 226 | ### Fixing Orphan Pages |
| 227 | |
| 228 | For each orphan page: |
| 229 | Identify 2-3 topically related existing pages |
| 230 | Add a contextual link from each related page to the orphan |
| 231 | Ensure the orphan page links back to at least one of those pages |
| 232 | If no related content exists, consider whether the orphan should be |
| 233 | consolidated into another page or removed |
| 234 | |
| 235 | |
| 236 | |
| 237 | ## Topic Cannibalization Detection |
| 238 | |
| 239 | Topic cannibalization occurs when multiple pages target the same primary keyword, |
| 240 | causing them to compete against each other in search results. This splits |
| 241 | authority and often results in neither page ranking well. |
| 242 | |
| 243 | ### Symptoms |
| 244 | |
| 245 | | Indicator | What It Means | |
| 246 | |-----------|---------------| |
| 247 | | Two pages ranking for same keyword, both fluctuating | Google is unsure which to show | |
| 248 | | One page dropped after publishing a similar new post | New post cannibalized the old one | |
| 249 | | Neither page ranks in top 10 despite strong content | Split authority | |
| 250 | | Search Console shows impressions split across URLs for same query | Confirmed cannibalization | |
| 251 | |
| 252 | ### Detection Method |
| 253 | |
| 254 | In Google Search Console, filter by query and check which pages receive |
| 255 | impressions |
| 256 | If 2+ pages appear for the same query, cannibalization exists |
| 257 | Review both pages' title tags, H1s, and meta descriptions for overlap |
| 258 | |
| 259 | ### Resolution Strategies |
| 260 | |
| 261 | | Strategy | When to Use | |
| 262 | |----------|-------------| |
| 263 | | **Merge** | Both pages cover the same topic; combine the best content from both into one, redirect the weaker URL | |
| 264 | | **Differentiate** | Pages cover overlapping but distinct angles; sharpen each page's unique focus and keyword targeting | |
| 265 | | **Canonical** | One page is clearly the primary; add `rel="canonical"` from secondary to primary | |
| 266 | | **301 Redirect** | Weaker page adds no unique value; redirect to stronger page | |
| 267 | | **Noindex secondary** | Keep both pages for users but exclude weaker from search | |
| 268 | |
| 269 | |
| 270 | |
| 271 | ## Internal Link Audit Checklist |
| 272 | |
| 273 | Run this audit quarterly or when publishing new content. |
| 274 | |
| 275 | ### Per-Post Checks |
| 276 | |
| 277 | | Check | Pass Criteria | Fail Action | |
| 278 | |-------|---------------|-------------| |
| 279 | | Internal link count | 3-10 links (length-dependent) | Add links to related content | |
| 280 | | No orphan status | At least 1 internal link points to this page | Add links from 2-3 related pages | |
| 281 | | Anchor text variety | No single anchor used more than twice for same destination | Vary anchor text | |
| 282 | | No generic anchors | Zero instances of "click here", "read more", "this article" | Replace with descriptive text | |
| 283 | | Bidirectional links | Linked pages reciprocate where relevant | Add reciprocal links | |
| 284 | | Pillar link present | If part of a topic cluster, links to/from pillar | Add pillar connection | |
| 285 | | Links functional | All internal links return 200 | Fix broken links (301 or remove) | |
| 286 | | Link placement | At least 1 link in first 3 paragraphs | Move important link higher | |
| 287 | | No over-linking | No paragraph has more than 2 internal links | Remove least relevant link | |
| 288 | | Anchor describes destination | Reader can predict what they'll find | Rewrite anchor text | |
| 289 | |
| 290 | ### Site-Wide Checks |
| 291 | |
| 292 | | Check | Pass Criteria | Fail Action | |
| 293 | |-------|---------------|-------------| |
| 294 | | Orphan page count | 0 orphan pages | Link to all orphans from related content | |
| 295 | | Cannibalization | No two pages target same primary keyword | Merge or differentiate | |
| 296 | | Pillar coverage | Every topic cluster has a pillar page | Create missing pillar pages | |
| 297 | | Spoke count per pillar | 8-12 supporting articles | Create more supporting content | |
| 298 | | Average internal links per page | 5-8 | Bulk-add links to under-linked pages | |
| 299 | | Max clicks from homepage | Any page reachable in 3-4 clicks | Restructure navigation | |
| 300 | | Broken internal links | 0 broken links (404s) | Fix or remove all broken links | |
| 301 | |
| 302 | |
| 303 | |
| 304 | ## Link Velocity Guidelines |
| 305 | |
| 306 | When adding internal links to existing content, avoid bulk-updating every page |
| 307 | at once unless you have QA coverage. Pace changes so crawl logs, broken links, |
| 308 | and editorial relevance can be reviewed. |
| 309 | |
| 310 | | Action | Recommended Pace | |
| 311 | |--------|-----------------| |
| 312 | | New post with links | Normal: add all links at publish time | |
| 313 | | Updating existing posts | 3-5 posts per week maximum | |
| 314 | | New pillar page launch | Update all spokes within 1-2 weeks | |
| 315 | | Site-wide link audit fix | Spread changes over 2-4 weeks | |
| 316 | | Fixing orphan pages | 2-3 per day | |
| 317 | |
| 318 | |
| 319 | |
| 320 | ## Internal Link Tracking |
| 321 | |
| 322 | Maintain a simple tracking mechanism to ensure link health over time. |
| 323 | |
| 324 | ### Recommended Fields |
| 325 | |
| 326 | | Field | Purpose | |
| 327 | |-------|---------| |
| 328 | | Source URL | Page containing the link | |
| 329 | | Destination URL | Page being linked to | |
| 330 | | Anchor text | Clickable text used | |
| 331 | | Date added | When the link was created | |
| 332 | | Context | Why this link exists (editorial, navigation, pillar-spoke) | |
| 333 | | Status | Active, broken, or removed | |
| 334 | |
| 335 | This tracking helps identify: |
| 336 | Over-linked pages (too many pages linking to one destination) |
| 337 | Under-linked pages (valuable content with few inbound links) |
| 338 | Stale anchor text that needs updating after content refreshes |
| 339 | Broken links after URL changes or content deletion |
| 340 |
Discussion
Alternatives
Browse more free Claude skills or everything in Development.