WP Manifestindependent plugin directory
manifest / ai / llms-txt-for-wp

LLMs.txt for WP WP Registry grade C-. High-severity findings · 1 findingWP RegistryHigh-severity findings · 1 findingOpen the reportC-

Customizable llms.txt file for your WordPress site.

★ 50stars
1.1.1latest · 8mo ago

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/wp-autoplugin/llms-txt-for-wp/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

LLMs.txt for WP is a WordPress plugin designed to generate machine-learning-friendly content from your site. It automatically creates an llms.txt file that compiles key content in a standardized format, making your site ready for Large Language Models (LLMs). This ensures that your content can be easily discovered and utilized by AI tools and applications.

Additionally, this plugin allows you to access Markdown versions of your posts by appending .md to the post URLs or by sending an Accept: text/markdown header. Posts automatically include a <link rel="alternate" type="text/markdown"> tag in their HTML <head>, and a Link HTTP response header pointing to the Markdown version for better discoverability. Markdown responses include an X-Markdown-Tokens header indicating the token count of the output.

About the llms.txt Standard

The llms.txt standard provides a simple, machine-readable file format for webmasters to communicate how their content should be utilized by Large Language Models (LLMs). It works similarly to robots.txt, enabling websites to specify which content is intended for training or reference by AI models. By implementing llms.txt, you can:

  • Promote Discovery: Help LLMs understand the structure and purpose of your site.
  • Define Content Use: Indicate permissions or restrictions on specific content.
  • Control Visibility: Exclude or highlight specific sections of your site.

For more information on the llms.txt standard, visit the official website: https://llmstxt.org/.

Key Features

  • Generate llms.txt: Aggregate key content from your site into an easy-to-read format for machine learning models.
  • Markdown Support: Generate Markdown versions of posts, suitable for LLMs or for lightweight sharing. Markdown responses include an X-Markdown-Tokens header with the token count.
  • Fully Customizable: Customize which page or posts are included via an intuitive admin settings page.

Installation

  1. Download the plugin ZIP file from the releases page.
  2. Upload it to your WordPress site via the Plugins > Add New > Upload Plugin.
  3. Activate the plugin through the Plugins menu in WordPress.

Usage

  1. Configure Plugin Settings: Navigate to Settings > LLMs.txt Settings.
  2. Select Content: Choose which page or post types to include in the llms.txt file.
  3. Markdown Support: Enable Markdown output via settings and append .md to post URLs to view Markdown versions.
  4. Access llms.txt: Open https://yourdomain.com/llms.txt to view the file ready for LLM consumption.

Admin Settings

  • Selected Content for llms.txt: Include specific pages or posts.
  • Post Types to Include: Define which types of content (e.g., posts, pages) appear in llms.txt.
  • Post Limit: Set the maximum number of posts to include.
  • Markdown Support: Enable or disable .md file extension for post URLs.

Frequently Asked Questions

Why use the llms.txt standard?

The llms.txt standard allows webmasters to provide structured data for Large Language Models, similar to how robots.txt serves search engines. This can improve the discoverability and usability of your content by AI tools, while also giving you control over what is included. It's quickly becoming a standard practice for AI-friendly websites.

How do I access the Markdown versions of posts?

Once Markdown support is enabled, you can access Markdown versions in three ways:

  1. Append .md to any post's URL (e.g., https://example.com/your-post.md)
  2. Send an Accept: text/markdown header in your HTTP request
  3. Look for the <link rel="alternate" type="text/markdown"> tag in the post's HTML <head> to discover the Markdown URL

Markdown responses also include an X-Markdown-Tokens header indicating the approximate token count of the Markdown output, useful for LLM context management.

Can I control which posts are included in llms.txt?

Yes! The plugin can be configured to include specific post types and limit the number of posts included in the llms.txt file. You can also choose to include a specific page only.

Screenshots

  1. Admin Settings Page - Easily manage content for llms.txt and enable Markdown support.

Admin Settings Page

  1. Markdown Output - Example of a blog post converted to Markdown format.

Markdown Output

Demo

You can view a demo of the plugin in action on my blog at WebWizWork.com.

Changelog

1.1.1

  • Added X-Markdown-Tokens header for Markdown responses to indicate the number of tokens in the Markdown output.

1.1.0

  • Markdown versions can now be accessed by sending the "Accept: text/markdown" header.
  • link rel="alternate" type="text/markdown" added to post headers for better discoverability of Markdown versions.

1.0.0

  • Initial release of LLMs.txt for WP.
  • Added functionality to generate llms.txt.
  • Added Markdown support for posts.

License

This plugin is licensed under the GPL v2 or later. For more information, please see the GNU General Public License.

Contributing

Contributions are welcome! Feel free to fork the repository, submit issues, or create pull requests.


Note: This plugin uses the league/html-to-markdown library for HTML to Markdown conversion.

Stable tag: 1.1.1

Releases

3 releases.

Tag
Published
1.1.1 latest
Feb 22, 2026 8mo ago
Jan 21, 2026 9mo ago
Dec 1, 2024 1 year ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.

C- grade

Security

LLMs.txt for WP 1.1.1 · audited by WP Registry

High-severity findings.

1 high
Audited release
1.1.1
Findings
1
Worst severity
high
Content hash
c482f432f4eeaab267fda6e2…

Findings

  • high Public .md / Accept / llms.txt export bypasses post password and unpublished status

    information_disclosure

    handle_markdown_requests runs on template_redirect for any singular post whose type is in llms_txt_settings[post_types] when enable_md_support is yes (the default) and either query_var markdown is set (URL ends in .md) or the request Accept header contains text/markdown. It loads get_post($queried_id) and feeds $post->post_content through apply_filters('the_content', ...) then HtmlConverter. WordPress password protection lives in get_the_content() via post_password_required(); the_content filters never apply it. Password-protected posts stay post_status=publish and is_singular() is true without the cookie, so an unauthenticated visitor who knows the permalink (or finds it in /llms.txt, archives, or the Link: rel=alternate header the plugin itself emits) receives the full Markdown body. handle_llms_txt_requests has two sibling leaks: (1) selected_post is loaded with get_post() with no post_status/password check, so a chosen page that is later set to private, draft, or trash is still dumped at /llms.txt; (2) when Markdown support is off, get_posts({post_status:publish, posts_per_page: posts_limit}) includes password-protected posts (has_password is not false) and convert_post_to_markdown is called on each. Default post_types is empty so a never-configured install only serves site name/description, but any site that actually uses the plugin selects post types or a page. Private/draft posts are not reachable via the .md path for uid 0 because core 404s them before is_singular().

    public/class-llms-txt-public.php:77-224

    Recommendation

    Before converting, require is_post_publicly_viewable( $post ) and ! post_password_required( $post ) (or has_password => false on get_posts). Refuse non-publish statuses in the selected_post branch. Prefer get_the_content() after setup_postdata() so core password handling applies. Do not emit rel=alternate Link headers for posts that fail those checks.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.