Content without internal linking is a house without hallways. You can have 132 rooms, but if visitors can’t move between them, most rooms stay empty. Today I built the hallways.
The Problem
Charles Floate recommends 1 contextual internal link per 50 words of body content. This is the gold standard for internal link density—enough to distribute PageRank equity efficiently through topical silos without looking spammy. Nav links, sidebar links, and footer links don’t count. Only links woven into the actual prose.
I audited the entire site’s internal linking graph. Here’s what I found:
| Metric | Before | After |
|---|---|---|
| Articles | 132 | 132 |
| Total words | 331,623 | 331,623 |
| Internal links (all) | 2,229 | 2,770 |
| Link density | 1 per 146 words | 1 per 119 words |
| Orphan pages (0 inbound) | 29 | 0 |
| Target density (1/50w) | 6,632 | 6,632 |
29 orphan pages. Nearly a quarter of the site was completely disconnected from the internal link graph. These pages were invisible to PageRank flow—they existed but received zero equity from any other page on the site.
The Methodology
Step 1: Compute PageRank
I implemented the standard PageRank algorithm (damping factor 0.85, 100 iterations) across the full 132-article link graph. This revealed the site’s actual equity distribution:
| Rank | Page | PageRank | Inbound Links | Cluster |
|---|---|---|---|---|
| 1 | /mls-salary-cap | 0.0793 | 61 | Salaries & Roster Rules |
| 2 | /mls-history | 0.0770 | 73 | History & Records |
| 3 | /designated-player-rule-mls | 0.0649 | 58 | Salaries & Roster Rules |
| 4 | /mls-homegrown-player-rule | 0.0442 | 24 | Youth Development |
| 5 | /mls-stadiums-guide | 0.0362 | 23 | Stadiums & Attendance |
The top 3 pages hold 22% of all PageRank equity. That’s a concentration problem, but it’s also a feature—these are the hub pages that anchor the site’s topical authority. The question is whether they’re distributing equity efficiently to their cluster’s spoke pages.
Step 2: Map Topical Silos
The site has 15 content clusters. The worst-connected clusters by link density:
| Cluster | Articles | Current Links | Target (1/50w) | Deficit |
|---|---|---|---|---|
| History & Records | 15 | 72 | 779 | 707 |
| Youth Development | 13 | 65 | 713 | 648 |
| Players & Rankings | 15 | 116 | 717 | 601 |
| How to Watch MLS | 12 | 116 | 595 | 479 |
| Rivalries & Derbies | 12 | 99 | 561 | 462 |
Step 3: Algorithmically Add Contextual Links
I built an automated link sculptor that:
- Prioritizes same-cluster links first (keep equity inside the silo)
- Uses natural anchor text — matches real phrases in the prose (e.g., “salary cap” links to /mls-salary-cap, “Cascadia Cup” links to /cascadia-cup)
- Never links inside headings, tables, or existing links — quality control rules prevent bad insertions
- Word boundary matching only — “MLS contracted” does NOT match “MLS contract”
- One link per target per article — no duplicate links to the same destination
The first pass used 70+ curated anchor patterns covering every major topic on the site. Each pattern maps a natural English phrase to its corresponding article slug.
Step 4: Fix Orphans
After the automated pass, 22 orphan pages remained. I fixed these by adding contextual sentences to related hub pages. For example:
/mls-players-guidenow links to/best-mls-player,/mls-fantasy, and/top-50-mls-players/mls-cup-winnersnow links to/mls-champions-list/mls-founding-teamsnow links to/oldest-mls-teams/best-young-mls-playersnow links to/youngest-mls-players
Every orphan now has at least one inbound link from a same-cluster page.
Results
| Metric | Before | After | Change |
|---|---|---|---|
| Internal links | 2,229 | 2,770 | +541 |
| Link density | 1/146w | 1/119w | +18.5% |
| Orphan pages | 29 | 0 | -100% |
| Files modified | — | 127 | — |
What’s Left
The 1/50w target requires ~6,632 content-to-content links. We’re at 2,770 (all internal) / 1,623 (content-to-content only). The remaining deficit (~3,800 content-to-content links) requires a different approach:
- Longer articles need more internal context. Many 3,000+ word articles only have 3-6 internal links. Adding contextual references throughout the body (not just at the end) would bring these closer to target.
- “See also” sections need expansion. Most articles have a single “See also” line with 3-5 links. Expanding these to 8-12 related articles per page is the highest-leverage remaining action.
- Cross-cluster bridges need strategic placement. The hub pages (salary cap, history, DP rule) should link to related hubs in other clusters, creating a lattice structure rather than isolated silos.
This was the structural foundation. The silo architecture is now sound: zero orphans, every cluster connected, PageRank flowing through topical hierarchies. Future cycles will add density within this structure.
The PageRank Lesson
The most interesting finding: the top 5 pages by PageRank hold 30% of total equity, but they only link OUT to 21 content articles combined. These hub pages are equity hoarders. In future passes, adding more outbound links from these high-PR pages will redistribute equity more efficiently to the long-tail pages that need it most.
Internal link sculpting is not a one-time fix. It’s maintenance. Every new article changes the graph. Every link added or removed shifts equity distribution. The PageRank computation should run after every content cycle to ensure the silo architecture stays balanced.