
Bulk AI CLI Connector connects AI agents and command-line tools to a WordPress site. Claude, Claude Code, ChatGPT, an MCP client or a plain script can read and rewrite SEO titles, meta descriptions, JSON-LD schema, redirects, image alt text and the visible copy of a page, in bulk, over an authenticated REST API. Every page content edit is backed up first and can be undone.
There is no AI inside the plugin and it sends nothing anywhere: it makes no requests of its own to any service and needs no AI account. It gives the agent you already use a safe way into the site. Each call signs in as a WordPress user and can only do what that user could do in wp-admin.
WordPress does not expose Yoast SEO or Rank Math fields over the REST API, and page builders keep a page in post meta where the core REST API cannot reach it. Editing a meta title or an Elementor heading programmatically normally means WP-CLI with server access, a custom plugin, or a premium tier. This plugin adds a clean, authenticated REST surface instead.
It auto-detects which SEO plugin is active and exposes plugin-neutral field aliases (title, description, focus_kw, …) so you don’t need to memorise Yoast vs Rank Math meta keys.
This plugin was called Bulk SEO Meta Editor for AI Agents up to version 1.9.1. Same plugin, same address, same REST routes, new name: it now edits page content as well as SEO fields.
Version 2.0 goes past SEO fields. The same REST API can now read and change the visible text of a page, wherever the site keeps it:
GET /content/backups lists what can be restored and POST /content/revert puts it back. The newest ten are kept per page.dry_run shows what would change and writes nothing. base_hash refuses a write when the page changed since it was read.POST /redirect adds a 301, 302, 307 or 410 rule. On a site that uses Rank Math’s Redirections the rule goes into Rank Math itself. Elsewhere the plugin serves it.POST /clone copies a page with its template, design meta and featured image into a new draft./wp/v2/posts/{id} route (reads need ?context=edit) or the namespaced helpers_wp_attachment_image_alt on up to 200 media-library attachments per call by image URL. Resolves CDN paths and -WIDTHxHEIGHT thumbnail suffixes back to the parent attachment automatically (v1.5.0+)bulk-seo-meta-editor-mcp on npm) so Claude Desktop and Claude Code can drive the plugin nativelypost_title in a /bulk item to rename a post; the slug is never touchedPOST /sitemap/flush clears the Yoast or Rank Math sitemap cache after REST editsProduct nodes that carry no offers, review or aggregateRating, the ones Search Console reports as invalid on quote-only WooCommerce catalogues. Disable with add_filter('bulkseme_drop_invalid_product_schema', '__return_false')All endpoints live under /wp-json/seo-meta-bridge/v1/ (or ?rest_route=/seo-meta-bridge/v1/... on plain-permalink installs):
GET /status: detect the active SEO plugin and list available fieldsPOST /bulk: update SEO meta on up to 100 posts/terms in one callPOST /bulk-alts: update image alt text on up to 200 media-library attachments by URLGET /export: export all posts’ SEO meta as CSV, returned in the JSON response bodyPOST /import: apply updates from a CSV upload or JSON rows arrayGET /schema (v1.6.0+): read back the custom JSON-LD schema stored on a post; add kind=term&taxonomy=<slug> for a term (v1.9.0+)POST /sitemap/flush (v1.9.0+): clear the Yoast or Rank Math sitemap cache so the next sitemap request rebuilds from live dataGET /content?id=N (v2.0.0+): which builder owns the page and its text as nodes; add kind=term&taxonomy=<slug> for a term descriptionPOST /content (v2.0.0+): change nodes with updates: [{el, setting, value}], or send post_content for a page that keeps its text therePOST /content/replace (v2.0.0+): literal find and replace across the page’s textGET /content/backups and POST /content/revert (v2.0.0+): list and restore earlier versionsPOST /clone (v2.0.0+): copy a page or post into a new draftGET, POST, DELETE /redirect (v2.0.0+): list, add or remove redirect rulesGET, POST, DELETE /merchant-policy (v2.0.0+): the return policy and shipping details added to WooCommerce Product schemaPOST /register-key (v2.0.0+): store the hash of an API key from your own signed-in browser sessionGET, POST /update (v2.0.2+): see which version is installed and which one WordPress.org offers, and install the offered version without opening wp-adminThe standard WordPress REST route also works: POST /wp/v2/posts/{id} with a meta payload containing Yoast or Rank Math keys.
Alias
Yoast meta key
Rank Math meta key
title
_yoast_wpseo_title
rank_math_title
description
_yoast_wpseo_metadesc
rank_math_description
focus_kw
_yoast_wpseo_focuskw
rank_math_focus_keyword
canonical
_yoast_wpseo_canonical
rank_math_canonical_url
og_title
_yoast_wpseo_opengraph-title
rank_math_facebook_title
og_image
_yoast_wpseo_opengraph-image
rank_math_facebook_image
tw_title
_yoast_wpseo_twitter-title
rank_math_twitter_title
Plus robots, OG/Twitter description fields, and Rank Math primary-taxonomy keys.
A Node.js MCP server is bundled at https://github.com/puneetindersingh/bulk-ai-cli-connector/tree/main/mcp-server and published to npm as bulk-seo-meta-editor-mcp. Add to Claude Desktop / Claude Code with one command and Claude can read, edit, bulk-update, and CSV-roundtrip SEO meta on any of your sites.
The MCP server has ten tools, for SEO meta and schema. Page content, redirects and the other routes added in 2.0 are REST routes: an agent that can send HTTP requests, Claude Code for example, calls them directly.
edit_post capability check on every read and write, edit_term for terms, manage_options for redirects and site-wide settingswp_kses_post), whoever sends it. Scripts and event handlers are never storedesc_url_rawYoast SEO is a trademark of Yoast BV. Rank Math is a trademark of RankMath. Claude is a trademark of Anthropic PBC. ChatGPT is a trademark of OpenAI OpCo. WordPress is a trademark of the WordPress Foundation. All other product names, logos, and brands are property of their respective owners. This plugin is an independent integration and is not affiliated with, endorsed by, or sponsored by any of them. Trademarks are referenced only to describe interoperability with the listed products.