Complete Guide

LLMs.txt Curator: a free WordPress plugin for curating your llms.txt

Curate your llms.txt rather than just generating it. See what machines receive, decide what represents you, and check visitors get the version you published.

18 min read 3,558 words Published Apr 2026
LLMs.txt Curator Official Wordpress plugin by SEO Strategy Ltd

Version 2.2 released 4 October 2026. A free WordPress plugin, GPL v2, published on WordPress.org. Version 2.0 turned an llms.txt generator into a workspace for deciding, publishing and verifying how your site is represented to machines. Version 2.2 takes that down to the page: the Markdown a machine receives is built from the page as a visitor sees it, can be inspected before anyone relies on it, and can be read by signed-in tools and agents that cannot change a thing.

Zero unexplained resources is the goal. Curator accounts for every resource it finds as represented, excluded by you, unavailable to visitors, or not yet checked. A state, not a score. LLMs.txt Curator 2.2.0, SEO Strategy Ltd 2026
12 known AI crawlers recognised in the log, including GPTBot, ClaudeBot, PerplexityBot, Google-Extended and Applebot-Extended. IP addresses anonymised, nothing leaves your server. LLMs.txt Curator 2.2.0, SEO Strategy Ltd 2026
8 read-only abilities for signed-in tools and agents through the WordPress Abilities API, four of them offered to MCP clients. None can change your curation, your settings or what you publish. LLMs.txt Curator 2.2.0, SEO Strategy Ltd 2026
View on WordPress.orgVersionv2.2.0Active installs200+Rating5.0/5 (4)Tested up toWordPress 7.1.4On WordPress.org since5 April 2026

Don’t just generate your llms.txt. Curate what it says about you.

Automatic generation is easy. The harder question is whether you agree with the output.

Curator lets you see exactly what machines receive, understand where it came from, decide what represents you, and verify that visitors are actually getting the version you published.

Automatic discovery. Human judgement. Verifiable output.

By machines we mean the AI agents, assistants and other automated systems that request llms.txt from your server. Curator’s job is to control and check what those requests get back.

You are represented immediately. Curator publishes what it finds as soon as it is activated, clearly marked as discovered automatically rather than reviewed. You then promote what you have checked, improve what needs it, and exclude what you do not want. There is no queue of two hundred pages to approve before the file exists.

The difference in one line

A generator asks: what should I put in /llms.txt?

Curator asks: what is being represented, why is it there, do you agree with it, and is that actually what visitors receive?

Those last two questions are the whole of version 2.0. Everything else follows from them.

Version 2.2 adds a third: is the page a machine receives the page a visitor sees? For every page in your llms.txt, Curator can now show you, and check.

Download LLMs.txt Curator from WordPress.org

Who this is for

Curator is for site owners, SEOs and developers who want control over how their site is represented to machines, rather than another file generated invisibly in the background.

If you want WordPress to produce an llms.txt automatically and never look at it again, you probably do not need Curator, and there are simpler plugins that do exactly that. If you want to understand, edit and verify what is being published, that is what this was built for.

What version 2.0 gives you

Grouped by the working sequence the plugin is built around: Discover, Understand, Decide, Organise, Publish, Verify.

Discover

Discovery in batches. Curator finds your public content in batches that can be paused and resumed, and it never reports a site as fully checked when it was interrupted.

A resource for everything. Every page, custom URL and standalone fact is a resource with a recorded origin and its own editorial state. That is what lets Curator answer what it is publishing, where it came from, and why.

Page-builder templates. Elementor template-library entries and similar items visitors cannot open are no longer published when found. Ones carried over from an earlier setup stay published, marked as kept from your earlier setup, until you decide.

Understand

Why? Open any resource and see the decisions behind it, separated into what Curator observed about the page and what you decided, ending with the exact line it contributes to the file.

Representation coverage, and Everything accounted for. Curator states whether every resource it found has an explained outcome. It never claims completeness before discovery has finished.

