Pro module2 also in Free3 abilities

Slim SEO ability reference

Reference for the GoBuildWP Pro 1.12.4 and Free 1.18.6 source. Installed schemas and policy remain authoritative.

This Slim SEO ability reference covers the few values Slim SEO lets a post override, namely title, description, canonical, a noindex switch and two social images, together with how Slim SEO renders them and the post-type templates and features that fill in whatever a post leaves blank.

Read-only, write and destructive groups describe the source annotations. They do not establish a minimum safety profile, human approval or undo support. Those controls are separate: check the installed ability, the connected user and the active site policy before calling it. A read can still return sensitive data. These pages are not evidence that every operation passed an end-to-end runtime test.

What Slim SEO needs before these load

2 of the 3 also ship in GoBuildWP Free 1.18.6 under the same names, marked “Also in GoBuildWP Free” below. They need no GoBuildWP Pro licence, but each retains its own dependency, feature and permission checks. Where Free's copy does less, its own description follows Pro's. When Pro's richer copy passes its gates, it registers first and answers.

Slim SEO must be active; the module looks for its SLIM_SEO_VER constant, and each call returns slim_seo_not_active when it is missing. No version floor is set. Storage and rendering were checked against Slim SEO 4.11.0, and when a version lacks one of the renderer methods the kit returns the unrendered value or null instead of failing. Callers pass GoBuildWP's own permission check (manage_options, or super admin on multisite) and edit_posts, and must be able to edit the post itself, otherwise slim_seo_forbidden. The free plugin's get and update handle the title, description and noindex flag only and leave the row's canonical and images as stored; the rendered values and check-setup are Pro.

Slim SEO editions
free

Everything a post overrides is one slim_seo row

Slim SEO does not spread its data over several meta keys. A post's overrides are one array in the slim_seo post meta row, with the keys title, description, canonical, noindex, facebook_image and twitter_image. The kit writes it the way Slim SEO's own save does: sanitize_text_field() on each value, empty entries dropped, and the whole row deleted once nothing is left. It adds one step Slim SEO skips, slashing the array before update_post_meta(), so backslashes survive.

The before-image for wppilot/rollback-change is that single row. There is no Open Graph title or description to store: Slim SEO prints the meta title and description on social cards, and the two image fields are the part that can differ.

Noindex can be switched on, never forced off

The noindex key is either 1 or absent, so robots_index accepts default, index or noindex but index and default both clear the flag. A post type marked noindex in Slim SEO's settings gives its posts a noindex directive whatever the post says, and a site with search engines discouraged does the same. rendered.noindex_source names which of post, post_type or site is responsible.

Slim SEO drops the canonical link from a noindexed page, so rendered.canonical comes back empty in that case even when the post stores one.

Which title the page actually gets

rendered.title_source is post, post_type, front_page or wordpress. With no title on the post and none on its post type, Slim SEO leaves WordPress's own document title in place even though its renderer would report its default template; the kit reports title_source wordpress and a null title rather than name a title the page does not have. Titles and descriptions may use variables such as {{ post.title }}, {{ sep }} and {{ site.title }}, and the setup call gives the separator from WordPress's document_title_separator filter, which defaults to a hyphen.

The setup call reads Slim SEO's settings field by field and never returns the whole option, because that option also holds an AI provider API key.

Example Slim SEO input: wppilot/slim-seo-get-post-seo

This one operation declares the 2 top-level input parameters below in wppilot-pro/includes/kits/seo-slim/src/abilities/get-post-seo.php; post_id is required. Other calls in this module take different arguments. Nested schemas and constraints are not expanded here; the complete live schema a connected client discovers is authoritative.

ParameterType and meaning
post_idrequiredinteger
include_renderedboolean

Representative call sequence

This sequence describes the documented calls and checks to perform. It is not a recorded result from an installed WordPress site. Inspect returned errors and partial results, then verify the saved values and affected output before proceeding.

