Skip to content

Markdown Feeds: detect and warn when another plugin already serves Markdown to agents #1188

Open

Description

@jeffpaul

Follow-up to #1166.

What problem does this address?

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:

  1. Both plugins answer the same front-end requests (ours on template_redirect), so which output wins depends on hook order.
  2. Both print <link rel="alternate" type="text/markdown"> tags, so agents see two Markdown URLs per page.
  3. 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.

Activity

  1. dhrupo commented on Oct 16, 2026

    @dhrupo
    Contributor

    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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions