{"slug":"internal-link-orphan-audit","name":"Internal Link Orphan Audit","version":"1.0.0","updated_at":"2026-10-19T03:43:39.295Z","use_when":"Reads a crawl export of a website (one row per page with its status, its robots setting and the links in its body, or a plain list of links from page to page), the sitemap list and the navigation and footer links, and reports the internal-link problems that keep pages from being found and indexed - orphan pages with no inbound link from another page, pages with a single contextual inbound link or links only from the footer, pages too many clicks from the home page or not reachable at all, links that point at a redirect or at a removed page, noindex pages listed in the sitemap, and a crawl that failed on some pages so that the orphan verdicts are unknown. Each finding has a fixed code, the address, the reason and a fix, worst first, or exactly No findings. Use for an internal link audit, to find orphan pages, to check pages with no inbound links before publishing, to check click depth, or to audit a blog or a catalog from a crawl export.","not_for":"Crawling a site: it reads a pasted crawl export only. It does not judge content, anchor text, nofollow, external links or ranking. A thin export gives thin findings, and a crawl that failed on some pages leaves the orphan verdicts unknown on purpose.","languages":["any"],"tags":["seo","internal-links","orphan-pages","crawl-export","sitemap","site-audit"],"category":"seo","category_url":"https://aiskills402.com/categories/seo","keywords":["orphan pages","internal link audit","pages with no inbound links","click depth"],"faq":[{"q":"Pages the crawl could not fetch: how are they treated?","a":"When we audited our skill catalog, 77 of 120 skill pages answered 500 under a burst. Their outgoing links were counted as zero, so the audit showed pages as lonely that were linked all along. The skill lists every page that failed first and holds back the orphan, weak and depth verdicts until those pages are crawled again. This is owner-measured on 18 October 2026, not re-checked."},{"q":"What does the export need to contain?","a":"One row per page with its status, its robots setting and the links in its body, the list of sitemap addresses, and the links that every page carries in its navigation and footer. A plain list of links from page to page also works, but then redirects, errors and noindex pages cannot be judged, and the skill says nothing about them rather than guess. Addresses may be relative, full or with a trailing slash. The thresholds are ours, at least two contextual sources and at most three clicks from the home page; say so in the request if your policy differs."},{"q":"Do footer and navigation links count as inbound links?","a":"No. A link that every page carries makes every page look linked, so it says nothing about the page. A page that only the footer links to is reported as weak unless your export names it as a legal page that is exempt. Contextual means a link in the body of another page, counted once per linking page."},{"q":"Does it help Claude Sonnet?","a":"Slightly. Thirty crawl-export cases went to both models. Bare Sonnet already counted orphans, redirects and depth well and was right on 28. It set a noindex page in the sitemap aside without reporting it, and named only some of six pages that had answered 5xx or timed out. With the skill it was right on all 30. Haiku moved from 29 to 30: bare, it declared two pages orphans as certain while pages that might link to them were never fetched."}],"examples":[{"lang":"en","model":"claude-sonnet-5-5","input_excerpt":"Site: https://site.example\nHome page: /\nExempt from the inbound-link rules (legal pages, footer only is fine): /terms, /privacy\nOn every fetched page (navigation and footer): /, /terms, /privacy\n\nSITEMAP (31 addresses):\nhttps://site.example/\nhttps://site.example/about\nhttps://site.example/kitchen\nhttps://site.example/kitchen/quick-cooker\nhttps://site.example/kitchen/slow-compost…","output_excerpt":"ORPHAN — /garden/dry-hinge — no page links it (not in /garden's list or any other row, and not in the navigation or footer); it is in the sitemap only, though it links out to 3 pages. Fix: link it from the /garden hub and from at least one related garden page such as /garden/warm-trellis or /garden/deep-loaf."}],"page_url":"https://aiskills402.com/skills/internal-link-orphan-audit","markdown_url":"https://aiskills402.com/skills/internal-link-orphan-audit.md","image_url":"https://cdn.aiskills402.com/og/skills/internal-link-orphan-audit/8329334d.png","related_url":"https://api.aiskills402.com/v1/skills/internal-link-orphan-audit/related","purchases_count":null,"tested":{"date":"2026-10-18","strong":{"model":"claude-sonnet-5-5 (Claude Code alias \"sonnet\")","verdict":"Right on all 30 cases, read by hand, and exact by the skill's own format: it listed the pages that could not be fetched first and held back the orphan, weak and depth verdicts, found the orphan and the dead links, the links that point at a redirect, the noindex page left in the sitemap, the page that is too deep and the page held up only by the footer. It answered No findings. for the sound exports."},"weak":{"model":"claude-haiku-5-5 (Claude Code alias \"haiku\")","verdict":"Right on all 30 cases, read by hand, and exact by the skill's own format: the same kinds of findings as Sonnet, in the fixed order, with the unfetched pages first and the verdicts held back when pages were missing, and No findings. for the sound exports."},"note":"Thirty cases of a pasted crawl export written by us (17 with a planted fault, of which 3 hard, and 10 sound; the rest are exports with unfetched pages), with the thresholds (two contextual sources, three clicks) and the exempt list stated in the shared request. Each answer is scored twice: by the skill's own format (the code at the start of the line, the address, the exact verdict, a bare No findings. for sound exports) and by content in any words, with a fence removed first. Expected answers were computed by script and re-computed from the pasted text by a second implementation. Facts are our own counting rules, owner-measured on 18 October 2026 (77 of 120 skill pages answering 500 under a burst) and NOT re-checked; there are no vendor facts. Content checks widened after the run, for both sides: an orphan said as 0 contextual inbound links or as no crawled page links to it counts, and in the redirect-and-depth case a page with one direct link plus links through a redirect may also be reported as weak. One run per model and case.","baseline":{"date":"2026-10-18","rows":[{"label":"Cases audited right (30 cases)","better":"higher","strong":{"with":{"n":30,"of":30},"without":{"n":28,"of":30}},"weak":{"with":{"n":30,"of":30},"without":{"n":29,"of":30}}}],"note":"Same request on both sides; the bare side is scored on substance in any words, with a fence removed first. Read by hand, Sonnet without the skill already counted inbound links, redirects, dead links and depth correctly in most cases. It missed two: it saw the noindex tag on a page in the sitemap and set the page aside without reporting it, and when six pages had answered 5xx or timed out it named only three of them. Haiku without the skill missed one hard case: it called two pages orphans as a certain fact while several pages that might link to them had not been fetched. With the skill both models were right on all 30."},"report_url":null},"price_usd":"0.03","price_micro":30000,"size_bytes":11047,"sha256":"015c5eb17760397b6536f40c56b0465591c1f7c98b9bf720f79eb48aec009f56","outline":["The answer","Which links count (the heart of the audit)","The codes","Rules","Work in this order","How to check a fix","Short example"],"license":{"summary":"Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing","holder":"Georgi Kalchev, aiskills402.com","url":"https://aiskills402.com/docs#license"},"buy_url":"https://api.aiskills402.com/v1/skills/internal-link-orphan-audit/file","redownload_url_template":"https://api.aiskills402.com/v1/purchases/{token}","mcp_tool":null,"payment":{"protocol":"x402","scheme":"exact","asset":"USDC","selling":true,"network":"base","network_caip2":"eip155:8453","pay_to":"0x8e37022edcf0f21cf3c9f93fee9d4d32519f36f4","facilitator":"cdp"},"seo_title":"Internal Link Orphan Audit for Crawl Exports","seo_description":"A SKILL.md that audits a pasted crawl export for orphan pages, weak inbound links, deep pages and bad redirects. Pay $0.03 once, in USDC.","versions":[{"version":"1.0.0","date":"2026-10-19","changelog":"# Changelog\n\n## 1.0.0 — 2026-10-18\n\nFirst release (written, not yet tested on a model): audits a pasted crawl export of a site — one row per page with its status,\nits robots setting and the links in its body, the sitemap list and the navigation and footer links — and reports internal-link\nproblems with a fixed code, the address, the reason and a fix, worst first, or exactly `No findings.`. Codes: `CRAWL-INCOMPLETE`\n(pages that answered 5xx or timed out; first; withholds the orphan, weak and depth verdicts), `ORPHAN`, `LINK-TO-ERROR`,\n`LINK-TO-REDIRECT`, `NOINDEX-IN-SITEMAP`, `TOO-DEEP`, `WEAK-INBOUND`. Facts are ours (owner-measured 18 October 2026, not\nre-checked; see notes/facts-2026-10-18.md); no vendor facts, so no dated line. Test: 30 cases (17 planted, 3 hard, 10 controls),\n15 of the 20 defect cases from the real starting point; expected answers computed by script and re-computed from the pasted text\nby a second implementation (`test/control.mjs`); `test/no-leak.mjs` clean. No model was run by the writer.\n\nDecisions while writing (one line each):\n- `LINK-TO-ERROR` is 404 and 410 only; a 5xx or timeout is `CRAWL-INCOMPLETE` (the brief listed 5xx; a failed fetch is not a verdict on the link, and the same page would be both an unfetched source and a broken target).\n- Inbound links that all land on a redirect produce `LINK-TO-REDIRECT` alone, never `ORPHAN` or `WEAK-INBOUND` on top: fixing the link is the fix.\n- A redirect costs no extra click in the depth count; this is stated in the shared request of the tests, not hidden in the skill alone.\n- While any page is unfetched, `ORPHAN`, `WEAK-INBOUND` and `TOO-DEEP` are withheld for every page (each could vanish when the unfetched page's links become known); the three codes read straight from fetched rows stay.\n- An orphan is reported alone, not also as `TOO-DEEP` (unreachable); a cluster that links only to itself is `TOO-DEEP`, because each of its pages has inbound links.\n- Thresholds (two contextual sources, three clicks) and the exempt list are stated in the shared request of the tests, so the bare side is judged on the same rules; the skill's gain is the counting rules, the order and the refusal path.\n- No inbound verdict for the home page; addresses missing from the sitemap get no inbound or depth code, though their links still count.\n- Checks accept the code at the start of the line with a bullet or backticks, and the address as a path or a full address; they measure the page right after the code, so a page named in the reason of another line is not a false finding.\n- The bare side is measured on substance only (the address and a word of the finding on one line, never the code); rows of the export are excluded from matching so the input never passes by itself.\n- `CRAWL-INCOMPLETE` cases also fail on the bare side if a possibly-linked page is declared an orphan as a certain fact.\n- Price: $0.05 start; class A only if Sonnet gains at least two content cases once the test has run.\n\nMeasured 18 October 2026 (one run per model and case, 60 with the skill and 60 without; every failure read by hand):\n- Content, both sides scored on the plain-words checks: Claude Sonnet 30/30 with the skill, 28/30 without; Claude Haiku 30/30 with, 29/30 without. By the skill's own format: 30/30 and 30/30 after the widening below.\n- Real misses without the skill: Sonnet left a noindex tag page in the sitemap unreported (it noticed the noindex and set the page aside) and named only the three unfetched pages that mattered to its verdict, not the other three that answered 5xx or timed out; Haiku called two pages orphans as a certain fact while several pages that might link to them had not been fetched.\n- Check widened after the run, both sides: an orphan said as \"0 contextual inbound links\" or \"no crawled page links to it\" now counts (two right bare answers had failed on wording).\n- Check widened after the run, both sides: in the redirect-and-depth case, the series page with one direct link plus links through a redirect may also be reported as weak; both models with the skill did so, which the skill's redirect rule supports. Every other code on that page still fails.\n- Price: Sonnet gained 2 content cases → $0.03 by the price table.\n"}]}