How I Found and Fixed Orphan Pages With an AI Assistant
By Ugur Saritepe · September 3, 2026
Orphan pages - pages nothing on your own site links to - do not get crawled, do not accumulate authority, and quietly earn nothing. I found nine of them on my games site, spent six weeks fixing the link graph with an AI assistant, and clicks went from 1,055 in July to 2,147 in August. This is the whole story, including the part where my own scoring formula turned out to be wrong and the part I cannot prove yet.

The report that started an argument
It started as one more column in a report. I was reviewing my site's pages with an assistant and asked for an internal link score next to each one:
Now I want to add more info here like score for SEO, or could be info to see metadata, title, CTR, personas, schemas, internal link count and maybe internal link score? Since we have a lot of visited pages that can give links, and pages never visited that give links, so we can calculate a score maybe here.
The first version graded my detective-games list 100 and my space-games list 55, and I could not say why. So I asked. The answer turned out to be embarrassing: the score seeded each page's authority from its clicks. Pages that already earned traffic were declared important, which made their links count more, which declared them important again.
This does not make sense, because we are giving points from clicks, but I am trying to improve clicks and impressions. If a page is not indexed I can't improve via this. So let's check if we can do better on calculating links. Is there a better way that competitors check inbound and outbound link quality? Specifically SEO apps - how do they score this?
The score was grading the wrong thing
The reference turned out to be the same formula search engines started from. Screaming Frog's Link Score - the closest thing to an industry standard for internal-link value - is plain PageRank over your own site: every page starts equal, and value flows through links, split across each page's outgoing links.
score(page) = (1 - d) / n + d * sum( score(linker) / outlinks(linker) ) d = 0.85, every page starts equal - no click data anywhere
The difference matters because of what each version tells you to do. My click-seeded score said "your winners are strong" - true and useless. The standard score says "this page gets almost no value from the graph, regardless of how it performs" - which is a to-do list. We replaced the formula the same day (commit a995979, 30 August), and the new ranking surfaced pages the old one had flattered.
It also settled something link counting never can: how many links a page has matters less than who they come from. Real rows from my weekly report (26 August - 1 September):
page inbound links link score best-open-world-rpg-games 19 100 best-medieval-fantasy-games 12 86 best-action-games 27 83 best-construction-simulator-games 8 54 best-heist-games 3 39
The action-games list has the most inbound links on the board - 27 - and still scores below a page with 12, because its links arrive from pages that split their value across many outgoing links. Counting links would have sent me to the wrong pages; scoring them sent me to the starved ones.
Six weeks of fixes, each with a date
The score came late, though. The unglamorous work had started in July, page by page, always with the change date recorded in git:
25-26 July: first pass - articles and best-lists cross-linked, shallow and orphaned guides re-attached. 4 August: new lists linked from the highest-traffic pages instead of waiting for them to be discovered. 12 August: nine orphan best-lists and ten unlinked articles wired in - the single biggest cleanup. 18 August: a cluster registry so related lists link each other by rule instead of by memory. 30 August: the Link Score fix above. 2-3 September: the first two clusters migrated to derived links, where every member of a topic cluster automatically receives four inbound links from its siblings.
None of this is clever. It is the same advice in every orphan-page guide. The difference an assistant made is that the audit, the scoring, and the page-by-page edits happened in the same sessions I was already working in - and every change got a date I can hold against the graph later.
What the data says - honestly
Twenty-eight days against the previous twenty-eight, pulled 3 September:
Which game-scout.app pages moved against the prior 28 days?
site sc-domain:game-scout.app group by page compare previousPeriod
site totals: 1,967 clicks (+998), 96,396 impressions (+46,891) best-detective-games 337 clicks (+188) position 7.2, was 8.5 best-fishing-games 145 clicks (+121) position 7.7, was 12.0 best-flight-games 89 clicks (+70) position 9.3, was 13.5
The pages that gained most are ones that existed in both windows - fishing moved from page two to page one with no content rewrite in that period.

Now the honest part. That +998 is not "internal links doubled my traffic". The same six weeks shipped new lists and new hub pages, and new pages earn clicks that inflate a site-wide comparison. The defensible evidence is narrower: pages that existed in both windows, got links in the campaign, and were not rewritten - detective (+188), fishing (+121), flight (+70), space (+71), trucking (+54) - all moved up in position, some from page two to page one. The site-wide number includes them plus everything else; the per-page rows are the ones I would defend.
The fix I cannot claim yet
The most satisfying fix is also the one with zero proof. The derived-links migration on 2 September un-orphaned best-indie-horror-games-pc - from zero internal links to four. It has 0 clicks and effectively 0 impressions. Search Console cannot say anything about a change this new, and pretending otherwise is how SEO case studies lie.
So instead of a claim, it is a prediction, logged where a later session will find it:
Log it: un-orphaned on 2 Sep, no content changes. First clicks by October?
url /best/best-indie-horror-games-pc action 0 -> 4 in-group inbound links (derived links wave 1) metric clicks baseline 0 expected 3 check 2026-10-04
{ "id": 14 }Graded on 4 October against fresh data. If it stays at zero, the prediction fails in public.
This measure-later habit is also why the changes are trackable at all. Midway through the campaign I asked for a marker on recently changed pages:
Let's try to add also a marker or something that indicates changed recently. I don't want to change pages a lot, especially seeing before the effect.
That request became a product feature: watched pages get checked daily, eight fields hashed, and every change dated on the same chart as the Search Console data. Attribution by memory is guessing; a change date next to an impressions step is not. It is the same loop I described in the morning-routine post, pointed at links instead of titles.
Find your own orphan pages in one session
You do not need a desktop crawler for a small site. You need two lists and a diff:
1. Every URL in your sitemap (/sitemap.xml). 2. Every internal URL your pages actually link to - an assistant with your repository or your rendered pages can collect this. 3. Sitemap minus linked = orphans. 4. For each orphan, add links from the two or three most relevant pages that already earn traffic, with anchor text that says what the page is. 5. Record the date, then leave it alone for two to four weeks before judging.
The asks that worked for me, verbatim enough to steal: "List every page in my sitemap that no other page links to." Then "For each orphan, which three pages on this site are most related and already get traffic? Add one contextual link from each." And the one that caught my own formula: "How do SEO tools actually score internal links? Compare it to what we are doing." The assistant is not doing magic in any of these - it is doing the tedious part of a diff you already know how to describe.
If you have Search Console connected to your assistant, close the loop: pull the orphan's impressions before and after, and log the prediction instead of trusting your memory. The rest of the assistant-connected workflow builds on exactly this.
FAQ
What is an orphan page?
A page no other page on your site links to. Crawlers discover pages by following links, so an orphan is only findable through your sitemap - and a page found only by sitemap gets crawled less, ranks worse, and is often skipped entirely.
Can I find orphan pages without a paid crawler?
Yes. You need two lists: every URL in your sitemap, and every URL your pages link to. Anything in the first list but not the second is an orphan. On a small site an assistant with access to your repository or your rendered pages can build both lists in one session.
How long until an internal link change shows up in Search Console?
Give it two to four weeks before judging. Google has to recrawl the linking pages, then the linked page, then re-rank. That lag is exactly why it pays to record the date of every change - by the time the graph moves, you will not remember what you shipped.
Run the same loop on your site. Create a free account, connect Search Console, and your assistant can score what moved, watch the pages you change, and grade the predictions you log. Every tool is read-only. The MCP server works with Claude, Cursor, or anything else that speaks the protocol.
