Beschrijving
llms.txt is a proposal for a plain Markdown file at the root of a website. It gives AI tools short background about the site and a list of links to the pages that matter. It was proposed by Jeremy Howard and is described at https://llmstxt.org/. This plugin builds that file from your public content and serves it at /llms.txt.
What to expect. llms.txt is a proposal, not a rule. llmstxt.org does not name the AI tools that read the file, and tools may change how they treat it. The plugin cannot promise that any AI system reads the file or that it changes your search results. Treat it as an addition to a clear site structure, a sitemap and good content.
Who it is for
- Site owners who want to publish an llms.txt file without writing it by hand.
- Multilingual sites that need one file for each language.
- Agencies that manage many sites, including WordPress multisite networks.
How it works
- Choose the post types to list on the LLMS Generator screen and save.
- The plugin builds the file from the published content of those types and stores a copy for the site.
- WordPress serves the file at
/llms.txt. No file is written to your site folder. - The file is regenerated by itself about a minute after a post is published or updated, and Regenerate llms.txt does it at once. Content that stops being public leaves the file at once, by itself.
What the file contains
- A title and a short summary: the ones you write on the settings screen, or else the site title and the tagline from Settings > General.
- One section for each chosen post type, with the newest published items first. Each item is a link with its title and a short description, followed by its categories, tags and other public terms.
- A last section, Optional, with links to the other languages, to the WordPress sitemap when it is available, and to the RSS feed.
- Drafts, pending, private, scheduled and trashed posts and posts protected by a password are never listed, whatever the settings say.
- A post that Yoast SEO, Rank Math, All in One SEO or SEOPress marks as noindex is left out while that plugin is active.
Features
- Virtual
/llms.txt: no file in the site folder, and a separate address for each site of a multisite network. - Output that follows the llmstxt.org format: an H1 title, a short summary and sections of links with descriptions.
- Descriptions are plain text taken from the meta description of Yoast SEO, Rank Math, All in One SEO or SEOPress, the excerpt or the start of the content, cut at a character limit without breaking multibyte characters.
- A title and summary of your own for the file, translatable for each language with Polylang or WPML.
- Hide from llms.txt: a check box on the edit screen of every post and page, in the block editor and the classic editor.
- Respects the noindex choice of Yoast SEO, Rank Math, All in One SEO and SEOPress: a post kept out of search results is kept out of llms.txt.
- Content limit of 10, 50, 100 or 500 items, or Unlimited. An Unlimited file is generated in the background by WP-Cron, reading the posts in batches of 250.
- Automatic regeneration about a minute after a post is published or updated (on by default).
- Preview of the first items before you rely on the file, and a Regenerate llms.txt button.
- One file for each language with Polylang or WPML: the default language at
/llms.txtand the others at the home address of their language. - The response carries
X-Robots-Tag: noindex, follow, so the file itself is not listed as a page in search results. - Multisite: activate for the whole network or for single sites. Settings, the stored file and its address belong to each site.
- Request counter: how often llms.txt was requested in the last 30 days, and how often by known AI crawlers such as GPTBot, ClaudeBot and PerplexityBot. No IP address or user agent is stored.
- Help & FAQ screen with setup steps, an explanation of every setting, troubleshooting and system information.
- Translated into 10 languages: Arabic, Dutch, French, German, Italian, Japanese, Portuguese (Brazil), Russian, Spanish and Turkish.
- Deleting the plugin removes its settings, stored files, request counts, Hide from llms.txt choices and scheduled events on every site of a network, and the old llms.txt file of version 1.x when this plugin wrote it.
Free and premium
The free version from WordPress.org is complete on its own and not limited in time: llms.txt for every site of a network and every language, the post types you choose, every content limit up to Unlimited, the meta descriptions and the noindex choice of Yoast SEO, Rank Math, All in One SEO or SEOPress, automatic regeneration after a post is published or updated, a title and summary of your own, Hide from llms.txt, the request counter, descriptions of 200 characters, Preview, Regenerate llms.txt and Help & FAQ. It has no locked option and no license check.
The premium plan is a separate package, sold through Freemius. It adds:
- llms-full.txt: the full text of the listed items as Markdown in one file, for each language, generated in the background by WP-Cron;
- a Markdown copy of each listed page at its address followed by .md (as llmstxt.org proposes), with a canonical link to the page;
- Organize llms.txt: your own sections with chosen items in your order, items moved to the Optional section, and a custom description for any item, for each language;
- the AI Crawler Report: which known AI crawler requested llms.txt, llms-full.txt or a Markdown page, on which day, for 90 days;
- a category filter: only posts in the categories you choose are listed;
- descriptions of 100 to 5000 characters;
- the featured image of each item, as a Markdown image in its notes.
How to get it: open Upgrade in the LLMS Generator menu (it appears once you chose Skip or Allow & Continue on the first screen), or click Upgrade to Premium in the Premium box of the settings screen. After the purchase, Freemius emails you the premium package and a license key. Upload the package under Plugins > Add New > Upload Plugin and activate it; Freemius deactivates the free version, and your settings are kept. Settings saved with the premium plan stay stored while the free version runs, and are used again by the premium package.
What it does not do
The free version serves llms.txt; llms-full.txt and the Markdown copies of pages are part of the premium plan. The plugin does not read or change your robots.txt, and it cannot make an AI system read the file.
External services
The code that builds llms.txt does not contact any server and does not send your content anywhere. The only external service is Freemius, through the Freemius SDK that is part of the plugin. It manages licenses and the premium plan and offers an optional account connection.
Freemius (https://api.freemius.com, https://wp.freemius.com and https://checkout.freemius.com)
Measured with version 2.0.0 and Freemius SDK 2.13.4, every outgoing request recorded and blocked: a clean install, a network activation on multisite, the plugin and admin screens, the Plugins screen and the front end.
- Before you choose on the opt-in screen: no request to Freemius. The plugin screen shows the opt-in screen (with Skip) until you choose; Help & FAQ stays open and llms.txt is served. A reminder to complete the opt-in appears on the plugin screens and on the Plugins screen only.
- If you choose Skip: no data is sent, then or later.
- If you choose Allow & Continue: your browser sends the data listed on the opt-in screen to wp.freemius.com: the first and last name and email address of your WordPress user, the site address and title, the WordPress and PHP versions, the site language, the plugin and SDK versions, whether the plugin is active, and the names, slugs, versions and active state of your plugins and themes. Afterwards the SDK sends later events (activation, deactivation, uninstall) and keeps this data in sync with a daily WP-Cron task, and it may contact Freemius to check the license and the plan. Freemius also receives the IP address of your server.
- If you open the Upgrade screen: your server asks api.freemius.com for the plans and prices of this plugin. The request contains no data about your site except its address, which the SDK puts in the User-Agent header, and the IP address of your server. The plans are drawn by a script bundled with the SDK, not in a frame. Your browser loads the Freemius checkout script from checkout.freemius.com; choosing a plan opens the Freemius checkout. The pricing script of the SDK would also load Google Analytics; the plugin stops that script on this screen.
- The WordPress.org version contains no updater: updates come from WordPress.org only. The premium package, which you download from Freemius, gets its updates from Freemius.
- Why: to sell the premium plan and manage its licenses, and, if you agree, to send update and security information.
- Terms of Service: https://freemius.com/terms/ and https://freemius.com/product/opt-in/20537/cultdevops-llms-generator-seo-for-ai/
- Privacy Policy: https://freemius.com/privacy/
Privacy
The plugin stores its settings, a copy of the generated llms.txt for each language, the time it was first set up and first generated a file (for its own notices), for each user which of its notices that user closed, and the Hide from llms.txt choice of each post, in your own database. The file lists the titles, addresses and short descriptions of your published content, so anyone can read it at /llms.txt. Content that is private, protected by a password, in draft, pending, scheduled or trashed is never listed.
Request counter: for each request of llms.txt the plugin stores only the day and whether the user agent of the request names a known AI crawler, as two numbers per day, for 30 days. It stores no IP address and no user agent, sets no cookies, adds nothing to your public pages and sends the numbers nowhere. It suggests a paragraph about this for your privacy policy under Settings > Privacy. The cultdevops_llms_count_requests filter turns the counter off. With the premium plan, the AI Crawler Report also keeps the name of the known crawler (for example GPTBot) with the day and the requested file, as a count, for 90 days; the suggested privacy text says so.
What leaves your site is described under External services: only the Freemius SDK can contact another server, as described there. Deleting the plugin removes its settings, stored files, locks and scheduled events on every site of a network. Records kept by Freemius are not touched.
Schermafbeeldingen




Installatie
- Upload the plugin to the
/wp-content/plugins/cultdevops-llms-generator-seo-for-aidirectory, or install it from Plugins > Add New in WordPress. - Activate the plugin through the Plugins screen. On a multisite network you can activate it for the whole network or for single sites.
- Open LLMS Generator in the admin menu. Freemius shows an opt-in screen first: choose Skip or Allow & Continue. See External services for what each choice does. llms.txt is served either way, and Help & FAQ is open before you choose.
- Check the post types to list, adjust the limits and click Save Settings.
- Click Preview to look at the first items, then Regenerate llms.txt.
- Open the address in the box Your llms.txt (normally
https://your-site.example/llms.txt) to see the file.
If a file named llms.txt already exists in your site folder, the web server sends that file instead, and a notice in the admin asks you to delete or rename it. The Help & FAQ screen of the plugin (LLMS Generator > Help & FAQ) explains this and the other common problems.
FAQ
-
What is llms.txt, and what does this plugin do?
-
llms.txt is a proposal for a Markdown file at the root of a website that gives AI agents short background about the site and links to the pages that matter. It was proposed by Jeremy Howard and is described on https://llmstxt.org/. The page says the only required part is the site name; a short summary and lists of links can follow. This plugin generates such a file from your public content and serves it as
llms.txt. It is a proposal, not a rule: the page does not name the AI tools that read the file, and tools may change how they treat it. -
Will llms.txt improve my search engine ranking?
-
There is no guarantee, and this plugin does not promise it. llmstxt.org describes the file as a help for AI agents that use a site; it does not describe an effect on search results. Treat llms.txt as an addition to a clear site structure, a sitemap and good content, not as a replacement.
-
Why does the llms.txt response have a noindex header?
-
The response carries the header
X-Robots-Tag: noindex, follow. It asks search engines not to list the llms.txt file itself as a page in their results, while links inside it may still be followed. The file is meant for AI agents, not for visitors of a search engine. The header is about this one file only; it does not change how your pages are indexed. -
Which content is listed in the file, and which content is never listed?
-
The file starts with a title and a short summary: the ones you wrote in the settings, or else the site title and the tagline from Settings > General. Then it has one section for each checked post type with the newest published items, up to the Content Limit. Each item is a link with the title and a short description, followed by the categories, tags and other public terms of the post. The last section, Optional, links to the other languages, to the WordPress sitemap when it is available, and to the RSS feed. Drafts, pending, private, scheduled and trashed posts and posts with a password are never listed, whatever the settings say. A post that Yoast SEO, Rank Math, All in One SEO or SEOPress marks as noindex is left out while that plugin is active.
-
Is password-protected or private content kept out of the file?
-
Yes, as far as this file is concerned. The query asks only for published posts without a password, and every item is checked once more before it is written. When a published post becomes private or gets a password, or is trashed or deleted, the stored file is dropped at once and regenerated, so the post does not stay in an old copy. Posts that MemberPress, Paid Memberships Pro, Restrict Content Pro, WooCommerce Memberships or Members keep for members are left out as well, checked as for a visitor who is not logged in, and the members-only blocks of Paid Memberships Pro and MemberPress are removed from the text. For another membership or paywall plugin, keep such posts out with Hide from llms.txt. Everything else that is published is public: a published post appears in the file with its title, address and a short description. Keep a post out with Hide from llms.txt on its edit screen, by setting it to noindex in your SEO plugin, by unchecking its post type, by choosing categories, or by making it private or password-protected.
-
How do I keep a single post or page out of llms.txt?
-
Open the post in the editor and check Hide from llms.txt in the llms.txt box (in the sidebar of the block editor, or beside the content in the classic editor), then update the post. The post stays published; only the llms.txt files leave it out, and a stored file that listed it is dropped at once. A post that Yoast SEO, Rank Math, All in One SEO or SEOPress marks as noindex is left out as well while that plugin is active. The box appears on the post types that are checked in the settings.
-
When is the file regenerated?
-
The file is stored and not regenerated on every visit. It is regenerated when you save changed settings or click Regenerate llms.txt, when the site title, the tagline, the permalink structure or the site address changes, when a published post leaves the file (unpublished, private, password, trash, deletion), and, while Auto Regeneration is on (the default), after a post is published or updated. A queued regeneration runs about a minute later through WP-Cron. Browsers and proxies may keep a copy for five minutes.
-
What happens to my old llms.txt file when I upgrade from version 1.x?
-
Earlier versions wrote a physical llms.txt file into the site folder. Version 2 serves the file from WordPress instead. On the first page load after the update the plugin keeps your settings, removes the old daily scheduled task, and deletes the old llms.txt file when its first lines show that this plugin wrote it. A file that it did not write is never touched; a notice asks you to delete or rename it, because the web server would send it instead of the generated file. If the old file cannot be deleted, a notice names it. The switch that excluded password-protected content is gone, because such content is now never listed.
-
What happens to my data if I deactivate or delete the plugin?
-
Deactivating removes the queued regeneration and the short-lived locks and keeps your settings and the stored files. Deleting the plugin from the Plugins screen removes the settings, the stored files, the request counts, the Hide from llms.txt choices, the locks and the scheduled events on every site of a network, the record of which plugin notices each user closed, and the old llms.txt file of version 1.x when this plugin wrote it. The plugin keeps no other data, and there is no option to keep data on deletion. While the free version and the premium package are both installed, deleting one of them removes nothing, because they share the data. If you allowed Freemius to connect, Freemius is told that the plugin was deleted; the records it keeps are not touched.
-
Does the plugin work on multisite?
-
Yes. You can activate it for the whole network or for single sites. Sites created later are set up automatically after a network activation. Settings, the stored file and its address belong to each site; there is no network admin screen.
-
Does the plugin work on multilingual sites?
-
Yes, with Polylang or WPML. When one of them is active, the plugin serves one file for each language: the default language at /llms.txt and the others at the home address of their language. Each file lists the content of its language, and the category choice is mapped to the translated categories. With Polylang the site title and the tagline are translated when you have translated those strings, and the title and summary you write on the settings screen can be translated with Polylang (Languages > Translations) or WPML (String Translation). Without a language plugin there is a single file.
-
Can I see whether AI crawlers read my llms.txt?
-
Yes, as numbers. The Statistics box of the settings screen shows how often llms.txt was requested in the last 30 days, and how many of those requests came from known AI crawlers: requests whose user agent names GPTBot, ClaudeBot, PerplexityBot or another crawler of an AI company. Only the day and these two numbers are stored, for 30 days; no IP address and no user agent. Requests that a CDN or a cache plugin answers from its copy never reach WordPress and are not counted, and a user agent can be faked, so the numbers show a trend, not proof. The premium plan adds the AI Crawler Report: which crawler requested which file on which day, for 90 days.
-
How does llms.txt relate to robots.txt?
-
They are different files. robots.txt tells crawlers which addresses they may request. The llms.txt file of this plugin is a list of your content with links; it contains no allow or block rules, and the plugin neither reads nor changes your robots.txt. If robots.txt blocks a crawler from your pages, llms.txt does not lift that.
-
Does the plugin create an llms-full.txt file?
-
The free version serves llms.txt only. The premium plan adds llms-full.txt, the full text of the listed items as Markdown in one file for each language, and a Markdown copy of each listed page at its address followed by .md. llmstxt.org proposes the .md copies; llms-full.txt is a common companion file that the proposal does not describe. Both follow the rules of llms.txt: hidden, noindex, private and password-protected content is never in them.
-
Does the plugin slow down my site?
-
It adds very little. On every page load it only compares the requested path with the llms.txt addresses. A visit to llms.txt is answered from the stored copy and adds one to the request count of the day. Saving a post only queues a regeneration, which runs later through WP-Cron.
-
The free version is not limited in time. It serves llms.txt for every site of a network and every language, lists the post types you choose with a content limit of up to Unlimited, uses the meta descriptions and the noindex choice of Yoast SEO, Rank Math, All in One SEO and SEOPress, regenerates the file after a post is published or updated, lets you write the title and summary of the file and hide single posts, counts the requests of llms.txt, and includes Preview, Regenerate llms.txt and Help & FAQ.
The premium plan adds a category filter, descriptions of 100 to 5000 characters and the featured image of each item.
The premium plan is a separate package, sold through Freemius. The Premium box on the settings screen compares both versions, and Upgrade in the LLMS Generator menu shows the plans and prices.
-
Open Upgrade in the LLMS Generator menu, or click Upgrade to Premium in the Premium box of the settings screen, and buy a plan there; Freemius handles the payment. Upgrade appears once you have chosen Skip or Allow & Continue on the first screen of the plugin. Freemius then emails you the premium package (a .zip file) and a license key; both are also in your account at https://customers.freemius.com/. In WordPress go to Plugins, add a new plugin, click Upload Plugin and choose that .zip file, then activate it and enter the license key when you are asked. If both versions are installed, Freemius deactivates the free one. Your settings are kept. The free version from WordPress.org never contains the premium code.
-
What is Freemius, and do I have to connect an account?
-
No. The plugin includes the Freemius SDK, which sells the premium plan and manages its licenses. The free version has no license screen and no locked option, and llms.txt is served from the start. The first time you open LLMS Generator, Freemius shows an opt-in screen in place of the settings; Help & FAQ stays open. If you choose Skip, nothing is sent to Freemius and the plugin works the same. If you choose Allow & Continue, your browser sends what that screen lists to Freemius: your name and email address, the site address and title, the language, the WordPress, PHP, plugin and SDK versions, and later the list of your plugins and themes. Opening Upgrade makes your site ask Freemius for the plans and prices (the request names your site address) and loads the Freemius checkout script in your browser; the plugin keeps the Google Analytics script of that page from loading. The code that builds llms.txt does not send your content to another server. See the Freemius privacy policy (https://freemius.com/privacy/).
Beoordelingen
Er zijn geen beoordelingen voor deze plugin.
Bijdragers & ontwikkelaars
“CultDevOps LLMs.txt Generator – SEO for AI” is open source software. De volgende personen hebben bijgedragen aan deze plugin.
BijdragersVertaal “CultDevOps LLMs.txt Generator – SEO for AI” naar jouw taal.
Interesse in de ontwikkeling?
Bekijk de code, haal de SVN repository op, of abonneer je op het ontwikkellog via RSS.
Changelog
2.0.1
- Changed: the settings screen explains itself: a short introduction and a “What is this?” button next to each setting that says what it does and when to change it.
- Changed: post types are chosen from a searchable list that shows the chosen ones as tags; it works with the keyboard and screen readers. The summary field counts its characters. Fields use the CultDevOps UI 2.0 design, with larger touch targets on phones.
2.0.0
- Changed: the admin screens have the design that all CultDevOps plugins share: a header with the plugin name, the plan and a link to Help & FAQ, cards and a preview window that closes with Escape.
- Security: posts protected by a password could appear in llms.txt in earlier versions. Such posts, and private, draft, pending, scheduled and trashed posts, are now never listed. The setting that was meant to exclude password-protected content is removed because it is no longer needed. The new file is generated on the first visit after the update.
- Security: saving settings and the AJAX actions now check the capability first, then the nonce, and saved values are validated (post types, limits). Saving settings redirects back to the screen.
- Changed: llms.txt is served by WordPress as a virtual file and stored once for each site, instead of being written to the site folder. The file written by version 1.x is deleted on the first page load after the update, when its first lines show that this plugin wrote it. A file that the plugin did not write is never touched; a notice asks you to delete or rename it.
- Changed: the output follows the llmstxt.org format (
- [Title](url): description, a summary, an Optional section) and sendsX-Robots-Tag: noindex, follow. - Changed: descriptions are cleaned of HTML, shortcodes and entities, and are cut without breaking UTF-8 characters.
- Changed: regeneration is queued and runs about a minute after a change, with paged queries; the unused daily scheduled task is removed.
- Changed: with Unlimited, the file is generated in the background by WP-Cron, never while a visitor waits; generation reads the posts in batches of 250 and frees their memory after each batch.
- Security: posts that MemberPress, Paid Memberships Pro, Restrict Content Pro, WooCommerce Memberships or Members keep for members are never listed, and the members-only blocks of Paid Memberships Pro and MemberPress are removed before a description or a Markdown text is made.
- New: one llms.txt for each language with Polylang or WPML.
- New: multisite support: network activation, setup of sites created later, and a separate file and settings for each site.
- New: Help & FAQ screen with setup steps, an explanation of every setting, troubleshooting and system information.
- New: translations into 10 languages, including the text of the admin script.
- Changed: deleting the plugin now removes its data on every site of a network.
- Removed: the tag and taxonomy filters that no screen ever offered.
- Changed: the free version from WordPress.org has no locked or disabled option and no license check. Every content limit (10, 50, 100, 500, Unlimited), Include meta descriptions and automatic regeneration are now part of the free version. The category filter, the description length and featured images are a separate premium package; settings saved with them are kept.
- Changed: the server no longer accepts premium values from a form of the free version.
- New: Include meta descriptions uses the meta description of Yoast SEO, Rank Math, All in One SEO or SEOPress (the SEO plugin does not have to be active), and Include featured images (premium package) adds the featured image of each item. Both options were offered before but did nothing.
- New (premium package): llms-full.txt for each language, generated by WP-Cron; a Markdown copy of each listed page at its address followed by .md, with a canonical link; Organize llms.txt (custom sections, order, Optional, custom descriptions, per language); the AI Crawler Report (90 days).
- New: a request counter for llms.txt (all requests and known AI crawlers, 30 days, two numbers per day, no IP address or user agent stored, one small database write per request) and a suggested paragraph for the privacy policy.
- New: a title and a summary of your own for the file (translatable with Polylang or WPML), and Hide from llms.txt on the edit screen of each post.
- New: a post that Yoast SEO, Rank Math, All in One SEO or SEOPress marks as noindex is left out of llms.txt while that plugin is active, and changing that choice updates the file.
- Changed: the three automatic regeneration options of 1.x (when the post status changes, when saving posts, when editing posts) are now one free option, “Regenerate the file when a post is published or updated”, on by default.
- New: a Premium box on the settings screen that compares the free version and the premium plan, short notes in the rows of premium features, two lines with real numbers in the box Your llms.txt (requests by AI crawlers, published items for llms-full.txt), and a review request after the first llms.txt file was generated. The notices and lines appear on the plugin screens only and can be closed for good.
- Changed: the Freemius SDK is updated from 2.7.2 to 2.13.4. The Upgrade screen no longer embeds a pricing page in a frame, and the plugin keeps Google Analytics off it. The WordPress.org version no longer starts the Freemius updater. Freemius notices appear on the plugin screens and the Plugins screen only. Help & FAQ opens before the Freemius opt-in.
- Requires WordPress 5.6 and PHP 7.4. Tested with WordPress 7.1.
Earlier releases
- 1.0.0 to 1.4.0: the first versions of the plugin (post type and category selection, content and character limits, preview). Detailed notes for 1.1.0 to 1.4.0 were not kept.