Show the whole file. Read everything machines will receive before you publish, in readable form or as exact Markdown.

Decide

Review. Everything Curator knows about, with search, filters and bulk actions, and an editorial state on each resource: kept by you, published automatically, or excluded by you.

Suggested descriptions, honestly labelled. Curator fills an empty description from what the page already publishes and names the source it used. A suggestion stays marked as a suggestion until you accept or edit it. Curator does not write text for you.

Primary resources. Mark up to ten resources as especially important for understanding your site.

Facts, custom URLs and site details. Publish a short factual statement that does not deserve its own page, or a URL Curator did not find on its own. Describe the organisation behind the site once and Curator publishes it above the first section. Where WordPress or your SEO plugin says something different, Curator shows you both and publishes your choice.

Organise

Your llms.txt. Arrange sections and resources with the result shown beside you, in readable form or as the Markdown that gets published.

Every move is also a button. Drag if you like, or use move up, move down, move to position and move to section. Dragging is convenient; it is not the only way to do anything.

Publish

Unpublished changes. When your curation differs from the published file, Curator says so and shows what changed, including the previous and current wording.

Self-checks first. If Curator finds something it cannot account for, such as a missing resource table after a partial database restore, it refuses to generate, leaves the published file untouched, and shows a diagnostic code rather than publishing an empty file.

Atomic writes. Temporary file, then rename, so no half-written file is ever served.

When to publish. Instant, roughly thirty seconds after a change, or Daily, Weekly, or only when you click Publish.

Verify

Check what visitors receive. After publishing, Curator requests your public file and tells you plainly whether visitors are getting the new version, or whether a cache or an older file is serving something else. It never records a publication that visitors are not receiving.

Optional Markdown pages. Each page in your llms.txt can also be available as Markdown at its address plus index.md, for example /about/index.md. Off by default. Excluded and non-public pages return not found.

What version 2.2 adds

Version 2.2 is called Representation and Agent Readiness. Version 2.1 was built and tested but never published on WordPress.org, so everyone updates from 2.0 straight to 2.2 and gets both. The thinking behind it is written up in Present Is Not Useful; this is what it does.

Represent

Markdown that matches the page. With Markdown pages on, Curator takes a snapshot of each page in your llms.txt as a logged-out visitor sees it, in the background, and builds the Markdown from that. Content added by page builders and block templates, which never reached the stored post, is now included. Menus, headers, footers, comments, share buttons and “more posts” lists are left out.

A better converter. Tables come out as tables, code keeps its indentation, numbered lists keep their numbers and nested lists stay nested. The same converter writes llms-full.txt and every .md address, so they always agree.

Never out of date. A snapshot is retired the moment its page, its approved comments or a synced pattern it uses changes, and the stored content is served until a new one is taken. When a post is unpublished, made private or given a password, every snapshot that links to it is retired too.

Inspect

See what machines receive, per page. Open Markdown on any page in Your llms.txt to see its Markdown version laid out for reading, exactly as served, and how it was made: whether it came from a snapshot or the stored content, which part of the page was used, what was removed and what was kept. Take a snapshot now refreshes it on the spot.

Checks for every page. A Pages group in Checks reports pages built from stored content because a snapshot failed, and why; pages with very little text; unrendered shortcodes; leftover markup; repeated text; uneven tables; and menus that leaked into the content. Check what visitors receive now also tests a sample of .md addresses for the right content type, the noindex and canonical headers, and revalidation.

Expose, read-only

Access for tools and agents. Through WordPress’s own Abilities API, signed-in tools can list what your llms.txt publishes, get a page’s Markdown exactly as its .md address serves it, and ask what changed since they last looked. With WordPress’s MCP Adapter installed, AI clients such as Claude can use the same four abilities. Everything answers from the record of what you published, never from your working curation, and anything you have not published gets one identical “not available” answer, so nothing hidden can be enumerated. No ability can change your curation, settings or what you publish. An Agents group in Checks shows whether it is working.

