This plugin serves a clean Markdown version of your public pages to AI agents, crawlers, and any tool that would rather read structured text than a full HTML page.

Markdown is easier for AI to work with: it keeps your headings, lists, and links but drops the navigation, scripts, styles, and forms. Less noise, and the agent understands the page more reliably.

Note The plugin requires Listeo Core. It doesn’t touch Cloudflare – no Worker, no paid plan, and no custom server config on a standard WordPress host.


Is it better than llms.txt?

Certainly. There is still no convincing evidence that llms.txt works. Ahrefs’ analysis of 137,000 websites found that 97% of llms.txt files were never accessed.

Serving Markdown to AI agents via HTTP content negotiation (Accept: text/markdown) is a different approach. It’s already supported by major infrastructure like Cloudflare, and AI search agents such as Claude/ChatGPT/Perplexity request Markdown directly when available. More at The Cloudflare Blog: Introducing Markdown for Agents

On our own site we use the same solutions and we see the Markdown versions being requested hundreds of times per day.


Install and preload the cache

  1. Download plugin from Customer Portal →
  2. In the WordPress admin, go to Plugins > Add New and upload the plugin ZIP.
  3. Activate Listeo Markdown for Agents (Listeo Core needs to be active first).
  4. Open Listeo Core > Listeo Markdown.
  5. Go to the Preload Cache tab and click Start / preload missing.

Preloading runs in small background batches via Action Scheduler (or WP-Cron if that’s not available). It’s worth doing right after activation, especially on directories with hundreds or thousands of listings.

The same screen has a content browser where you can search and filter by post type or cache status to see what’s cached, generated on demand, or excluded. It loads a few items at a time so it stays light on shared hosting.

Plugin “Preload Cache” Page

Tip Use Rebuild all after a big site-wide design or visibility change. Everyday edits are handled for you and don’t need a rebuild.


How it works

Every supported public page gets a Markdown twin at the same URL with .md on the end:

https://example.com/about/
https://example.com/about.md

https://example.com/listing/example-listing/
https://example.com/listing/example-listing.md

https://example.com/product/example-product/
https://example.com/product/example-product.md

Agents can also just ask the normal page URL for Markdown using a standard HTTP header:

curl https://example.com/about/ \
  -H "Accept: text/markdown"

Either way the response comes back as Content-Type: text/markdown. The .md URLs are cacheable by browsers and CDNs; responses negotiated through the HTML URL are marked private and no-store so they never mix with your regular page cache.


Disk cache and automatic updates

Generated documents live in a protected, non-public cache inside your WordPress uploads folder.

  • If a cached file exists, the plugin serves it straight from disk.
  • If it’s missing, WordPress builds the Markdown on the spot, returns it, and saves it for next time.
  • When a post, page, listing, product, testimonial, taxonomy, or relevant public field changes, its Markdown is refreshed automatically.

There’s no “pending” page and no Worker in the way. The very first request can be a little slower than a cache hit, but the agent still gets the finished document in that same request.


Supported content

  • WordPress posts and pages, including Gutenberg content.
  • Published Elementor pages rendered through the normal public pipeline.
  • Listeo listings — details, taxonomies, opening hours, images, and contact fields your visibility settings allow.
  • WooCommerce products — descriptions, price, availability, attributes, categories, and images.
  • Testimonials.

Only published, publicly viewable, password-free content qualifies, and common SEO noindex settings are respected. Cart, checkout, My Account, shop archives, attachments, Elementor templates, and private Listeo data are all left out.


Like Cloudflare Markdown for Agents – minus the Worker

The idea mirrors Cloudflare Markdown for Agents: send Accept: text/markdown, get structured Markdown back instead of HTML.

The difference is where the work happens. Cloudflare converts HTML to Markdown on its network for enabled zones. This plugin does it inside WordPress, so it understands Listeo and WooCommerce content directly and caches the result on your own disk. It works with or without Cloudflare, and there’s no Worker to deploy or maintain.