Title: Website LLMs.txt
Author: Ryan Howard
Published: <strong>January 4, 2025</strong>
Last modified: October 4, 2026

---

Search plugins

![](https://ps.w.org/website-llms-txt/assets/banner-772x250.png?rev=3322182)

![](https://ps.w.org/website-llms-txt/assets/icon-256x256.png?rev=3322182)

# Website LLMs.txt

 By [Ryan Howard](https://profiles.wordpress.org/ryhowa/)

[Download](https://downloads.wordpress.org/plugin/website-llms-txt.8.6.3.zip)

 * [Details](https://zgh.wordpress.org/plugins/website-llms-txt/#description)
 * [Reviews](https://zgh.wordpress.org/plugins/website-llms-txt/#reviews)
 *  [Installation](https://zgh.wordpress.org/plugins/website-llms-txt/#installation)
 * [Development](https://zgh.wordpress.org/plugins/website-llms-txt/#developers)

 [Support](https://wordpress.org/support/plugin/website-llms-txt/)

## Description

**Website LLMs.txt** generates and manages an `llms.txt` file, a structured, AI-
ready index that helps large language models like ChatGPT, Claude, and Perplexity
understand your site’s most important content.

### How llms.txt works

Traditional sitemaps and robots files guide search engines. But as AI-driven systems
such as ChatGPT, Claude, and Perplexity increasingly ingest web content, they benefit
from a clear, structured list of a site’s most important URLs.
 llms.txt offers 
that: a plain-text or Markdown list of essential public URLs, optionally annotated
with titles, descriptions, and grouping, designed for AI consumption rather than
general web crawling.

### Key benefits

✅ **AI discovery readiness**: future-proof your site for AI indexing and content
retrieval.
 ✅ **Fully automatic**: the plugin builds and updates your `llms.txt`
file on its own schedule. ✅ **SEO plugin integration**: works seamlessly with Yoast
SEO, Rank Math, SEOPress, and AIOSEO, automatically excluding content marked as 
_noindex_ or _nofollow_. ✅ **Advanced controls**: choose post types, customize 
file titles or descriptions, attach optional Markdown files, and trigger manual 
regeneration. ✅ **Developer-friendly**: includes filters such as `llms_generator_get_post_meta_description`
for description logic, performance tuning, and custom indexing behavior. ✅ **WooCommerce&
multisite ready**: respects product visibility rules and scales easily across large
or networked sites.

### Activation & setup

 1. Activate the plugin.
 2. Visit _Settings  LLMs.txt_ to configure post types and update frequency (immediate,
    daily, or weekly).
 3. The plugin generates `llms.txt` and serves it from your site root.
 4. Content updates trigger automatic regeneration. All noindex/nofollow rules from
    your SEO plugin are respected.

### Use cases for llms.txt

 * Publishers, SaaS companies, developers, and documentation sites that want to 
   make their content easier for AI systems to interpret.
 * SEO-driven websites testing AI engine optimization tactics.
 * Agencies and site owners preparing for the next phase of AI search and retrieval.

### The llms.txt experiment & further reading

 * [Are AI bots actually reading llms.txt files?](https://completeseo.com/are-ai-bots-actually-reading-llms-txt-files/)
 * [Everything we know about llms.txt](https://completeseo.com/everything-we-know-about-llms-txt/)

## Installation

 1. Upload the plugin files to `/wp-content/plugins/website-llms-txt`
 2. Activate the plugin through the _Plugins_ screen in WordPress
 3. Go to _Settings  LLMs.txt_ to configure options and generate your file

## FAQ

### Why is my llms.txt smaller after updating to 8.5.4?

The plugin now leaves out anything an anonymous visitor cannot read on your site.
If you use a membership or access control plugin, your posts and pages are left 
out by default, because there is no reliable way to tell from the database which
of them a visitor can read. The “Excluded content” summary on the settings screen
shows what was left out, and you can include individual posts and pages from the
editor.

If your file was generated before this update it may have listed content that is
not publicly visible, including titles and links. The file is rebuilt when you update.
If you have shared or submitted a copy of it anywhere, it is worth replacing that
copy.

### What is llms.txt?

llms.txt is a plain-text or Markdown file placed at the root of your domain (for
example `https://example.com/llms.txt`) that lists your site’s most important public
URLs. It helps large language models (LLMs) like ChatGPT, Claude, and Perplexity
better understand your site’s structure and priority content.

### How does the Website LLMs.txt plugin work?

The plugin automatically generates and maintains your `llms.txt` file based on published
content. It pulls titles and descriptions from your site, respects SEO plugin settings(
Yoast SEO, Rank Math, SEOPress, and AIOSEO), and excludes anything marked as _noindex_
or _nofollow_. The file is then served from your site root, ready for AI crawlers
to read.

### How often is llms.txt updated?

You can set the update frequency in the plugin settings: immediate, daily, or weekly.
You can also click “Generate Now” in the admin panel to rebuild the file at any 
time.

### Does this guarantee visibility in ChatGPT, Claude, or Perplexity?

No. There’s no guarantee that any AI model will immediately use `llms.txt`, but 
it’s clear that several systems, including GPTBot, ClaudeBot, and PerplexityBot,
are already crawling these files. Using `llms.txt` positions your site ahead of 
the curve as AI indexing becomes more structured.

### What if my host doesn’t allow writing to the root directory?

The plugin also writes a copy of the file into your uploads folder, and on hosting
where the root directory cannot be written, such as WordPress VIP, that copy is 
the only one. WordPress serves it at `https://example.com/llms.txt` through a rewrite
rule the plugin registers. Rewrite rules are stored and are not rebuilt on their
own, so if `/llms.txt` returns a 404 on a site that has already generated the file,
use “Clear caches” on the plugin settings screen, or re-save your permalinks under
_Settings  Permalinks_.

### Does it work with SEO plugins like Yoast or Rank Math?

Yes. It automatically integrates with Yoast SEO, Rank Math, SEOPress, and AIOSEO.
Pages marked as _noindex_ or _nofollow_ in any of those plugins will be excluded
from your `llms.txt` file automatically.

### Will it conflict with sitemap.xml or robots.txt?

No. `llms.txt` complements your sitemap and robots file. Sitemaps tell search engines
what to crawl; `llms.txt` helps AI systems understand what’s most valuable. They
work together without overlap or conflict.

### Can I customize what appears in llms.txt?

Yes. You can include or exclude specific post types, add a custom title or description,
and even attach Markdown (`.md`) files to individual posts or pages. The plugin 
provides a straightforward settings panel and per-page controls for fine-tuning 
output.

### I’m a developer. Are there filters or hooks available?

Yes. `llms_generator_get_post_meta_description` changes how descriptions are generated,`
llms_generator_taxonomies` filters which taxonomies are written for a post, `llms_gating_shortcodes`
adds your own gate to the list of restricted shortcodes, and `llms_post_is_publicly_readable`
decides whether a single post belongs in the file at all. Developers can also adjust
caching behavior, database queries, and output formatting.

### Does the plugin set any cookies, and is the Visibility Kit connection optional?

Out of the box, the plugin sets no cookies and loads no third-party scripts. The
optional Visibility Kit integration is strictly opt-in: nothing is added to your
site until an administrator enters an email address and clicks **Connect to Visibility
Kit** in the plugin settings. Only after you connect does the plugin load the Visibility
Kit script (`vk.js`), which sets first-party cookies used to attribute AI-referred
visits.

The full cookie list, with what each one does and how long it lasts, is at https://
visibilitykit.ai/cookies in a form you can copy into your own cookie policy. What
the script collects and how long it is kept is at https://visibilitykit.ai/privacy,
and the service terms are at https://visibilitykit.ai/terms.

You can remove the script and stop the cookies at any time with **Disconnect from
Visibility Kit** in the settings. If you use a Consent Management Platform (Cookiebot,
Complianz, etc.), connect only after wiring the script into your consent flow so
the cookies fire after consent.

### Does it work on WordPress Multisite?

Yes. On a network-activated install, each subsite gets its own rewrite rules, and
sites created later have rules registered automatically. The plugin also detects
Multisite when deciding whether to write `llms.txt` to the site root, so each subsite
serves its own file at its own URL.

On a very large network, activate from the command line. Network activation clears
each site’s stored rewrite rules so every site rebuilds its own, which costs a few
milliseconds per site. On networks of several thousand sites that can run past PHP’s
time limit in wp-admin, and `wp plugin activate website-llms-txt --network` has 
no such limit.

### Does it work with LifterLMS?

No. The two plugins cannot be active on the same site. Both define a PHP class named`
LLMS_Generator`, so WordPress stops with a fatal error when the second one loads.
This is long-standing and applies to earlier versions too, in both directions. Renaming
our class is planned for a future release.

## Reviews

![](https://secure.gravatar.com/avatar/05df41217319b30cffe8f622bb5da301412923b84d1d467c6f0e5fcb0dbb3fdd?
s=60&d=retro&r=g)

### 󠀁[Excellent plugin, good potencial](https://wordpress.org/support/topic/4-17/)󠁿

 [blaztix](https://profiles.wordpress.org/blaztix/) August 27, 2026

Excellent plugin, It's missing the llms-full.txt file and could simplify llms.txt
a bit.

![](https://secure.gravatar.com/avatar/6be7f4f146c1d3d868d1005314cedd15dfa7d63adcba2b248ec459d6594bdbe1?
s=60&d=retro&r=g)

### 󠀁[Sencillo y muy personalizable](https://wordpress.org/support/topic/sencillo-y-muy-personalizable/)󠁿

 [Fausto](https://profiles.wordpress.org/faustoriosb/) September 30, 2025

Una herramienta que parece cumplir cmuy bien su cometido. Fácil de usar y con opciones
muy intuitivas para personalizar el llms.txt

![](https://secure.gravatar.com/avatar/47a9907343b00af66150d847df2a7b241f329602561c617a0a237ba7e598e201?
s=60&d=retro&r=g)

### 󠀁[Very Impressed](https://wordpress.org/support/topic/very-impressed-149/)󠁿

 [Gidseo](https://profiles.wordpress.org/gidseo/) July 16, 2025 1 reply

I understand the llms.txt protocol has not been adopted by major LLMs yet, but it
seems prudent to engage with what is likely to be adopted. Practically, it's an 
easy setup – no issues on 10 sites I've added it to. Very impressed by the speed
of bug fixes and improvements by the team behind the plugin.

![](https://secure.gravatar.com/avatar/21cdfd714ed995c3e47673aca681121943131f1d0a8ea62ead362582931cea48?
s=60&d=retro&r=g)

### 󠀁[Much better than YOAST](https://wordpress.org/support/topic/much-better-than-yoast-6/)󠁿

 [meetbryce](https://profiles.wordpress.org/meetbryce/) July 1, 2025

I tried the simple solution of enabling LLMs.txt in YOAST since that's my SEO plugin
of choice (and has been for 10+ years). Their LLMs.txt was extremely simplified 
and lacked depth, listing only ~5 posts and ~5 pages. This app did a much more thorough
job and was super easy to configure. Highly recommended.

![](https://secure.gravatar.com/avatar/776e9f93cb72a6ef49cc303f0f3a5843419a07f0043cb23d64f49db44c56aeba?
s=60&d=retro&r=g)

### 󠀁[Intrigued. Simple enough to setup](https://wordpress.org/support/topic/intrigued-simple-enough-to-setup/)󠁿

 [Seth Goldstein](https://profiles.wordpress.org/goldsteinmedia/) June 26, 2025

Simple enough to setup. Intrigued it it will help.

![](https://secure.gravatar.com/avatar/12405fd698d16539acb1033b0e2098ca302a9f8406637e9e2e9ec48eb3bdea64?
s=60&d=retro&r=g)

### 󠀁[Great Job, important Tool](https://wordpress.org/support/topic/great-job-important-tool/)󠁿

 [meinService](https://profiles.wordpress.org/meinservice/) June 10, 2025

… and its compatible up to min. 6.8.1

 [ Read all 13 reviews ](https://wordpress.org/support/plugin/website-llms-txt/reviews/)

## Contributors & Developers

“Website LLMs.txt” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Ryan Howard ](https://profiles.wordpress.org/ryhowa/)
 *   [ Pavlo Samsonov ](https://profiles.wordpress.org/samsonovteamwork/)

“Website LLMs.txt” has been translated into 10 locales. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/website-llms-txt/contributors)
for their contributions.

[Translate “Website LLMs.txt” into your language.](https://translate.wordpress.org/projects/wp-plugins/website-llms-txt)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/website-llms-txt/),
check out the [SVN repository](https://plugins.svn.wordpress.org/website-llms-txt/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/website-llms-txt/)
by [RSS](https://plugins.trac.wordpress.org/log/website-llms-txt/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 8.6.3

🛠 Fixes

• A page’s uploaded Markdown file couldn’t be removed in the block editor, because
the Delete file button did nothing there. It’s now a “Delete this file when saving”
checkbox that works in both the block editor and the Classic Editor. Saving the 
page deletes the file and removes its link from llms.txt at the next update.

#### 8.6.2

✨ New

• Developers can choose which taxonomies are written for a post with the new llms_generator_taxonomies
filter. On a WooCommerce store that means listing the product attributes worth putting
in front of an AI and leaving out the rest, instead of taking every taxonomy or 
none.

🛠 Improvements

• The cookie question in the FAQ now links the full, current cookie list instead
of restating part of it, so the list you copy into your own cookie policy is complete.
The Visibility Kit terms and privacy policy are linked alongside it.
 • The settings
page links the Visibility Kit terms, privacy policy and cookie notice next to the
connect button, where they can be read before connecting rather than after. • Confirming
a Visibility Kit takeover no longer looks like a failure. The message asking you
to click the emailed link was being shown in red, as though something had gone wrong.•
Two pieces of stale wording were corrected: what happens to collected data when 
you disconnect Visibility Kit, and how a failed database update is retried. The 
update retries by itself on the next page load; deactivating and reactivating the
plugin is not needed.

#### 8.6.1

🛠 Fixes

• Apostrophes, quotes and ampersands in titles, descriptions, headings and category
names were written into llms.txt as HTML codes such as ' and &. 8.6.0 corrected 
this only for the copy WordPress serves itself, so the file written to the site 
root still carried them. The text is now written as plain text on both.
 • The section
headings, such as Pages and Posts, were written in the language of whoever triggered
the update rather than the language of the site. They now follow the site language.•
Entries cached before this update keep their text until that page is next saved,
or all at once with “Delete and recreate” under LLMs.txt Reset on the settings page.

#### 8.6.0

🔒 Security

• Content that your membership or access control plugin hides inside an otherwise
public page is no longer written into llms.txt. Until now the page was read with
the permissions of whoever triggered the generation, which on most sites is an administrator,
so material only members can see could end up in a file anyone can fetch. The page
is now read as a logged out visitor.
 • This applies to the page body, the excerpt,
the description, the custom note field and content added by an integration. Restricted
blocks are removed, and restricted shortcodes belonging to the common membership
plugins are removed by name, which also covers one whose plugin has since been deactivated.
A gate of your own can be added to that list with the llms_gating_shortcodes filter.•
Entries cached before this update keep the text they already hold. Each one is rewritten
the next time that page is saved, or all of them at once if you use “Delete and 
recreate” under LLMs.txt Reset on the settings page.

🛠 Fixes

• On a site with more than 500 entries of a single post type, an automatic rebuild
filled only about half of what was missing in one pass, so llms.txt could list about
half your content until later rebuilds caught up. One pass now fills the whole backlog.
•
When WordPress serves llms.txt itself, which is what happens on hosts where the 
file cannot be written to the site root, the text arrived HTML escaped: an apostrophe
as ' and an & inside a link as &, which breaks the link. It is now served exactly
as written.

🧹 Maintenance

• Housekeeping with no change to how the plugin works. About 4,200 lines of developer
commentary were removed from the plugin source.

#### 8.5.7

🛠 Fixes

• Posts published automatically on a schedule could be listed in llms.txt with a
published and modified date of -0001-11-30 in place of the real date. The plugin
no longer stores a date it cannot read, and no longer prints one.
 • Entries already
carrying a broken date stop showing it as soon as you update. The real date comes
back the next time that post is saved, or right away if you use “Delete and recreate”.

#### 8.5.6

🛠 Fixes

• On sites serving more than one visitor at a time, the plugin could delete its 
own llms.txt and rebuild it every 30 to 90 seconds, leaving the file missing most
of the time. It now confirms a file is not its own before removing it.
 • The back
off added in 8.5.5 never engaged, so affected sites kept retrying every 30 seconds.•
When the plugin repeatedly finds an llms.txt it did not write, it now stops rebuilding
and names the file on the settings screen.

🔒 Security

• “Delete and recreate” left the llms.txt in your site root in place, so a site 
updating from 8.5.3 could still serve the old file. It is now removed too.

Updating is recommended for all sites, and is important if you are on 8.5.4 or 8.5.5.

#### 8.5.5

🔒 Security

• Follow-up to 8.5.4. On some sites the old llms.txt could not be deleted during
the update, and the plugin treated it as removed. Those sites went on serving the
old file, which may have contained content that is not publicly visible. The plugin
now checks that the file was really removed, keeps trying, and tells you on the 
settings screen if something is in the way.

🛠 Fixes

• A site whose file could not be generated no longer retries every 30 seconds without
end. Repeated failures now back off, as the plugin already intended.
 • A successful
rebuild no longer leaves an extra scheduled regeneration behind. • Deactivating 
the plugin no longer leaves its rewrite rule behind in your site’s stored permalink
rules.

Updating is recommended for all sites, and especially for anyone who updated to 
8.5.4.

#### 8.5.4

🔒 Security

• Content that is not publicly visible on your site is no longer included in the
generated file. This covers password protected content, content that is not published,
and content restricted by membership and access control plugins.
 • If you use a
membership or access control plugin, your posts and pages are now left out by default,
because there is no reliable way to tell from the database which of them a visitor
can read. The new “Excluded content” summary on the settings screen shows what was
left out, and you can include individual posts and pages from the editor. • Your
existing llms.txt is rebuilt when you update, so anything that should not have been
in it is removed. • Regeneration is faster, and the file is now written in a single
step so an interrupted update cannot leave a partial file in place.

Updating is recommended for all sites.

#### 8.5.3

🛠 Improvements

• “Clear caches” now rebuilds the llms.txt file immediately, in the same request,
instead of scheduling a background WP-Cron job. On hosts where WP-Cron never fires,
that scheduled rebuild silently never ran and the file stayed stale even though 
the button reported success. You will now see the file update right away.
 • “Clear
caches” also no longer wipes the plugin’s cached post data, so it stays fast even
on large sites. If you need a full rebuild from scratch, that is what “Delete and
recreate” is for; since 8.5.2 both produce correct URLs on WPML sites. • The File
Status card now shows when llms.txt was last generated, so you can confirm updates
at a glance without checking file timestamps. • The settings page now warns you 
when WP-Cron appears not to be running, since automatic updates (after saving a 
post, and the daily/weekly schedule) depend on it. The buttons on the settings page
work either way.

#### 8.5.2

🐛 Fixes

• Fixed wrong URLs in llms.txt on WPML sites. Translated pages could be listed with
the right language prefix but the default language’s slug, for example /en/kontakt/
instead of /en/contact/, even though the front end linked to the page correctly.
The language was only being set during scheduled generation, so saving a page or
using “Delete and recreate” rewrote that page’s URL incorrectly. All three paths
now build URLs in the post’s own language.
 • Fixed the “Settings” link on the Plugins
screen, which pointed at the wrong admin page and returned “Sorry, you are not allowed
to access this page.” It now opens Tools  Llms.txt. • Fixed “Clear caches” sending
you to that same permission error afterwards. It now returns you to the settings
page and shows the confirmation message.

#### 8.5.1

🐛 Fixes and a new developer hook

• Fixed a dismissible admin notice that reappeared after being closed. The roadmap
notice has been removed, so it no longer comes back on every page load.
 • Added
a new `llms_generator_post_content` filter so integrations and site owners can append
content that lives outside the main editor, such as Advanced Custom Fields (ACF)
values, to a post’s detailed content in llms.txt.

#### 8.5.0

🧹 Removed AI bot crawl tracking

• Removed the server-side AI bot/crawler detection and logging. The plugin no longer
inspects request User-Agents, keeps a local bot log, or sends any crawler telemetry.`
llms.txt` generation is unchanged.
 • The optional Visibility Kit integration now
focuses solely on AI referral traffic: the real visitors that AI search (ChatGPT,
Claude, Gemini, Perplexity) sends to your site. Connecting and the `vk.js` referral
script work exactly as before. • Removed the “AI bot crawl detection” setting. No
action needed; your llms.txt and any Visibility Kit connection are unaffected.

#### 8.4.4

🐛 Fix: WPML hidden languages

• Posts belonging to a WPML language marked as hidden (WPML  Languages  Hide languages)
are no longer included in the generated llms.txt. This prevents unfinished or intentionally
hidden translations from being exposed to AI crawlers. After updating, use the LLMs.
txt Reset option (Settings  LLMs.txt) to rebuild the cache so previously included
hidden-language URLs are removed. Thanks to the reporter on the wp.org support forum.

#### 8.4.3

✨ New: All in One SEO meta descriptions

• The plugin now pulls meta descriptions from All in One SEO (AIOSEO) when “Include
post excerpts / meta descriptions” is enabled, in addition to the existing Yoast
SEO, Rank Math, and Slim SEO support. AIOSEO smart tags (for example #post_title)
are rendered to their final text. Previously only AIOSEO’s index/noindex rules were
honored and its descriptions were skipped. After updating, regenerate the file (
Settings  LLMs.txt  Generate Now). Thanks to the reporter on the wp.org support 
forum.

#### 8.4.2

🐛 Encoding fix

• Fixed garbled non-ASCII text (mojibake) in `llms.txt` that could appear after 
updating to 8.4.1, for example Cyrillic, Greek, or CJK content rendering as `Ð...`
sequences. The 8.4.1 release removed the UTF-8 byte-order mark, which on many servers
was the only signal telling browsers the statically served file is UTF-8; without
it the file could be mis-read as Latin-1. The BOM has been restored (it does not
affect the “missing H1” validators, which were tripped by the `---` separators removed
in 8.4.1), and the virtual file route now also sends an explicit `text/plain; charset
=utf-8` header. Update and regenerate (Settings  LLMs.txt  Generate Now) to refresh
the file. Thanks to the reporter on the wp.org support forum.

#### 8.4.1

🐛 Fixes & compliance

• Removed the `---` horizontal-rule separators from the generated `llms.txt`. Some
validators (Google Lighthouse “Agent Accessibility”, Semrush Site Audit) read an
early `---` as a YAML front-matter delimiter and discarded the `# Title`, reporting
a false “missing H1”. The file now uses `##` section headings only, matching the
llmstxt.org format. Thanks to the reporter on the wp.org support forum.
 • Removed
the UTF-8 byte-order mark (BOM) from the start of the file. The first byte is now
the `#` H1 marker, which further improves compatibility with strict Markdown and
llms.txt validators. • Documentation: added FAQ entries clarifying that the plugin
sets no cookies until you opt in to Visibility Kit, listing the `_vk_*` cookies 
for cookie-policy/CMP declaration, and confirming WordPress Multisite support. •
Condensed older changelog entries (7.1.6 and earlier) to stay within wp.org’s readme
length limit.

#### 8.4.0

🤖 Server-side bot classification

• Bot taxonomy is now sourced from the Visibility Kit API (cached for 24h via a 
transient) rather than baked into the plugin. New bots and reclassifications take
effect without a plugin update.
 • Telemetry payloads now include the raw User-Agent
string. The server is the source of truth for bot/botType. • Bundled fallback list
still ships with the plugin so detection keeps working when the API is unreachable.•
Internal: per-page-load detection now iterates the API list in (priority DESC, length
DESC) order so longer/more-specific UA matches win.

#### 8.3.4

🐛 Fix

• Resolves a fatal error (“Call to a member function setup() on null”) that could
occur when Rank Math is active but its setup wizard has not been completed. The 
Rank Math integration now also checks that `rank_math()->variables` is initialized
before calling it. Thanks to the reporter on the wp.org support forum.

#### 8.3.3

🚀 New: Visibility Kit AI referral tracking

• Connect the plugin with an email to track AI referral sessions and AI search bot
indexing for your site.
 • New in-plugin “AI Search Traffic” widget showing referral
session counts for ChatGPT, Claude, Gemini, and Perplexity. • Announcement banner
renders across wp-admin inviting connection, with a persistent per-user dismiss.•
If a domain was previously connected under a different email, the plugin now offers
an inline “Take it over with this email” flow. No support ticket required.

🤖 Expanded AI bot detection

• Reclassified bots into user-action, search-indexing, and training categories.
•
Added ChatGPT-User, Claude-User, Perplexity-User, OAI-SearchBot, Claude-SearchBot,
Applebot, TikTokSpider, Meta-ExternalFetcher, Meta-ExternalAgent, and more. • Detection
now runs on every page load (not only /llms.txt), with per-bot-per-page-per-hour
throttling on remote telemetry. • Local bot log format migrated to a keyed-by-bot
structure with counts; existing data migrates automatically on first read.

🛡️ Security and code quality

• All POST/SERVER superglobal reads now use wp_unslash() with appropriate sanitizers(
sanitize_text_field, sanitize_email, esc_url_raw).
 • Admin page outputs escaped
with esc_attr(), esc_textarea(), and esc_html() in place of raw echo and <?= short-
echo tags. • Translator comments added for printf’d strings containing HTML tags.•
parse_url()  wp_parse_url(), unlink()  wp_delete_file(), strip_tags()  wp_strip_all_tags(),
date()  gmdate() for UTC outputs.

🧹 Housekeeping

• Added VK option cleanup (embed token, connected email, summary cache) to uninstall.
•
Domain Path header now resolves to an included languages/ directory. • Tested up
to WordPress 6.9; reduced to 5 tags for wp.org compliance.

#### 8.2.8

🔧 Fixes and integrations previously staged in source control

• Flywheel-aware cleanup: root llms.txt is now deleted correctly from Flywheel’s
split www/ directory layout on plugin deactivation and uninstall, alongside the 
uploads-dir copies.
 • Slim SEO integration: respects Slim SEO’s per-post noindex
flag when generating llms.txt, and pulls Slim SEO meta descriptions when available.•
Multisite activation: network-wide activate handles each subsite’s rewrite rules,
and new subsites created afterward get rules installed automatically via wp_initialize_site.

#### 8.2.7

🔒 Security: Hardened admin interface against potential XSS vectors

• Improved sanitization and escaping for dynamic post type labels used in admin 
form fields.
 • Replaced label-based array keys with post type slugs to prevent 
attribute injection risks. • Ensures all dynamic values used in HTML attributes 
are properly escaped with esc_attr(). • Prevents potential stored XSS scenarios 
caused by maliciously registered custom post type labels. • Minor stability improvements
to avoid PHP notices when settings values are missing.

#### 8.2.6

🛠 Fix: Correct WPML slugs and duplicate URLs in llms.txt

• Fixed an issue where original language slugs (e.g. .de) were duplicated and appeared
for both original and translated pages.
 • The generator now resolves the real WPML
permalink for each language, instead of reusing the source language slug. • Each
language entry is now written with its own correct localized URL (no mixed or duplicated
slugs). • Prevents cases where translated pages were listed with the original language
URL. • Ensures llms.txt contains only valid, language-correct links for all WPML
translations.

#### 8.2.5

🛠 **Fix: Multilingual llms.txt generation with WPML**

• The generated `llms.txt` file now contains **all WPML language versions at once**.
•
Each language is rendered with its **correct localized permalink** (`/en/`, `/ro/`,
etc.). • The output is **no longer dependent on the currently viewed language**.•
This ensures that a single `llms.txt` file always exposes **all valid multilingual
URLs**, regardless of which language version is accessed.

Result:

 * One unified `llms.txt`
 * All WPML languages included
 * All links resolve correctly
 * No missing or fallback-to-default-language URLs

#### 8.2.4

🛠 Improvement: Gravity Forms exclusion control

• Added an option to exclude Gravity Forms form fields from the generated llms.txt
output.
 • When disabled, all Gravity Forms markup (`<form id="gform_...">`, wrappers,
and fields) is completely removed before file generation. • Prevents unintended 
exposure of form structure and field labels in llms.txt.

#### 8.2.3

📝 Update: README.txt improvements
 • Updated the link for “All websites counter&
experiment details” to the new, correct URL. • Minor text adjustments for clarity
and consistency within the documentation.

#### 8.2.2

🛠 Fix: PHP Fatal Error (ArgumentCountError)
 • Fixed the issue: Fatal error: Uncaught
ArgumentCountError: 5 arguments are required, 3 given in admin-page.php:356

#### 8.2.1

🛠 Fix: PHP Fatal Error (ArgumentCountError)
 • Fixed the issue: Fatal error: Uncaught
ArgumentCountError: 5 arguments are required, 3 given in admin-page.php:356 • The
error occurred because printf() was used with a translatable string that expected
more placeholders than arguments provided. • Replaced it with a safe sprintf() and
wp_kses_post() implementation to properly escape HTML and ensure compatibility with
PHP 8.x.

#### 8.2.0

🧩 New: LLMs.txt Reset Block
 • Added a new “LLMs.txt Reset” section in the settings
panel. • Allows safely deleting and recreating the llms.txt file. • Clears any related
transient cache entries. • Automatically rebuilds a fresh version of llms.txt based
on current settings and published content.

📝 Improved Field Descriptions for Custom LLMs.txt Content
 • Updated admin field
labels and descriptions for better clarity: • Title: manually define the title for
the generated file. • Description: add an introductory section before URLs. • After
Description: insert optional text before the list of links. • End File Description:
append footer text (e.g., disclaimer or contact info).

⚙️ Enhancement:
 • Improved layout consistency and help text readability across 
the settings panel.

#### 8.1.9

✨ New: SEOPress Support
 • Added compatibility with SEOPress plugin for meta data
handling.

✨ Improvement: Title Generation
 • Refactored title generation. Titles are now 
fetched dynamically from the actual page to ensure accuracy.

✨ Enhancement: Admin Panel UX
 • Added a progress bar for the “Generate Now” process
in the admin panel for better visibility of ongoing tasks.

#### 8.1.8

✨ Improvement: Hidden Posts Exclusion
 • Posts and products marked with WooCommerce
catalog visibility settings “exclude-from-catalog” or “exclude-from-search” are 
now excluded from being listed in llms.txt. • Ensures that items set to Hidden, 
Shop only, or Search results only do not appear in the generated llms.txt file. •
Aligns llms.txt output with WooCommerce visibility rules for better consistency 
and control.

#### 8.1.7

🐞 Fixed: XML Sitemap Stylesheet Issues
 • Fixed an issue where llms-sitemap.xml
displayed a blank page in Chrome/Edge or the error Parsing an XSLT stylesheet failed
in Firefox. • Added a check to ensure the stylesheet file (main-sitemap.xsl) exists
before including it. If missing, the XML now loads correctly without the XSL. • 
Improved cross-browser compatibility for displaying XML sitemaps.

✨ New: Post Type Customization in llms.txt
 • Added support for customizing post
type display names in the llms.txt file. • Developers can now provide more descriptive
or human-friendly titles for each custom post type section, improving clarity for
both search engines and users.

#### 8.1.6

🛠 Improved: Extensibility & Performance
 • Added filter llms_generator_get_post_meta_description
to make it easier to extend or replace the logic for retrieving page/post descriptions(
e.g. integrating with Yoast, RankMath, or custom SEO functions). • Added new filter
to control which database index/field is used when building the llms.txt file, giving
developers more flexibility for performance tuning and custom setups.

#### Older versions

Changelog entries for versions 8.1.5 and earlier have been condensed to keep this
file within wp.org’s length limit. Older releases stay downloadable from the plugin’s
page on wordpress.org, and each one carries the changelog that was current when 
it shipped.

## Meta

 *  Version **8.6.3**
 *  Last updated **3 days ago**
 *  Active installations **40,000+**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **6.9.10**
 *  PHP version ** 7.2 or higher **
 *  Languages
 * [Belarusian](https://bel.wordpress.org/plugins/website-llms-txt/), [Chinese (Taiwan)](https://tw.wordpress.org/plugins/website-llms-txt/),
   [Dutch](https://nl.wordpress.org/plugins/website-llms-txt/), [Dutch (Belgium)](https://nl-be.wordpress.org/plugins/website-llms-txt/),
   [English (US)](https://wordpress.org/plugins/website-llms-txt/), [French (France)](https://fr.wordpress.org/plugins/website-llms-txt/),
   [Japanese](https://ja.wordpress.org/plugins/website-llms-txt/), [Persian](https://fa.wordpress.org/plugins/website-llms-txt/),
   [Russian](https://ru.wordpress.org/plugins/website-llms-txt/), [Spanish (Chile)](https://cl.wordpress.org/plugins/website-llms-txt/),
   and [Spanish (Spain)](https://es.wordpress.org/plugins/website-llms-txt/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/website-llms-txt)
 * Tags
 * [AI](https://zgh.wordpress.org/plugins/tags/ai/)[LLM](https://zgh.wordpress.org/plugins/tags/llm/)
   [rankmath](https://zgh.wordpress.org/plugins/tags/rankmath/)[seo](https://zgh.wordpress.org/plugins/tags/seo/)
   [Yoast](https://zgh.wordpress.org/plugins/tags/yoast/)
 *  [Advanced View](https://zgh.wordpress.org/plugins/website-llms-txt/advanced/)

## Ratings

 4.7 out of 5 stars.

 *  [  9 5-star reviews     ](https://wordpress.org/support/plugin/website-llms-txt/reviews/?filter=5)
 *  [  2 4-star reviews     ](https://wordpress.org/support/plugin/website-llms-txt/reviews/?filter=4)
 *  [  1 3-star review     ](https://wordpress.org/support/plugin/website-llms-txt/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/website-llms-txt/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/website-llms-txt/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/website-llms-txt/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/website-llms-txt/reviews/)

## Contributors

 *   [ Ryan Howard ](https://profiles.wordpress.org/ryhowa/)
 *   [ Pavlo Samsonov ](https://profiles.wordpress.org/samsonovteamwork/)

## Support

Issues resolved in last two months:

     6 out of 6

 [View support forum](https://wordpress.org/support/plugin/website-llms-txt/)