

Settings overview dashboard with endpoint status, cache status, noindex status, sitemap URL, and copy actions.
LLM Friendly gives your WordPress site predictable, machine-readable entry points for AI assistants, search/indexing bots, internal knowledge tools, and readers who prefer plain text.
Instead of asking crawlers to infer your site structure from HTML alone, the plugin publishes a focused /llms.txt index and optional Markdown versions of selected public content. You stay in control of what is exposed, how dense the index should be, which endpoints should be noindexed, and which posts or pages should be excluded.
/llms.txtThe generated llms.txt file includes the site title and description, main links, sitemap and RSS references, an Essential section for important pages or curated resources, and recent items grouped by selected post type. Items can link to Markdown exports when Markdown is enabled, or to canonical HTML URLs when it is not.
For selected public, publicly queryable post types, the plugin exposes .md endpoints under:
/{base}/{post_type}/{path}.md
Each Markdown export includes a JSON metadata block with title, URL, published and modified dates, language, description, author, and publisher, followed by a Markdown conversion of the post content. Singular views also receive alternate Markdown links, so compatible tools can discover the plain-text version.
/llms.txt and .md exports./llms.txt and Markdown exports without changing their WordPress visibility./llms.txt and the Markdown URL pattern./llm/post/example.md, with post type controls for posts, pages, and safe public custom post types./llms.txt and Markdown exports.unfiltered_html, length caps for custom Markdown fields, and developer filters for edge cases.If requirements are not met, the plugin displays an admin notice and does not run.
Run composer run lint to syntax-check the plugin PHP files.
Run composer run test to execute lightweight regression tests for Markdown conversion, llms.txt format, headers, and sanitization.
See TESTING.md for WordPress integration scenarios.
llmf_can_export_post can deny a post for markdown, llms, or llms_search contexts.llmf_exportable_post_type can explicitly opt in a public edge-case post type that is safe to expose even though WordPress marks it as not publicly queryable.llmf_markdown_override_max_length changes the per-post Markdown override length cap. Default: 200000 characters; absolute maximum: 500000.llmf_llms_description_max_length changes the per-post llms.txt description length cap. Default: 500 characters; absolute maximum: 2000.llmf_markdown_metadata filters the JSON metadata array emitted at the top of each Markdown export.llmf_markdown_cache_ttl changes the transient TTL for cached Markdown export bodies. Default: 3600 seconds.llmf_llms_essential_links filters curated link items emitted in the llms.txt Essential section.llmf_debug_headers_enabled enables diagnostic X-LLMF-* headers for llms.txt responses when returning true.llmf_max_excluded_posts_per_type changes the per-post-type exclusion cap. Default: 500; absolute maximum: 5000.llmf_allow_external_sitemap_url allows an external sitemap URL when returning true.unfiltered_html have custom Markdown sanitized with WordPress KSES. Heading markers are removed from the custom llms.txt notes block so user-provided notes cannot break the required llms.txt section order.