{"id":344999,"date":"2026-07-27T09:50:48","date_gmt":"2026-07-27T09:50:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/llms-md\/"},"modified":"2026-07-27T09:50:15","modified_gmt":"2026-07-27T09:50:15","slug":"llms-md","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/llms-md\/","author":3803,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"7.0","requires_php":"8.3","requires_plugins":null,"header_name":"AI Site Context (llms.md)","header_author":"Per S\u00f8derlind","header_description":"Serves \/llms.md from cached AI-generated site analysis.","assets_banners_color":"ffffff","last_updated":"2026-07-27 09:50:15","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/soderlind\/llms-md","header_author_uri":"https:\/\/soederlind.no","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"PerS","date":"2026-07-27 09:50:15"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3624301,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3624301,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3624301,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[25308,6645,239487,4608,186],"plugin_category":[55],"plugin_contributors":[78884],"plugin_business_model":[],"class_list":["post-344999","plugin","type-plugin","status-publish","hentry","plugin_tags-connector","plugin_tags-discovery","plugin_tags-llms","plugin_tags-markdown","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-pers","plugin_committers-pers"],"banners":{"banner":"https:\/\/ps.w.org\/llms-md\/assets\/banner-772x250.png?rev=3624301","banner_2x":"https:\/\/ps.w.org\/llms-md\/assets\/banner-1544x500.png?rev=3624301","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/llms-md\/assets\/icon.svg?rev=3624301","icon":"https:\/\/ps.w.org\/llms-md\/assets\/icon.svg?rev=3624301","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>AI assistants, chatbots, and research tools increasingly read websites to answer questions. <strong>llms.md<\/strong> gives them a clean, machine-readable briefing about your site at one predictable address: <code>https:\/\/yoursite.com\/llms.md<\/code>.<\/p>\n\n<p>Think of it as a friendly summary written for AI. Instead of guessing what your site is about, tools can read an accurate overview that you control.<\/p>\n\n<p>The plugin creates and maintains this file for you automatically. It reads your published content, asks your configured WordPress AI provider to write a concise Markdown summary, caches the result, and serves it with the right headers. When you publish or edit content, it refreshes in the background.<\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li>A ready-to-use <code>\/llms.md<\/code> endpoint on your site.<\/li>\n<li>An AI-written overview of your site's purpose, key topics, and content.<\/li>\n<li>Automatic updates when you add or change published content.<\/li>\n<li>A daily safety refresh so the file never goes stale.<\/li>\n<li>Fast responses through caching \u2014 no AI call on every visit.<\/li>\n<li>An admin page to check status and rebuild on demand.<\/li>\n<\/ul>\n\n<h4>What you need<\/h4>\n\n<p>llms.md uses WordPress's built-in AI connectors, so you need at least one AI provider configured on your site. Until a provider is set up, the endpoint politely reports that it isn't ready yet.<\/p>\n\n<h4>Good to know<\/h4>\n\n<ul>\n<li>The plugin only manages the <code>\/llms.md<\/code> address \u2014 it doesn't change your other pages.<\/li>\n<li>If you already have a physical <code>llms.md<\/code> file at your site root, the plugin steps aside and serves that instead.<\/li>\n<li>Works on single sites and multisite, including subdirectory installs.<\/li>\n<\/ul>\n\n<p>Learn more about the idea behind it in the <a href=\"https:\/\/llmstxt.org\/\">llms.txt initiative<\/a>. Developers can find hooks, provider selection, and build\/test details in the plugin's <code>docs\/DEVELOPER.md<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin, go to <strong>Plugins &gt; Add New<\/strong>.<\/li>\n<li>Search for <strong>llms.md<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Configure at least one WordPress AI provider connector.<\/li>\n<li>Go to <strong>Settings &gt; llms.md<\/strong> and click <strong>Regenerate llms.md<\/strong>.<\/li>\n<\/ol>\n\n<p>Manual installation:<\/p>\n\n<ol>\n<li>Upload the <code>llms-md<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20llms.md%3F\"><h3>What is llms.md?<\/h3><\/dt>\n<dd><p>It's a simple convention: a Markdown file at <code>\/llms.md<\/code> that describes your site for AI tools and LLM agents \u2014 similar in spirit to how <code>robots.txt<\/code> guides search crawlers.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20ai%20provider%3F\"><h3>Do I need an AI provider?<\/h3><\/dt>\n<dd><p>Yes. The plugin generates the summary using WordPress's AI connectors, so you need at least one AI provider configured. Without one, <code>\/llms.md<\/code> returns a \"not ready yet\" response.<\/p><\/dd>\n<dt id=\"why%20do%20i%20see%20an%20error%20%28http%20503%29%20at%20%2Fllms.md%3F\"><h3>Why do I see an error (HTTP 503) at \/llms.md?<\/h3><\/dt>\n<dd><p>It means the file isn't ready \u2014 usually because no AI provider is configured yet, or the first summary hasn't been generated. Configure a provider, then click <strong>Regenerate llms.md<\/strong> under <strong>Settings &gt; llms.md<\/strong>.<\/p><\/dd>\n<dt id=\"does%20this%20slow%20down%20my%20site%3F\"><h3>Does this slow down my site?<\/h3><\/dt>\n<dd><p>No. The summary is generated in the background and cached, so visitors and AI tools are served a stored copy. The AI is not called on every request.<\/p><\/dd>\n<dt id=\"how%20often%20does%20it%20update%3F\"><h3>How often does it update?<\/h3><\/dt>\n<dd><p>Automatically when you publish or edit public content, plus a daily safety refresh. You can also rebuild manually at any time.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20multisite%3F\"><h3>Does it work on multisite?<\/h3><\/dt>\n<dd><p>Yes. Each site gets its own <code>\/llms.md<\/code>, including subdirectory installs (for example <code>\/subsite\/llms.md<\/code>).<\/p><\/dd>\n<dt id=\"can%20i%20choose%20the%20ai%20provider%20or%20customize%20the%20output%3F\"><h3>Can I choose the AI provider or customize the output?<\/h3><\/dt>\n<dd><p>Yes. Developers can select the provider and customize how the document is generated. See <code>docs\/DEVELOPER.md<\/code> in the plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Removed the bundled GitHub self-updater and its dependency for WordPress.org compliance.<\/li>\n<li>Raised the minimum required WordPress version to 7.0 (WP Core AI requirement).<\/li>\n<li>Sanitized and unslashed all request superglobals (request URI, conditional-request headers, document root, admin notices).<\/li>\n<li>Internationalized all admin UI strings with the llms-md text domain.<\/li>\n<li>Updated installation instructions for the WordPress.org plugin directory.<\/li>\n<li>Expanded .distignore to exclude development files from the distributed package.<\/li>\n<li>Passed WordPress Plugin Check with no findings in the distributed plugin.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Improved admin Payload Preview presentation with a closable panel.<\/li>\n<li>Added syntax-highlighted JSON rendering for payload preview output.<\/li>\n<li>Aligned preview container styling with WordPress default metabox framing.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Added GitHub issue templates for bug reports and feature requests.<\/li>\n<li>Disabled blank GitHub issues.<\/li>\n<li>Replaced WP-Cron-based regeneration scheduling with Action Scheduler.<\/li>\n<li>Added bundled Action Scheduler dependency via Composer.<\/li>\n<li>Improved manual regeneration UX with an in-page progress indicator.<\/li>\n<li>Reduced startup delay for manual regeneration.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Updated installation instructions in README.md and readme.txt.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Added cached llms.md generation and serving.<\/li>\n<li>Added connector-gated generation with failure handling.<\/li>\n<li>Added multisite subdirectory request handling for llms.md.<\/li>\n<li>Added admin status page, diagnostics actions, and manual rebuild.<\/li>\n<li>Added PHPUnit scaffolding and integration tests.<\/li>\n<\/ul>","raw_excerpt":"Publish an AI-written \/llms.md so AI assistants and chatbots understand your WordPress site.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/344999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=344999"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pers"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=344999"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=344999"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=344999"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=344999"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=344999"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=344999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}