$ filed under: wordpress

open source · editorial infra

WordPress AI 1.4.0: Markdown Feeds, a Comment Value Score, and the Machine-Readable Front Door Publishers Have to Price

October 6, 2026 — WordPress AI 1.4.0 shipped October 5, and it is the first release in the series that points the plugin outward. 1.0.0 gave publishers a request log; 1.1.0 encrypted the keys; 1.2.0 drafted…

Editorial illustration for: WordPress AI 1.4.0: Markdown Feeds, a Comment Value Score, and the Machine-Readable Front Door Publishers Have to Price

October 6, 2026 — WordPress AI 1.4.0 shipped October 5, and it is the first release in the series that points the plugin outward. 1.0.0 gave publishers a request log; 1.1.0 encrypted the keys; 1.2.0 drafted replies and summaries in bulk; 1.3.0 drew a default-deny line around the abilities an outside agent could call. 1.4.0 publishes a Markdown copy of every post and feed for machine readers, scores how much each reader comment is worth, lays down a vector store, and makes the request log record failures as failures. Underneath sits a quieter break: guidelines saved in older Gutenberg builds do not carry over. For newsrooms, the plugin now shapes how content looks to machines and which reader voices look substantive — both calls an editor should own.

Key Themes

  1. A new Markdown Feeds experiment serves a Markdown copy of site feeds at /feed/markdown/ and of any post or page via ?output_format=markdown, built for AI agents and other machine readers.
  2. Comment Moderation now gives each analyzed comment a 0–1 value score, and a medium-severity advisory closes a gap that let Contributors trigger bulk moderation.
  3. The guidelines integration now reads from the wp_knowledge post type without migrating old wp_guideline entries, just as Content Translation starts consulting guideline categories.
  4. A new wpai_embeddings table stores vectors with the provider and model that produced them, and generate_embeddings now requires an explicit model.
  5. The AI Request Log now records provider 4xx and 5xx responses as errors, and the global Enable AI toggle is gone.

Jump to: 📄 Markdown Feeds · 💬 Comment Value Score · 🧭 Guidelines & Translation · 🧮 Embeddings · 📋 Logging & Controls · 🔧 Also in 1.4.0 · 💡 Takeaways


📄 Markdown Feeds