From 2.1, included

  • Notes for machines: your own answer to “what would a machine get wrong about your site?”, published as written.
  • Checks: Structure, Content, Delivery and Ownership, now joined by Pages and Agents. Observed facts, not a score.
  • Ownership: anything else that answers, or could answer, /llms.txt.
  • Bring in an existing llms.txt: staged for review, approved in one step, undoable.

A fix for non-Latin sites

The same release corrects a bug that had damaged Persian, Arabic, Hebrew, Hindi and some accented Latin text in every version since at least 2.0: a whitespace pattern that, in byte mode, matched a byte inside letters such as the Persian m and n. It was reported by Saeid Afshari of kabook.ir, is credited to him in the public changelog, and is now covered by a test of every character from U+0080 to U+FFFF. If the stored file on an affected site is invalid, updating publishes once to repair it.


Upgrading from 1.x carries your curation across exactly. Sections, pages, descriptions, title overrides and exclusions are migrated, and the file regenerates with the same content in the same order until you deliberately change something. Two lines move: Curator’s own comment lines now sit below the heading rather than above it, so the file begins with the H1 the llms.txt proposal asks for.

Version 2.0 requires WordPress 6.2 or later, because resources are stored in their own database table rather than a single option, which is what keeps large sites fast.

What llms.txt is, and what it isn’t

Curator makes no ranking claim for llms.txt.

Google Search ignores the file. It will not help your Google rankings and it will not harm them, and Google confirmed in June 2026 that it is fine to maintain it for other systems that do read it.

What can be substantiated is narrower and more useful:

  • It gives agents already on your site a short, deliberate route through your content.
  • Some surfaces do read it, such as Perplexity and coding agents.
  • It forms part of Chrome’s Agentic Browsing audit.

So the honest question is not “does this rank me” but “which systems are actually reading my file”. Curator answers that from your own server logs rather than from a claim, recognising 12 known crawlers: GPTBot, ChatGPT-User, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, Meta-ExternalAgent, Bytespider, CCBot, Cohere, DeepSeek and Amazonbot. IP addresses are anonymised before storage and nothing leaves your server.

Safe by default

  • Both files are generated in an anonymous context. Curator renders them as a logged-out visitor rather than as the administrator who triggered the run, so content that only appears when signed in is not rendered into them.
  • Restricted content is excluded. Drafts, private pages, password-protected pages and noindex pages are left out. Restriction by membership plugin is handled directly for Paid Memberships Pro, MemberPress, Restrict Content Pro and WooCommerce Memberships, and the llmscu_is_restricted filter covers any other plugin.
  • Every exclusion is explained. A page left out is listed with the reason, so nothing disappears silently.
  • An llms.txt this plugin did not create is never overwritten. If one is found, Curator says so and offers to replace it, writing and checking the new file before moving the original to a protected backup, and restoring the original if the swap fails.
  • Nothing is sent anywhere. No telemetry, no external API calls, no cookies. The only requests Curator makes are to your own site, to check what visitors receive.

To be precise about the first two, because it is a claim about access control rather than a feature: anonymous rendering is the default, the common membership plugins are handled by name, and the filter is there for anything else. That combination is strong, and it is why the 1.5.3 release was a security release. It is not a claim that every access-control plugin ever written is understood without configuration. If you run something unusual, the filter is the supported way to tell Curator about it.

Having a description isn’t the same as having a useful description

Version 1 measured description coverage. It could tell you that 45 of your 48 pages had a description, and that felt like the right thing to measure.

Then I ran 2.0 across a real catalogue site and watched it report excellent coverage on a file that was, on inspection, close to useless. Dozens of product descriptions opened with the same line of shop furniture, a call to action repeated across the whole catalogue, because that was the first text the page actually published. Every one of those descriptions was present. Almost none of them was useful.

