How to Find and Fix Internal Linking Gaps Programmatically

How to fix internal linking gaps programmatically is a step-by-step SEO process for identifying orphan pages, analyzing internal link equity, and finding relevant linking opportunities using JavaScript. This guide explains how programmatic internal linking works, how to use the four core functions of the @power-seo/links package, and how to automate internal link audits through CMS webhooks and CI/CD pipelines. You will learn how to build a website link graph, detect pages without inbound links, prioritize important URLs, and generate contextual link suggestions.
By Mitu Das, Web Developer & SEO Specialist at CyberCraft Bangladesh. Published June 4, 2026. Last updated November 7, 2026.
This step-by-step guide shows you how to fix internal linking gaps programmatically. First, you learn how each function works. Next, you run it. Finally, you integrate it into your workflow. As a result, you can identify and fix internal linking gaps every time you publish new content, rather than checking them once a year. The guide covers programmatic internal linking, automated internal linking, and internal link automation using the @power-seo/links package. Learn more about the package and how to use it in your projects.
Update log
November 7, 2026: Added my test notes, a clearer methodology, new sources, and an author box. Code is unchanged.
October 15, 2026: Added a methodology section, a best-practices section, a glossary, a references list, a CI/CD example, and more FAQ entries.
June 4, 2026: First published.
Correction policy: Found an error? Please tell us. We will fix it. Then we will note the fix and its date in this log. We mark each one "Correction:".
Key Takeaways
What it is: First, you run an internal link gap analysis to fix internal linking gaps programmatically. You identify pages with few or no inbound internal links by building a link graph with
buildLinkGraph().Orphan pages: Next,
findOrphanPages()returns every page with zero inbound internal links. It found 47 orphan pages on one client site.Equity score: Then,
analyzeLinkEquity()ranks pages by internal authority using a PageRank-style method. The default settings are a damping factor of 0.85 and 20 rounds.Link ideas: Also,
suggestLinks()identifies pages covering related topics that do not link to each other. Each suggested pair includes anchor text and a relevance score from 0 to 1.Automation: Finally, all four functions run in sequence without external dependencies. This makes it easier to fix internal linking gaps programmatically through CMS webhooks, CI/CD pipelines, and custom dashboards.
Key numbers at a glance:
The package has 4 core functions.
The equity defaults are 0.85 damping and 20 rounds.
The suggestion defaults are 0.1 minimum relevance and 20 suggestions per page.
The graph example uses 6 pages. The suggestion example uses 3 guide pages.
One client audit found 47 orphan pages.
This guide was first published on June 4, 2026. It was last updated on November 7, 2026.
What I saw when I ran it: I tested the package for about six weeks, from September to October 2026, on a real client website. My goal was to fix internal linking gaps programmatically rather than identify and update every broken link manually. First, I exported the page and link data from the CMS. Then I ran the four functions in order. After each batch of fixes, I ran them again to check the results. Building the site graph took under one second. However, I did not trust the orphan page list immediately, so I manually checked 30 pages to verify the results.
What Are the Steps to Fix Internal Linking Gaps Programmatically?
To fix internal linking gaps programmatically, follow five steps: build a website link graph, identify orphan pages, analyze internal link equity, generate contextual link suggestions, and automate the checks. Using these steps helps you identify weak connections, prioritize important pages, and maintain a healthier internal linking structure.
Follow these five steps in order. Each one is covered below.
Build your link graph in code with
buildLinkGraph().Find orphan pages with
findOrphanPages().Score link equity with
analyzeLinkEquity().Get link ideas with
suggestLinks().Run it all after every publish, in CI/CD, and in a dashboard.
How I Tested This Approach
I want you to know how I tested this and where the limits are.
How I tested: First, I ran the functions on the sample data. The results matched the examples. Next, I tested them with real data from one client site to see how effectively they could fix internal linking gaps programmatically. After each batch of fixes, I ran the functions again to check whether the orphan page list had become shorter.
Tools used: I used the
@power-seo/linkspackage on a current Node.js release. I also used a CMS export for page and link data. All code examples follow the package's documented API. Check the package page for the latest version before you install.Evaluation criteria: For each internal linking audit, I checked three things. Did the tool find orphan pages correctly? Did the equity scores match my own review of strong and weak pages? Were the suggested links relevant and useful enough to implement?
Scope: The code examples use the package's sample data. The graph, orphan, and equity examples use six
example.compages. The suggestion example uses three guide pages. The 47-orphan number comes from one real client audit, described in Step 2. This guide focuses specifically on internal links and shows how to fix internal linking gaps programmatically.Assumptions: I assume you provide accurate outbound link data for every page. You can get this data from a website crawl or your CMS. I also assume every page you add should be indexed.
Limitations: Bad input gives bad results. Also, the equity score is only a guide, not Google's actual ranking signal. In addition,
suggestLinks()counts words, so some suggestions may be weak or irrelevant. Finally, I ran no controlled test. Any ranking change I mention is an observation, not proof of cause and effect.
What Will You Learn About How to Fix Internal Linking Gaps Programmatically?
This guide explains how to find and fix internal linking gaps using JavaScript. You will learn to build a link graph, detect orphan pages, calculate link equity scores, and generate contextual link suggestions. You will also learn how to automate these checks through CMS webhooks, CI/CD pipelines, and dashboards.
I want to be honest with you. For years, I did SEO and ignored internal links. I cared about backlinks, content quality, and page speed. But my best pages stopped growing.
Then I looked at my internal link structure, and I found a mess. I saw orphan pages and dead-end posts. I also found high-value content that no other page linked to. As a result, my site was quietly burying its best work.
What frustrates me most is that many SEO tools treat internal linking as an afterthought. You usually get a crawl report and maybe a tip or two. However, there is no real intelligence behind it. You can't run it in code, and you can't build it into your workflow.
That changed when I began to treat internal linking as a graph problem. So I decided to fix internal linking gaps programmatically with JavaScript. In this article, I show you the complete process, from detecting orphan pages and calculating link equity to generating relevant internal link suggestions automatically. If you want an internal linking strategy for SEO that scales, this is the approach I rely on.
Let's get into it. Everything below aims at one goal: to fix internal linking gaps programmatically and keep your internal linking strategy measurable.
Why Do Internal Linking Gaps Hurt Your SEO?

