0+
October 20, 2026
May 16, 2026
Vexalyn LLM MD automatically generates and serves Markdown versions of your WordPress posts and pages, optimized for consumption by Large Language Models (LLMs) such as ChatGPT, Claude, and others.
Whether you want to make your content more accessible to AI tools, build RAG (Retrieval-Augmented Generation) pipelines, or simply expose your content in a clean machine-readable format, this plugin provides a seamless solution directly within WordPress.
Features:
/article.md) appended to any post URLAccept: text/markdown HTTP header for programmatic accessvexalyn_llm_md_frontmatter_fields filtervexalyn-llm-md folder to the /wp-content/plugins/ directory, or install the plugin directly through the WordPress plugin screen.Simply append .md to any post URL. For example, if your post URL is https://example.com/my-article/, the Markdown version will be available at https://example.com/my-article.md.
Yes. You can send an HTTP request with the Accept: text/markdown header to any post URL, and the plugin will return the Markdown content instead of the standard HTML page.
The plugin supports any public post type registered in WordPress. You can configure which post types trigger automatic Markdown generation from the admin panel under Vexalyn > LLM MD.
Go to Vexalyn > LLM MD in the admin menu and click “Generate all Markdown”, or the “Regenerate” button next to a single post type in the Generation section. The generation runs in the background, in small batches, with a progress bar: it works on large sites without hitting PHP or server timeouts, and you can leave the page at any time — WP-Cron keeps processing and the progress is restored when you come back. A “Cancel” button stops it (already generated files are kept).
Background processing relies on WP-Cron. If your host blocks loopback requests or WP-Cron is disabled without a system cron replacement, keep the settings page open (it drives the generation itself), run wp vexalyn-llm-md run to finish the current generation from the command line, or wp vexalyn-llm-md generate to regenerate everything.
No. Markdown is rendered exactly as a logged-out visitor would see the page, whoever triggers the generation. Content hidden from visitors by a membership, paywall or “logged-in only” shortcode or block is therefore never exposed through the .md endpoint.
If rendering a content fails (PHP error, memory or time limit), the background generation retries it on its own, then skips it and lists its ID once the generation is complete. The rest of the site is still generated.
No. The plugin registers its .md rewrite rule on activation and checks on admin page loads that the rule is still present, re-saving the permalink structure automatically if it was lost (plugin updated, rules regenerated by another plugin…). The .md endpoint requires a permalink structure other than “Plain”; the settings page shows a warning otherwise.
Yes. The admin panel includes an export feature that packages all generated Markdown files into a single ZIP archive for download.
No. Markdown is generated once, when a post is saved (or by the background bulk generation), and stored for later serving. Serving a .md file only reads that stored copy, with no impact on regular page load performance.
Yes. Run wp vexalyn-llm-md generate to (re)generate Markdown for every post type configured under Vexalyn > LLM MD (excluded and password-protected content is skipped automatically), wp vexalyn-llm-md generate --post_type=post,page to target specific post types, or wp vexalyn-llm-md generate --id=42 to regenerate a single post. wp vexalyn-llm-md status shows the state of a background generation started from the admin page, and wp vexalyn-llm-md run drives it to completion from the terminal.
They are automatically skipped: no Markdown is generated or cached for them, and the .md endpoint / Accept: text/markdown header return a 404 even if a cached copy previously existed.
Yes. Under Vexalyn > LLM MD, tick the fields (title, URL, published/modified date, author, categories, tags) to include as a YAML frontmatter block at the top of each file. For per-post control, hook into the vexalyn_llm_md_frontmatter_fields filter, which receives the computed fields array and the WP_Post object.
Yes. On the edit screen of any post type enabled under Vexalyn > LLM MD, a “LLM MD” box in the sidebar lets you tick “Exclude this content from Markdown generation (.md)”. Excluded content is never cached or served, even if the post type is otherwise enabled.
On the edit screen, the same “LLM MD” box shows a “Delete generated Markdown” button whenever a cached file exists for that content. It removes the cached Markdown immediately (the .md endpoint returns 404 right away) without excluding the content — it will be regenerated normally on the next save, unless you also tick the exclude checkbox.
.md endpoint. Regenerate your Markdown after updating if your site restricts content this way..md responses now send X-Content-Type-Options: nosniff..md responses now send X-Robots-Tag: noindex, so search engines do not index the Markdown copies as duplicate content..md rewrite rule is verified on admin page loads and restored automatically if missing, so no manual “Save permalinks” is needed after activation or update. If another plugin keeps removing the rule, the restore is attempted at most once per hour and the settings page shows a warning. A warning is also shown when the permalink structure is “Plain”.<link rel="alternate" type="text/markdown"> tag, which pointed to the HTML permalink instead of the .md URL.vexalyn_llm_md_batch_size (posts per batch, default 20), vexalyn_llm_md_step_budget (seconds per step, default 10), vexalyn_llm_md_cron_max_seconds (max seconds per WP-Cron run, default 120).generate shows a progress bar and lists the posts that could not be converted; new status and run commands for the background job..md without excluding the content from future generation.Accept header now return 404, and existing cache is purged on save).vexalyn_llm_md_frontmatter_fields filter for per-post overrides.--id=<id> to regenerate a single post, with an explanatory error if it’s skipped (not published, password-protected, excluded, or type not enabled). Bulk generation (all types or --post_type) already skips excluded and password-protected content.wp vexalyn-llm-md generate WP-CLI command for bulk (re)generation without the admin bulk button’s timeout risk..md URL endpoint.Accept: text/markdown HTTP header.