IMPROVE auto internal-links
No page is an orphan
The file
take it and run it.
One markdown file: the goal prompt, the verifier prompt, and the stopping condition. Read it before you run it. MIT licensed, no account, nothing to sign up for.
curl -fsSL https://vibemarketers.ai/loops/internal-links.md -o .claude/loops/internal-links.md The loop
copy it.
A page nothing links to is a page nobody finds. It sits in your sitemap and gets crawled, and no reader ever arrives at it from somewhere else on your site.
Use it when you have published steadily for a while, which is when orphans accumulate, or after a redesign that changed where links live.
You need your built output. The loop strips navigation before counting, because a link that appears on every page tells you nothing about structure.
You get a dated report: pages nothing points at, pages that point nowhere, and the total editorial link count so you can watch it move.
The gate is you deciding where links belong. It never writes one.
Goal prompt
Build the internal link graph for <site> from the built output. Exclude
links inside navigation, header and footer, because those appear on every
page and hide the real structure. Report every page with no inbound
editorial link and every page with no outbound editorial link. Write the
report with a date. Verifier prompt
Open the report. FAIL if navigation links were counted as editorial, if a
page with a real inbound link is reported as an orphan, if any built page is
missing from the graph, or if the report has no date. Otherwise PASS. Stopping condition
Every built page appears in the graph with an inbound and outbound count, and the verifier marks PASS.
MCPs it needs
- none required
Want everything at once
The installer writes the three starter skills and every
published loop into .claude/. Read the
script first.
curl -fsSL https://vibemarketers.ai/install.sh | bash The receipt
- Baseline
- 32 pages with no link graph of any kind. Whether anything linked to a given page was unknown, and the sitemap listed pages that no reader could reach by clicking.
- Hypothesis
- Excluding navigation from the graph will show that pages reachable only from the nav are effectively orphaned, because a link that appears on every page carries no editorial signal.
- Intervention
- Parsed every built page, stripped header, footer and nav, and built the inbound and outbound link graph from what remained.
- Result
- 32 pages and 105 editorial links. 14 pages had no inbound editorial link: all 13 term pages and the questions page. A glossary index and two homepage links were added, and a rerun found 0 orphans across 124 editorial links.
- Commercial signal
- none
- Attribution limits
- An inbound link is not traffic and not relevance. This finds pages nothing points at, which is a structural problem, not evidence that fixing it moves anything.
- Learning
- Excluding nav was the decision that made the loop useful. With nav counted, every page has dozens of inbound links and the report says nothing. The term pages looked linked and were not.
- Next intervention
- Weight the graph by how close a link is to the top of the page, so a footer mention does not count the same as a link inside an argument.
Sources: run log, lab/runs/2026-09-25-internal-links.json, collected , window: 32 pages before, 33 after, single run each .
One entry per run, append-only, newest first. Corrections append a dated line.
Inside a company
where the lane changes.
VibeMarketers tests the loop. SuperMarketers runs it on a real team.
- Problem
- Pages get published and then nothing links to them, so readers and crawlers never find them.
- Source of truth
- The built output, with navigation excluded so the graph shows editorial structure.
- Permitted actions
- Read built pages, build the graph, report orphans and dead ends. Never insert a link.
- Required approvals
- The content owner decides which links to add and where.
- Owner
- Content lead
- Metric
- Count of pages with no inbound editorial link.
On a real team the CMS surfaces this at publish time, so a page cannot go live with nothing pointing at it.
Running this on your own site is one person reading a diff. Running it inside a company changes four things, and the guide covers them. When it stops being a file you copy and becomes a build, SuperMarketers does the same loop model inside your stack, on your keys.