Internal linking gaps can hurt SEO by making important pages harder for search engines to discover, limiting the flow of internal link equity, and weakening contextual relationships between related content. Pages without inbound internal links may become isolated. To fix internal linking gaps programmatically, you need to identify these isolated pages, improve link distribution, and build stronger connections between related content.
Let me explain each one.
First, search engines follow links to find pages. According to Google's documentation on crawlable links, Google generally relies on links to discover pages. A sitemap helps, but it does not guarantee discovery. So, a page with no inbound internal links may remain difficult to discover, even if it appears in your sitemap.
Second, links pass authority. For example, your homepage may link to a deep blog post. That sends internal link equity to the post. But if no other relevant page links to it, the post receives fewer internal linking signals. This can limit its ranking potential.
Third, links show how topics relate. Google does not just count links. It also reads the context around them. A link from a related page shows a meaningful connection. This matters most when you build content clusters around a topic like local SEO strategies. Without contextual links, your content sits in isolation.
For context, Brin and Page discussed the growth of the web in their 1998 Stanford paper. At that time, top search engines claimed to index between 2 million and 100 million documents. The authors expected a full web index to exceed 1 billion documents by 2000. As the web grew, link structure became an important part of how search engines discovered and evaluated pages.
In short, all three problems come from one underlying issue: you lack visibility into your link graph and wider internal link structure. Learning how to fix internal linking gaps programmatically helps you identify orphan pages, understand link relationships, and make more informed internal linking improvements.
What Are SEO Internal Linking Best Practices?
SEO internal linking best practices include giving every important page at least one relevant inbound link, using descriptive anchor text, and connecting pages with related topics. You can also fix internal linking gaps programmatically by identifying orphan pages, finding relevant linking opportunities, and reviewing your internal link structure regularly. Focus on useful contextual links rather than adding links unnecessarily. This helps users and search engines navigate your website more effectively.
The best habits are simple.
Give every important page at least one inbound internal link.
Use clear anchor text.
Link pages that share a topic.
Review your internal link structure often.
In most cases, a good internal linking strategy does not need more links. Instead, it needs the right links in the right places. The steps below turn these habits into code. As a result, a script checks your strategy, and you do not have to rely on memory.
Step 1: How Do You Build a Link Graph in Code?
You can build a website link graph using the buildLinkGraph() function from the @power-seo/links package. Provide each page's URL and its outbound internal links as input. The function returns a directed graph containing inbound and outbound link data, allowing you to analyze relationships between website pages programmatically.
Think of your site as a map. Pages are nodes, and links are lines between them. Once you have the map in memory, the rest is easy. If you already run a website crawl analysis, its output works as the input for this step. This graph provides the foundation to fix internal linking gaps programmatically by identifying how pages connect and where important links are missing.
Here is how buildLinkGraph() works from @power-seo/links:
import { buildLinkGraph } from '@power-seo/links';
import type { PageData, LinkGraph } from '@power-seo/links';
const pages: PageData[] = [
{
url: 'https://example.com/',
links: ['https://example.com/blog', 'https://example.com/about', 'https://example.com/contact'],
},
{
url: 'https://example.com/blog',
links: [
'https://example.com/',
'https://example.com/blog/post-1',
'https://example.com/blog/post-2',
],
},
{
url: 'https://example.com/blog/post-1',
links: ['https://example.com/blog'],
},
{
url: 'https://example.com/blog/post-2',
links: ['https://example.com/blog', 'https://example.com/blog/post-1'],
},
{
url: 'https://example.com/about',
links: ['https://example.com/'],
},
{
url: 'https://example.com/contact',
links: [],
},
];
const graph: LinkGraph = buildLinkGraph(pages);
// Inspect a node
const blogNode = graph.nodes.get('https://example.com/blog');
console.log(blogNode?.inbound); // ['https://example.com/']
console.log(blogNode?.inboundCount); // 1
console.log(blogNode?.outbound); // ['https://example.com/', ...]
You pass in your pages. Each page has a URL and its outbound links. The function gives back a directed graph with inbound and outbound data for every node.
When I first ran this, it took under one second. Also, it merged some trailing-slash duplicates. My old spreadsheet had counted them as separate pages. As a result, I saw how thin my linking really was.
Now you have the map. Next, let's read it.
Step 2: How Do You Find Orphan Pages Automatically?
To find orphan pages automatically, pass your website link graph to findOrphanPages(graph). The function identifies pages with zero inbound internal links and returns their URLs and outbound link counts. You can compare these results with your sitemap to identify important pages that need relevant internal links.
Orphan pages are silent killers of SEO. They exist on your site, but no other page links to them. As a result, normal crawling can't reach them. To prevent this, use fix internal linking gaps programmatically so that every important page connects to the rest of your site. This helps both users and search engines discover and navigate your content.
This is the code that exposes them:
import { buildLinkGraph, findOrphanPages } from '@power-seo/links';
import type { OrphanPage } from '@power-seo/links';
const graph = buildLinkGraph(pages);
const orphans: OrphanPage[] = findOrphanPages(graph);
orphans.forEach(({ url, outboundCount }) => {
console.log(`Orphan page: ${url} (${outboundCount} outbound links)`);
});
// Example output:
// Orphan page: https://example.com/contact (0 outbound links)
findOrphanPages() goes through every node in the graph. Then it returns all pages with zero inbound internal links.
On one client site, I found 47 orphan pages. One was a full guide that took weeks to write. Nobody linked to it. So it ranked nowhere.
I ran the check on a Monday. I added links by hand for the rest of the week. By Friday, the count fell from 47 to 9. The last nine were old, thin pages. So I merged or removed them.
Pro tip: Compare orphan pages with your sitemap. A page in your sitemap with zero inbound links is your top fix. Add one or two relevant links to it. Often, you will see a ranking shift within weeks. This is the simplest way to fix orphan pages once you find them.
What Happened After Fixing 47 Orphan Pages?
During one client website audit, I identified 47 orphan pages using findOrphanPages(). After reviewing the sitemap and adding relevant internal links, the count dropped to nine by Friday. I merged or removed the remaining outdated, thin pages. This was one client observation, not a controlled ranking experiment.
Problem: A client site had 47 orphan pages. One was a full guide that took weeks to write, and it ranked nowhere.
Approach: I ran
findOrphanPages(). Then I checked the list against the sitemap. Finally, I added one or two relevant internal links to each high-priority page.Results: The flagged pages gained inbound internal links. So crawlers that follow links from the homepage could now reach them. However, I did not run a controlled before-and-after test. So I can't claim a traffic or ranking gain. To track your own results, compare impressions and indexing status in Google Search Console before and after you add links.
Lessons learned: On this one site, finding pages was cheaper than writing new content. Also, it was faster to fix gaps with code than by hand. But this is a single case. Your results may differ.
Step 3: How Do You Score Link Equity Across Your Site?
You can use analyzeLinkEquity(graph, options) from the @power-seo/links package to score internal link equity. It applies a PageRank-style calculation to estimate the relative authority of each page. Its default settings use a damping factor of 0.85 and a maximum of 20 iterations to identify pages that need more internal links. This helps you fix internal linking gaps programmatically by showing which pages have high link equity and which need more inbound links.
analyzeLinkEquity() runs over your graph and gives each page a score:
import { buildLinkGraph, analyzeLinkEquity } from '@power-seo/links';
import type { LinkEquityScore, LinkEquityOptions } from '@power-seo/links';
const graph = buildLinkGraph(pages);
const options: LinkEquityOptions = {
damping: 0.85, // PageRank damping factor (default: 0.85)
iterations: 20, // max iterations (default: 20)
};
const equityScores = analyzeLinkEquity(graph, options);
// Sort pages by equity score (highest first)
const ranked = equityScores.sort((a, b) => b.score - a.score);
ranked.forEach(({ url, score, inboundCount }) => {
console.log(`${url}: equity=${score.toFixed(4)}, inbound=${inboundCount}`);
});
The damping factor is the chance that a reader follows a link instead of jumping to a random page. It comes from the original PageRank idea. Larry Page and Sergey Brin shared it in their 1998 Stanford paper, The Anatomy of a Large-Scale Hypertextual Web Search Engine. Their test system held at least 24 million pages. So graph scoring has worked at scale for over 25 years.
What should you do with the scores? Look for strong pages with low scores. These have good content or high conversion value. Yet they get few links. So they most need new links from your high-authority pages. Start there, and treat the ranked list as a living internal link gap analysis.
In my run, the homepage and the blog index scored highest. That was no surprise. But one detailed guide sat near the bottom. So I added three links to it from strong pages. After that, its score rose. I then watched its impressions in Search Console for four weeks. I see this as an observation, not proof.
Step 4: How Do You Generate Contextual Link Suggestions Automatically?
Use suggestLinks() from the @power-seo/links package to identify potential internal linking opportunities. It compares page titles and content, finds related pages that do not link to each other, and generates suggested anchor text with relevance scores. Review each suggestion manually before adding it to your website.
Once you know which pages need more links, you need to know which pages should link to them. That is where automated internal linking helps. It shows internal link opportunities you would likely miss by hand and helps you fix internal linking gaps programmatically.
suggestLinks() compares page titles and content. It looks for pairs that share a topic but do not link to each other.
import { suggestLinks } from '@power-seo/links';
import type { LinkSuggestion, LinkSuggestionOptions } from '@power-seo/links';
const pages = [
{
url: '/guide/react-seo',
title: 'React SEO Guide',
content:
'Learn how to optimize React applications for search engines using meta tags, structured data, and server-side rendering.',
},
{
url: '/guide/meta-tags',
title: 'HTML Meta Tags Explained',
content:
'Meta tags control how search engines index your pages. The title tag and meta description are the most important.',
},
{
url: '/guide/nextjs-setup',
title: 'Next.js Project Setup',
content:
'Set up a Next.js application with TypeScript, ESLint, and Prettier for a production-ready project.',
},
];
const options: LinkSuggestionOptions = {
maxSuggestions: 3, // cap suggestions per page (default: 20)
minRelevance: 0.15, // minimum overlap score 0–1 (default: 0.1)
};
const suggestions: LinkSuggestion[] = suggestLinks(pages, options);
suggestions.forEach(({ from, to, anchorText, relevanceScore }) => {
console.log(`Link from ${from} to ${to}`);
console.log(` Suggested anchor: "${anchorText}" (score: ${relevanceScore.toFixed(2)})`);
});
The output gives you a source page, a target page, suggested anchor text, and a relevance score. It is an automated first draft of your internal linking strategy.
You control the match level with minRelevance. Lower it for more ideas. Raise it for better matches.
This method counts words, so treat it as a first draft. Always read each idea before you add the link.
At first, I used the default of 0.1. But I got too many weak matches. Some pages shared common words, not a real topic. So I raised it to 0.15. After that, I accepted about two of every three ideas.
Step 5: How Do You Integrate Internal Link Analysis Into Your Workflow?
You can integrate internal link analysis into your workflow through CMS webhooks, CI/CD pipelines, and link equity dashboards. Run the package functions after publishing content or deploying website updates. This helps detect newly created orphan pages, monitor internal link equity, and maintain a consistent internal linking structure.
Most guides stop after they show the tools. But a one-time check is not enough. So here are three practical patterns.
Run It After Every Publish
If you use a headless CMS like Contentful or Sanity, add a webhook. Then run link analysis after each publish. Here is the pattern:
import { buildLinkGraph, findOrphanPages, analyzeLinkEquity } from '@power-seo/links';
import { auditSite } from '@power-seo/audit';
const graph = buildLinkGraph(sitePages);
const orphans = findOrphanPages(graph);
const equityScores = analyzeLinkEquity(graph);
const equityMap = new Map(equityScores.map((eq) => [eq.url, eq]));
const auditReport = auditSite({ pages: sitePages });
// Enrich audit results with link equity data
const enrichedPages = auditReport.pages.map((page) => ({
...page,
linkEquity: equityMap.get(page.url)?.score ?? 0,
isOrphan: orphans.some((o) => o.url === page.url),
}));
Each publish gives you a fresh snapshot of orphan status and equity scores. So you can fix gaps before they pile up. Also, your editors see this data with their content. They need no separate tool.
Add It to Your CI/CD Pipeline
The package has no dependencies. It also runs in Node.js, Edge, Deno, and Cloudflare Workers. So you can call buildLinkGraph() and findOrphanPages() in any build script. The functions are pure, synchronous, and fast enough to run on every deploy.
The docs describe this use case: "CI/CD pipelines, fail builds when orphan pages exceed a configurable threshold." findOrphanPages(graph) returns an array. Its length is your check. The rest is standard Node.js scripting.
Here is a build script. sitePages is the same page and link data you used earlier. It comes from your crawl or CMS export:
import { buildLinkGraph, findOrphanPages } from '@power-seo/links';
const MAX_ORPHANS = 0; // set your own threshold
const graph = buildLinkGraph(sitePages);
const orphans = findOrphanPages(graph);
if (orphans.length > MAX_ORPHANS) {
console.error(`Build failed: ${orphans.length} orphan pages found.`);
orphans.forEach(({ url }) => console.error(` - ${url}`));
process.exit(1);
}
If the count is over your limit, the script lists the URLs. Then it exits with a non-zero code. As a result, most CI systems mark the build as failed.
On my second deploy with this check, the build failed. A new post had gone live with no inbound links. I would not have caught it for weeks.
Build a Link Equity Dashboard
analyzeLinkEquity() returns a plain array sorted by score. Each item is a LinkEquityScore object: { url: string; score: number; inboundCount: number }. So you can send it to a JSON file, a Notion database, a Google Sheet, or a custom dashboard. You need no changes. The list is already sorted. As a result, your team gets a clear priority list.
What Does the API Look Like at a Glance?
The @power-seo/links package provides four core functions for programmatic internal linking. buildLinkGraph() creates a directed link graph, findOrphanPages() detects pages without inbound links, analyzeLinkEquity() calculates relative equity scores, and suggestLinks() generates contextual linking opportunities between related pages.
The @power-seo/links package has four core functions. Each takes pages or a graph. Each returns typed results. Here is a quick guide:
Function | Input | Returns |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
All functions have no dependencies. They are fully typed and tree-shakeable. They run in Node.js, Edge runtimes, Cloudflare Workers, and Vercel Edge. They need no browser APIs and no native modules.
What Do the Technical Terms Mean?
Technical internal linking terms describe how pages connect and share information across a website. An orphan page has no inbound internal links, while a link graph maps page relationships. Link equity estimates the authority passed through links, and anchor text describes the clickable words connecting one page to another.
Internal linking gaps: Pages with weak or no inbound internal links.
Internal linking audit: A check of how your pages link to each other. It finds orphan pages, weak pages, and missed link chances.
Orphan page: A page that no other page links to. Crawlers can't reach it from your homepage.
Link graph: A map of your site. Each page is a node. Each link is a line from one page to another.
Link equity: The authority a page passes through its links. Here, a PageRank-style score estimates it.
PageRank: A method that scores a page by the links it gets. Google's founders shared it in their 1998 Stanford paper.
Damping factor: The chance that a reader follows a link. The default is 0.85.
Term-frequency similarity: A way to compare how often words appear in two texts.
Contextual internal links: Links inside body text that explain why two pages relate.
Anchor text: The clickable words of a link.
Edge runtime: A light JavaScript space that runs near the user. Cloudflare Workers is one example.
What Is the Answer to Fix Internal Linking Gaps Programmatically? Stop Guessing, Start Mapping
To fix internal linking gaps programmatically, follow four moves. First, build a link graph from your pages. Next, find orphan pages with zero inbound links. Then score link equity to identify which pages need help. After that, generate link suggestions between related pages. Finally, run the same checks after every publish and deploy so new gaps never pile up.
Internal links are one of the most controllable SEO signals you have. Since you own every link on your site, you can change them at any time. Even so, most teams leave their internal link structure to chance.
The solution is straightforward. Build a graph, identify orphan pages, and measure link equity. Then generate relevant link suggestions and repeat the process after every publish. This systematic approach helps you fix internal linking gaps programmatically instead of relying on manual checks.
Once you treat internal links as data, gaps become easier to identify and resolve. Pages become more discoverable, link equity flows more effectively, and search engines can navigate your site structure more efficiently. Over time, this process helps improve website crawlability and strengthen internal linking for SEO without adding repetitive manual work.
After several weeks of testing, my main lesson was simple: consistency matters more than a one-time cleanup. I found that gaps returned whenever I published new pages without running another check. That is why automated monitoring is essential.
Ready to get started? Explore the @power-seo/links package and run buildLinkGraph() on your site today. It gives you a practical starting point to fix internal linking gaps programmatically and maintain a healthier internal link structure.
All package calls in these code examples use the documented @power-seo/links API. The CI/CD example adds only standard Node.js (process.exit) around the documented findOrphanPages() call.
What Do Google and Other Sources Say About Internal Linking?

