# Internal linking best practices

![SEO expert analyzing website rankings on a computer](https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1200&q=80&auto=format&fit=crop align="center")

## 1\. Introduction: The API Perspective

Most SEO advice treats internal linking as a vague "best practice" for crawlability. However, the leaked Google Content Warehouse API documentation reveals that internal links are rigorous data objects that feed specific scoring modules.

Google does not just "crawl" a link; it extracts it into a `CompositeDoc` structure, assigns it attributes like `inbodyTargetLink` and `sourceType`, and uses it to propagate not just PageRank, but **NavBoost (User Data)** and **Semantic Focus**.

This [Advanced SEO Playbook](https://bigtowa.gumroad.com/l/seoplaybook) or guide translates the raw API fields found in the leak into actionable, high-level SEO strategies.

## 2\. Core Metric: `OnSiteProminence` (The Internal PageRank)

In the documentation, specific mention is made of a metric called `onsiteProminence` (often found within `PerDocData`).

### The API Logic

*   **Definition:** This is effectively the internal PageRank of a document *relative* to the rest of the site.
    
*   **Calculation:** It is derived from the internal link graph. Pages closer to the root (homepage) and pages with higher internal degree centrality receive higher scores.
    
*   **Leak Insight:** The API treats this as a distinct signal from external authority (`siteAuthority`).
    

### Strategic Application

*   **Flatten Your Architecture:** Ensure your most valuable "Money Pages" are within 3 clicks of the homepage to maximize `onsiteProminence`.
    
*   **Orphan Page Audit:** Zero `onsiteProminence` effectively kills a page's ability to rank for competitive terms, regardless of its content quality.
    
*   **The "Hub" Injection:** To boost a deep page, create a temporary link from a high-prominence page (like the Home or Category root).
    

## 3\. The `NavBoost` Connection: Links as User Signal Conduits

One of the most significant revelations is that internal links are not just for passing static authority; they are pipelines for user interaction data, handled by the `NavBoost` system.

### The API Logic

*   **Modules:** `CrapsData`, `ClickStream`.
    
*   **Metrics:** `goodClicks`, `badClicks`, `lastLongestClicks`, `unsquashedClicks`.
    
*   **Mechanism:** When a user searches for "best running shoes," clicks your result, reads, and then *clicks an internal link* to "Nike running shoes" and stays there, that internal click validates the original landing page.
    

### Strategic Application

*   **Optimize for the "Next Click":** Don't just link to related content; link to the *logical next step* in the user journey.
    
*   **Placement Matters:** Links clicked frequently contribute to positive `NavBoost` scores. Links in the footer that are never clicked are effectively "dead" in this system.
    
*   **Anchor Text as CTA:** Treat internal anchors like Call-to-Action buttons to encourage the click-through, feeding the `goodClicks` metric.
    

## 4\. `inbodyTargetLink` vs. Boilerplate

The leak confirms that Google distinguishes between links in the main content and links in the chrome (header/footer/sidebar).

### The API Logic

*   **Field:** `inbodyTargetLink` (Boolean).
    
*   **Function:** This attribute flags whether a link originates from the "body" of the content.
    

### Strategic Application

*   **Deprioritize Mega-Menus:** While useful for navigation, mega-menu links are likely flagged as `false` for `inbodyTargetLink`. They pass less semantic value than a contextual link.
    
*   **Contextual is King:** A link inside a paragraph of text explaining the relationship between Topic A and Topic B is significantly more valuable than a "Related Posts" widget link, because it carries the `inbodyTargetLink` weight.
    

## 5\. Anchor Text & Semantic Indexing

The documentation surrounding `AnchorsAnchor` and semantic embeddings provides a blueprint for how to write anchor text.

### The API Logic

*   **Fields:** `anchor_text`, `local_anchor_count`, `phraseAnchor`.
    
*   **Semantic Fields:** `pageEmbeddingsVersion`, `siteFocusScore`.
    
*   **Mechanism:** Google uses internal anchors to understand what a page is about (embeddings). If Page A links to Page B with "cheap insurance," it adjusts Page B's vector towards the "cheap insurance" concept.
    

### Strategic Application

*   **Avoid "Click Here":** This adds zero semantic value to the target page's embedding.
    
*   **Variability is Safe Internal:** Unlike external links, where exact match can get you penalized (Penguin), internal links *should* be descriptive and can be more aggressive with keywords.
    
*   **The "Surrounding Text" Concept:** The API extracts context. Ensure the sentence *containing* the link is relevant to the target, not just the anchor text itself.
    

## 6\. `siteFocusScore` and The Radius of Relevance

The API tracks how "focused" a site is on a specific topic (`siteFocusScore`) and how far it deviates (`siteRadius`).

### The API Logic

*   **Concept:** Google calculates a vector for your site's core topic. Pages that fall far outside this radius (off-topic content) may struggle to rank.
    
*   **Role of Internal Links:** Internal links define the cluster. Strong interlinking between pages tightens the "radius," signaling they belong to the same topical entity.
    

### Strategic Application

*   **Siloing (The Hub & Spoke Model):** Tightly interlink pages about the same sub-topic.
    
    *   *Example:* A "Coffee" hub should link to "Beans," "Roasting," and "Brewing."
        
    *   *Avoid:* Don't cross-link "Coffee" pages randomly to "Office Chairs" just because they are on the same domain, unless there is a strong semantic bridge.
        
*   **Pruning:** If you have pages that cannot be naturally linked to from your main content clusters, they are likely diluting your `siteFocusScore`.
    

## 7\. Freshness & The "20 Versions" Memory

The leak indicates Google stores a history of documents, but specifically mentions tracking the "last 20 versions" of a URL for certain link analysis features.

### The API Logic

*   **Constraint:** The crawler has finite memory for change history regarding links.
    
*   **Implication:** Rapidly adding and removing links (link churning) might confuse the signals or be ignored if it exceeds the version history buffer.
    

### Strategic Application

*   **Commit to Structure:** Don't change your internal linking structure weekly. Allow time for the `CompositeDoc` to update and for the `NavBoost` signals to accumulate on the new paths.
    
*   **Freshness Updates:** When updating an old post (`last_update_date_millis`), add *new* internal links to your most recent relevant content. This signals to Google that the old page is still "alive" and integrated with the current site graph.
    

## 8\. Font Size and Weight (Visual Prominence)

The API has fields related to the visual rendering of terms and links, including font size and weight (bolding).

### The API Logic

*   **Fields:** `fontSize`, `fontWeight`.
    
*   **Inference:** A link that is bolded or in a larger headline (H2/H3) carries more weight than a small footer link.
    

### Strategic Application

*   **Link from Headers:** Occasionally linking from H2s or H3s is a strong signal of importance.
    
*   **Bold Your Anchors:** If a link is within a paragraph, ensure it is visually distinct. Don't hide links; make them obvious to users (for clicks) and bots (for visual prominence).
    

## Summary Checklist

1.  **Audit** `onsiteProminence`: Are your money pages receiving the most internal links?
    
2.  **Verify** `inbodyTargetLink`: Are you relying too much on nav/footer links? Move links to the body.
    
3.  **Feed** `NavBoost`: Place links where users actually look and click (high on the page).
    
4.  **Tighten** `siteFocus`: Create strict clusters (silos) where internal links circulate authority within a specific topic.
    
5.  **Descriptive Anchors:** Use keyword-rich anchors internally to assist `pageEmbeddings`.
[Check out my previous post](/what-is-a-markdown-link)

