SEO
Internal linking strategy
Internal links are how Google finds pages and learns what they cover. A minimum strategy: one hub per group, descriptive anchors, no orphans.
Key points
- An internal link does two things: it brings the crawler to the page and passes the anchor's context.
- The minimum structure is one hub per group, every spoke linking up to the hub, two siblings and three catalogue records.
- A page reachable only from the sitemap is an orphan: no reader finds it and no link gives it context.
An internal linking strategy comes down to three rules: every important page sits within three clicks of the home page, every article links up to its hub and across to two siblings, and no page is reachable only from the sitemap. The rest is link text written well.
What an internal link does
An internal link does two separate things. First: it gives the crawler a path to the page, because Google discovers URLs by following links and treats the sitemap as a hint, not a guarantee. Second: it passes context, because the link text and the paragraph around it say what the destination is about.
The minimum structure
One hub per group of content, usually the guide that defines the topic. Every spoke links up to the hub, across to two sibling spokes and to three relevant catalogue records. Every category page links its guide above the grid. No new article ships without its inbound links in the same change.
How to write anchors
The anchor describes the destination: “the canonical guide” says more than “click here”, and Google uses that text as context. Link the first occurrence of a term in the body, inside a sentence that works on its own. Variation matters too: the same anchor repeated on twenty pages looks built, and it is.
Finding the orphans
curl -s https://ui.eneawork.it/sitemap-blog.xml | grep -o "[^ published.txt
curl -s https://ui.eneawork.it/blog | grep -o 'href="/blog/[a-z0-9-]*"' | sed 's#href="/blog/##; s#"##' | sort -u > linked.txt
comm -23 published.txt linked.txt
The first command lists the slugs published in the blog sitemap, the second lists the links that appear on the blog index page, the third prints the difference: published slugs that nothing links to from there. In the repository the same check across every blog link is node scripts/audit-blog-links.js, which compares each href with real slugs and routes and prints zero when it is clean.
Common mistakes
A menu with fifty entries is not a strategy: links in the body count more than a list repeated on every page. A link with rel="nofollow" to an internal page wastes a path. A link to a redirect adds a pointless hop. A link built by JavaScript on click does not exist for the crawler. And an empty tag page linked from the whole site dilutes context without adding content.
The EneUI catalogue
The catalogue exists to be linked: every record has a stable URL and a category that holds it. The blog category collects the blocks for lists and articles, the navigation category the menu and breadcrumb components, and the 1,556 blocks remain the starting point. An article that links a record gives the reader an example to copy, not more text to read. Checked on 1 November 2026.
The limitation
Internal links do not add content. If the page does not answer the question, no anchor saves it. Crawl budget, the other argument usually raised, matters above hundreds of thousands of URLs: below that threshold the problem is almost always structure, not budget.
Where to continue
The shape of a blog index is in how to build a blog index; the sequence for being found is in getting a site indexed by Google; the case where rendering breaks links is in the comparison Next.js or Vite for a marketing site; the page that explains duplicates is canonical: the practical guide.
Frequently asked questions
How many internal links should a page have?
There is no documented limit. The real constraint is usefulness to the reader and depth: an important page should sit within three clicks of the home page.
Does link text matter?
Yes. The anchor describes the destination and Google uses it as context: “the canonical guide” says more than “click here”.
Does a footer full of links help?
Barely. Links in the body, inside a relevant sentence, count more than a list of links repeated on every page.
Does the sitemap replace internal links?
No. The sitemap declares URLs, links connect them: a page reachable only from the sitemap stays an orphan for anyone browsing.
How do I find the orphans?
Compare published slugs with the links present on the pages, as the script above does, and repeat the check after every publication.