Internal linking by meaning: connecting content the way models read it
Internal linking is one of the few search levers entirely under the publisher's control, and one of the worst used. On most sites it comes down to a menu, a breadcrumb trail and a "recent articles" block. Those links connect locations, not ideas. Yet search engines, classic and generative alike, read a site as a network of meanings: which page covers what, which one goes deeper than which, which one carries authority on a subject. Linking built on meaning makes that network legible. It is also the only kind that holds without ever-growing effort when a media property publishes hundreds of pieces.
What Google says about internal links
Google's position has been stable for years and is documented on its page about crawlable links: a link has to be a real tag with a resolvable URL, and its anchor text has to describe the target page. The guide on creating helpful content adds an editorial dimension: a site that covers a subject in depth, with pages that complete one another, is judged more useful than a site scattering pages with no connection between them.
Two practical consequences follow. A contextual link, placed in the body of the text with an anchor that says what the reader will find, is worth more than a menu link repeated on every page. And a set of pages that cite one another around the same subject signals thematic expertise that isolated pages do not.
Why models read meaning before navigation
A generative engine represents each passage as a numerical vector, an embedding, that encodes its meaning. Two passages close in meaning have close vectors, whatever their wording. OpenAI's embeddings documentation describes that mechanism and its uses: semantic search, clustering, recommendation. When an engine assembles an answer, it looks for the passages closest to the question, and links from one relevant passage to another give it one more path, even though no engine publisher documents that behavior.
Linking by meaning reproduces that logic: every article points to the articles whose content really is closest to its own, or that answer the next question the reader is about to ask. A category, on its own, does not say that. It says two pages are filed in the same place, not which one extends which. It sets a perimeter, it does not set an order.
Building the clusters
The method starts from organizing content into topic clusters: a central subject, one page that covers it in full, and satellite articles that each go deeper on one aspect. The links follow three rules:
| Link | Direction | Role |
|---|---|---|
| Satellite to central page | Upward | Concentrates authority on the page that has to rank for the broad subject |
| Central page to satellites | Downward | Sends readers and robots on to the deeper pieces |
| Satellite to satellite | Lateral | Connects two aspects of the same subject when one extends the other |
The lateral link is the one almost always missing, and it is the closest to the way a model reads. An article about AI robots in robots.txt should point to the article on verifying robots through reverse DNS. Belonging to the same category guarantees that both speak to the same reader; what decides the link is that the question "is this the right robot?" follows naturally from the question "which robot should I block?". This blog applies that rule to its own articles, for instance between "robots.txt and AI" and "Is a robot really who it claims to be?".
The rule that holds at scale: the category sets the perimeter, meaning sets the order
On a media property with three hundred articles, nobody keeps lateral linking up by hand. Embeddings make it possible: you compute one vector per article, measure how close each article is to all the others, and obtain, for each of them, a ranking of its neighbors from nearest to furthest.
What remains is deciding what to do with that, and this is where most implementations pick a side when the two signals combine. The category sets the perimeter: only articles from the same theme are offered, because that is the promise the reader accepted on arrival. Semantic proximity decides the selection and the order inside that perimeter: among the articles in the category, the one whose content is closest comes first. Either signal taken on its own produces an identifiable defect.
| Rule applied | What you get | The defect |
|---|---|---|
| Category alone | Neighbors always on topic | No hierarchy inside: the order falls back on the date or on database order, and the first link is not the most useful one |
| Meaning alone | Neighbors genuinely close | The block drifts away from the subject of the page, and a few generalist articles capture nearly every link |
| Category then meaning | Neighbors on topic, the most relevant first | Requires recomputing the ranking at every publication |
The defect of meaning alone deserves to be named, because it does not show page by page: you have to count across the whole corpus. A cross-cutting article, one that touches a little on every subject, ends up close to everybody and gets offered on nearly all the pages, while specialized articles are offered nowhere. On a corpus of some twenty articles, we have measured cases where a single piece occupies more than four recommendation blocks out of five. Internal linking then loses the shape of a graph: it becomes a star around two or three magnets, and the articles that would most need pushing are the ones that receive nothing.
Three precautions, or the computation turns against the linking. First, a computed link does not replace a contextual link written into the body of the text, with a chosen anchor. The neighbors block completes the written linking, it does not stand in for it. The second: semantic proximity has to be recomputed when the corpus changes. An article published in January has different neighbors in September, once ten close articles have been added. A system that freezes the links at publication loses most of its value. The third: cap the reuse. Counting, for each article, the number of blocks where it appears, and setting aside those above a threshold, is enough to spread incoming links across the whole corpus instead of concentrating them.
As long as a category holds fewer articles than the block displays cards, the perimeter decides everything and the order changes nothing: the block shows every neighboring article there is. Ranking by meaning starts to count as soon as the category grows past that size, which happens very fast on a media property publishing regularly. That is the moment when the computation has to be in place already.
The three layers, and what each one can do
Complete internal linking stacks three layers, and none replaces the others. The breadcrumb trail says where a page sits in the site hierarchy, Google reads it as such, and it is declared in structured data. The category groups related content, gives one entry page per theme, and serves as the perimeter for everything offered from a page. Links by meaning, contextual in the text and computed in the neighbors block, say which page extends which.
The division is clean: the first two layers say where a page is filed, the third says what it brings to another. The third is the one most often missing, and it is also the one that needs the other two to keep from wandering off in all directions.
Anchors
Link text is read, by search engines and by models, as a description of the target. Hence three rules:
- Describe the target, not the action. "our method for measuring share of voice in AI answers" rather than "click here" or "this article". The anchor in this sentence is itself a link: it describes the page it opens.
- Vary the anchors pointing to one page. Ten links with exactly the same anchor look like manipulation; ten anchors that describe the page from different angles enrich its description.
- Do not overload. A paragraph with four links no longer has a single readable one. One or two links per section, placed where the reader needs what comes next.
The limits not to cross
Linking by meaning is no license to connect everything to everything. A site where each page points to fifty others has no structure left; robots lose their crawl budget there, readers lose the thread, and Google's spam policies explicitly target link schemes built to manipulate rankings. The test is simple: a link deserves to exist if an attentive reader, at that point in the text, would want to follow it. A link that fails that test helps neither the reader nor the machine.
The other side of that discipline is an asset that strengthens with every publication. Each new article adds paths, sharpens the neighborhoods, thickens the cluster. After a year, the internal linking of a structured media property is a graph engines can travel by following meaning, and it is that graph, more than any isolated page, that establishes authority on a subject.
Written by
Yann Léguillon
President of Mazette, the company behind Joornal. He works with companies that are building their own media: editorial structure, visibility in search engines and in AI answers, production at scale.