Everything below reflects the current release (v1.1.1). From install to machine-readable is typically under ten minutes.
You need WordPress 6.0+ on PHP 7.4+, an administrator login, a pretty-permalink structure (Settings → Permalinks — anything except "Plain"), and the plugin zip plus licence key from your purchase email. Only published, public content is ever served — drafts, private and password-protected posts always answer 404.
Go to Plugins → Add New → Upload Plugin, choose the zip from your purchase email, install and activate. It adds a Markdown Endpoint item to the admin menu.
Visit Settings → Permalinks and press Save Changes once. That registers the .md endpoint with WordPress. (The endpoint needs a pretty-permalink structure — almost every site already has one.)
Open Markdown Endpoint → Licence and paste the key from your purchase email. Keys are domain-based — no account, no phoning home.
Take any published post, drop the trailing slash and add .md — /news/company-update.md. The settings screen shows a live example URL with Copy and Open buttons, so you don't even have to type one.
On the settings screen, toggle the metadata lines — publication date, author, categories, tags, original URL — and watch the live preview update. Want a house byline instead of real author names? Fill in the author display override.
Enable YAML front matter for pipeline tooling, the JSON endpoint (every document also answers on .json), the AI news feed at /feed/ai/, table conversion, excerpt and featured image metadata, the automatic cache, the Markdown sitemap at /markdown-sitemap.md and the llms.txt manifest at /llms.txt. Add custom post types in Content types, and disable individual posts from their editor sidebar.
Optionally set the content format label — "news", "docs", "blog" — and it's emitted as format: in the front matter and JSON. Leave Advertise machine formats on and every article's HTML head carries link rel="alternate" tags pointing at its machine twins, so agents find them without guessing.
The screens and URLs you'll actually live with.
The settings screen shows exactly what a generated document will contain — every toggle updates it instantly, so you never guess what a change does.
Permalink minus trailing slash, plus .md. Hierarchical pages work (/about/team.md), category-based permalink structures work, and unknown paths return proper 404s.
The same permalink plus .json returns a structured representation — title, publisher, author, ISO-8601 published/modified, canonical/markdown/json URLs, categories, tags, excerpt, featured image and the Markdown body. Fields that don't exist are omitted, never invented.
A JSON Feed 1.1 of your latest 50 published items at /feed/ai/, with /feed/ai.json serving the identical body as plain application/json. Every item links its canonical page and both machine twins — one URL for an agent to watch.
Each eligible article's HTML carries link rel="alternate" tags and Link response headers pointing at its .md (and .json) versions. Machine documents point back with a canonical Link header and are noindex — your HTML page keeps every ranking signal.
One compact JSON document at /.well-known/ai-content.json describing your whole content interface — publisher, canonical, URL patterns, discovery endpoints. It declares itself a WP Markdown Endpoint convention in its own convention field; we don't pretend it's an industry standard.
If your theme or plugins inject subscription forms, related posts or promo banners into content, switch on clean content mode and machine documents get the article alone — the article renders through WordPress core filters only. Reversible any time, and left off by default so page-builder content keeps rendering fully.
One field replaces the author name on every document — a house byline, a brand name, or blank to show each post's real author.
A checkbox in the post editor takes any individual post or page off the endpoint — it answers 404 and drops out of the Markdown sitemap.
One document at /markdown-sitemap.md listing every available .md URL with its date — hand it to a crawler or an AI agent and it has your whole library.
The AI-crawler manifest at /llms.txt — site name, tagline and links to your clean Markdown. If another plugin already manages llms.txt, leave the switch off and they coexist.
Generated documents are cached and invalidated automatically when a post is edited, published, trashed or scheduled-published, and when your settings change. Responses also carry ETag and Last-Modified headers, so browsers, CDNs and agents revalidate with cheap 304s. Nothing to flush, nothing to remember.