WordPress plugin intelligence profile

System Markdown Alternate

Exposes a clean Markdown version of your posts (readable by LLMs, agents and technical tools) by appending .md to the permalink.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.1
Current version0.53.1
WordPress coverageTested up to WordPress 7.1
Minimum stackWP 6.1 · PHP 7.4
Directory statusactive
Last directory update14 Sept 20261mo ago
Active installationsNewAdoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records System Markdown Alternate version 0.53.1 as active, updated 1mo ago and tested up to WordPress 7.1.

Overview

About this plugin

System Markdown Alternate publishes a clean, machine-readable Markdown representation of your content. md to any supported permalink and you get YAML front matter plus the post body converted to Markdown — with marketing clutter, forms and navigation widgets stripped out.

md → Markdown (front matter + content)

It is built for the era of AI assistants, agents and technical scrapers that prefer plain Markdown over rendered HTML. It is not a generic SEO plugin.

Read the full documentation — installation, every setting in the panel, the endpoints, the shortcodes, the integrations and troubleshooting.

Key features

md endpoint for every supported, published, public post.

  • Content negotiation: the same Markdown is returned for Accept: text/markdown or?format=markdown requests. The Accept header is parsed with q-values, so a client that prefers HTML (higher q) still gets HTML.
  • Vary: Accept on negotiable URLs, so caches and CDNs that honour it keep the HTML and Markdown representations of the same address apart. Because some page caches key by URL only and ignore Vary, the negotiated Markdown (and 406 ) responses are also sent non-cacheable, so safety never depends on Vary alone.
  • Markdown discovery in HTML and HTTP: supported canonical pages advertise the representation with both <link rel="alternate" type="text/markdown"> in the document head and a typed Link: rel="alternate" response header. The HTTP form is also available to HEAD requests.
  • Correct HTTP headers: Content-Type: text/markdown, X-Robots-Tag (default noindex, follow ) and a Link: rel="canonical" back to the HTML.
  • Clean conversion: Gutenberg blocks are rendered individually (no injected related/CTA blocks), excluded blocks/shortcodes/CSS classes are removed, code blocks become fenced blocks, URLs are made absolute, and an embedded video, tweet or track leaves a link to what it embeds rather than an empty gap. Clickable link cards keep their name too: the invisible overlay link such cards are built from takes the name the markup declares, instead of arriving with no text at all.
  • Custom taxonomies in the front matter (optional, nothing selected by default): tick the taxonomies you want and their terms are added as a taxonomies: block, alphabetically ordered. Nothing is ever published automatically: a taxonomy registered by another plugin appears in the panel unticked, and taxonomies with no public term archive are labelled as internal.
  • Extra custom fields (optional, empty by default): list the post meta keys whose values belong in the document and they are appended to the body. One setting covers ACF, JetEngine, Meta Box and WordPress’s own Custom Fields box, because underneath they all store post meta — so a page whose text comes partly from a template’s fields is no longer published half missing. Nothing is detected automatically, and posts without the field keep their document and their cache validator untouched.
  • Object cache with proactive invalidation on post edit, plugin update and settings change: a persistent object cache is used when one is available, falling back to transients otherwise.
  • Optional.md hit counter (off by default): counts how many times the Markdown endpoint is served, split bot vs human, with a further breakdown naming a few known AI crawlers (ClaudeBot, GPTBot, PerplexityBot, CCBot) among the bot total. Privacy by design: only aggregate daily totals are stored — no IP addresses, no user-agent strings, no per-visitor data, no cookies, no external calls.
  • Bricks pages get a real.md: rendered through Bricks’ own API (never re-implemented), with the same excluded-shortcode/excluded-class rules as everything else, plus a new “excluded builder elements” list for Bricks chrome (forms, nav menus, share bars, tables of contents, breadcrumbs). A post switched back to Render with WordPress is unaffected. Detection is per post, never per post type: a site that builds its pages with Bricks while its articles stay in the ordinary editor keeps every one of those articles.
  • Other page builders are handled honestly: a post rendered by Elementor, Divi, WPBakery, Oxygen, Beaver Builder or Breakdance has no Markdown representation — its content is not in post_content, or is there as the builder’s own layout shortcodes — so it returns 404 instead of an empty or misleading document, and it stays out of the alternate links and the shortcodes.
  • Admin panel to choose which post types are exposed and to tune cache, exclusions and headers — no post type is exposed until you pick one. Each type shows what its published posts are actually built with (for example 12 Bricks, 3 Gutenberg ), so a page builder that costs you the Markdown version is visible before it surprises you.
  • Shortcodes [sysmda_md_url] (the Markdown URL), [sysmda_md_download] (a bare download link), and [sysmda_md_actions] (an opt-in Copy as Markdown split button with copy, new-tab view and download actions).
  • Optional integrations, shown only when the related plugin is active:
  • Advanced Custom Fields: add a subtitle and a TL;DR (from ACF fields) as a preamble between the H1 and the body.
  • GenerateBlocks 2.x: a {{sysmda_md_url}} Dynamic Tag, available automatically, usable in element fields (e.g. a Button URL).
  • Developer-extensible: every behaviour above — which content is served, the headers, the caching, the conversion pipeline and the front matter — is exposed as a WordPress filter. See the FAQ below for examples and a link to the full documented list.
WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • content discovery
  • content negotiation
  • ai
  • llm
  • markdown
Compatibility & maintenance

Compatibility & maintenance

Tested with WP 7.1

Marked as tested with the current WordPress 7.1 release.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.1
Minimum requirementsWordPress 6.1 · PHP 7.4
Update activity14 Sept 20261mo ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

Version0.53.00.53.1
Version0.52.00.53.0
Version0.51.00.52.0
Version0.50.10.51.0
Version0.50.00.50.1
Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.