That is the limit of coverage as a measure, and it cuts against how version 1 sold itself:

  • Version 1 asked: does this resource have a description?
  • Version 2.0 asks: what representation am I actually publishing, and where did it come from?
  • The next question is: is that representation any good?

2.0 did not answer the third one. It made the representation visible, which is the necessary first step, because you cannot judge what you cannot see.

2.2 is the first release that starts to answer it, at the page level. The Markdown view shows what a machine receives for each page and how it was made, and the Pages checks name the things that make a page present but not useful: a snapshot that failed, almost no text, an unrendered shortcode, repeated text, a menu that leaked in. Curator still does not score anything and still does not write anything. It shows you, and you decide. The reasoning is set out in Present Is Not Useful.

How to set up LLMs.txt Curator

  1. 1

    Install and activate. Curator finds your public pages and publishes them straight away, marked as found automatically rather than reviewed. You are represented from the first minute.

  2. 2

    Open Your llms.txt. Arrange your sections and remove anything you do not want. Aim for the pages that best represent your site, not for completeness.

  3. 3

    Work through Review. Decide on anything Curator has flagged, such as page-builder templates carried over from an earlier setup.

  4. 4

    Click Suggest descriptions from your pages. Then read them. Each names the source it came from and stays marked as a suggestion until you accept or edit it. Pay particular attention to anything taken from raw page content, which is where boilerplate gets in.

  5. 5

    Set your site details. Describe the organisation behind the site. This is published above the first section, so it is the first thing a machine reads.

  6. 6

    Publish, then click Check what visitors receive and confirm the public file is current rather than assuming it.

  7. 7

    Optionally, in Settings: llms-full.txt, Markdown pages, and the AI crawler log.

Everything else the plugin does

  • Five SEO plugin integrations: Rank Math, Yoast SEO, All in One SEO, SEOPress, The SEO Framework.
  • llms-full.txt: the companion file with full Markdown content for each curated page, with a size ceiling and a report of anything left beyond it.
  • Description coverage reported as counts rather than a score, in the workspace and at the foot of the generated file. The list of pages still needing a description is never published in the file.
  • Per-page title override: a different title for a page in your llms.txt without touching your on-site SEO.
  • Format check: an on-demand check with plain-English results. Errors block publication; warnings are shown but do not.
  • WooCommerce: SKU, price, stock, categories and dimensions, respecting product visibility.
  • Multisite: network-activate across all sites, each managing its own independent llms.txt, with a network screen to publish any site or all of them.
  • Import and export as JSON, validated and previewed before anything is written.
  • WP-CLI: wp llms-txt regenerate, wp llms-txt status, wp llms-txt crawler-log.
  • REST API: POST /wp-json/llms-txt/v1/regenerate, GET /wp-json/llms-txt/v1/status, plus the llms-txt/v2 resource endpoints the workspace itself uses.
  • ETag and 304 handling for CDN revalidation.
  • Subdirectory and Bedrock support, finding the site root correctly on non-standard installs.
  • Developer filters including llmscu_capability, llmscu_post_limit, llmscu_full_max_bytes, llmscu_is_restricted and llmscu_backup_dir, plus an llmscu_regenerated action.

Why I rebuilt Curator for 2.0

Version 1 proved that generating the file is not the hard part. A script can assemble an llms.txt in thirty seconds. Once people actually started curating one, harder questions appeared, and none of them were about generation:

  • What is actually in my file right now?
  • Why is this page in there, and who decided that?
  • Where did this description come from, and is it text I would have written?
  • Has the arrangement I set up been preserved, or has something quietly reordered it?
  • What will a machine actually receive, character for character?
  • I clicked publish. Did it work?
  • WordPress says the file is published. Is a cache serving something else?

That last pair matters more than it sounds. The most uncomfortable moment in building version 1 was a site where the admin screen said the file was live and current, and the public URL was serving a copy from months earlier. Nothing was broken in the code. The plugin had written the file, recorded that it had written the file, and told the truth as it understood it. It simply had no way of checking.

