Skip to content
EnterraHost
Products
Tools
Hosting Email Support Client Area Find a domain

Free and GPL licensed

Make your WordPress site readable by AI assistants.

One plugin serves an llms.txt index, a full-text file, and a Markdown copy of every page. It also writes the Content-Signal declaration into robots.txt. No account, no API key, and nothing is sent anywhere.

The WordPress.org listing is in review. This page links to the download when it is approved.

  • Works with any theme
  • No external services
  • WooCommerce aware
  • Handles a physical robots.txt

What an assistant receives today

Most of the page is not the page.

A typical WordPress page is 80 to 120 KB of markup wrapped around a few KB of words. The rest is the header, the footer, menus, scripts, inline SVG icons and the theme's own wrappers. A browser needs all of it. A reader that pays by the token pays for all of it and uses almost none of it.

The plugin builds a second representation from the post itself, not from the rendered page. Ask for it with a header and the same URL answers with text.

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

# About
> Published: 2026-10-14 - Source: https://yourbusiness.com/about/

Welcome to the company. We build <strong>nothing</strong> but ...

What it adds

Four files and one setting.

/llms.txt

The index. What the site is, what it sells, and one line per page with the description the page already carries. Built from the same query that builds the sitemap, so the two cannot disagree.

/llms-full.txt

Everything in one fetch. Every included page, concatenated as Markdown, capped at 300 pages so a large catalog cannot turn it into a file nobody finishes.

/your-page.md

Append .md to any permalink and get that page as Markdown. Plain permalinks use ?enterra_aiv_md=1 instead, so the plugin works on a host that never turned pretty links on.

Content negotiation

Accept: text/markdown on the page itself, with the q-values parsed properly and a Vary header sent, so a cache cannot learn the wrong answer for one audience and serve it to the other.

Content-Signal in robots.txt

One line saying whether search, AI input and training are permitted. It is off until you choose the values, because that is a decision about your content, not a default a plugin should make for you.

A screen that shows the result

A score out of 100, the live URLs, what else is installed, and a preview that renders any post to Markdown so you can see exactly what an agent receives before you trust it.

robots.txt

Two robots.txt files, two problems.

WordPress can serve robots.txt itself, or a real file in the site root can win. The plugin handles both, and it does not pretend the setting applied when the server never asked WordPress.

WordPress serves it

A filter appends the block to whatever core, WooCommerce and your SEO plugin already wrote. Nothing touches the disk and the line is there on the next request.

A real file wins

The web server answers before WordPress runs, so the filter is never called. The plugin detects the file, says so, and offers a button that edits it. If PHP cannot write it, WordPress asks for FTP or SSH details through the filesystem form it already ships.

The original contents are kept in the database, so the change can be undone without a backup file sitting in the web root. A physical file is not a defect. It is a decision, and the plugin respects it rather than silently reporting a setting as applied.

How it works

Install it, choose the post types, done.

1. Install

From the WordPress plugin screen. Activation registers the rewrite rules and flushes them once, so the files answer immediately rather than after the next permalink save.

2. Choose

Tick the post types that belong in the files. Pages and posts are on by default. Products join them when WooCommerce is active, in their own section.

3. Read

Open /llms.txt on the site. The dashboard links every endpoint, shows the score, and renders a real page so the output is not a promise.

The screen

It tells you what is live, and what is not.

The score is computed from the site's own state, not from a remote check. A setting that cannot take effect does not earn points, which is why a physical robots.txt with no block in it shows 85 rather than 100.

The AI Visibility dashboard showing a score of 85 out of 100, the live file URLs, the detected theme and plugins, and a Markdown preview.
The dashboard. The score, the live files, what else is installed, and the Markdown an agent actually receives.
The settings screen showing the llms.txt and Markdown switches, post type selection, and the robots.txt Content-Signal values.
Settings. Four switches, the post types, the Content-Signal values and the cache lifetime. There is nothing else to configure.

Works with what you run

It asks WordPress, so the theme does not matter.

Any theme, any host

The Markdown is built from post content and block structure, not from the rendered page. A theme change does not change the output, and a page builder that stores its layout outside post_content is the case where the fallback matters.

WooCommerce and SEO plugins

Yoast, Rank Math and All in One SEO are detected, so the plugin says which one owns the sitemap instead of competing with it. On a store, products get their own section in the index with the name, price and availability, and stay out of the full-text file by default.

What it does not do

Four things it stays out of.

No structured data

WooCommerce and your SEO plugin already emit it, and a second graph on the same page is a conflict rather than a feature. The plugin reads what is there and adds none of its own.

No writing

No rewriting, no summaries, no generated descriptions. The words are yours, converted to a different format.

No calls out

No account, no API key, no telemetry. The two files are built from your database and served by your server.

No cache fight

The Markdown lives at a URL of its own, so a page cache that ignores Vary cannot serve it to a browser by mistake. The header path is a convenience on top of that, not the only way in.

Support

The guide covers the parts that need saying.

What belongs in an llms.txt, how to check the file a crawler actually receives, and what the Content-Signal line does and does not do. If something is still wrong, open a ticket and we will read it.