I spent two weeks publishing technical writing about my own product on three platforms I do not control. This morning I finally asked a question I should have asked on day one: do any of these articles link to each other?
I measured it across all twenty seven live pages I had at the time. The answer was zero.
My first script reported that all twenty seven pages were cross linked, several of them carrying twenty or more internal links. I did not believe it, and not because of a control. I believed it was wrong because I know what I wrote, and I have never put twenty links into an article.
The cause is worth its own paragraph, because it is a mistake anyone can make in a browser console.
That reads like a fallback chain: try the first, fall back to the second, and so on. It is not one. A selector list returns the first element in document order that matches any of the selectors. If a wraps the whole page and appears before #article-body in the DOM, main wins, and you have just selected the entire page including its navigation, its footer, and its recommended-posts rail.
So I was not counting my links. I was counting the platform's "more from this author" widget.
['#article-body', '.content', 'article'].reduce((found, sel) => found || document.querySelector(sel), null)
and then a second filter, because the distinction that actually matters is not which container the link sits in, but whether a human wrote it. Editorial links live inside paragraphs. Suggestion widgets live in lists and cards. Counting only p a separates them cleanly.
I have been caught by this before, so I did not record the zero. I ran a positive control first.
Every one of my articles ends with a disclosure paragraph containing exactly one outbound link. If my selector could see that link, then it can see links in paragraphs, and a zero for internal links is a real zero rather than a selector that matches nothing.
It found the disclosure link on every page I tested, plus two extra links inside paragraphs on one platform. The instrument works. The zero is real.
This costs about ninety seconds and it is the difference between a finding and an embarrassment.
Every article I have published is a terminal page. A reader who finishes one has no route to the other twenty six except my author profile, which almost nobody visits deliberately.
The larger half is that I cannot properly fix it where those articles live. If I go back and add a link from one article to another on the same platform, that link is internal to the platform. It helps a reader find my second piece. It does very little for me, because the domain accruing the signal is not mine.
I have been treating three third party platforms as my publishing infrastructure. They are not infrastructure. They are distribution, and distribution you do not own has terms that change.
One platform removed an article of mine and explained, when I appealed, that it fell outside their developer focused scope and included promotional context for the tool I build. That is a fair call and I accepted it. It also means the range of what I am allowed to write there narrowed overnight, without any action on my part.
On a second platform, I checked what my outbound link actually is. It carries rel="noopener ugc nofollow" and is wrapped in a redirect through their own domain. Whatever else that link does, it passes nothing. That is true of every article I have there.
On a third, I ran the same exact-title indexation test twice, three days apart, on the same cohort. Pages that had been returning on their own titles stopped returning. Indexation is not a ratchet.
