Skip to content

Add documentation about new batch of abilities - #423

Open
leonidasmi wants to merge 5 commits into
mainfrom
add/abilities-phase-1
Open

leonidasmi wants to merge 5 commits into
mainfrom
add/abilities-phase-1

Conversation

@leonidasmi

Copy link
Copy Markdown
Contributor

Fixes #

Summary

Relevant technical choices

Technical choices that affect more than this issue:

Test instructions

This PR can be acceptance tested by following these steps:
1.
1.
1.

Quality assurance

  • Security - I have thought about any security implications this code might add.
  • Performance - I have checked that this code doesn't impact performance (greatly).
  • Caching - I have analyzed the caching methods that this code touches and have added instructions to deal with those.
  • Tested - I have tested this code to the best of my abilities.
  • Automated tests - I have added unit tests to verify the code works as intended.
  • Testability - I have added unique ids to elements, so they can be located in automated testing.
  • I have altered a filename.
    • I have adjusted the ID property accordingly and updated all internal links.
    • I have added the redirect to the _redirects file in the root of the project.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 3, 2026

Copy link
Copy Markdown

Deploying yoast-developer with  Cloudflare Pages  Cloudflare Pages

Latest commit: 73d8494
Status: ✅  Deploy successful!
Preview URL: https://59413527.yoast-developer.pages.dev
Branch Preview URL: https://add-abilities-phase-1.yoast-developer.pages.dev

View logs

@leonidasmi leonidasmi self-assigned this Sep 7, 2026
@leonidasmi leonidasmi removed their assignment Sep 11, 2026
@leonidasmi
leonidasmi marked this pull request as ready for review September 11, 2026 08:08
@claude

claude Bot commented Sep 16, 2026

Copy link
Copy Markdown

RC docs-sync evidence — Yoast SEO 28.6-RC1

This RC adds the two new Yoast Abilities your PR is pre-documenting. Please incorporate the details below before merging, or reply if any of this is out of scope.

Workflow run: https://github.com/Yoast/developer/actions/runs/35063808190


New abilities in 28.6-RC1

Source evidence:

  • src/abilities/user-interface/abilities/get-post-seo-data-ability.php (new file): registers yoast-seo/get-post-seo-data
  • src/abilities/user-interface/abilities/update-post-seo-data-ability.php (new file): registers yoast-seo/update-post-seo-data
  • src/abilities/user-interface/abilities-integration.php: refactored to a loop over injected Ability_Interface objects — the three score abilities (get-seo-scores, get-readability-scores, get-inclusive-language-scores) plus the two new post-SEO-data ones are now each their own class

yoast-seo/get-post-seo-data (mcp.public: true, readonly: true, idempotent: true)

Permission: wpseo_edit_advanced_metadata

Input — identify the post by at least one of:

  • post_id (integer, minimum 1)
  • permalink (string)
  • title (string, comma-separated phrases; matched against post titles; max 10 phrases per request)
  • page (integer, 1-based, for paginating title-search results)

Output — array of objects, one per matching post:

  • post_id, post_title, permalink, post_type, post_status
  • seo_title (raw, may contain replacement variables), seo_title_rendered (template expanded)
  • meta_description, meta_description_rendered
  • focus_keyphrase
  • canonical, canonical_rendered
  • is_cornerstone (boolean)
  • noindex (boolean|null — null means "inherit post-type default"), nofollow, noimageindex, noarchive, nosnippet
  • open_graph_title, open_graph_title_rendered, open_graph_description, open_graph_description_rendered
  • twitter_title, twitter_title_rendered, twitter_description, twitter_description_rendered
  • schema_page_type, schema_article_type (nullable strings)
  • seo_score, readability_score, inclusive_language_score (enum: na, bad, ok, good)

yoast-seo/update-post-seo-data (mcp.public: true, readonly: false, idempotent: true, destructive: null)

Permission: wpseo_edit_advanced_metadata

Input — identify the post by post_id or permalink, plus any writable fields to change:

  • canonical (nullable string — null or empty string clears it)
  • is_cornerstone (boolean)
  • noindex (boolean|null — null clears the per-post override)
  • nofollow, noimageindex, noarchive, nosnippet (booleans)
  • schema_page_type, schema_article_type (nullable enums — null or empty string clears the override)

Output: same shape as get-post-seo-data (a single object, not an array).

Only the fields provided are changed; omitted fields are left as-is. Only posts the current user can edit are updated.

wpseo_schema_article_types filter — used by update-post-seo-data to validate the schema_article_type input against the currently-registered article types. This filter already existed in the plugin; it isn't new, but the ability's input schema is dynamically bounded by it, so any type registered through this filter is also accepted by the ability.

Category description change: the yoast-seo ability category description was updated from "SEO analysis capabilities provided by Yoast SEO." to "Abilities for Yoast SEO data and operations." — your overview.md may need updating if it quotes the description directly.

Availability: both new abilities require indexables to be built (Should_Index_Indexables_Conditional). The existing score abilities also require this via the same conditional on their base class.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant