Internal Linking Skill
Purpose
Outputs internal link structure using content silo architecture. SEO-focused link equity distribution.
Primary Objective
Push link equity to money pages (silo tops) through structured silos.
Not "pretty web" — strategic authority building.
Skill Output
silos: [...] # Defined content clusters
link_map: [...] # Per-page outbound links
link_requirements: [...] # Inbound requirements
orphan_check: [...] # Pages with <minimum inbound
Input
site_structure:
silos:
- name: "house-removals"
top: "/services/house-removals" # Money page
areas: ["/areas/bath", "/areas/bristol"]
articles: ["/blog/moving-costs", "/blog/packing-tips"]
- name: "office-removals"
top: "/services/office-removals"
areas: ["/areas/bath-office"]
articles: ["/blog/office-moving-guide"]
standalone:
- { url: "/calculator", type: "tool", priority: 1 }
- { url: "/contact", type: "conversion" }
- { url: "/about", type: "info" }
Content Silo Rules
Silo Structure
Homepage
│
├── SILO: House Removals
│ ├── /services/house-removals ← SILO TOP (money page)
│ ├── /areas/bath ← links UP to silo top
│ ├── /areas/bristol ← links UP to silo top
│ └── /blog/moving-costs ← links UP to silo top
│
└── SILO: Office Removals
├── /services/office-removals ← SILO TOP (money page)
└── /blog/office-guide ← links UP to silo top
Silo Linking Rules
| Rule |
Requirement |
| Intra-silo |
Encouraged — link freely within silo |
| Cross-silo |
Limited — max 1-2 per page |
| Silo top receives |
Links from ALL pages in silo |
| Areas/Blog |
ALWAYS link to parent silo top |
| Homepage |
Links to ALL silo tops |
Cross-Silo Linking (Restricted)
| From |
To |
Allowed |
| Service → Service |
Different silo |
Max 1 "related service" |
| Area → Area |
Different silo |
NO (only nearby same-silo) |
| Blog → Blog |
Different silo |
Max 1 if highly relevant |
| Blog → Service |
Different silo |
NO |
Link Budget Per Page
| Page Type |
Max Outbound |
Intra-silo |
Cross-silo |
| Homepage |
25 |
N/A |
All silo tops |
| Service (silo top) |
15 |
Unlimited |
2 max |
| Area page |
10 |
5+ |
1 max |
| Article |
12 |
3+ required |
1 max |
| Calculator |
5 |
N/A |
2 (results only) |
Inbound Requirements
Minimum Inbound Links
| Page Type |
Minimum |
Priority Sources |
| Silo top (service) |
5 |
Homepage, all silo areas, all silo articles |
| Area page |
3 |
Silo top, nearby areas, 1 article |
| Article |
2 |
Silo top, related articles |
| Calculator |
4 |
Homepage, ALL silo tops |
| Homepage |
1+ |
Nav/logo from all pages |
Inbound Priority Order
For silo tops (money pages), inbound links should come from:
- Homepage (highest value)
- Same-silo areas (relevance)
- Same-silo articles (content support)
- Other silo tops (1 max, related service)
Anchor Text Rules
Limits
| Anchor Type |
Per Page |
Per Target (total inbound) |
| Exact match keyword |
1 max |
3 max site-wide |
| Service name |
Unlimited |
Unlimited |
| Branded |
Unlimited |
Unlimited |
| Generic |
0 in body |
Nav/footer only |
Anchor Patterns
| Target Type |
Use |
| Silo top |
Service name, "our {service}" |
| Area |
"{service} in {area}", "{area} removals" |
| Article |
Topic phrase, question |
| Calculator |
"get quote", "instant price", "calculate" |
| Homepage |
Brand name, "home" |
Forbidden Anchors
- ❌ "click here" in body content
- ❌ "read more" in body content
- ❌ "learn more" in body content
- ❌ Same exact-match anchor 4+ times to one target
Blog as Link Pump
Blog's primary job: push equity to silo tops.
| Rule |
Requirement |
| Every article |
MUST link to parent silo top |
| Link placement |
Within first 3 paragraphs |
| Anchor |
Service-focused, not generic |
| Cross-silo |
Max 1 link, only if highly relevant |
| Blog → Blog |
Max 2 "related posts" |
# Good blog linking
article: "/blog/moving-costs"
silo: "house-removals"
required_outbound:
- target: "/services/house-removals" # Parent silo top
anchor: "house removals service"
placement: "body, paragraph 2"
optional_outbound:
- target: "/blog/packing-tips" # Same silo
anchor: "packing guide"
Calculator Page (Special)
High-priority inbound, minimal outbound.
| Direction |
Rule |
| Inbound |
From homepage + ALL silo tops |
| Outbound |
Max 5: logo home + 2 in results |
| No nav |
Minimal header, no full nav |
Link Map Output
link_map:
- page: "/services/house-removals"
silo: "house-removals"
role: "silo_top"
outbound:
- { to: "/", anchor: "Home", section: "breadcrumb" }
- { to: "/calculator", anchor: "Get your quote", section: "cta" }
- { to: "/services/packing", anchor: "packing service", section: "related", cross_silo: true }
- { to: "/areas/bath", anchor: "removals in Bath", section: "areas" }
inbound_required:
- { from: "/", min: 1 }
- { from: "/areas/*", min: 2 }
- { from: "/blog/*", min: 1 }
inbound_actual: 4
status: "healthy"
Orphan Prevention
| Check |
Rule |
| Orphan |
0 inbound links → BLOCKER |
| Weak |
Below minimum → WARNING |
| Healthy |
At/above minimum → OK |
orphan_check:
orphan_pages: [] # Must be empty
weak_pages:
- { url: "/areas/gloucester", inbound: 1, minimum: 3 }
healthy_pages: 10
Blocking Conditions (STOP)
| Condition |
Result |
| Orphan page exists |
STOP — fix before deploy |
| Silo top has <3 inbound |
STOP — add links |
| No silo definition |
STOP — define silos first |
| Cross-silo >3 on any page |
STOP — reduce |
Non-goals
- Does NOT create actual links
- Does NOT handle external links
- Does NOT track performance
- Does NOT analyze competitors
- Does NOT audit existing sites
Forbidden
- ❌ Orphan pages
- ❌ Generic anchors in body
- ❌ Exact match anchor >3 times to one target
- ❌ Blog not linking to silo top
- ❌ Cross-silo >3 per page
- ❌ Area linking to different-silo area
References
Definition of Done