 #  I Built This on February 3rd. Cloudflare Announced It on February 12th 

 

  ![I Built This on February 3rd. Cloudflare Announced It on February 12th.](https://cdn.richeyweb.com/images/articles/plg_system_markdown/most-interesting-markdown-16x9.avif)    Sometimes you build something because you see a need. Sometimes a billion-dollar company validates your thinking nine days later. [System - Markdown](/software/joomla/plugins/system-markdown) for Joomla 4/5/6 - to meet all of your AEO/GEO needs.

On February 3rd, 2026, I finished building System - Markdown, a [Joomla plugin](/blog/development/canonical-http-headers-for-rss-feeds "Canonical HTTP Headers for RSS Feeds") that automatically serves clean Markdown versions of web pages to AI agents. It took about six hours.

On February 12th, Cloudflare announced their Markdown-as-a-Service feature.

Great minds think alike, apparently. Except I think mine works better...my software I mean.

## The Problem We Both Saw

AI agents are becoming a primary source of web traffic. ChatGPT Search, Perplexity, Google's AI Overview - they're all crawling websites and feeding content to [large language models](/blog/hosting/tracking-ai-crawlers-with-nginx-and-google-analytics-4 "Tracking AI Crawlers with NGINX and Google Analytics 4"). And these AI systems have a preference: they want clean, [structured content](/white-hat-seo/markdown-alternates-experiment-ai-friendly-web-content "Markdown Alternates Experiment: AI-Friendly Web Content"). Markdown, specifically.

[HTML](/blog/development/generator-tag-claim-your-joomla-sites "Generator Tag: Claim Your Joomla Sites") is messy. It's full of navigation menus, cookie notices, sidebar widgets, footer links, and advertising. AI agents don't want any of that. They want the actual content - the article, the product description, the documentation. Everything else is noise.

The question isn't whether sites should serve Markdown to AI agents. The question is how.

## The Joomla Advantage

Here's what I realized: if you're working at the CMS level, you don't need to convert the entire page. You can strip away the decoration *before* conversion.

Joomla has a built-in feature that most people don't think about: component templates. When you add `?tmpl=component` to a Joomla URL, you get just the main content component - no menus, no sidebars, no modules, no template chrome. Just the article or page content.

This is exactly what AI agents need.

So System - Markdown works like this:

1. When a page loads, add RFC 8288 headers (both HTTP Link header and HTML `<link>` element) pointing to the Markdown version
2. When an AI agent requests the Markdown version (via `?tmpl=markdown`), use Joomla's component template to render just the content
3. Convert *that* clean HTML to Markdown
4. Cache it
5. Serve it with proper `Content-Type: text/markdown` and canonical headers
 
The result? A typical article that would be 2,847 [tokens](/blog/hosting/ai-browsers-turn-users-into-spies "AI Browsers Turn Users into Spies") as full-page Markdown comes out to 423 tokens of pure content.

## The Six-Hour Build

Once I understood the problem, implementation was straightforward:

1. Hook into Joomla's `onAfterDispatch` event to add the alternate link
2. Check if `tmpl=markdown` is in the request
3. If yes, use the component template and convert to Markdown using the HTMLToMarkdown library
4. Add [caching](/blog/development/server-timing-for-geoip-data-delivery-to-achieve-gdpr-compliance "Server-Timing for GeoIP Data Delivery to Achieve GDPR Compliance") via Joomla's built-in cache system
5. Set proper headers and deliver
 
The installer script automatically copies a minimal template file to `/templates/system/markdown.php`:

php

 ```
<span><span><?php</span><span> </span><span>defined</span><span>(</span><span class="token token php language-php single-quoted-string">'_JEXEC'</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span>;</span><span> </span><span>?></span>
</span><span><span><</span><span>jdoc:</span><span>include</span><span> </span><span>type</span><span>=</span><span>"</span><span>component</span><span>"</span><span> </span><span>/></span></span>
```

 

 

Just the component. No decoration. No &lt;head&gt; - nothing but the pure HTML body...but without the &lt;body&gt;

Total development time: about six hours, including testing and packaging.

## Then Cloudflare Announced

Nine days after I finished building this, Cloudflare announced their Markdown service.

I literally laughed out loud.

Not because their idea is bad - it's brilliant. They saw exactly what I saw: AI agents need Markdown, and most websites aren't providing it.

I laughed because:

1. **We had the same insight independently.** That's validating.
2. **I shipped first.** That's satisfying.
3. **Mine's better.** That's just facts.
 
## Even Cloudflare Got This Wrong

Here's the thing that kills me: Cloudflare saw the same problem I did. AI agents need Markdown. Websites aren't serving it.

But instead of using the web standard for alternate content (RFC 8288), they invented their own HTTP header: `cf-render-markdown`.

Why? There's already a standard for this. It's been around since 2017. Every HTTP client understands it. Every search engine spider knows how to discover alternate content representations.

But Cloudflare created a proprietary header anyway.

Now every AI agent that wants to use Cloudflare's service has to:

1. Know that Cloudflare's service exists
2. Know to send the `cf-render-markdown` header
3. Implement Cloudflare-specific logic
4. **Hope that the site owner has paid for Cloudflare's Markdown service**
 
That last one is the killer. Even if an AI agent knows to send the proprietary header, there's no way to discover whether the site actually supports it without trying and potentially failing.

## How Standards-Based Discovery Actually Works

With RFC 8288, discovery happens in the HTTP headers - before a single byte of HTML is downloaded.

When an AI agent requests a page, System - Markdown sends:

 ```
<span>HTTP/1.1 200 OK
</span><span>Content-Type: text/html
</span><span>Link: </article?tmpl=markdown>; rel="alternate"; type="text/markdown"</span>
```

 

 

The crawler sees this header and knows instantly: "This page has a Markdown version at this URL."

It can switch targets immediately. No need to download the HTML. No need to parse the document. No guessing.

For crawlers that do parse the HTML, the same information is in the document head:

html

 ```
<span><span><</span><span>link</span><span> </span><span>rel</span><span>=</span><span>"</span><span>alternate</span><span>"</span><span> </span><span>type</span><span>=</span><span>"</span><span>text/markdown</span><span>"</span><span> </span><span>href</span><span>=</span><span>"</span><span>/article?tmpl=markdown</span><span>"</span><span>></span></span>
```

 

Two discovery mechanisms. Both standards-based. Both tell the AI agent exactly where to get clean Markdown.

Compare that to Cloudflare's approach: the AI agent has to blindly send a proprietary header to every site and hope:

- The site uses Cloudflare
- The site owner paid for the Markdown feature
- The feature is actually enabled
 
It's not discovery. It's gambling.

## Efficiency Matters

Think about what this means for an AI crawler indexing millions of pages.

**Cloudflare approach:**

1. Request page with proprietary header
2. Download entire HTML response (whether it's Markdown or not)
3. Hope it worked
4. If it didn't work, you've wasted bandwidth on HTML you can't use efficiently
 
**RFC 8288 approach:**

1. Request page
2. Check HTTP headers
3. If `Link: rel="alternate" type="text/markdown"` exists, immediately request that URL instead
4. Get clean Markdown with zero wasted bandwidth
 
For a crawler hitting millions of sites, this efficiency difference is massive.

And that's before we even get to content quality. Cloudflare converts the entire page - navigation, ads, sidebars, everything. System - Markdown strips all that away first and converts only the actual content.

## The Comparison

 | Feature | Cloudflare | System - Markdown |
|---|---|---|
| **Content Quality** | Entire page (menus, ads, navigation) | Content only (pure signal) |
| **Discovery Method** | Proprietary header (hope site paid for it) | RFC 8288 standard (advertised in HTTP headers) |
| **Discovery Timing** | After downloading HTML | Before downloading HTML |
| **Token Efficiency** | ~2,847 tokens (full page example) | ~423 tokens (content only) |
| **Cost** | Paid service | Free |
| **Configuration** | Required | Zero |
| **Standards Compliance** | Proprietary | RFC 8288 |

 

## The AEO/GEO Scam

Let me tell you about a trend that's been driving me insane.

For the past few years, SEO consultants have been rebranding themselves as "AEO experts" ([Answer Engine Optimization](/blog/hosting/search-engine-optimization-insights-from-google-on-ai-and-seo-experts "Search Engine Optimization: Google on AI and SEO Experts")) or "GEO specialists" (Generative Engine Optimization). They charge premium rates to help you "optimize for AI agents."

Their solutions? Proprietary [schema markup](/white-hat-seo/white-hat-seo "White-Hat SEO") that doesn't validate. Custom XML formats. LLMS.txt files. Expensive "datasets" that promise to make your content AI-friendly.

It's all bullshit.

Take jmodules.com's "AI Ready" [Joomla extension](/blog/development/the-humbling-art-of-free-software "The Humbling Art of Free Software"). They invented their own schema format that doesn't even validate as proper JSON (forget [JSON-LD](/white-hat-seo/technical-seo "Technical SEO")). It's filled with what they claim is "AI-optimized metadata." It's garbage. Search engines ignore it. AI agents ignore it. But it *sounds* sophisticated, so people pay for it...until they pulled it from their website. Now you can only see it in action during a YouTube interview.

Or the LLMS.txt trend - yet another proprietary format that requires AI agents to know about your specific implementation.

Here's what Lily Ray has been saying for years: **AEO and GEO are just SEO with a bigger price tag.** I've been saying it too, but I'm not SEO royalty like she is - so don't pay any attention to the man behind the curtain.

You don't need proprietary formats. You don't need custom schemas. You don't need expensive consulting to "prepare for AI."

You need to use standards that already exist.

## The Standards Were Always There

**Markdown:** Created in 2004. Twenty-two years of proven track record. Every developer knows it. Every AI model consumes it better than HTML. It's not new. It's not proprietary. It just works.

**RFC 8288:** Published in 2017. Nine years old. It's the web standard for declaring alternate content representations. Every search engine spider understands it. Every HTTP client library supports it.

 ```
<span>Link: </article?tmpl=markdown>; rel="alternate"; type="text/markdown"</span>
```

 

That's the entire "secret."

No proprietary headers. No paid features. No guessing whether the site supports it. Just existing standards, used correctly.

The AI agent knows - from the first HTTP response - exactly where to get the Markdown version. No HTML parsing required. No bandwidth wasted. No gambling.

## Why People Fall for Proprietary Solutions

Because they sound sophisticated.

"We've developed a proprietary AI optimization schema based on our research into LLM token economics and semantic parsing algorithms" sounds way more impressive than "we use Markdown and standard HTTP headers."

But impressive-sounding doesn't mean effective.

Proprietary formats have fundamental problems:

1. **Discoverability:** AI agents have to know your specific format exists
2. **Adoption:** Every AI system has to implement support for your format
3. **Maintenance:** You're responsible when it breaks
4. **Validation:** There's no specification to validate against
5. **Longevity:** What happens when the vendor disappears?
 
Standards, on the other hand:

1. **Discoverability:** Built into HTTP
2. **Adoption:** Already implemented everywhere
3. **Maintenance:** The IETF handles it
4. **Validation:** Clear specifications
5. **Longevity:** Backward compatible for decades
 
Cloudflare will eventually realize this. They'll probably add RFC 8288 support alongside their proprietary header. Because that's what standards-based thinking leads to: eventually doing it right.

## The Real Optimization Strategy

Want to optimize for AI agents? Here's the actual playbook:

1. **Serve clean content.** Strip the navigation and decoration before AI agents see it.
2. **Use standard formats.** Markdown is battle-tested and universally supported.
3. **Follow web standards.** RFC 8288 for [content discovery](/blog/hosting/ai-automation-unlocking-content-opportunities "AI Automation Unlocking Content Opportunities"). Proper HTTP headers.
4. **Cache aggressively.** AI crawlers hit hard. Be ready.
5. **Don't overthink it.** The answer isn't complicated proprietary systems - it's using existing standards correctly.
 
That's the entire strategy.

If someone is trying to sell you an "AEO platform" or "GEO consulting package" based on proprietary formats, ask them one question: **"Why not just use Markdown and RFC 8288?"**

If they can't give you a straight answer, walk away.

## Why This Matters

AI agents are becoming the primary way people discover content. If you're not serving clean, structured content to these systems, you're invisible to an increasingly important traffic source.

But here's the thing: you don't need a billion-dollar company's infrastructure to solve this problem. If you're running a CMS like Joomla, you already have everything you need. You just need to think about the problem correctly.

Strip the decoration first. Then convert to Markdown. Use web standards for discovery. Cache the results. Done.

## What This Says About CMS Architecture

There's a larger point here about architectural choices.

Cloudflare operates at the edge - between the client and your server. They see HTTP requests and responses, but they don't understand your content structure. They can't distinguish between navigation and content without throwing significant compute at the problem - and that slows things down. They only convert what you send them because doing more costs money.

A CMS, on the other hand, *knows* the difference between your article and your navigation menu. It knows what's content and what's decoration. This architectural knowledge is a competitive advantage that external services simply cannot replicate.

Joomla's component template system has existed for years. I didn't invent anything new - I just applied existing functionality to a new problem. That's the power of good architecture: it enables solutions to problems you didn't anticipate when you built it.

## The Release

System - Markdown is pending acceptance in the [Joomla Extensions Directory](/blog/personal/why-my-joomla-extensions-are-free "Why My Joomla Extensions Are Free"). Free, open source, GPL licensed. You can download it now from the download page here: [System - Markdown](/software/joomla/plugins/system-markdown)

Install it. Enable it. Every page on your Joomla site immediately becomes AI-ready. No configuration. No API keys. No monthly fees.

Just clean Markdown, properly discoverable via web standards, cached for performance.

The way it should be.

## The Lesson

The people charging premium prices for "AI optimization" are selling you complexity when the answer is simple.

Use standards. They're free. They work. They'll still work in ten years.

When you see a problem, build the solution. Don't wait for permission. Don't wait for a big company to validate the idea.

If you're right, they'll figure it out eventually. And when they announce it nine days later, you'll already be shipping.

The "secret sauce" everyone's been trying to sell you? It's been freely available since 2004. You just needed someone to point it out.



- [      email ](mailto:?subject=I+Built+This+on+February+3rd.+Cloudflare+Announced+It+on+February+12th&body=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th)
- [      facebook ](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th)
- [      x-twitter ](https://twitter.com/intent/tweet?text=I+Built+This+on+February+3rd.+Cloudflare+Announced+It+on+February+12th%3A+https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th)
- [      linkedin ](http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th&title=I+Built+This+on+February+3rd.+Cloudflare+Announced+It+on+February+12th&summary=Sometimes+you+build+something+because+you+see+a+ne...)
- [      pinterest ](http://pinterest.com/pin/create/button/?url=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fi-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th&media=https%3A%2F%2Fcdn.joomla.org%2Fimages%2Fjoomla-org-og.jpg&description=I+Built+This+on+February+3rd.+Cloudflare+Announced+It+on+February+12th)
 


 

   [  Previous article: How a Bug Report Made HashCash Smarter   How a Bug Report Made HashCash Smarter ](/blog/development/how-a-bug-report-made-hashcash-smarter) [  Next article: I Rebuilt My Bundler Plugin Because Your Joomla Site is Embarrassingly Slow  I Rebuilt My Bundler Plugin Because Your Joomla Site is Embarrassingly Slow  ](/blog/development/i-rebuilt-my-bundler-plugin-because-your-joomla-site-is-embarrassingly-slow)  

##### We Value Your Privacy

 

We use cookies to enhance your experience and for traffic analysis. By continuing to visit this site you agree to our use of cookies.

[Privacy Policy](/privacy-policy)

 Details 

###### Google Tag Manager Items

- Ad Storage
- Ad User Data
- Ad Personalization
- Analytics Storage
- Functionality Storage
- Personalization Storage
- Security Storage
 
 

 

 

 

 

 Decline Accept
```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.richeyweb.com/#organization","name":"RicheyWeb","url":"https://www.richeyweb.com/","logo":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/logo/richeyweb.svg","contentUrl":"https://www.richeyweb.com/images/logo/richeyweb.svg","width":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"@id":"https://www.richeyweb.com/#logo"},"image":{"@id":"https://www.richeyweb.com/#logo"},"sameAs":["https://x.com/ComRicheyweb","https://www.facebook.com/RicheyWebDev/","https://www.youtube.com/channel/UCxnVG8BwOvQRO7hVqNX7T2g","https://community.joomla.org/service-providers-directory/listings/115:richeyweb.html"],"description":"RicheyWeb is a custom software developer specializing in Joomla extensions.","ContactPoint":[{"@type":"ContactPoint","url":"https://www.richeyweb.com/contact-us","telephone":"903-873-8460","contactType":"Owner/Administrator","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"},{"@type":"ContactPoint","url":"https://www.richeyweb.com/bugs","telephone":"903-873-8460","contactType":"Technical Support","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"}],"knowsAbout":["Computer programming",{"@type":"Thing","name":"Computer programming","sameAs":["https://en.wikipedia.org/wiki/Computer_programming","https://www.wikidata.org/wiki/Q80006","https://g.co/kg/m/01mf_"]},"PHP",{"@type":"Thing","name":"PHP","sameAs":["https://en.wikipedia.org/wiki/PHP","https://www.wikidata.org/wiki/Q59","https://g.co/kg/m/060kv"]},"JavaScript",{"@type":"Thing","name":"JavaScript","sameAs":["https://en.wikipedia.org/wiki/JavaScript","https://www.wikidata.org/wiki/Q2005","https://g.co/kg/m/02p97"]},"arduino","Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"White hat",{"@type":"Thing","name":"White hat","sameAs":["https://en.wikipedia.org/wiki/White_hat_(computer_security)","https://www.wikidata.org/wiki/Q7995625","https://g.co/kg/m/03ns_5"]},"Search engine optimization",{"@type":"Thing","name":"Search engine optimization","sameAs":["https://en.wikipedia.org/wiki/Search_engine_optimization","https://www.wikidata.org/wiki/Q180711","https://g.co/kg/m/019qb_"]},"Search engine marketing",{"@type":"Thing","name":"Search engine marketing","sameAs":["https://en.wikipedia.org/wiki/Search_engine_marketing","https://www.wikidata.org/wiki/Q846132","https://g.co/kg/m/06mw8r"]},"Digital marketing",{"@type":"Thing","name":"Digital marketing","sameAs":["https://en.wikipedia.org/wiki/Digital_marketing","https://www.wikidata.org/wiki/Q1323528","https://g.co/kg/g/122hcnps"]},"Web hosting service",{"@type":"Thing","name":"Web hosting service","sameAs":["https://en.wikipedia.org/wiki/Web_hosting_service","https://www.wikidata.org/wiki/Q5892272","https://g.co/kg/m/014pz4"]},"Email hosting service",{"@type":"Thing","name":"Email hosting service","sameAs":["https://en.wikipedia.org/wiki/Email_hosting_service","https://www.wikidata.org/wiki/Q5368818","https://g.co/kg/m/09w60m"]},"Internet hosting service",{"@type":"Thing","name":"Internet hosting service","sameAs":["https://en.wikipedia.org/wiki/Internet_hosting_service","https://www.wikidata.org/wiki/Q1210425","https://g.co/kg/m/09w5yw"]},"Virtual hosting",{"@type":"Thing","name":"Virtual hosting","sameAs":["https://en.wikipedia.org/wiki/Virtual_hosting","https://www.wikidata.org/wiki/Q588365","https://g.co/kg/m/024mvh"]},"Web performance",{"@type":"Thing","name":"Web performance","sameAs":["https://en.wikipedia.org/wiki/Web_performance","https://www.wikidata.org/wiki/Q7978612","https://g.co/kg/m/0gfj3f1"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"General Data Protection Regulation",{"@type":"Thing","name":"General Data Protection Regulation","sameAs":["https://en.wikipedia.org/wiki/General_Data_Protection_Regulation","https://www.wikidata.org/wiki/Q1172506","https://g.co/kg/m/0pk_7xs"]},"SERP",{"@type":"Thing","name":"SERP","sameAs":["https://en.wikipedia.org/wiki/SERP","https://www.wikidata.org/wiki/Q2205811","https://g.co/kg/g/11c5szp7kc"]},"Artificial intelligence",{"@type":"Thing","name":"Artificial intelligence","sameAs":["https://en.wikipedia.org/wiki/Artificial_intelligence","https://www.wikidata.org/wiki/Q11660","https://g.co/kg/m/0mkz"]},"Prompt engineering",{"@type":"Thing","name":"Prompt engineering","sameAs":["https://en.wikipedia.org/wiki/Prompt_engineering","https://www.wikidata.org/wiki/Q108941486","https://g.co/kg/g/11p6kpgt_n"]},"E-learning",{"@type":"Thing","name":"E-learning","sameAs":["https://en.wikipedia.org/wiki/E-learning_(theory)","https://www.wikidata.org/wiki/Q182250","https://g.co/kg/g/122czm1f"]},"Sharable Content Object Reference Model",{"@type":"Thing","name":"Sharable Content Object Reference Model","sameAs":["https://en.wikipedia.org/wiki/Sharable_Content_Object_Reference_Model","https://www.wikidata.org/wiki/Q827811","https://g.co/kg/m/06_40"]},"Experience API",{"@type":"Thing","name":"Experience API","sameAs":["https://en.wikipedia.org/wiki/Experience_API","https://www.wikidata.org/wiki/Q7807728","https://g.co/kg/g/1yw9ktxr8"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]},"Nginx",{"@type":"Thing","name":"Nginx","sameAs":["https://en.wikipedia.org/wiki/Nginx","https://www.wikidata.org/wiki/Q306144","https://g.co/kg/m/02qft91"]},"MySQL",{"@type":"Thing","name":"MySQL","sameAs":["https://en.wikipedia.org/wiki/MySQL","https://www.wikidata.org/wiki/Q850","https://g.co/kg/m/04y3k"]}],"areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"memberOf":["Mensa International",{"@type":"Organization","name":"Mensa International","sameAs":["https://en.wikipedia.org/wiki/Mensa_International","https://www.wikidata.org/wiki/Q184194","https://g.co/kg/m/0140pf"]},"National Rifle Association",{"@type":"Organization","name":"National Rifle Association","sameAs":["https://en.wikipedia.org/wiki/National_Rifle_Association","https://www.wikidata.org/wiki/Q863259","https://g.co/kg/m/0j6f9"]},"CompTIA",{"@type":"Organization","name":"CompTIA","sameAs":["https://en.wikipedia.org/wiki/CompTIA","https://www.wikidata.org/wiki/Q597534","https://g.co/kg/m/040shq"]},"ISFCE LLC",{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://isfce.com","https://g.co/kg/g/11wxm5r0rg"]}],"hasCredential":[{"@type":"EducationalOccupationalCredential","name":"Joomla 3 Certified Administrator","credentialCategory":"Certification","description":"Administrator Exam is the first available Joomla! certification exam","recognizedBy":{"@type":"Organization","name":"Open Source Matters, Inc.","sameAs":["https://en.wikipedia.org/wiki/Open_Source_Matters,_Inc.","https://g.co/kg/g/11f00wvjhz"]},"url":"https://certification.joomla.org/certified-user-directory/michael-richey","about":["Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/badge.webp","contentUrl":"https://www.richeyweb.com/images/contact/badge.webp","width":{"@type":"QuantitativeValue","value":300,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":86,"unitCode":"PX"},"caption":"Joomla 3 Certified Administrator"}},{"@type":"EducationalOccupationalCredential","name":"Certified Computer Examiner","credentialCategory":"Certification","description":"Internationally recognized computer forensics certifiecation","recognizedBy":{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://en.wikipedia.org/wiki/ISFCE_LLC","https://g.co/kg/g/11wxm5r0rg"]},"url":"https://isfce.com/","about":["Digital forensics",{"@type":"Thing","name":"Digital forensics","sameAs":["https://en.wikipedia.org/wiki/Digital_forensics","https://www.wikidata.org/wiki/Q3246940","https://g.co/kg/m/0cnxzfx"]},"Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"Mobile device forensics",{"@type":"Thing","name":"Mobile device forensics","sameAs":["https://en.wikipedia.org/wiki/Mobile_device_forensics","https://www.wikidata.org/wiki/Q6887097","https://g.co/kg/m/06zp3tp"]},"Network forensics",{"@type":"Thing","name":"Network forensics","sameAs":["https://en.wikipedia.org/wiki/Network_forensics","https://www.wikidata.org/wiki/Q7001032","https://g.co/kg/m/05pb280"]},"Database forensics",{"@type":"Thing","name":"Database forensics","sameAs":["https://en.wikipedia.org/wiki/Database_forensics","https://www.wikidata.org/wiki/Q5227405","https://g.co/kg/m/0cgqsy"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/isfce-cce.webp","contentUrl":"https://www.richeyweb.com/images/contact/isfce-cce.webp","width":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"caption":"Certified Computer Examiner"}}],"hasOfferCatalog":{"@type":"OfferCatalog","name":"Web Services","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Hosting"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Development"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Search Engine Optimization"}}]}},{"@type":"WebSite","@id":"https://www.richeyweb.com/#website","url":"https://www.richeyweb.com/","name":"RicheyWeb","publisher":{"@id":"https://www.richeyweb.com/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.richeyweb.com/search?q={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string","valueMaxLength":256,"valueMinLength":2,"valuePattern":"^[A-Za-z0-9\\s]+$"}},"creator":{"@id":"https://www.richeyweb.com/#organization"},"copyrightHolder":{"@id":"https://www.richeyweb.com/#organization"}},{"@type":"WebPage","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#webpage","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th?tmpl=markdown","name":"I Built This on February 3rd. Cloudflare Announced It on February 12th","description":"How a Joomla plugin built in six hours serves clean Markdown to AI agents, outpaced Cloudflare's announcement on February 12th.","isPartOf":{"@id":"https://www.richeyweb.com/#website"},"about":{"@id":"https://www.richeyweb.com/#organization"},"inLanguage":"en-GB"},{"@type":"Article","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#article","name":"I Built This on February 3rd. Cloudflare Announced It on February 12th","headline":"I Built This on February 3rd. Cloudflare Announced It on February 12th","inLanguage":"en-GB","thumbnailUrl":"images/articles/plg_system_markdown/hero-still.webp","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/plg_system_markdown/most-interesting-markdown-16x9.avif","contentUrl":"https://www.richeyweb.com/images/articles/plg_system_markdown/most-interesting-markdown-16x9.avif","width":{"@type":"QuantitativeValue","unitCode":"PX"},"height":{"@type":"QuantitativeValue","unitCode":"PX"},"caption":"1"},"isPartOf":{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#webpage"},"publisher":{"@id":"https://www.richeyweb.com/#organization"},"description":"How a Joomla plugin built in six hours serves clean Markdown to AI agents, outpaced Cloudflare's announcement on February 12th.","datePublished":"2026-02-13T00:00:00+00:00","dateModified":"2026-03-30T00:00:00+00:00","author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"},"citation":[{"@type":"CreativeWork","@id":"https://www.richeyweb.com/software/joomla/plugins/system-markdown#softwareapplication","url":"https://www.richeyweb.com/software/joomla/plugins/system-markdown","name":"System - Markdown"}],"keywords":"AI agents, Markdown, HTML, Joomla plugin, component templates, RFC 8288, HTTP Link header, text/markdown, tokens, web standards, proprietary header, schema markup, large language models, structured content, web traffic, navigation menus, actual content, content quality, discovery method, token efficiency, AEO experts, GEO specialists, LLMS.txt, CMS Architecture, AI optimization, proprietary formats, web standard, Answer Engine Optimization, Generative Engine Optimization, Six-Hour Build, onAfterDispatch, HTMLToMarkdown, caching, cf-render-markdown, Standards Compliance, Efficiency Matters, AI Ready, Joomla extension, content discovery, edge computing, architectural knowledge, component template system, Joomla Extensions Directory, GPL licensed, AI crawler, bandwidth wasted, token economics, semantic parsing algorithms, backward compatible, Answer Engine Optimization, Generative Engine Optimization, proprietary schema, XML formats, datasets, semantic parsing, token economics, AI-friendly, JSON-LD, backwards compatible, content representations, HTTP client, search","articleSection":"Development","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th","hasPart":[{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-problem-we-both-saw_2_1"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-joomla-advantage_2_2"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-six-hour-build_2_3"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-then-cloudflare-announced_2_4"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-even-cloudflare-got-this-wrong_2_5"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-how-standards-based-discovery-actually-works_2_6"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-efficiency-matters_2_7"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-comparison_2_8"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-aeo-geo-scam_2_9"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-standards-were-always-there_2_10"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-why-people-fall-for-proprietary-solutions_2_11"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-real-optimization-strategy_2_12"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-why-this-matters_2_13"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-what-this-says-about-cms-architecture_2_14"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-release_2_15"},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-lesson_2_16"}]},{"@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex","@type":"ItemList","name":"I Built This on February 3rd. Cloudflare Announced It on February 12th","numberOfItems":16,"itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-problem-we-both-saw_2_1","name":"The Problem We Both Saw","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-the-problem-we-both-saw_2_1"}},{"@type":"ListItem","position":2,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-joomla-advantage_2_2","name":"The Joomla Advantage","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-the-joomla-advantage_2_2"}},{"@type":"ListItem","position":3,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-six-hour-build_2_3","name":"The Six-Hour Build","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-the-six-hour-build_2_3"}},{"@type":"ListItem","position":4,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-then-cloudflare-announced_2_4","name":"Then Cloudflare Announced","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-then-cloudflare-announced_2_4"}},{"@type":"ListItem","position":5,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-even-cloudflare-got-this-wrong_2_5","name":"Even Cloudflare Got This Wrong","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-even-cloudflare-got-this-wrong_2_5"}},{"@type":"ListItem","position":6,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-how-standards-based-discovery-actually-works_2_6","name":"How Standards-Based Discovery Actually Works","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-how-standards-based-discovery-actually-works_2_6"}},{"@type":"ListItem","position":7,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-efficiency-matters_2_7","name":"Efficiency Matters","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-efficiency-matters_2_7"}},{"@type":"ListItem","position":8,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-comparison_2_8","name":"The Comparison","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-the-comparison_2_8"}},{"@type":"ListItem","position":9,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-aeo-geo-scam_2_9","name":"The AEO/GEO Scam","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-the-aeo-geo-scam_2_9"}},{"@type":"ListItem","position":10,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-standards-were-always-there_2_10","name":"The Standards Were Always There","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-the-standards-were-always-there_2_10"}},{"@type":"ListItem","position":11,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-why-people-fall-for-proprietary-solutions_2_11","name":"Why People Fall for Proprietary Solutions","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-why-people-fall-for-proprietary-solutions_2_11"}},{"@type":"ListItem","position":12,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-real-optimization-strategy_2_12","name":"The Real Optimization Strategy","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-the-real-optimization-strategy_2_12"}},{"@type":"ListItem","position":13,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-why-this-matters_2_13","name":"Why This Matters","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-why-this-matters_2_13"}},{"@type":"ListItem","position":14,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-what-this-says-about-cms-architecture_2_14","name":"What This Says About CMS Architecture","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-what-this-says-about-cms-architecture_2_14"}},{"@type":"ListItem","position":15,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-release_2_15","name":"The Release","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-the-release_2_15"}},{"@type":"ListItem","position":16,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#articleindex-toc-the-lesson_2_16","name":"The Lesson","url":"https://www.richeyweb.com/blog/development/i-built-this-on-february-3rd-cloudflare-announced-it-on-february-12th#toc-the-lesson_2_16"}}]}]}
```