Version 2.0 was built around those questions rather than around a feature list.

Design principles

Two of these were written down early and never bent:

Displayed representation must equal published representation. If the workspace shows you a line, that is the line in the file. If it cannot be, Curator says so rather than showing you an optimistic version.

A failed publication must never advance the recorded published state. If the file cannot be written or replaced, nothing is marked as published. The plugin does not get to record a success it did not achieve.

Two more that fell out of building it:

Every exclusion is explained, so nothing disappears silently.

Detect, explain, then let the user decide. Curator does not overwrite an llms.txt it did not create, and it does not quietly win arguments with other plugins over who owns the file.

A public development record

LLMs.txt Curator is published on WordPress.org, which keeps its own independent record of every release. The chronology below can be verified there rather than taken on trust.

ReleaseWhat it established
1.0.4First public release: curation, validation, SEO plugin integration, templates, import and export, WP-CLI, REST API, atomic writes
1.1.0llms-full.txt, AI crawler detection, WooCommerce support
1.2.xSuggested descriptions, coverage reporting, change detection, title overrides, Safety Mode, scheduled publishing
1.3.xMultisite, distinct llmscu_ prefix, security and robustness hardening, diagnostics
1.4.xCrawler analytics, CSV export, further REST endpoints
1.5.0Content Signals, rel="describedby" header, and the repositioning around Google’s June 2026 guidance
1.5.1Exactly one H1 per file, clearing third-party validator warnings
1.5.2SEO template variables resolved, content types controlling output, noindex and password-protected pages left out, existing files never overwritten
1.5.3Security: generation in an anonymous context, membership-restricted pages excluded from both files
2.0.0The rebuild around resources: what am I publishing, where did it come from, and why
2.1.0Built and tested, never published: notes for machines, Checks, Ownership, bringing in an existing file, the Abilities API. Folded into 2.2
2.2.0Representation and Agent Readiness: Markdown built from a snapshot of the public page, the per-page Markdown view, Pages and Agents checks, read-only access for tools and agents, and the non-Latin text fix

Version 2.0 was developed during August and September 2026, following migration, scale, security, publication-integrity and real-site testing. The work moved the plugin beyond automatic file generation and towards explicit editorial control over a site’s machine-readable representation.

Version 2.2 followed in late September and early October 2026. Its release record lists 2,075 converter checks, 262 checks of the agent layer, four rounds of independent review of the representation work and a further review of the agent layer before release, with every finding fixed and covered by a regression test. The numbers are published so they can be questioned, not because a count proves quality.

Independent references:

  • Plugin page and full changelog on WordPress.org
  • Release tags in the WordPress.org Subversion repository: tags/2.0.0 and tags/2.2.0
  • Two fixes in 2.0.0 came from public reports on WordPress.org and are credited in the changelog: the missing H1 at the top of the file, and untranslatable strings in the admin JavaScript raised by the Persian translation editor.
  • The non-Latin text fix in 2.2.0 came from a public report by Saeid Afshari and is credited to him in the changelog.

Where llms.txt sits in AI-first SEO

llms.txt is one file at the discovery layer. It tells a machine that has already arrived at your site where to look. It does not make anyone arrive, and it does not decide whether you get cited.

At SEO Strategy we call the broader discipline LLM Optimisation: making sure your brand, your expertise and your content are correctly understood by AI systems at every layer. That includes entity SEO, schema markup, authorship signals, and Generative Engine Optimisation. Curator covers one specific job within it, which is controlling and verifying what your own site exposes.

For the wider picture, see our LLM Optimisation services, the complete llms.txt guide, the AI Discovery Stack and the CITATE framework.

Free, GPL v2, requires WordPress 6.2 or later and PHP 7.4 or later.

Download LLMs.txt Curator from WordPress.org

Key Definitions

