WP Manifestindependent plugin directory
manifest / unclassified / rankxai-wp-plugin

RankX AI self-updates

Connects a WordPress site to RankX AI: SEO metadata through whichever SEO plugin the site runs, llms.txt and agents.md, optional markdown copies of pages, and structured data in the document head.

by RankX AI · github.com/rankxai/rankxai-wp-plugin · website

★ 0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/rankxai/rankxai-wp-plugin/archive/refs/heads/main.zip

Ships its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.

The site-side connector for RankX AI, for WordPress sites. It lets a WordPress site be read and written by the RankX AI platform: publishing approved content, writing SEO metadata through whichever SEO plugin the site runs, emitting structured data, and serving the machine-readable documents that AI assistants look for.

The plugin generates nothing on its own. Everything it applies is produced and approved in a RankX AI account, which is a paid service. The plugin is free and GPLv2 or later.

Status: not on WordPress.org yet

The plugin runs on live sites, but it is not published on WordPress.org, so it installs from a release ZIP rather than from the Plugins screen's search. From 0.4.0 an installed copy shows new releases on the Plugins screen and can update automatically.

What it does

SEO metadata title, description, canonical, Open Graph and Twitter — through Yoast, Rank Math, SEOPress, All in One SEO, The SEO Framework, SiteSEO or SureRank, or printed by the plugin itself on a site with none
Root documents llms.txt, agents.md and ai.txt, served from a virtual route rather than a file on disk, and never taken from a plugin that already serves one
Markdown copies off by default: /page.md, /page/index.md, /page/?format=md and Accept: text/markdown, plus sitemap-md.xml and a rel="alternate" link on every page that has one
Gap filling on a site with no SEO plugin, prints the meta description, Open Graph and Twitter tags, the core XML sitemap and breadcrumb structured data that nothing else prints — each only when the platform switches it on, and never while any SEO plugin is active. An administrator can refuse any one with the rankxai_fill_{feature} filter
Structured data per-page JSON-LD managed item by item through whichever SEO plugin the site runs: Rank Math's own schema store where Rank Math has a template for the type, otherwise added to the SEO plugin's graph (Rank Math, Yoast, All in One SEO, The SEO Framework, Slim SEO; beside SEOPress's, SiteSEO's and SureRank's scripts) so each page prints one graph, or printed by the plugin itself on a site with none. Held in post meta, where WordPress's content sanitiser cannot reach it — the page body is never touched
Verified content writes the saved bytes come back in the write's own response, with the newest revision id and whether the writing account holds unfiltered_html

Everything above is switched on and fed from a RankX AI account. The plugin exposes the capability; it never decides what to publish.

Two things that will not change

Recorded here because they are the reasons to trust the plugin with write access to a live site, and because writing them down first makes them harder to quietly drop later.

It is an enhancement, never a requirement. RankX AI works on a WordPress site with no plugin installed, over the REST API and an Application Password, and will continue to. The plugin removes that setup step and unlocks capabilities the REST API cannot express. Nothing in the product will require it. Agencies frequently cannot install plugins on a client's site, and that is a constraint to design around rather than argue with.

It holds no business logic. It exposes capabilities and does nothing clever with them. Every rule about what may be written, how content is preserved, and whether a write succeeded lives in the platform, where it is fixed by a deploy — not in code installed on thousands of sites that cannot be rolled back. A plugin that decides things is a plugin whose decisions are frozen at whatever version each site happens to run.

Development

Requires Docker (for the local WordPress environment) and Composer.

composer install      # coding standards toolchain
composer run lint     # PHPCS, WordPress standards + PHP 7.4 compatibility
npx wp-env start      # WordPress at http://localhost:8888 with this plugin active

composer run lint runs against PHP 7.4 and 8.3 in CI. 7.4 is the declared floor and is in the matrix deliberately: WordPress.org will install on 7.4 hosts, where an 8.0 syntax feature is a fatal error on activation rather than a warning.

npx wp-env start boots PHP 7.4 for the same reason, with 8.3 in the tests environment.

Releasing

Sites find updates through the Update URI header and includes/class-rankxai-updater.php, which read rankxai-update.json from the latest GitHub release and offer that release's rankxai.zip.

  1. Bump Version: and RANKXAI_VERSION in rankxai.php and Stable tag: in readme.txt, and add a changelog entry for the version (it becomes the release notes and the "View details" text).
  2. Commit and push to main.
  3. node release.mjs --dry-run, then node release.mjs.

The release is made locally, not by a workflow, so the tag and the release carry the maintainer's name. The script refuses a dirty or unpushed tree, a version mismatch, a missing changelog entry or a Co-Authored-By trailer, runs check.sh, uploads both assets together, and reads the result back from GitHub. The Release check workflow then checks the published release the way a site will. Never publish a release by hand without rankxai-update.json, or mark one as a pre-release expecting sites to see it: latest/ skips pre-releases.

node build-zip.mjs --target=wporg builds the WordPress.org submission, which has no updater and no Update URI (the directory delivers its own updates, and Plugin Check rejects both). CI's Plugin Check runs against that build.

Reporting a security issue

Email support@rankxai.com rather than opening a public issue. See SECURITY.md, which also lists the things this plugin deliberately never does — the quickest way to rule a class of report in or out.

License

GPLv2 or later. See LICENSE.txt.