30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

Report Orphaned Indexables

seo/cleanup-indexables compares the indexable counts against the live content counts, so indexables left behind by deleted posts or terms are visible.

Read-only. Yoast runs its own scheduled cleanup and there is no entry point to force one from a request.

At a glance

Abilityseo/cleanup-indexables
ToolsetYoast SEO — toolset/yoast-seo
GroupYoast SEO › Indexation
RequiresYoast SEO, active on the site
Capabilitymanage_options
SafetyRead-only — changes nothing
RepeatableIdempotent — running it twice leaves the same result
Ships inAcrossAI Abilities Manager 0.0.34 and later

How it works

When a post is deleted its indexable is supposed to go with it, and usually does. What leaves rows behind is everything that bypasses the normal deletion path: direct database deletes, bulk removal tools, migrations, a plugin cleaning up its own custom post type.

Those rows are not harmful in themselves — they describe pages that no longer exist and nothing renders them — but they inflate every count, they make the indexation figures misleading, and on a site that has been through several migrations there can be a lot of them.

Yoast cleans them up on a schedule of its own. There is no hook, no function and no admin action to trigger that cleanup immediately, so an ability claiming to fix this would be claiming something it cannot do.

Reporting the discrepancy is what is honestly available: the counts side by side, and the gap between them.

If the gap is large and persists across weeks, the scheduled cleanup is not running — which is a WP-Cron problem rather than a Yoast one.

Input

This ability takes no input.

What comes back

NameTypeWhat it is
indexable_countsobjectHow many indexables exist per type.
content_countsobjectHow much live content exists per type.
discrepancyobjectThe gap between them.
successbooleanWhether the call completed.
messagestringA one-line summary of what happened, suitable for showing a human.
error_codestringPresent only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation.

Example

Ask your assistant:

Are there stale Yoast indexables on this site?

It resolves to one call:

{
  "ability": "seo/cleanup-indexables",
  "parameters": {}
}

Worth knowing

  • Read-only. There is no way to force Yoast’s cleanup from a request.
  • Orphaned rows are harmless but make every count misleading.
  • A persistent large gap usually means WP-Cron is not running.
  • Migrations and direct deletes are the usual source.

Related abilities


Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading