LLM Friendly
LLM Friendly adds two capabilities to your WordPress site:
1) /llms.txt An LLM-friendly index of the website with main links and a list of latest items per post type. You can show AI-facing one-line descriptions and exclude individual entries from the feed via Settings → LLM Friendly.
2) Markdown exports For selected post types, the plugin exposes .md endpoints under: {base}/{post_type}/{path}.md Entries include a JSON metadata block with title, URL, dates, language, description, author, and publisher. They can override their Markdown body and one-line LLM description via the “Markdown override (LLM Friendly)” editor metabox.
This is useful for LLMs, indexing bots, and users who prefer plain text.
You can opt in to descriptions in llms.txt via llms_show_excerpt, and you can send X-Robots-Tag: noindex, nofollow for Markdown exports via md_send_noindex if you want Markdown-only consumers without search engine indexing.
If the automatic Markdown conversion does not fit a post, use the “Markdown override (LLM Friendly)” editor metabox to provide a custom Markdown or block-based replacement. In Gutenberg it appears with the editor’s additional panels/metaboxes.
Key features
- llms.txt endpoint with cached generation, optional AI-facing descriptions, a configurable custom Markdown block, and a per-post exclusion list.
- Markdown exports for selected post types with Gutenberg-to-Markdown conversion, expanded JSON metadata, per-post Markdown overrides, and a per-post exclusion list shared with llms.txt.
- Configurable base path for exports (e.g. “llm”) and per-post-type enable/disable toggles; changing the base path requires flushing rewrites.
- Manual or automatic regeneration of the cached llms.txt with ETag/Last-Modified headers.
- Optional X-Robots-Tag: noindex, nofollow for both /llms.txt and Markdown exports; the Markdown header is controlled by
md_send_noindex. - Toggle descriptions in llms.txt via
llms_show_excerptto add one-line summaries under each item. - Optional site title/description/author overrides plus a same-site sitemap URL field for generated outputs.
Requirements
- WordPress 6.0+
- PHP 7.4+
If requirements are not met, the plugin displays an admin notice and does not run.
Development
Run composer run lint to syntax-check the plugin PHP files.
See TESTING.md for WordPress integration scenarios.
Developer Notes
llmf_can_export_postcan deny a post formarkdown,llms, orllms_searchcontexts.llmf_markdown_override_max_lengthchanges the per-post Markdown override length cap. Default: 200000 characters.llmf_llms_description_max_lengthchanges the per-post llms.txt description length cap. Default: 500 characters.llmf_markdown_metadatafilters the JSON metadata array emitted at the top of each Markdown export.llmf_max_excluded_posts_per_typechanges the per-post-type exclusion cap. Default: 500.llmf_allow_external_sitemap_urlallows an external sitemap URL when returningtrue.- Users without
unfiltered_htmlhave custom Markdown sanitized with WordPress KSES.
