DEV Community

I measured whether my 27 published pages linked to each other. Not one did

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. The first measurement said the opposite 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. I selected the article body like this: document.querySelector('#article-body, .content, article, main') 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. The fix is a real fallback chain: ['#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. With both fixes: zero. A zero everywhere is a broken instrument until proven otherwise 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. What twenty seven dead ends actually cost 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. That is bad, but it is the smaller half of the problem. 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. The terms did change, in three different ways, in one week I can be specific, because I measure this weekly. 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 and is wrapped in a redirect through their own domain. Whatever else that link does, it nofollow" 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. None of these three things are scandals. They are all reasonable platform behaviour. The point is that all three moved in one week and none of them moved because of anything I did. What I am actually going to do Not a link-insertion campaign across twenty seven published pages. That is hours of work, visible, and it reads exactly like the link stuffing it would technically be. Internal linking is something you do while writing, when the pointer genuinely helps the reader, not retroactively in bulk. Three things instead. Cross reference at writing time, and only when it is honest. The next piece I publish cites two earlier ones, because it is the third in a sequence and the reader benefits from the first two. That is the standard, not "does this article contain a link". Publish corrections where the claim was made. I got an indexation claim wrong in public. The correction goes out on the same platform, and the original gets a pointer to it rather than a silent edit. That is one internal link that has earned its place. Own the surface. The uncomfortable conclusion of this measurement is that the fix belongs on a domain I control, where an internal link works for me instead of for a platform. That is a bigger piece of work than anything above, and this measurement is what moved it from a nice idea to the obvious next thing. The part I would tell my past self Ask the boring structural question early. "Do my pages link to each other" takes twenty minutes to answer and I did not ask it for two weeks, during which every one of my twenty seven live article pages inherited the same defect. And when a measurement flatters you, distrust it in exactly the way you would distrust one that does not. My broken script told me my content was fully cross linked. If that number had been plausible, I would have written it down and moved on. What happened after I measured it I am adding this before publishing, because the number moved while this post sat in my drafts. Three days after the measurement, three of twenty nine pages carry an in-prose link to another of mine. Not from a retroactive campaign. From the three things listed above, done as they came up: a correction published on the same platform as the claim it corrects, with a pointer added to the original, and one new post that cites two earlier ones because it is genuinely the third in a sequence. Three out of twenty nine is not a triumph. It is the rate you get when you stop treating internal links as a task and start treating them as something you do while writing. I am reporting it because a post that measures a zero and then quietly leaves it at zero would be worth very little, and because the honest version of the fix is unglamorous and slow. Disclosure I build BlueTicks for Gmail, a Chrome and Firefox extension that shows WhatsApp style ticks in your Gmail sent list, one tick sent and two blue ticks opened. It costs 4 dollars a year and there is a free tier. Everything above comes from measuring my own distribution work while doing it, including the parts where the measurement was wrong first. You can find it at blueticks.io. Top comments (0)

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.