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

Or have us run it on your site →

The receipt

Receipt internal-links
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.
0 human touches
6 minutes
0 errors
raw run logopen →

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.