LLM Ready: The Craft CMS plugin I never imagined I’d make
I’ll be honest: when AI companies started scraping the web to train their models, my first reaction was frustration. Years of carefully written content, hoovered up without so much as a heads-up.
But over the past year, my POV has shifted. Conversations with developer friends, articles popping up in my feed daily, the emergence of the llms.txt specification — it all pointed in one direction. This isn’t a passing trend. People are increasingly skipping search engines entirely and going straight to their chatbots for answers. In conversations with friends who work at agencies, tailoring your site for LLMs has become a major topic — clients are asking about it, and it’s shaping how teams think about content strategy alongside traditional SEO. The question isn’t whether AI will consume your content. It’s whether you’ll have any say in how.
That realization flipped my perspective. Instead of fighting the current, what if I could control it? What if I could decide exactly what AI sees when it visits my site — clean, structured, intentional content instead of a mangled soup of navigation bars, footer scripts, and cookie banners?
So I built LLM Ready, a Craft CMS plugin.
The Problem With How AI Reads Your Site Today
When an AI crawler visits your Craft CMS site right now, it gets raw HTML. That means your carefully crafted blog post arrives wrapped in <nav> elements, <footer> markup, <script> tags, SVGs, form elements — all the stuff that makes a website work for humans but is pure noise for a machine trying to understand your content.
There’s also a token efficiency problem. LLMs process text in tokens, and HTML is a verbose format — every opening tag, closing tag, class attribute, and nested element burns through tokens without contributing meaning. Markdown encodes the same structure in a fraction of the space: ## My Heading instead of <h2 class="post-title">My Heading</h2>. Serving clean Markdown means more of the LLM’s token budget goes toward understanding your actual content rather than parsing markup.
The result? When you serve raw HTML, AI models get a diluted, noisy, and token-inefficient version of what you actually wrote. And as more people rely on chatbots to surface information, that version is what represents you.
Introducing LLM Ready for Craft CMS
LLM Ready is a Craft CMS 5 plugin that serves clean Markdown versions of your content to AI crawlers and LLMs. Install it, and it just works — no configuration required to get started.
The plugin detects AI requests three ways:
.mdURL suffix — Append.mdto any entry URL (e.g.,/blog/my-post.md) to get a Markdown version. (See https://supergeekery.com/blog/llm-ready-the-craft-cms-plugin-i-never-imagined-id-make.md as an example)- Content negotiation — Requests with an
Accept: text/markdownheader automatically receive Markdown - AI bot detection — Known AI crawlers like GPTBot, ClaudeBot, PerplexityBot, and others are automatically served Markdown instead of HTML
Every Markdown response includes YAML front matter with the title, date, author, and canonical URL back to the original page. The plugin also generates a /llms.txt file — a site index following the llms.txt specification — giving AI a structured map of your entire site.
It handles the details you’d expect: response caching with automatic invalidation when content changes, <link rel="alternate" type="text/markdown"> discovery tags injected into your HTML pages, per-section enable/disable controls stored in Craft’s project config for version control and multi-environment sync, and multi-site support.
Zero config required
Out of the box, LLM Ready requires zero configuration. You don’t need to modify your templates, add special tags to your markup, or set up queue jobs.
Install the plugin and every entry on your site immediately has a Markdown version. The plugin automatically converts your HTML templates to Markdown using smart content extraction — it finds your main content area, strips out non-content elements, and produces clean Markdown. For most sites, this is all you need.
You can go further by creating dedicated Twig templates for each of your sections. Instead of relying on automatic HTML conversion, you write a simple Twig template that outputs purpose-built Markdown — you decide what’s included, what’s excluded, and how it’s structured.
This is where the “take control” narrative comes full circle. You’re not just making your content available to AI — you’re curating it. Think of it like the difference between letting someone photograph your house through the windows versus giving them a guided tour of the rooms you want them to see.
Feature Overview
- Automatic HTML-to-Markdown conversion with configurable CSS selectors for content extraction
/llms.txtsite index following the llms.txt specification — see https://supergeekery.com/llms.txt as an example- Section listing pages (e.g.,
/blog.mdlists all entries in that section — see https://supergeekery.com/blog.md as an example) <link rel="alternate" type="text/markdown">discovery tags for AI crawlers- Per-section, per-site configuration with optional dedicated LLM templates
- Response caching with automatic cache invalidation on content save
- AI bot user-agent detection with support for custom user-agents
- Multi-site support
- Requires Craft CMS 5.5+ and PHP 8.2+
A Pattern Worth Stealing: AI-INSTALL.md
One more thing I want to mention. LLM Ready ships with an AI-INSTALL.md file — a structured runbook that any AI coding assistant can follow to install, verify, and configure the plugin. It’s not documentation for humans (that’s what README.md and DOCUMENTATION.md are for). It’s documentation for machines.
I think every plugin should have one. If you’re a plugin developer, consider adding an AI-INSTALL.md to your own projects. Your users are increasingly working alongside AI coding assistants, and giving those assistants a clear, step-by-step guide means fewer support requests and faster adoption. It’s a small investment that makes your plugin dramatically easier to set up.
Get Started
LLM Ready is available now on the Craft Plugin Store and via Composer. If you’re running a Craft CMS 5.5+ site and want to get ahead of how AI interacts with your content, I’d love for you to give it a try.
Found a bug or have a feature request? Open an issue on GitHub.
We’ve spent years optimizing how search engines see our sites. It’s time to start thinking about how AI sees them too.