llms.txt
A plain-text Markdown file at a site root, listing the pages a site considers most important and what they contain. A proposal documented at llmstxt.org, originally put forward by Jeremy Howard. It begins with a single H1 naming the site, which is the only required element.
llms-full.txt
A widely used companion file containing the full Markdown content of each listed page, rather than part of the llms.txt proposal itself. Optional in Curator.
Resource
In Curator, any single thing that can be represented: a page, a custom URL, or a standalone fact. Each carries a recorded origin and an editorial state.
Representation coverage
Curator’s statement of whether every resource it found has an explained outcome: represented, excluded by you, unavailable to visitors, or not yet checked. A count, not a score.
Unpublished changes
The state where your curation in the workspace differs from the file currently published, shown with the previous and current wording.
Snapshot
Curator’s copy of a page as a logged-out visitor receives it, fetched from the site itself in the background. With Markdown pages on, each page’s Markdown is built from its snapshot, so content added by page builders and block templates is included and menus, footers and comments are left out.
Fingerprint
A short code that changes whenever a page’s published Markdown changes. Tools compare fingerprints to know which pages to fetch again, rather than re-reading everything.

Frequently Asked Questions

Will llms.txt improve my Google rankings?

No. Google Search ignores the file, so it will not help and it will not harm, and Google confirmed in June 2026 that maintaining it for other systems is fine. Curator makes no ranking claim for it.

What is the difference between generating and curating an llms.txt?

A generator decides for you and hands you a file. Curation means you can see what is in it, why each item is there, what text each one contributes, and whether the published version is the one you approved. Curator publishes automatically so you are never unrepresented, but it marks everything it chose itself as found automatically rather than reviewed, so you always know which is which.

Do I need to curate before anything is published?

No. Curator publishes what it finds straight away. Curation is how you improve it, not a gate in front of it.

How does Curator know whether visitors are getting the published file?

After publishing it requests your own public file and compares what came back with what it just wrote. If a cache or an older file is serving something else, it says so and names the cache where it can. It never records a publication that visitors are not receiving.

What happens if my SEO plugin also generates an llms.txt?

Curator never overwrites a physical llms.txt it did not create. It reports what it found and offers to replace it, writing and verifying the new file before moving the original to a protected backup, and restoring the original if the swap fails. Switch the feature off in one of the two plugins so they are not competing.

Does anything get sent to a third party?

No. No telemetry, no external API calls, no cookies. The only requests Curator makes are to your own site.

Does it work on Multisite?

Yes. Each site manages its own independent llms.txt, with a network overview for publishing any or all of them.

Will my curation survive the upgrade to 2.2?

Yes, from 1.x or from 2.0. Sections, pages, descriptions, title overrides and exclusions are carried across, and the file regenerates with the same content in the same order until you change something. Updating from 1.x moves Curator’s two comment lines below the H1, so the file starts with the heading the proposal requires. Version 2.1 was never published, so updating from 2.0 brings in everything 2.1 and 2.2 added at once.

Can AI tools and agents use Curator?

Yes, read-only. Through WordPress’s Abilities API a signed-in tool can list what your llms.txt publishes, get a page’s Markdown exactly as its .md address serves it, and ask what changed since a given point. With WordPress’s MCP Adapter installed, AI clients such as Claude can use the same four abilities. They see only what you already publish, they cannot change anything, and anonymous requests are refused.

Does Curator send my pages anywhere to build the Markdown?

No. With Markdown pages on, Curator requests each page from your own site as a logged-out visitor, in the background, and converts it on your server. Nothing is sent to a third party. Because the request comes from your server’s own address, a site that shows extra content to itself, such as an IP allow list or a maintenance mode that lets the server through, should keep Markdown pages off, and the plugin says so.

Sean Mullins

Founder of SEO Strategy Ltd with 20+ years in SEO, web development and digital marketing. Specialising in healthcare IT, legal services and SaaS — from technical audits to AI-assisted development.

Ready to improve your search visibility?

Book a free 30-minute consultation and let's discuss your SEO strategy.

Get in Touch