Find out why a page shows WordPress's default title and give it a proper one.

  1. 01 wppilot/slim-seo-get-post-seo Returns title_source wordpress and a null rendered title, showing neither the page nor its post type sets a title.
  2. 02 wppilot/slim-seo-check-setup Shows the page post type's empty title template and the separator {{ sep }} will produce.
  3. 03 wppilot/slim-seo-update-post-seo Writes a title using {{ sep }} and {{ site.title }}; the response shows title_source post and the rendered result.

Questions about Slim SEO

Can I make a Slim SEO post indexable when its post type is noindexed?

No. Slim SEO stores a noindex flag and nothing to override it, so the post type setting wins; change the post type in Slim SEO's settings instead.

Why does sending robots_index index not show up in the stored data?

Slim SEO has no way to store a forced index, so index clears the noindex flag and the post reads back as default. Whether the page then carries a noindex directive depends on its post type and the site's search engine setting; whether a search engine actually indexes it is the search engine's decision.

Slim SEO reads

AbilityWhat it does
wppilot/slim-seo-check-setupSlim SEO SetupWhether Slim SEO is active, its version, and the settings that decide a post's title and robots when the post sets nothing itself: the title separator, the default title template, which Slim SEO features are on (meta title, description, robots, Open Graph, X cards, canonical, sitemaps...), each public post type's title and description templates and whether it is noindexed, and whether search engines are discouraged site-wide. Also says what Slim SEO cannot store per post (focus keyword, nofollow, Open Graph text). Read-only; never returns the AI provider key Slim SEO keeps in the same option.
wppilot/slim-seo-get-post-seoGet Post SEO (Slim SEO)Also in GoBuildWP FreeOne post's Slim SEO settings. "seo" is what the post stores (empty string = none, Slim SEO falls back to the post type template): title, description, canonical, robots_index (default | noindex), facebook_image, twitter_image. "rendered" is what Slim SEO produces: the title with its {{ variables }} filled in and title_source (post, post_type, front_page or wordpress; with neither a post nor a post-type title Slim SEO leaves WordPress's own document title in place and title is null), the description, the canonical URL (empty when the page is noindexed, because Slim SEO drops it), and whether the page is noindexed and why (post, post_type or site). Slim SEO has no focus keyword, nofollow or Open Graph text. Pass include_rendered=false to skip the rendered values.

In GoBuildWP Free: Reads one post's Slim SEO meta title, meta description and noindex flag as the post stores them (empty string = none; Slim SEO falls back to the post type template). robots_index is default or noindex: Slim SEO cannot force index and keeps no per-post follow flag at all, and a post type set to noindex stays noindexed whatever the post says.

Slim SEO writes

AbilityWhat it does
wppilot/slim-seo-update-post-seoUpdate Post SEO (Slim SEO)Also in GoBuildWP FreeSets one post's Slim SEO fields in the slim_seo post meta row, sanitized the way Slim SEO's own editor saves them (sanitize_text_field; empty values removed, and the row deleted when nothing is left). Send only the fields to change; an empty string clears one. title and description may use Slim SEO variables such as {{ post.title }} and {{ sep }}. robots_index: noindex sets the flag; default or index clears it (Slim SEO cannot force index, and a post type set to noindex stays noindexed). Returns what was stored, the fields that changed and what Slim SEO now renders. Recorded in the change ledger with a before-image of the slim_seo row only; wppilot/rollback-change restores it.

In GoBuildWP Free: Sets one post's Slim SEO meta title, meta description and noindex flag in its slim_seo post meta row, sanitised the way Slim SEO's own editor saves them; the row's other keys (canonical, social images) are kept. Send only the fields to change; an empty string clears one. title and description may use Slim SEO variables such as {{ post.title }} and {{ sep }}. robots_index: noindex sets the flag; default or index clears it. Slim SEO cannot force index and has no follow setting, so neither can be set here. Returns the fields that changed and the re-read values. Recorded in the change log with a before-image of the slim_seo row only; wppilot/rollback-change restores it.

For the task-level view of Slim SEO, with worked requests and what to check afterwards, see Slim SEO integration page.