{"id":278193,"date":"2026-02-09T02:14:28","date_gmt":"2026-02-09T02:14:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/llms-txt-pro\/"},"modified":"2026-07-30T02:06:26","modified_gmt":"2026-07-30T02:06:26","slug":"jumpsuitai-llms-txt","status":"publish","type":"plugin","link":"https:\/\/tzm.wordpress.org\/plugins\/jumpsuitai-llms-txt\/","author":23440410,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.7","stable_tag":"1.1.7","tested":"7.0.2","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"JumpsuitAI \u2013 llms.txt + Markdown Endpoints","header_author":"Brad Phillips","header_description":"Automatically generates llms.txt and Markdown endpoints to help AI tools and crawlers understand your site structure and content.","assets_banners_color":"d3dadb","last_updated":"2026-07-30 02:06:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/jumpsuitai.com\/","header_author_uri":"https:\/\/jumpsuitai.com\/","rating":5,"author_block_rating":0,"active_installs":200,"downloads":2146,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.2":{"tag":"1.1.2","author":"bradphillips","date":"2026-02-09 02:13:53"},"1.1.3":{"tag":"1.1.3","author":"bradphillips","date":"2026-02-15 02:23:35"},"1.1.4":{"tag":"1.1.4","author":"bradphillips","date":"2026-02-17 01:43:07"},"1.1.5":{"tag":"1.1.5","author":"bradphillips","date":"2026-05-30 14:53:32"},"1.1.6":{"tag":"1.1.6","author":"bradphillips","date":"2026-07-19 18:55:11"},"1.1.7":{"tag":"1.1.7","author":"bradphillips","date":"2026-07-30 02:06:26"}},"upgrade_notice":{"1.1.7":"<p>Includes important public-output security hardening, reliable root llms.txt publishing and cleanup, clearer diagnostics, and an optional robots.txt discovery comment. Updating is strongly recommended.<\/p>","1.1.6":"<p>Adds pre-generated static resources, fixes trailing-slash handling and unresolved Rank Math descriptions, improves Markdown tables, and enables \/llms-full.txt by default while preserving saved preferences.<\/p>","1.1.5":"<p>Updating stable WordPress version.<\/p>","1.1.4":"<p>Fixes Markdown endpoint output and includes content by default (use Hide in llms.txt output to exclude).<\/p>","1.1.3":"<p>Adds an optional \/llms-full.txt endpoint and improves Markdown output.<\/p>","1.1.2":"<p>Initial public release on WordPress.org.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3456659,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3456659,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3456659,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3456659,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3456659,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.1.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3456659,"resolution":"1","location":"assets","locale":"","width":1400,"height":770},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3456659,"resolution":"2","location":"assets","locale":"","width":1400,"height":770},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3456659,"resolution":"3","location":"assets","locale":"","width":1400,"height":770},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3456659,"resolution":"4","location":"assets","locale":"","width":1400,"height":770},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3456659,"resolution":"5","location":"assets","locale":"","width":1400,"height":770}},"screenshots":{"1":"Main settings screen (free).","2":"Post editor meta box with Hide control.","3":"Groups &amp; Content screen (free) showing default grouping and visibility controls.","4":"Example \/llms.txt output.","5":"Example .md endpoint output."}},"plugin_section":[],"plugin_tags":[2353,13224,244604,4608,186],"plugin_category":[55],"plugin_contributors":[255478],"plugin_business_model":[],"class_list":["post-278193","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-content-discovery","plugin_tags-llms-txt","plugin_tags-markdown","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-bradphillips","plugin_committers-bradphillips"],"banners":{"banner":"https:\/\/ps.w.org\/jumpsuitai-llms-txt\/assets\/banner-772x250.png?rev=3456659","banner_2x":"https:\/\/ps.w.org\/jumpsuitai-llms-txt\/assets\/banner-1544x500.png?rev=3456659","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/jumpsuitai-llms-txt\/assets\/icon.svg?rev=3456659","icon":"https:\/\/ps.w.org\/jumpsuitai-llms-txt\/assets\/icon.svg?rev=3456659","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jumpsuitai-llms-txt\/assets\/screenshot-1.png?rev=3456659","caption":"Main settings screen (free)."},{"src":"https:\/\/ps.w.org\/jumpsuitai-llms-txt\/assets\/screenshot-2.png?rev=3456659","caption":"Post editor meta box with Hide control."},{"src":"https:\/\/ps.w.org\/jumpsuitai-llms-txt\/assets\/screenshot-3.png?rev=3456659","caption":"Groups &amp; Content screen (free) showing default grouping and visibility controls."},{"src":"https:\/\/ps.w.org\/jumpsuitai-llms-txt\/assets\/screenshot-4.png?rev=3456659","caption":"Example \/llms.txt output."},{"src":"https:\/\/ps.w.org\/jumpsuitai-llms-txt\/assets\/screenshot-5.png?rev=3456659","caption":"Example .md endpoint output."}],"raw_content":"<!--section=description-->\n<p>JumpsuitAI \u2013 llms.txt + Markdown Endpoints automatically publishes:<\/p>\n\n<p>Plugin website: https:\/\/jumpsuitai.com<\/p>\n\n<ul>\n<li><strong>\/llms.txt<\/strong> \u2014 a structured list of links to your public content, using the canonical filename URL without a trailing slash. On supported single-site installations, the completed file is also synchronized to the physical website root.<\/li>\n<li><strong>\/llms-full.txt<\/strong> \u2014 the entire documentation in a single file (enabled by default and configurable in Settings)<\/li>\n<li><strong>.md endpoints<\/strong> \u2014 request a public URL with <strong>.md<\/strong> appended to get a lightweight Markdown representation<\/li>\n<\/ul>\n\n<p>The plugin pre-generates these resources from a private cache instead of rebuilding site content during each public request. Relevant content, visibility, grouping, and settings changes automatically queue regeneration. The physical root file uses the completed private artifact and the existing WordPress endpoint remains available as a fallback when root publishing is unavailable. A cache status and manual regeneration control are available on the Settings screen.<\/p>\n\n<p>An optional setting, disabled by default, can add a clearly marked comment containing the public llms.txt URL to robots.txt. It preserves existing crawler rules and works with WordPress-generated robots output, including output assembled by common SEO plugins. When a physical robots.txt already exists, only the JumpsuitAI managed comment block is added or removed; the plugin never creates a physical robots.txt file.<\/p>\n\n<p>Markdown output includes valid pipe-table formatting for standard WordPress tables. Complex tables that cannot be represented reliably in pipe-table syntax are retained as sanitized HTML.<\/p>\n\n<p>It also includes a simple <strong>Groups &amp; Content<\/strong> screen to keep your output organized with sensible defaults (Pages and Posts), plus per-item controls like <strong>Hide from LLMs<\/strong>.<\/p>\n\n<h4>Pro (separate plugin)<\/h4>\n\n<p>JumpsuitAI \u2013 llms.txt + Markdown Endpoints Pro adds:<\/p>\n\n<ul>\n<li>Custom groups and manual ordering<\/li>\n<li>Per-item short descriptions<\/li>\n<li>Optional section support<\/li>\n<li>Custom intro text and blockquote customization<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin uses Freemius for plugin updates and (optional) usage analytics. Any data collection is opt-in.<\/p>\n\n<ul>\n<li>Service: Freemius<\/li>\n<li>Terms: https:\/\/freemius.com\/terms\/<\/li>\n<li>Privacy: https:\/\/freemius.com\/privacy\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/jumpsuitai-llms-txt\/<\/code>, or install via the WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>JumpsuitAI \u2013 llms.txt + Markdown Endpoints \u2192 Settings<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20is%20the%20llms.txt%20file%3F\"><h3>Where is the llms.txt file?<\/h3><\/dt>\n<dd><p>After activation, visit <strong>\/llms.txt<\/strong> on your site. The canonical URL does not use a trailing slash. On a supported single-site installation with direct filesystem access, JumpsuitAI synchronizes the completed artifact to <code>llms.txt<\/code> in the website home root. If that is not available, the existing WordPress endpoint continues to serve the private completed artifact.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20root%20llms.txt%20file%20already%20exists%3F\"><h3>What happens if a root llms.txt file already exists?<\/h3><\/dt>\n<dd><p>JumpsuitAI does not overwrite or delete a file it cannot prove it created. The Settings screen reports the conflict. Remove or rename the other file, or disable the other llms.txt generator, and then use <strong>Retry public \/llms.txt now<\/strong> to retry only the root publication.<\/p><\/dd>\n<dt id=\"why%20is%20the%20physical%20root%20file%20not%20active%3F\"><h3>Why is the physical root file not active?<\/h3><\/dt>\n<dd><p>The website root may not allow unattended direct writes, a conflicting file may already exist, the server may use an unusual filesystem layout, or the site may use WordPress multisite. The virtual endpoint remains available whenever WordPress handles the request. The Settings screen distinguishes root-detection, permissions, existing-file, symbolic-link, temporary-write, activation, and verification failures. Expand <strong>Technical details<\/strong> to see the selected path, how it was detected, the WordPress filesystem method, the server response, and every root candidate that was checked.<\/p><\/dd>\n<dt id=\"why%20can%20an%20older%20error%20appear%20even%20though%20%2Fllms.txt%20exists%3F\"><h3>Why can an older error appear even though \/llms.txt exists?<\/h3><\/dt>\n<dd><p>A previous background worker may have stored an error before a later attempt successfully activated the file. Version 1.1.7 associates status, errors, and ownership records with the exact publication attempt and runtime, so an obsolete result is shown only as previous history. Use <strong>Retry public \/llms.txt now<\/strong> for an immediate current result.<\/p><\/dd>\n<dt id=\"is%20the%20physical%20file%20removed%20when%20the%20plugin%20is%20deactivated%20or%20deleted%3F\"><h3>Is the physical file removed when the plugin is deactivated or deleted?<\/h3><\/dt>\n<dd><p>Yes, when the last active JumpsuitAI Free or Pro build stops managing the shared artifacts. The plugin removes only an <code>llms.txt<\/code> file whose path and exact hash prove that JumpsuitAI created it, and removes only its marked robots.txt block. A byte-identical file left by an earlier 1.1.7 test build can be recovered once from the completed private artifact so it can be cleaned up safely. A file changed by another system is left untouched.<\/p><\/dd>\n<dt id=\"does%20physical%20root%20publishing%20work%20on%20managed%20hosts%20with%20a%20symlinked%20wordpress%20core%3F\"><h3>Does physical root publishing work on managed hosts with a symlinked WordPress core?<\/h3><\/dt>\n<dd><p>Version 1.1.7 resolves the logical directory represented by the site's Home URL instead of treating the resolved WordPress-core path as the public root. It first maps <code>WP_CONTENT_DIR<\/code> and its public URL back to the Home URL, then considers the server document root and validated WordPress fallbacks. This supports layouts where WordPress core is symlinked but <code>wp-content<\/code> and public files live in the site's own document root. A <code>jsai_llmstxt_public_root_path<\/code> filter is available for uncommon custom deployments; filtered paths still have to pass the plugin's normal local-path and directory checks.<\/p><\/dd>\n<dt id=\"does%20the%20robots.txt%20option%20change%20crawler%20permissions%3F\"><h3>Does the robots.txt option change crawler permissions?<\/h3><\/dt>\n<dd><p>No. The opt-in setting adds only a comment containing the <code>\/llms.txt<\/code> URL. It does not add or replace <code>User-agent<\/code>, <code>Allow<\/code>, <code>Disallow<\/code>, or sitemap directives. Existing robots.txt content is preserved.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20create%20a%20physical%20robots.txt%20file%3F\"><h3>Does the plugin create a physical robots.txt file?<\/h3><\/dt>\n<dd><p>No. If a physical robots.txt exists, JumpsuitAI can add or remove only its marked comment block. If no physical file exists, the plugin uses WordPress's virtual robots.txt filter so SEO plugin output remains intact.<\/p><\/dd>\n<dt id=\"is%20physical%20root%20publishing%20supported%20on%20multisite%3F\"><h3>Is physical root publishing supported on multisite?<\/h3><\/dt>\n<dd><p>Not automatically in version 1.1.7. Multiple multisite sites can share one document root, so JumpsuitAI keeps the existing virtual endpoints rather than risk one site overwriting another site's root file.<\/p><\/dd>\n<dt id=\"how%20are%20the%20generated%20resources%20kept%20current%3F\"><h3>How are the generated resources kept current?<\/h3><\/dt>\n<dd><p>Relevant WordPress content and plugin-setting changes queue regeneration through WordPress cron. The previous complete artifacts remain available while normal updates are being built. Changes that make content nonpublic are withheld until safe replacement artifacts are ready.<\/p><\/dd>\n<dt id=\"why%20don%E2%80%99t%20i%20see%20updates%20right%20away%3F\"><h3>Why don\u2019t I see updates right away?<\/h3><\/dt>\n<dd><p>Check <strong>JumpsuitAI \u2013 llms.txt + Markdown Endpoints \u2192 Settings<\/strong> for the static file status. Use <strong>Retry public \/llms.txt now<\/strong> for an immediate root-publication result without rebuilding content, or <strong>Regenerate all static artifacts<\/strong> when the private Markdown artifacts also need to be rebuilt. WordPress cron must be able to run queued full rebuilds. An external page cache or CDN may also need to revalidate or purge its stored response.<\/p><\/dd>\n<dt id=\"which%20urls%20get%20a%20markdown%20endpoint%3F\"><h3>Which URLs get a Markdown endpoint?<\/h3><\/dt>\n<dd><p>The plugin supports requesting an eligible public URL with <strong>.md<\/strong> appended. Content must be published, password-free, selected by post type in Settings, and allowed for anonymous public output. Post types controlled by an active access-restriction system may be withheld from public exports.<\/p><\/dd>\n<dt id=\"is%20%2Fllms-full.txt%20enabled%20automatically%3F\"><h3>Is \/llms-full.txt enabled automatically?<\/h3><\/dt>\n<dd><p>Yes, it is enabled by default for new installations and installations that have never saved an explicit preference. An existing manual choice to disable it is preserved during the upgrade.<\/p><\/dd>\n<dt id=\"what%20if%20rendered%20content%20depends%20on%20an%20external%20system%20or%20custom%20data%20source%3F\"><h3>What if rendered content depends on an external system or custom data source?<\/h3><\/dt>\n<dd><p>The plugin automatically tracks normal WordPress content, reusable blocks, plugin visibility\/grouping data, and relevant settings. Custom integrations can request regeneration with <code>do_action( 'jsai_llmstxt_request_regeneration', $post_id, false );<\/code>, or pass <code>0, true<\/code> to request a full rebuild.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Security: Hardened anonymous public-content eligibility and invalidated pre-update Markdown and aggregate artifacts before rebuilding under the new access policy.<\/li>\n<li>Fixed stale background-publication errors being displayed as the result of a newer or still-queued attempt.<\/li>\n<li>Added an immediate <strong>Retry public \/llms.txt now<\/strong> action that publishes from the completed private artifact without rebuilding page Markdown or waiting for WP-Cron.<\/li>\n<li>Added attempt and runtime fencing so an older worker cannot republish or retain a root file after deactivation, uninstall, or a newer synchronization request.<\/li>\n<li>Added exact-hash recovery for a physical file written by an earlier 1.1.7 test build when its ownership state was not finalized, allowing safe cleanup without taking ownership of a different file.<\/li>\n<li>Fixed deactivation and Freemius <code>after_uninstall<\/code> cleanup so the last active Free or Pro build removes only its proven-owned root file and managed robots.txt block.<\/li>\n<li>Switched temporary root publication to WordPress's <code>wp_tempnam()<\/code> helper and added separate diagnostics for reservation, writability, content write, byte verification, hash verification, activation, and final verification.<\/li>\n<li>Replaced direct PHP <code>is_writable()<\/code> fallbacks with WordPress Filesystem API checks for WordPress.org Plugin Check compatibility.<\/li>\n<li>Corrected public-root detection for managed hosting and deployment layouts where WordPress core is symlinked outside the site's actual document root.<\/li>\n<li>Added candidate-based root resolution using the relationship between <code>WP_CONTENT_DIR<\/code>, the content URL, the Home URL, the server document root, and validated WordPress fallbacks.<\/li>\n<li>Added administrator-only diagnostics showing the exact selected root, attempted target, resolution source, filesystem method, failure stage, server response, and rejected root candidates.<\/li>\n<li>Added an internal resolver revision so an existing 1.1.7 installation retries root and robots.txt synchronization without rebuilding the private content artifacts.<\/li>\n<li>Added guarded synchronization of the completed llms.txt artifact to the physical website home root on supported single-site installations.<\/li>\n<li>Retained the existing private cache and WordPress \/llms.txt endpoint as a fallback when physical root publishing is unavailable.<\/li>\n<li>Added ownership and hash checks so pre-existing or externally modified root files are never overwritten or deleted automatically.<\/li>\n<li>Added immediate withdrawal of the plugin-owned physical root file during privacy-sensitive visibility changes, followed by safe republication after regeneration.<\/li>\n<li>Added an opt-in robots.txt discovery comment, disabled by default, without replacing existing crawler directives or SEO plugin output.<\/li>\n<li>Added safe support for existing physical robots.txt files while never creating a new physical robots.txt file.<\/li>\n<li>Added root-file and robots.txt synchronization details to the existing Settings status area.<\/li>\n<li>Preserved the existing generated content format while requiring one privacy-safe artifact rebuild during upgrade.<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Fixed canonical handling so \/llms.txt and \/llms-full.txt use filename URLs without trailing slashes.<\/li>\n<li>Added pre-generated, atomically replaced static artifacts so public endpoint requests no longer rebuild site content on demand.<\/li>\n<li>Added automatic, debounced regeneration for relevant content, visibility, grouping, and settings changes.<\/li>\n<li>Added ETag, Last-Modified, HEAD, and conditional-request support for generated resources.<\/li>\n<li>Added valid Markdown table conversion, with sanitized HTML fallback for complex table structures.<\/li>\n<li>Enabled \/llms-full.txt by default without overriding an existing saved preference to disable it.<\/li>\n<li>Added static file status, error reporting, and a manual regeneration control to the existing Settings screen.<\/li>\n<li>Fixed unresolved Rank Math description variables such as %excerpt% by using the existing excerpt\/content fallback.<\/li>\n<li>Added automatic llms.txt regeneration when Rank Math Titles &amp; Meta description templates change.<\/li>\n<li>Replaced direct cache writability checks with the WordPress compatibility wrapper.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Updated stable WordPress tags.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Fixed an issue where Markdown (.md) endpoints could render the wrong page content on some sites.<\/li>\n<li>Removed the redundant editor Include toggle. Content is included by default; use Hide in llms.txt output to exclude items.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Added optional \/llms-full.txt single-file export (toggle in Settings).<\/li>\n<li>Changed default section title from Blog to Posts.<\/li>\n<li>Fixed HTML entity escaping in Markdown output.<\/li>\n<li>Updated website references to jumpsuitai.com.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Initial public release on WordPress.org.<\/li>\n<\/ul>","raw_excerpt":"Generate \/llms.txt, \/llms-full.txt &amp; .md endpoints for AI\/LLMs in WordPress. Works with Yoast SEO, Rank Math, SEOPress &amp; All in One SEO.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/278193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=278193"}],"author":[{"embeddable":true,"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bradphillips"}],"wp:attachment":[{"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=278193"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=278193"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=278193"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=278193"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=278193"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tzm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=278193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}