TrafficTriage

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.

Google Search Console performance view for game-scout.app comparing August to July 2026: total clicks 2.15K versus 1.06K, total impressions 105K versus 54.2K, average CTR 2% versus 1.9%, average position 9.6 versus 10
Search Console, August vs July 2026: clicks 1.06K to 2.15K, impressions 54.2K to 105K. The link campaign ran through the middle of it - and was not the only thing that shipped.

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 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:

you

Which game-scout.app pages moved against the prior 28 days?

query_search_analytics
site      sc-domain:game-scout.app
group by  page
compare   previousPeriod
result
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
claude

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.

2026-09-03, window 7 Aug - 3 Sep vs 10 Jul - 6 Aug
Line chart of daily Search Console impressions for the fishing and flight best-lists on game-scout.app from 1 July to 1 September 2026, climbing from near zero to 383 and 523 impressions a day, with dashed vertical markers on the four internal-link pass dates: 25 July, 4 August, 12 August and 18 August
The two page-two-to-page-one movers, day by day, drawn from the same Search Console data the assistant queries. Dashed lines are the four link passes. Honest note: the flight list's first jump lands on 8 August, before its 12 August link commit - correlation is on the chart, causation is not.

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:

you

Log it: un-orphaned on 2 Sep, no content changes. First clicks by October?

log_prediction
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
result
{ "id": 14 }
claude

Graded on 4 October against fresh data. If it stays at zero, the prediction fails in public.

2026-09-03

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.

Create an account

Claude running a scheduled TrafficTriage daily check: a Search Console report on a real site, summarized with clicks, impressions, and the one query cluster that lost rank

In your AI assistant

Ask your AI about your own site

TrafficTriage plugs into Claude, Cursor, and ChatGPT. Your assistant runs the 8 checks, reads your Search Console data, and can even check your site every morning. Free account, no API key, nothing to install.