You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Markdown Feeds: detect and warn when another plugin already serves Markdown to agents #1188
Other plugins already serve Markdown versions of WordPress content to AI agents, for example Roots' Post Content to Markdown (Accept: text/markdown, ?format=markdown, .md URLs, rel="alternate" discovery) and Markdown for AI Agents (Accept negotiation with Vary: Accept). With one of these active alongside the Markdown Feeds experiment:
Both plugins answer the same front-end requests (ours on template_redirect), so which output wins depends on hook order.
Both print <link rel="alternate" type="text/markdown"> tags, so agents see two Markdown URLs per page.
Two plugins doing Accept negotiation make the page-cache Vary risk harder to reason about.
The llms.txt proposal (#918) has the same issue with SEO and llms.txt plugins.
What is your proposed solution?
Detect known Markdown-serving plugins and show a notice in the Markdown Feeds toggle description in Settings > AI naming the conflicting plugin.
Document the overlap in docs/experiments/markdown-feeds.md.
Separately agree a shared detect-and-defer policy (warn vs. disable overlapping parts) that Markdown Feeds, llms.txt, and Meta Description can follow.
I'd like to pick this up. Before I start, here's the scope I have in mind for the first PR, to check it matches what you want:
Detection. A small detector following the existing SEO_Integration::detect_active_plugin() pattern (is_plugin_active() against a list of known plugin files, filterable so other plugins can add or remove themselves). Starting list:
Markdown for AI Agents (markdown-for-ai-agents)
LLM Markdown – Expose Content as .md (llm-markdown)
Mescio for Agents (mescio-for-agents)
Roots' Post Content to Markdown: as far as I can tell it isn't in the plugin directory, so it would be matched by its main file or a function/class check. Happy to drop it if that's too brittle.
Notice. When one of these is active, the Markdown Feeds toggle description in Settings > AI names it and says both plugins may answer the same Markdown requests and print duplicate rel="alternate" links. Warn only, with no behaviour change in this PR.
Docs. A "Conflicts with other Markdown plugins" section in docs/experiments/markdown-feeds.md.
Out of scope for now: the shared detect-and-defer policy for Markdown Feeds, llms.txt (#918) and Meta Description. I'd keep the detector generic enough to reuse once that's agreed.
Does that sound right, or would you rather settle the defer policy first?
Activity
dhrupo commentedon Oct 16, 2026
I'd like to pick this up. Before I start, here's the scope I have in mind for the first PR, to check it matches what you want:
Detection. A small detector following the existing
SEO_Integration::detect_active_plugin()pattern (is_plugin_active()against a list of known plugin files, filterable so other plugins can add or remove themselves). Starting list:markdown-for-ai-agents)llm-markdown)mescio-for-agents)Notice. When one of these is active, the Markdown Feeds toggle description in Settings > AI names it and says both plugins may answer the same Markdown requests and print duplicate
rel="alternate"links. Warn only, with no behaviour change in this PR.Docs. A "Conflicts with other Markdown plugins" section in
docs/experiments/markdown-feeds.md.Out of scope for now: the shared detect-and-defer policy for Markdown Feeds, llms.txt (#918) and Meta Description. I'd keep the detector generic enough to reuse once that's agreed.
Does that sound right, or would you rather settle the defer policy first?