The Markdown Feeds experiment (#855) adds a feed at /feed/markdown/, with matching URLs in every feed context, and serves any post or page as Markdown via ?output_format=markdown. Headings, links, images, lists, blockquotes, and code survive conversion, and titles and excerpts are normalized so HTML entities do not leak through (#1086). The pull request also adds an autodiscovery <link> tag in the page head, an off-by-default option to serve Markdown when a request sends Accept: text/markdown, and two filters — wpai_markdown_singular_sections and wpai_markdown_feed_item_sections — for controlling what each output contains.

Why this matters: This is a business decision dressed as a feed format. A clean Markdown copy of the archive is exactly what crawlers want and what licensing intermediaries sell — TIME built a Markdown page for machines behind an allow list and a paywall, not in front of them. Enable this without a policy and the plugin hands out the machine-friendly version for free, then advertises it in the page head. Entitlement is the second question: whether the Markdown output honors a meter depends on where that logic lives, and a template-level or client-side paywall is not something a feed renderer knows about. Test a gated story with ?output_format=markdown first. Behind bot management, with the section filters trimming what machines receive, this is plumbing for the machine business publishers are building beside the human one. Without that, it is a free API for everyone the business team is trying to charge.


💬 Comment Value Score

When Comment Moderation runs, each analyzed comment now gets a value score from 0 to 1 for how substantive and on-topic it is (#681), shown in a new column on the Comments screen beside toxicity and sentiment. To judge relevance, the prompt now sends post context — excerpt, AI summary, or trimmed content — along with the comment. Bulk analysis caps its queue size (#972). The release also fixes GHSA-pjw7-q94g-4q34, a medium-severity advisory: the bulk flow lacked an authorization check, so a Contributor could queue an analysis that ran when a higher-privileged user next opened the Comments screen. 1.4.0 now checks moderate_comments before a bulk run and edit_comment per comment.

Why this matters: Toxicity scoring filters harm. Value scoring ranks speech — a model deciding which readers said something worth reading, which is an editorial judgment. As triage for a community desk, it helps; as the sort order, the “featured” criterion, or an auto-hold threshold, it is the model editing the reader conversation. Keep it advisory. Reader comments, which can carry personal data, now travel to the provider with a slice of the article, so they belong in the same data-handling review as anything else sent off-platform. The advisory is the reason to upgrade promptly: it let the lowest editorial role trigger provider spend under someone else’s session.


🧭 Guidelines & Translation

The guidelines integration now reads published guidelines from the wp_knowledge post type instead of the removed wp_guideline (#988). The changelog is blunt: data is not migrated, so guidelines set in an older Gutenberg build have to be re-added. In the same release, the Content Translation ability starts incorporating guideline categories (#987), adds nine default target languages (#986), lets editors retry a failed translation in place (#941), and disables title translation when a title is too short to give useful context.

Why this matters: Guidelines are where a newsroom writes down its voice, style, and red lines for the model — the house-rules layer this site argued publishers should build on top of the plugin rather than fork around. The wp_knowledge model was a proposal in the July developer roundup; 1.4.0 is where the switch costs something. A site that wrote guidelines during the experimental period and upgrades without checking ends up with AI features running without house rules, and nothing on screen says so. That hits translation hardest — the feature now built to consult those guidelines, and the one the 1.3.0 recap said belongs with a bilingual desk.


🧮 Embeddings Infrastructure

  • A new wpai_embeddings table stores vectors with the provider and model that produced them (#976).
  • Vector_Math and Vector_Ranker classes handle similarity and ranking (#993).
  • Breaking: generate_embeddings now requires a model, plus the provider when passing an ID (#975).

Why this matters: No user-facing feature yet, but this is the foundation for the related-content and internal-linking experiments on the roadmap. Recording the model per vector is right: vectors from different models are not comparable, so switching providers means re-embedding the archive — a real cost line on a large back catalog. Pick the model that owns your archive before anything writes to this table.


📋 Logging & Controls

  • The AI Request Log now records provider 4xx and 5xx responses as error with status code and message instead of success (#1040).
  • The global Enable AI toggle is removed (#985); features are controlled individually.
  • Core’s API-key revalidation timeout rose from 5 to 30 seconds, because a timed-out check makes Core delete the key (#947).

Why this matters: The 1.0.0 request log was the governance layer, and until now it over-reported success. An audit trail that logs failures as successes is not an audit trail. With the master switch gone, “turn the AI off now” means deactivating the plugin or toggling each feature — write that runbook down.


🔧 Also in 1.4.0

Abilities renamed. core/read-content becomes core/content-query, core/read-users becomes core/users-query, and core/read-settings becomes core/settings-get (#1002, #1087). Old names survive as deprecated aliases “for now,” and ai/get-post-details is deprecated. Tools audited for 1.3.0’s opt-in change need a second pass — and with Playground exposing abilities over WebMCP, per the September developer roundup, more clients will hard-code these names.

Smaller changes. Alt Text Generation respects the Image block’s decorative setting (#1031). Type Ahead gets a loading indicator. The default OpenAI image model is now gpt-image-2.5-flare (#1023) — a default that changes both output style and cost. Connector Approvals no longer blocks Core’s own key check (#1070). The minimum WordPress version is now 7.0.3.

Roadmap. The 1.5.0 list includes Text to Speech, Internal Link Suggestions, a role and user access-controls tool, and create, update, and delete abilities for content, media, terms, and users. The arc note: C2PA provenance has now slipped from 1.2.0 to 1.3.0 to 1.4.0 and onto the 1.5.0 list. Write access over MCP is a different governance conversation from read.


💡 Takeaways

  1. Define a machine-access policy before enabling Markdown Feeds — decide who gets the clean copy, test gated stories with ?output_format=markdown, and treat the discovery tag as an invitation you are choosing to send.
  2. Re-enter editorial guidelines before upgrading — wp_guideline entries do not migrate to wp_knowledge, and translation now depends on them.
  3. Keep the comment value score advisory — use it for triage, not ranking or auto-holds, and add reader comments to your provider data-handling review.
  4. Audit past request-log entries and write the off-switch runbook — older entries may show failed calls as successes, and the emergency stop is now per feature or plugin deactivation.
  5. Watch the 1.5.0 write abilities and access controls — create, update, and delete over MCP is where scoped roles stop being optional, and the access-controls tool should land first.

The full release post is available on Make WordPress AI.