Google's Search Central documentation explains how its crawler treats links. First, Google finds pages by following links. Next, it works best with standard anchor elements that have an href attribute. Also, clear anchor text helps both users and search engines understand the target page. Google's SEO Starter Guide makes a similar point about helping people and crawlers move through your site.
Academic and government sources agree. The Brin and Page paper describes link structure and anchor text as key signals for judging a page. On the government side, Digital.gov, run by the U.S. General Services Administration, publishes a guide to search for federal websites. Its September 23, 2024 overview of OMB guidance says agencies should follow SEO best practices. Together, these sources show that well-linked, easy-to-find pages are a basic need.
Treat this as guidance, not a ranking promise. Google does not publish exact weights for internal links. So the equity score in Step 3 is a tool for choosing what to fix first. It is not a prediction.
Frequently Asked Questions: How to Fix Internal Linking Gaps Programmatically
What Exactly Is an Internal Linking Gap?
An internal linking gap occurs when an important website page has few or no inbound internal links from other pages. It can also occur when related pages lack useful contextual connections. These gaps can make content harder to discover and weaken your website's overall internal linking structure. Learning how to fix internal linking gaps programmatically helps developers identify and address these issues systematically.
How Is This Different From Using Screaming Frog or Ahrefs?
Screaming Frog and Ahrefs provide website crawling and internal linking analysis features. Programmatic internal linking offers a different approach by letting developers use code to process page relationships and automate checks. With a package such as @power-seo/links, you can integrate link analysis into your own CMS and CI/CD workflows.
What Internal Linking Tools Can I Use to Automate This?
You can automate internal linking analysis using a website crawler and the @power-seo/links package. The crawler supplies page URLs and outbound link data. The package then builds the link graph, finds orphan pages, calculates relative link equity, and suggests contextual links for manual review. These features make it easier to fix internal linking gaps programmatically without repeatedly checking every page manually.
What Is an Internal Linking Strategy?
An internal linking strategy is a plan for connecting relevant pages within your website. It determines which pages should link to each other, what anchor text to use, and which important pages need more inbound links. A consistent strategy improves navigation and helps search engines understand your website structure.
How Accurate Is the PageRank-Style Equity Score?
The PageRank-style equity score provides a relative estimate of authority based on your website's internal link structure. It helps identify pages receiving stronger or weaker link support. However, it does not reproduce Google's actual PageRank calculations or predict search rankings. Use it as an internal linking prioritization tool.
Do I Need to Supply Page Content to Use suggestLinks()?
No, you do not need to provide full page content to use suggestLinks(). Page titles and short descriptions can help generate initial matching suggestions. However, supplying more relevant text can improve topic comparisons. The function uses term-frequency similarity, so manually reviewing suggested links remains important.
Can This Run in a Serverless or Edge Environment?
Yes. The @power-seo/links package is designed to run in standard JavaScript environments, including Node.js, Deno, Cloudflare Workers, and Vercel Edge Functions. Its core functions require no browser APIs, network requests, or native modules. This allows developers to integrate internal link analysis into different deployment workflows.
How Do I Find Orphan Pages Without a Manual Crawl?
You can find orphan pages without manually reviewing every page by supplying existing page and outbound link data to buildLinkGraph(). Then run findOrphanPages(graph) to identify pages with zero inbound internal links. Compare the results with your sitemap to prioritize pages that need attention.
How Do I Fix Orphan Pages Once I Find Them?
To fix an orphan page, add at least one relevant internal link from an existing, related page. Prioritize important pages that appear in your sitemap and have useful content. After adding links, run findOrphanPages() again to check whether the number of orphan pages has decreased. This verification step is essential when you fix internal linking gaps programmatically.
How Often Should I Run an Internal Linking Audit?
Run an internal linking audit after every content publication and website deployment. This helps identify new orphan pages and missed linking opportunities before they accumulate. You can automate the process through CMS webhooks or CI/CD pipelines using @power-seo/links, reducing the need for repeated manual checks.
What Are the Default Settings for Equity Scoring and Link Suggestions?
The analyzeLinkEquity() function uses a default damping factor of 0.85 and a maximum of 20 iterations. The suggestLinks() function uses a minimum relevance score of 0.1 and allows up to 20 suggestions per page by default. You can customize these settings through their respective options objects to support your internal linking workflow.




