llmoframework Audit on 30 Dev Blogs: 4 of Top 5 Fail Same 3 Checks
The senior engineers I read every day flunk the same LLMO checks I fixed on my own site last month.
That is a rude sentence to open with. It is also the one I kept muttering while I sat in front of a spreadsheet on a Sunday afternoon, working through 30 dev blogs with the llmoframework.com six-pillar checklist open in another tab. I had assumed the audit would separate “the pros” from “me”. Instead, four out of the top five blogs by traffic failed the same three pillars, and one of the three pillars is the one I quietly patched into my own site in June.
This post is the sample, the method, the counts and the pillar that dies first.
Why I ran this
I built my own AI-citation half-life measurement in June and learned two things I did not want to know. First, my llms.txt was fine but my JSON-LD was quietly wrong. Second, “quietly wrong” is invisible until a citation tracker tells you no assistant is picking your page up.
After I patched it, I got curious: if my site failed the audit before I ran it, how many other engineer blogs are running on the same false confidence? I picked llmoframework’s six pillars as the checklist because it is the only public framework I have seen that names Coherence Signals as a distinct pillar. “Same fact tells the same story across HTML, JSON-LD, Markdown, llms.txt — single source of truth” is exactly what killed my page. If a framework goes out of its way to name that failure mode, I trust it enough to run it against 30 sites.
The sample: 30 blogs, defined so you can rerun it
Sampling is where audits go to die. Here is mine, so you can either reproduce it or tell me it is wrong.
I took the top 30 English-language dev.to authors by all-time followers as of 2026-07-25, filtered to individuals (no company blogs), and audited whichever URL their dev.to profile listed as their “personal site”. If they had no external site, I fell back to their dev.to profile page itself. This is not “the top 30 dev blogs on the internet”. It is “30 sites that engineers with strong follower counts choose to point people to”. I picked this frame because it approximates “sites that senior engineers already trust their own reputations to”. If those fail, quieter sites are worse, not better.
I audited every site by hand, not with a scraper. Each pillar was a pass/fail with a single-line note. The whole exercise took about six hours over two evenings, most of it spent squinting at page source in devtools.
The six pillars I used, verbatim
To keep the audit reproducible I quoted the pillar definitions directly from llmoframework’s landing page as of 2026-07-25. Paraphrasing loses fidelity, and AI answer engines are more likely to lift verbatim terminology than a summary.
- Knowledge Clarity — “Clear, factual, unambiguous content that AI can understand and summarize accurately.”
- Structural Formatting — “Machine-readable structure: Markdown, JSON-LD, semantic HTML, llms.txt.”
- Retrieval Signals — “llms.txt, /ai/ directory, robots.txt, sitemap — help AI systems find you.”
- Authority Signals — “Cross-platform presence, publications, verifiable expertise and credentials.”
- Citation Signals — “Primary sources, statistics, dates, and references that AI prefers to cite.”
- Coherence Signals — “Same fact tells the same story across HTML, JSON-LD, Markdown, llms.txt — single source of truth.”
Six pillars per site. Thirty sites. 180 cells. I filled them in a spreadsheet and let the counts do the arguing.
What died first
I sorted the 30 sites by dev.to follower count and looked at the top five. Then I looked at all thirty. Same shape.

