{"id":307290,"date":"2026-06-10T06:21:14","date_gmt":"2026-06-10T06:21:14","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/virtual-llms-txt-generator\/"},"modified":"2026-09-11T10:56:42","modified_gmt":"2026-09-11T10:56:42","slug":"virtual-llms-txt-generator","status":"publish","type":"plugin","link":"https:\/\/en-ca.wordpress.org\/plugins\/virtual-llms-txt-generator\/","author":14937258,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.0.0","stable_tag":"4.0.0","tested":"7.1.1","requires":"7.0","requires_php":"8.3","requires_plugins":null,"header_name":"Virtual LLMS.TXT Generator","header_author":"Alex Oreshkin","header_description":"Safely creates a virtual llms.txt file dynamically. Features decoupled fields, interactive AI bot targeting, license presets, post exclusion, and background site map auto-syncing.","assets_banners_color":"414343","last_updated":"2026-09-11 10:56:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/cyberbrand.net\/tools\/llms-txt-generator-for-wordpress\/","header_author_uri":"https:\/\/profiles.wordpress.org\/oreshkin\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":501,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"4.0.0":{"tag":"4.0.0","author":"oreshkin","date":"2026-09-11 10:56:42","revision":3691249}},"upgrade_notice":{"4.0.0":"<p>Major safety and format update tested with WordPress 7.1. Safe 3.0.1 settings migrate automatically. The redesigned full-content endpoint is disabled during upgrade and must be explicitly enabled again; generated caches and legacy analytics logs are discarded.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3691249,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3691249,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3691249,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3691249,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["4.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3691249,"resolution":"1","location":"assets","locale":"","width":1366,"height":626},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3691249,"resolution":"2","location":"assets","locale":"","width":664,"height":1071},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3691249,"resolution":"3","location":"assets","locale":"","width":1328,"height":1210}},"screenshots":{"1":"Site identity and public-content controls beside the wrapping terminal-style llms.txt preview.","2":"Automatic or manual map controls with custom non-heading guidance.","3":"Advisory crawler and policy labels, license notices, terminal preview, and project resources."}},"plugin_section":[],"plugin_tags":[5739,9837,6645,239487,4608],"plugin_category":[],"plugin_contributors":[266436],"plugin_business_model":[],"class_list":["post-307290","plugin","type-plugin","status-publish","hentry","plugin_tags-artificial-intelligence","plugin_tags-crawler","plugin_tags-discovery","plugin_tags-llms","plugin_tags-markdown","plugin_contributors-oreshkin","plugin_committers-oreshkin"],"banners":{"banner":"https:\/\/ps.w.org\/virtual-llms-txt-generator\/assets\/banner-772x250.png?rev=3691249","banner_2x":"https:\/\/ps.w.org\/virtual-llms-txt-generator\/assets\/banner-1544x500.png?rev=3691249","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/virtual-llms-txt-generator\/assets\/icon-128x128.png?rev=3691249","icon_2x":"https:\/\/ps.w.org\/virtual-llms-txt-generator\/assets\/icon-256x256.png?rev=3691249","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/virtual-llms-txt-generator\/assets\/screenshot-1.png?rev=3691249","caption":"Site identity and public-content controls beside the wrapping terminal-style llms.txt preview."},{"src":"https:\/\/ps.w.org\/virtual-llms-txt-generator\/assets\/screenshot-2.png?rev=3691249","caption":"Automatic or manual map controls with custom non-heading guidance."},{"src":"https:\/\/ps.w.org\/virtual-llms-txt-generator\/assets\/screenshot-3.png?rev=3691249","caption":"Advisory crawler and policy labels, license notices, terminal preview, and project resources."}],"raw_content":"<!--section=description-->\n<p>Give retrieval tools and other readers a concise, reviewable map of your public WordPress content\u2014without creating or maintaining a physical root file.<\/p>\n\n<p>Virtual LLMS.TXT Generator publishes a Markdown discovery map at <code>\/llms.txt<\/code>. The default map contains the site title, an optional summary, and curated link lists for the public content types you select. It follows the format proposed at <a href=\"https:\/\/llmstxt.org\/\">llmstxt.org<\/a>: an H1, optional context, and H2 link-list sections.<\/p>\n\n<h4>Safe by default<\/h4>\n\n<p>Only public, eligible content is included. The plugin excludes unpublished and password-protected entries, configured post IDs, supported SEO noindex signals, hidden WooCommerce products, and content rejected by an access-control integration.<\/p>\n\n<p>The optional <code>\/llms-full.txt<\/code> endpoint is disabled by default. When enabled, it publishes only bounded static text and does not execute shortcodes, dynamic blocks, embeds, or arbitrary plugin blocks.<\/p>\n\n<h4>Built for real WordPress sites<\/h4>\n\n<p>Maps are generated as revisioned background artifacts instead of rebuilding during public requests. The plugin supports multisite lifecycle operations, HTTP cache validators, automatic or manual map content, taxonomy filtering, conservative migration from the public 3.x release, and an automatic endpoint handoff when CYBERMAPS is active.<\/p>\n\n<p>The plugin is useful on its own. When a site needs broader discovery endpoints, sitemap tooling, governance, or reporting, the settings page includes a restrained link to <a href=\"https:\/\/cybermaps.dev\/\">CYBERMAPS<\/a>.<\/p>\n\n<p>Virtual LLMS.TXT editor by <a href=\"https:\/\/cyberbrand.net\/llms-txt-generator-for-wordpress\/\">CYBER BRAND<\/a>. The <a href=\"https:\/\/github.com\/Alex9001\/virtual-llms-txt-generator\">unminified source<\/a> and <a href=\"https:\/\/github.com\/Alex9001\/virtual-llms-txt-generator\/blob\/main\/bin\/build-release.sh\">release build process<\/a> are public on GitHub.<\/p>\n\n<p>Developed by <a href=\"https:\/\/profiles.wordpress.org\/oreshkin\/\">Alex Oreshkin (@oreshkin)<\/a>.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Virtual <code>\/llms.txt<\/code> endpoint with no physical root file to manage.<\/li>\n<li>Clean H1\/context\/H2 Markdown output without YAML frontmatter.<\/li>\n<li>Automatic curation or an explicitly selected manual map body.<\/li>\n<li>Public post type, taxonomy-slug, and post-ID controls.<\/li>\n<li>Fail-closed filtering for unpublished, private, password-protected, noindex, hidden-product, and access-vetoed content.<\/li>\n<li>Compatibility adapters for Yoast SEO, Rank Math, All in One SEO, SEOPress, and WooCommerce visibility.<\/li>\n<li>Optional <code>\/llms-full.txt<\/code>, disabled by default and bounded by item, input, output, and total-byte ceilings.<\/li>\n<li>Static-text rendering that does not execute shortcodes, dynamic blocks, embeds, or arbitrary plugin blocks.<\/li>\n<li>Revisioned background generation with a minimal safe map while <code>\/llms.txt<\/code> rebuilds.<\/li>\n<li>ETag and Last-Modified support for efficient conditional requests.<\/li>\n<li>Optional advisory crawler and policy labels that add context without allowing or blocking crawlers.<\/li>\n<li>Optional content-license notices that remain descriptive and do not create or enforce legal terms.<\/li>\n<li>Local, opt-in 30-day aggregate request counts with no IP addresses or raw user-agent storage.<\/li>\n<li>Multisite-aware activation, scheduling, site creation\/removal, and uninstall cleanup.<\/li>\n<li><p>Automatic endpoint handoff when CYBERMAPS is active.<\/p>\n\n<p>llms.txt is an experimental discovery signal. It does not guarantee crawling, training, ranking, citation, or legal compliance. Crawler, policy, and license fields are descriptive metadata; they do not grant, deny, or enforce access.<\/p><\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin makes no background requests to cybermaps.dev or any other external service. The CYBERMAPS link is followed only when an administrator clicks it and contains no referral-tracking parameters.<\/p>\n\n<p>Public endpoint output is stored as bounded, revisioned chunks in the local WordPress database. Optional analytics also remains local.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate Virtual LLMS.TXT Generator.<\/li>\n<li>Open <strong>Tools \u2192 LLMS.TXT<\/strong>.<\/li>\n<li>Review the endpoint health and included content.<\/li>\n<li>Save any changes. <code>\/llms.txt<\/code> remains available from a safe minimal artifact while the complete background build runs.<\/li>\n<li>Enable <code>\/llms-full.txt<\/code> only after reviewing its publication warning and limits.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20block%20ai%20crawlers%3F\"><h3>Does this plugin block AI crawlers?<\/h3><\/dt>\n<dd><p>No. It publishes discovery context. Use <code>robots.txt<\/code>, authentication, application access rules, and appropriate legal advice for access control.<\/p><\/dd>\n<dt id=\"what%20is%20published%20by%20default%3F\"><h3>What is published by default?<\/h3><\/dt>\n<dd><p>The title, optional site summary, and bounded links to selected public posts and pages. Analytics and the full-content endpoint are disabled by default. No license, crawler, or policy label is asserted automatically.<\/p><\/dd>\n<dt id=\"why%20does%20%60%2Fllms-full.txt%60%20return%20404%3F\"><h3>Why does `\/llms-full.txt` return 404?<\/h3><\/dt>\n<dd><p>It is intentionally opt-in. Enable it under Advanced settings and acknowledge that it publishes selected public post bodies. While an enabled export is rebuilding, it returns HTTP 503 rather than serving stale content.<\/p><\/dd>\n<dt id=\"how%20is%20protected%20content%20handled%3F\"><h3>How is protected content handled?<\/h3><\/dt>\n<dd><p>Both endpoints exclude non-public statuses, password-protected posts, configured exclusions, noindex content from supported SEO plugins, hidden WooCommerce products, and content vetoed through the <code>cyberllms_post_is_access_restricted<\/code> filter.<\/p>\n\n<p>There is no universal membership-plugin API. The full renderer therefore omits shortcodes, dynamic or unknown blocks, embeds, and executable rendering. Membership plugins can use the veto filter for their own access metadata.<\/p>\n\n<p>If an integration stores visibility rules in custom post metadata, it should also return true from <code>cyberllms_meta_change_requires_rebuild<\/code> for those keys. This keeps the map current without rebuilding it for unrelated counters and editing metadata.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20%E2%80%9Cdiscourage%20search%20engines%E2%80%9D%20is%20enabled%3F\"><h3>What happens when \u201cDiscourage search engines\u201d is enabled?<\/h3><\/dt>\n<dd><p>Both endpoints return 404. The settings page explains the state.<\/p><\/dd>\n<dt id=\"do%20root%20endpoints%20work%20with%20plain%20permalinks%3F\"><h3>Do root endpoints work with Plain permalinks?<\/h3><\/dt>\n<dd><p>That depends on the web server. On many standard configurations, root-level virtual files reach WordPress only when rewrite routing is enabled. Choose a non-Plain permalink structure or configure the server to route <code>\/llms.txt<\/code> and <code>\/llms-full.txt<\/code> to WordPress. The settings page warns when Plain permalinks are selected.<\/p><\/dd>\n<dt id=\"does%20analytics%20contact%20an%20external%20service%3F\"><h3>Does analytics contact an external service?<\/h3><\/dt>\n<dd><p>No. When explicitly enabled, the plugin stores only the date, endpoint, a locally matched user-agent label, and an aggregate count in the site database. It stores no IP addresses or raw user agents, and removes records older than 30 days.<\/p><\/dd>\n<dt id=\"can%20i%20edit%20the%20generated%20map%3F\"><h3>Can I edit the generated map?<\/h3><\/dt>\n<dd><p>Yes. Automatic mode is read-only and follows the content controls. Manual mode accepts a map body containing H2 headings and Markdown link-list entries. Site identity and additional context remain separate.<\/p><\/dd>\n<dt id=\"do%20crawler%20labels%20or%20license%20notices%20control%20crawler%20access%3F\"><h3>Do crawler labels or license notices control crawler access?<\/h3><\/dt>\n<dd><p>No. Both fields publish optional advisory metadata only. Use <code>robots.txt<\/code>, authentication, application access rules, and appropriate legal advice when you need access or licensing controls.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20cybermaps%20is%20active%3F\"><h3>What happens when CYBERMAPS is active?<\/h3><\/dt>\n<dd><p>Virtual LLMS.TXT Generator yields <code>\/llms.txt<\/code> and <code>\/llms-full.txt<\/code>, stops its build and analytics jobs, and links to the CYBERMAPS settings page. It does not transfer settings or deactivate either plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.0.0<\/h4>\n\n<ul>\n<li>Rebuilt the plugin on a WordPress 7.1-tested and PHP 8.3+ foundation.<\/li>\n<li>Changed <code>\/llms.txt<\/code> to the proposed H1, context, and Markdown link-list format.<\/li>\n<li>Made <code>\/llms-full.txt<\/code> an explicit, safety-bounded opt-in.<\/li>\n<li>Added shared public-content, noindex, password, taxonomy, WooCommerce, and access-veto filtering.<\/li>\n<li>Added optional advisory crawler and policy labels and content-license notices with explicit non-enforcement guidance.<\/li>\n<li>Removed logged-in fragment rendering, post-meta fragments, cold-cache generation, and year-long transients.<\/li>\n<li>Added revisioned background artifacts, reliable endpoint states, HTTP validators, local atomic analytics, multisite lifecycle support, and complete uninstall cleanup.<\/li>\n<li>Added automatic endpoint handoff and a contextual link for CYBERMAPS.<\/li>\n<li>Added a conservative migration for settings from the public 3.0.1 release.<\/li>\n<li>Hardened concurrent artifact publication, generation integrity checks, cron warning retention, UTF-8 input limits, and multisite lifecycle handling.<\/li>\n<li>Replaced unsupported performance, bot-identification, legal-enforcement, and \u201cAEO standard\u201d claims.<\/li>\n<li>Added public source, security, contribution, and release documentation.<\/li>\n<li>Legacy generated caches and analytics logs are intentionally not migrated.<\/li>\n<\/ul>","raw_excerpt":"Publish a safe, configurable llms.txt map from public WordPress content, with an opt-in bounded full-text export.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/307290","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=307290"}],"author":[{"embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/oreshkin"}],"wp:attachment":[{"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=307290"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=307290"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=307290"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=307290"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=307290"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=307290"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}