Title: LLM Markdown – Expose Content as .md
Author: Michael Sablone
Published: <strong>Gashyantare 26, 2026</strong>
Last modified: Kanama 11, 2026

---

Search plugins

![](https://ps.w.org/llm-markdown/assets/banner-772x250.png?rev=3642537)

![](https://ps.w.org/llm-markdown/assets/icon-256x256.png?rev=3642537)

# LLM Markdown – Expose Content as .md

 By [Michael Sablone](https://profiles.wordpress.org/michaelsablone/)

[Download](https://downloads.wordpress.org/plugin/llm-markdown.1.0.2.zip)

 * [Details](https://kin.wordpress.org/plugins/llm-markdown/#description)
 * [Reviews](https://kin.wordpress.org/plugins/llm-markdown/#reviews)
 *  [Installation](https://kin.wordpress.org/plugins/llm-markdown/#installation)
 * [Development](https://kin.wordpress.org/plugins/llm-markdown/#developers)

 [Support](https://wordpress.org/support/plugin/llm-markdown/)

## Description

LLM Markdown gives supported public WordPress content a clean Markdown representation
at a predictable `.md` URL. Append `.md` to a post, page, or enabled public post-
type URL:

    ```
    https://example.com/my-post.md
    ```

The plugin renders the canonical front-end page, selects the part of the document
that contains the primary content, removes configured elements, and converts the
result to Markdown. Blocks, shortcodes, and other server-rendered content are therefore
represented after WordPress and the active theme have processed them. The original
post is never changed and no duplicate Markdown post is stored.

#### Structured Markdown output

Each document begins with YAML front matter containing the title, post ID, content
type, slug, publication and modification dates, canonical URL, Markdown URL, excerpt,
and terms from public taxonomies when available.

The converter handles headings, paragraphs, emphasis, links, ordered and unordered
lists, blockquotes, inline and fenced code, horizontal rules, deletion text, figures
and captions, and simple tables. Images can be included as an option, with support
for common lazy-loading source attributes.

#### Content selection and access control

Choose which public post types expose Markdown. Simple CSS selectors determine the
main content container and which elements should be excluded before conversion. 
Password-protected and non-public content is rejected, and Yoast SEO noindex values
can be honored. Developers can apply an additional access-control filter for membership,
privacy, or custom publishing rules.

#### Discovery, delivery, and caching

Eligible HTML pages advertise their Markdown counterpart with a `<link rel="alternate"
type="text/markdown">` element. Documents generated for anonymous requests are cached
for performance and automatically invalidated after relevant settings, theme, or
navigation changes; a manual cache control is available under Tools.

An advanced, disabled-by-default content-negotiation option can also return Markdown
from the normal canonical URL when a client explicitly requests `Accept: text/markdown`.
This mode sends `Vary: Accept`, but it should be enabled only after confirming every
cache and CDN in front of the site honors that header correctly.

LLM Markdown has no Gutenberg lock-in, does not duplicate content, and supports 
public custom post types without requiring one.

## Screenshots

[⌊Basic Settings Panel⌉⌊Basic Settings Panel⌉[

Basic Settings Panel

[⌊DOM & Selectors Settings Panel⌉⌊DOM & Selectors Settings Panel⌉[

DOM & Selectors Settings Panel

[⌊Advanced Settings Panel⌉⌊Advanced Settings Panel⌉[

Advanced Settings Panel

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/`
 2. Activate the plugin
 3. Visit Settings  Markdown Output to configure options

After activation, append `.md` to supported post URLs.

## FAQ

### Does this help LLMs index my content?

It gives crawlers and other clients a predictable, structured Markdown representation
and advertises that representation from eligible HTML pages. It cannot guarantee
that a particular model, crawler, or search engine will discover, index, or use 
it.

### Does the plugin create physical .md files?

No. The `.md` URLs are WordPress rewrite routes generated on demand. Cached documents
are stored temporarily for performance, but the plugin does not create a parallel
file tree or require you to synchronize exported files.

### Does this modify my content?

No. It reads the rendered public page and generates a separate response. Posts, 
blocks, templates, and database content are not rewritten.

### Does it support custom post types?

Yes. Any public post type can be enabled under Content Types. Attachments are excluded.
Leaving every content type unchecked disables Markdown output entirely.

### How do I access a static front page?

Append `.md` to its normal permalink. The `/index.md` alias is also available when
WordPress is configured to use a static front page.

### Does it expose private content?

The plugin serves only publicly viewable content from an enabled public post type.
Password-protected content is rejected. The optional Honor Noindex setting also 
rejects posts marked noindex by Yoast SEO, and integrations can impose additional
restrictions with the `llm_markdown_can_serve_post` filter.

### How does the rendered theme affect Markdown?

Markdown is built from the server-rendered canonical page, so blocks, shortcodes,
and template output can be included. Browser-only content inserted later by JavaScript
is not available. Use Main Content Selectors and Excluded Content Selectors when
the theme includes navigation, banners, related content, or other unwanted elements
around the article.

### Which CSS selectors are supported?

The selector fields intentionally support a practical subset: element names, IDs,
classes, combined forms such as `article.entry-content`, descendant selectors, and
direct-child selectors. Separate alternatives with commas or new lines. Attribute
selectors, pseudo-classes, and sibling combinators are not supported.

### Can images be included?

Yes. Enable Images in Markdown on the Options tab. Images inside the selected content
area are converted using their source, alt text, and title; common lazy-loading 
attributes are recognized. Images are excluded by default.

### Is this intended for SEO?

It provides an alternate representation and adds a discovery link to eligible HTML
pages, but it makes no ranking or indexing promises. The Markdown response identifies
the HTML URL as canonical. Search-engine and AI-crawler behavior varies.

### Why does unexpected output appear before the Markdown document?

Some themes, plugins, or hosting layers emit HTML, notices, or other output before`.
md` or negotiated Markdown responses. Enable **Response Cleanup** on the Options
tab under Settings  Markdown Output to remove that unwanted pre-output. This compatibility
option is disabled by default.

If the plugin cannot retrieve or extract the rendered page, it returns a non-cacheable`
503 Markdown temporarily unavailable` response rather than caching an empty or incomplete
document. Unsupported, disabled, or protected `.md` routes return `404 Not Found`.

### Can clients request Markdown from the normal post URL?

Yes. Enable **Header-Based Markdown** on the Advanced tab under Settings  Markdown
Output. Supported public post URLs can then return Markdown for `GET` and `HEAD`
requests that explicitly prefer `text/markdown`. Both HTML and Markdown responses
include `Vary: Accept` so compliant caches can keep the representations separate.

This is an advanced, disabled-by-default feature. A CDN, proxy, server cache, or
page-cache plugin that does not honor `Vary: Accept` may serve the wrong representation.
Negotiated Markdown also bypasses browser-side analytics and JavaScript. Clear every
cache and test both representations after enabling it.

Conservative matching requires an explicit `text/markdown` media range. The separate**
Wildcard Accept Headers** option can also permit `text/*`; `*/*` alone never requests
Markdown.

Test HTML:

    ```
    curl -i -H "Accept: text/html" https://example.com/my-post/
    ```

Test Markdown:

    ```
    curl -i -H "Accept: text/markdown" https://example.com/my-post/
    ```

### How do I refresh cached Markdown after changing my theme or site layout?

Use **Clear Markdown Cache** on the Tools tab under Settings  Markdown Output after
changing templates, navigation, widgets, shortcodes, or other content that affects
the rendered page. Saving the plugin settings, switching themes, and updating navigation
menus also invalidate the Markdown cache automatically.

Developers can use the `llm_markdown_cache_ttl` filter to change the default 12-
hour cache duration or return `0` to disable document caching.

### What developer filters are available?

Use `llm_markdown_can_serve_post` for access rules, `llm_markdown_is_noindex_post`
for additional noindex providers, `llm_markdown_include_taxonomy` to control public
taxonomy fields, `llm_markdown_front_matter` to modify metadata, `llm_markdown_markdown_document`
to filter the completed document, and `llm_markdown_cache_ttl` to control caching.

### What happens to plugin data when I remove it?

Deactivation preserves settings. Uninstalling or deleting the plugin removes its
settings, cache-generation option, and generated Markdown transients. On multisite,
cleanup runs for every site in the network.

## Reviews

![](https://secure.gravatar.com/avatar/df34f68e01535d773c70659ded1a714665be5002377840e2a517659d039d6ef7?
s=60&d=retro&r=g)

### 󠀁[Simple but Excellent Pluggin with Great Support](https://wordpress.org/support/topic/simple-but-excellent-pluggin-with-great-support/)󠁿

 [its4yougr](https://profiles.wordpress.org/its4yougr/) Kamena 1, 2026 2 replies

I had a problem with the rendering of the content of the webpages. Nothing to do
with the plugin. The problem was CleanTalk and its Anti-Crawler rules. Mr. Michael
Sablone replied to my thread and after a short investigation he pointed me to the
right direction. The plugin support was imediate and to the point and all of this
on a Sunday. A big BRAVO to the author of the plugin! !

![](https://secure.gravatar.com/avatar/33709fc69d45b134fc74f3f57029722de22586ea85ebd1c6765230217f6d03dc?
s=60&d=retro&r=g)

### 󠀁[Just what I needed](https://wordpress.org/support/topic/just-what-i-needed-1399/)󠁿

 [shurup](https://profiles.wordpress.org/shurup/) Gicurasi 28, 2026 1 reply

Happy to find this plugin: it is simple (in a good way), and does its job perfectly
well. The developer is extremely helpful: he released an update with an improvement
I wanted on the very same day. Thank you for your great work!

![](https://secure.gravatar.com/avatar/0163aff570080b2c90a10cb1e04f09a88b9e1c4518d541a308d40218f6a5d641?
s=60&d=retro&r=g)

### 󠀁[Works well](https://wordpress.org/support/topic/works-well-3168/)󠁿

 [edovelthuis](https://profiles.wordpress.org/edovelthuis/) Gicurasi 12, 2026 1 
reply

I’ve got this running on two websites now, and the markdown generation is seamless
and trouble free. Also, when I thought I was having some issues, I fired off an 
email to the developers and had INSTANT response from them – which is unusual and
much appreciated. Turns out there wasn’t an issue but the reassurance was very welcome.

![](https://secure.gravatar.com/avatar/2140d90419cb7c2f0d3b618cb6efda11b96dc218d4b6965532d1dc7ba210780f?
s=60&d=retro&r=g)

### 󠀁[Excellent Result](https://wordpress.org/support/topic/excellent-result-4/)󠁿

 [jonielr](https://profiles.wordpress.org/jonielr/) Mata 16, 2026 1 reply

This is the only plugin that worked on the custom post types I have in my website.

![](https://secure.gravatar.com/avatar/9373958895fcac485d0073fe1f95ca37272ecf52a57d8d624a820c3b9f5a6a6b?
s=60&d=retro&r=g)

### 󠀁[Outstanding Results!](https://wordpress.org/support/topic/outstanding-results/)󠁿

 [lobozebra](https://profiles.wordpress.org/lobozebra/) Mata 5, 2026

I installed this plugin on my site a few months ago and have noticed LLM traffic
ramping up nearly 25%! It does exactly what it is supposed to do extremely well 
and does not add any unnecessary bloat to my WordPress instance.

 [ Read all 5 reviews ](https://wordpress.org/support/plugin/llm-markdown/reviews/)

## Contributors & Developers

“LLM Markdown – Expose Content as .md” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Michael Sablone ](https://profiles.wordpress.org/michaelsablone/)

[Translate “LLM Markdown – Expose Content as .md” into your language.](https://translate.wordpress.org/projects/wp-plugins/llm-markdown)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/llm-markdown/), check
out the [SVN repository](https://plugins.svn.wordpress.org/llm-markdown/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/llm-markdown/) by
[RSS](https://plugins.trac.wordpress.org/log/llm-markdown/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.2

 * Added advanced, opt-in Markdown content negotiation for normal singular URLs 
   using `Accept: text/markdown`.
 * Added quality-aware Accept-header matching, optional `text/*` support, GET/HEAD
   restrictions, and `Vary: Accept` signaling for eligible HTML and Markdown responses.
 * Added a disabled-by-default Response Cleanup option for unwanted output emitted
   before Markdown and Markdown-route error responses.
 * Reorganized the settings screen into Options, DOM & Selectors, Advanced, and 
   Tools tabs with clearer labels, guidance, and operational warnings.
 * Added manual cache invalidation and automatic generation changes after settings
   updates, theme switches, and navigation-menu updates.
 * Added the `llm_markdown_cache_ttl` filter and expanded cache keys to account 
   for conversion version, relevant options, site, locale, and content modification
   time.
 * Changed failed or empty loopback renders to return a non-cacheable 503 response
   instead of caching incomplete output.
 * Added `llm_markdown_can_serve_post` for membership and access-control integrations.
 * Restricted front-matter taxonomy data to public taxonomies and added `llm_markdown_include_taxonomy`
   for further control.
 * Allowed an intentionally empty content-type selection to disable all Markdown
   output.
 * Fixed HTML entity decoding and Markdown code delimiters when source code contains
   backticks.
 * Added Markdown conversion for horizontal rules, deletion text, figures, and figure
   captions, and made simple table output safer for uneven rows and pipe characters.
 * Expanded uninstall cleanup to remove all plugin options and generated Markdown
   transients across single-site and multisite installations.

#### 1.0.1

 * Added support for tables.
 * Added optional support for images.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **1.0.2**
 *  Last updated **1 day ago**
 *  Active installations **400+**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/llm-markdown/)
 * Tags
 * [AI](https://kin.wordpress.org/plugins/tags/ai/)[content export](https://kin.wordpress.org/plugins/tags/content-export/)
   [headless](https://kin.wordpress.org/plugins/tags/headless/)[LLM](https://kin.wordpress.org/plugins/tags/llm/)
   [markdown](https://kin.wordpress.org/plugins/tags/markdown/)
 *  [Advanced View](https://kin.wordpress.org/plugins/llm-markdown/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  5 5-star reviews     ](https://wordpress.org/support/plugin/llm-markdown/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/llm-markdown/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/llm-markdown/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/llm-markdown/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/llm-markdown/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/llm-markdown/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/llm-markdown/reviews/)

## Contributors

 *   [ Michael Sablone ](https://profiles.wordpress.org/michaelsablone/)

## Support

Issues resolved in last two months:

     0 out of 2

 [View support forum](https://wordpress.org/support/plugin/llm-markdown/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://www.paypal.com/donate/?hosted_button_id=EUHE8NXYEXJJ6)