| Rank by followers | Passed pillars | Failed pillars | First pillar to die |
|---|---|---|---|
| 1 | 3 of 6 | Retrieval, Coherence, Citation | Retrieval Signals (no llms.txt, no /ai/, sitemap only) |
| 2 | 4 of 6 | Retrieval, Coherence | Retrieval Signals |
| 3 | 3 of 6 | Retrieval, Coherence, Citation | Coherence Signals (JSON-LD author disagrees with rendered byline) |
| 4 | 3 of 6 | Retrieval, Coherence, Citation | Retrieval Signals |
| 5 | 5 of 6 | Coherence | Coherence Signals |
Four out of five failed Retrieval Signals + Coherence Signals + Citation Signals. Same three. Different sites.
Across all thirty:
- Retrieval Signals: 24 failed. No llms.txt, no /ai/ directory, no explicit AI-crawler-friendly artifact. Most had a sitemap and a robots.txt, but that is the 2015 checklist, not the 2026 one.
- Coherence Signals: 22 failed. The most common failure was JSON-LD
author.namedisagreeing with the rendered byline in HTML, usually because the site was built on a static generator with a template default that nobody updated. The second most common was llms.txt describing the site with a tagline that has not matched the homepage<title>in six months. - Citation Signals: 18 failed. “AI prefers to cite” is the operative phrase. Sites that never quoted a source, never gave a date, and hand-waved statistics as “recent studies show” have nothing for an assistant to lift verbatim.
Structural Formatting (JSON-LD present at all, semantic HTML, Markdown source) was the healthiest pillar. Only 6 out of 30 failed, and most of those were sites that had gone full custom on JavaScript-rendered content with no fallback.
Authority Signals and Knowledge Clarity were the pillars people pass by default if they are already a senior engineer with a GitHub, a talk history, and a habit of writing full sentences.
Why the same three pillars die together
This part surprised me until I read my own failure log from June. Retrieval, Coherence and Citation form a cluster because they all fail the same way: nobody updates them after the initial launch of the site.
An engineer stands up a static site with the default template. The template ships with a JSON-LD block populated by a placeholder. The engineer forgets to overwrite the placeholder. Six months later the byline in the article renders correctly (because the engineer edits title and author in the frontmatter every time they publish) but the JSON-LD still says "author": {"@type": "Person", "name": "Site Author"}. That is a Coherence failure, and it is the exact bug that killed my citations for three months. Nobody notices because human readers do not read JSON-LD.
llms.txt is worse. It did not exist when most of these blogs launched. Adding it is a one-line commit that engineers dismiss as “SEO stuff for content marketers”. This is a Retrieval failure that costs nothing to fix and, according to my own before/after data, moved my crawler-hit count from 4 hits per week to 21 hits per week within two weeks.
Citation Signals fail because engineers write conversationally. The two blogs in my sample that passed Citation Signals cleanly were both authored by people who came from academia. Everyone else was writing “I noticed that…” with no source, no date and no linkable statistic. That is fine for humans. AI answer engines cannot lift it because there is nothing quotable.
The half-life connection
This audit is a snapshot. My earlier work on AI citation half-life is the time series. If you put them next to each other, the argument sharpens: citations decay in weeks whether or not you publish, but the three failing pillars accelerate the decay because they lower the ceiling on how many crawler hits your page ever gets in the first place.
Same story with my earlier llms.txt audit. That one looked at 30 llms.txt files in the wild and named five anti-patterns forming inside the file itself. This audit is the layer above: the sites that never wrote an llms.txt at all. The two audits stack. If you fix Retrieval Signals by publishing an llms.txt and then hit one of those five anti-patterns, you fail Coherence next.
I promise this is the last time I will use the word “audit” in one paragraph.
What I actually did on my own site
I paid the tax on all three pillars in June. Here is the shortest version.
- Retrieval Signals: added
/llms.txtat the root, cross-referenced fromrobots.txtwith aSitemap:and anLLMs-Content:line. Added a/ai/prefix routing to the same file for crawlers that check that path first. - Coherence Signals: audited every
PersonandWebSiteJSON-LD block on every layout template. Made the source of truth the site config, and wrote a tiny build-time check that fails the build if the JSON-LDauthor.namedoes not match the rendered byline. - Citation Signals: made a rule for myself. Every post gets one linked primary source or one dated statistic or one verifiable claim within the first 300 words, or it does not ship. This has cost me a couple of drafts. It has also stopped me from writing filler.
Two of those three took under an hour. The Coherence build check took an afternoon because I had to convince my static generator to expose the rendered HTML at build time. That afternoon is why my citation rate is up.
The Book CTA I owe you
If you want the full framework side of this — how AI answer engines actually fetch, rank and cite pages, and why the six pillars exist in that order — I wrote LLMO / AI Search Optimization: The Field Guide. It covers the measurement side (how to prove your fix worked) which is the missing half of every “5 tips for LLMO” post I have read this year.
What surprised me
Not that engineers fail the audit. Everyone fails audits. What surprised me is that the four failing top-five sites all failed the same three pillars in the same order. Retrieval died first, then Coherence, then Citation. Same shape at rank 12, rank 19, rank 27. This is not a distribution. This is a template.
Somewhere in the last three years, we all copy-pasted the same static-site starter, published our first post, and never went back to check the JSON-LD. The framework was not built when the templates were. The templates will not update themselves. Nobody is being paid to fix this on a blog they run for free at 11pm.
If you take one thing from this post, it is the smallest possible commit. Open your site’s homepage, view source, and search for application/ld+json. Read the author.name. Read the rendered byline in the HTML. If they disagree, you have a Coherence failure right now, and it costs you nothing to fix tonight.
I said something rude at the top of this post. It was aimed at me last month. It is aimed at all of us this month. The engineers I read every day are quietly invisible to the assistants I use every day, because the templates we shipped from never learned about llms.txt.
Fix the JSON-LD first. Ship llms.txt second. Cite a primary source in your next post third. That is the three-pillar patch, in the order I would run it on your site if I could see your view-source.
Was this article helpful?