no-outlinks-audit
Runs a full dead-end page audit for any website. Discovers all blog/content pages, detects which ones have zero outgoing links to any URL on the same domain, fetches keywords, clusters pages by topic, and generates 3 outgoing link suggestions per dead-end page with anchor text, placement guidance, and ready-to-paste context copy. Outputs a styled HTML report matching report-style-reference.html. Automatically detects site framework (Next.js, static, WordPress) and uses the correct detection CMS sites. Trigger when a user provides a domain or URL and asks for a dead-end page audit, outgoing int
npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill no-outlinks-audit --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
Finds every blog/content page on a site that has zero outgoing links to any URL on the same domain. For each dead-end page, it generates 3 suggestions of pages on the same site to link to, including the exact anchor text (the target page's top keyword), where in the dead-end page to place the link, and a ready-to-paste context copy. It outputs a styled HTML report matching report-style-reference.html.
How it works
- Step 1 discovers all pages via sitemap.xml, sitemap_index.xml, or robots.txt sitemap hints; if none, crawls the blog index to collect blog URLs.
- Step 2 detects the site framework by checking response headers and HTML signals to choose the correct detection method (Next.js via RSC header or HTML payload, static/WordPress/traditional CMS via standard curl).
- Step 3 detects outgoing internal links per page using the method chosen in Step 2:
- For Next.js sites (RSC header method): fetches with RSC: 1 and parses rendered payload for links, excluding assets and internal paths, collecting paths within the same domain.
- For static/WordPress/traditional CMS: fetches HTML and parses the main content area for <a> tags, converts hrefs to absolute paths within the domain, excludes assets and self-links, and collects internal paths.
- If framework cannot be determined or pages yield insufficient links, asks the user for clarification or flags for manual review.
- Step 4 validates results by spot-checking a sample of dead-end and non-dead-end pages and calculating a dead-end rate.
- Step 5 performs keyword research using Ahrefs:site-explorer-top-pages to map keywords and traffic for the blog, deriving keywords for dead-end pages not present in the map from their URL slug.
- Step 6 clusters dead-end pages by topic and generates 3 (three) target pages per dead-end page that are topically related, would plausibly follow the dead-end content, and are well-linked already; for each target page, it provides an anchor text (the target page’s top keyword) and guidance for placement.
When to use it
Triggered when a user provides a domain or URL and asks for a dead-end page audit, an outgoing internal links audit, or requests which pages don’t link out.
What it can touch
- Uses curl via bash_tool for sitemap discovery, framework detection, and outgoing link detection.
- Uses Ahrefs MCP (site-explorer-top-pages) for keyword research.
Caveats
- License: MIT
- Declared tools: claude-code
- Outputs a styled HTML report matching report-style-reference.html
- If detection or page fetch fails, manual review may be required; the workflow specifies manual checks and fallback behavior rather than automated outcomes for failed cases.
# SKILL: Dead-End Pages — No Outgoing Internal Links Audit ## DESCRIPTION Finds every blog/content page on a site that has **zero outgoing links to any URL on the same domain** in its body content. These pages absorb link equity but pass none on — they are structural dead-ends that silently suppress topical authority and hurt crawl efficiency across the site. For each dead-end page the skill generates 3 suggestions: pages on the same site that the dead-end page SHOULD link out to, including the exact anchor text (the target page's top keyword), where in the dead-end page to place the link, and a ready-to-paste context copy sentence with the link already embedded. This skill is the structural inverse of the Orphan Pages skill: - **Orphan Pages**: pages with no *incoming* internal links (nobody links TO them) - **Dead-End Pages**: pages with no *outgoing* internal links (they link out to nobody) --- ## TOOLS - Step 1 uses **curl via bash_tool** for sitemap discovery - Step 2 uses **curl via bash_tool** for framework detection - Step 3 uses **curl via bash_tool** for outgoing link detection (method varies by framework) - Step 5 uses **Ahrefs MCP** (`site-explorer-top-pages`) for keywo
- DESCRIPTION
- TOOLS
- WORKFLOW
curl -sL --max-time 15 "https://www.DOMAIN.com/sitemap.xml" | head -50 curl -sL --max-time 15 "https://www.DOMAIN.com/sitemap_index.xml" | head -50 curl -sL --max-time 15 "https://www.DOMAIN.com/robots.txt" | grep -i sitemap curl -sL "https://www.DOMAIN.com/blog/" | grep -oP 'href="[^"]*"' | grep '/blog/' curl -sL "https://www.DOMAIN.com/sitemap.xml" \ wc -l /tmp/blog_urls.txt Check response headers curl -sI "https://www.DOMAIN.com" | grep -i "x-powered-by\|x-nextjs\|x-vercel\|server\|generator" Check HTML source for framework signals curl -sL "https://www.DOMAIN.com" \
What does the no-outlinks-audit skill do?
Runs a full dead-end page audit for any website. Discovers all blog/content pages, detects which ones have zero outgoing links to any URL on the same domain, fetches keywords, clusters pages by topic, and generates 3 outgoing link suggestions per dead-end page with anchor text, placement guidance, and ready-to-paste context copy. Outputs a styled HTML report matching report-style-reference.html. Automatically detects site framework (Next.js, static, WordPress) and uses the correct detection CMS sites. Trigger when a user provides a domain or URL and asks for a dead-end page audit, outgoing int
How do I install it?
Run `npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill no-outlinks-audit --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From Infrasity-Labs/dev-gtm-claude-skills, a repository with 97 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
