Bulk AI CLI Connector: Edit Pages, SEO and Schema with Claude, ChatGPT and MCP Agents
Bulk AI CLI Connector: Edit Pages, SEO and Schema with Claude, ChatGPT and MCP Agents

Bulk AI CLI Connector: Edit Pages, SEO and Schema with Claude, ChatGPT and MCP Agents

0/5 (0 ratings) 60 active installs Updated Oct 20, 2026

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.

What you can do with it

  • Connect Claude or ChatGPT to WordPress: Claude Code and other command-line agents call the REST routes directly. Claude Desktop connects through the bundled MCP server. Anything else that can send an authenticated HTTP request works the same way, including n8n, Zapier and Make.
  • Bulk edit Yoast SEO and Rank Math meta: SEO titles, meta descriptions, focus keywords, canonical URLs, robots directives, Open Graph and Twitter fields on up to 100 posts, pages, products or term archives in one call. Works on the free editions.
  • Edit Elementor and Beaver Builder pages with an AI agent: read the headings, paragraphs, button labels and list items of a page as a list, change only the ones you name, and leave the layout exactly as it was. SiteOrigin Page Builder, Advanced Custom Fields text fields, Gutenberg, the classic editor, Divi and WPBakery pages are covered too.
  • Add JSON-LD schema: FAQPage, HowTo, Service or any other type, per post or per category, merged into the Yoast or Rank Math schema graph.
  • Add redirects: 301, 302, 307 and 410 rules, saved into Rank Math’s Redirections where that is in use.
  • Bulk update image alt text: up to 200 media library images per call, matched by image URL.
  • Work in a spreadsheet: export every SEO title and description as CSV, edit in Excel or Google Sheets, import it back.
  • Undo: every page content write stores the previous version first. Dry runs show what would change and write nothing.

Works with

  • SEO plugins: Yoast SEO and Rank Math, free and paid editions. The active one is detected automatically
  • Page builders and editors: Elementor (including Elementor 4 atomic widgets), Beaver Builder, SiteOrigin Page Builder, Advanced Custom Fields, Gutenberg, the classic editor, Divi, WPBakery
  • WooCommerce: products, product categories and product tags, plus return policy and shipping details on Product schema
  • Agents and tools: Claude Code, Claude Desktop, ChatGPT, MCP clients, n8n, Zapier, Make, cURL, Python and Node scripts, headless front ends

Why it exists

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.

New in 2.0: page copy, redirects and API keys

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:

  • Page builders: Elementor (including Elementor 4 atomic widgets), Beaver Builder, SiteOrigin Page Builder, and text fields in Advanced Custom Fields. These keep a page in post meta, where the core REST API cannot reach it. The plugin lists every piece of text as a node and changes only the ones you name. Layout, styling and widgets it does not know are written back exactly as they were read. In Advanced Custom Fields it can also add a row to a repeater or flexible content field (an FAQ item, a product tab), and edit the ACF fields of a category or any other taxonomy term.
  • Gutenberg, classic editor, Divi and WPBakery: read and replace the post content, or run a literal find and replace across it.
  • Term descriptions: category and product category introductions keep their headings, lists and tables.
  • Undo for every edit: each write stores the previous version first. GET /content/backups lists what can be restored and POST /content/revert puts it back. The newest ten are kept per page.
  • Dry run and conflict check: dry_run shows what would change and writes nothing. base_hash refuses a write when the page changed since it was read.
  • Redirects: 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.
  • Copy a page: POST /clone copies a page with its template, design meta and featured image into a new draft.
  • Merchant listing fields: fills in return policy, shipping details and brand on WooCommerce Product schema from one stored policy.
  • API keys: for sites where a security plugin or the host blocks application passwords. Made on Tools > Agent API Keys, shown once, stored only as a hash.

What’s included

  • REST endpoints: read and write SEO meta on any post, page or custom post type via the standard /wp/v2/posts/{id} route (reads need ?context=edit) or the namespaced helpers
  • Taxonomy term archives: edit SEO meta on category/tag/custom-taxonomy archive pages too, not just posts (Yoast and Rank Math both supported)
  • Bulk update: apply changes to up to 100 posts or terms in a single call
  • Bulk image alt text: update _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+)
  • CSV import / export: round-trip your SEO meta through Excel or Google Sheets, posts and terms in one file
  • MCP server: bundled Node.js companion (bulk-seo-meta-editor-mcp on npm) so Claude Desktop and Claude Code can drive the plugin natively
  • Auto-detection: works with Yoast SEO or Rank Math, picks the active one automatically
  • Per-object permission checks: Contributors and Authors can only edit posts, media and terms they could edit in wp-admin; site-wide archive and global settings require an administrator
  • Allowlist enforcement: only meta keys belonging to the active SEO plugin are accepted; arbitrary postmeta writes are rejected
  • Custom JSON-LD schema (v1.6.0+): store structured data (FAQPage, HowTo, Service, or any type) per post, and since 1.9.0 per category, tag or custom taxonomy term; it is injected into Yoast’s or Rank Math’s existing schema graph rather than as a duplicate block. When no SEO plugin schema graph is printed on the page (no Yoast or Rank Math, or their schema output switched off), the plugin prints the stored schema as its own JSON-LD block (v1.9.0+)
  • Post titles (v1.9.0+): send post_title in a /bulk item to rename a post; the slug is never touched
  • Sitemap refresh (v1.9.0+): POST /sitemap/flush clears the Yoast or Rank Math sitemap cache after REST edits
  • Invalid Product schema guard (v1.9.0+): drops Product 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')
  • Page content (v2.0.0+): read and edit the text of Elementor, Beaver Builder, SiteOrigin, ACF, Gutenberg, classic, Divi and WPBakery pages and of term descriptions, with a backup before every write. From v2.1.0: add rows to ACF repeaters and flexible content, and edit ACF fields on terms
  • Redirects, page copies and merchant listing fields (v2.0.0+): see “New in 2.0” above
  • API keys (v2.0.0+): a second way to sign in, next to application passwords

REST endpoints

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 fields
  • POST /bulk: update SEO meta on up to 100 posts/terms in one call
  • POST /bulk-alts: update image alt text on up to 200 media-library attachments by URL
  • GET /export: export all posts’ SEO meta as CSV, returned in the JSON response body
  • POST /import: apply updates from a CSV upload or JSON rows array
  • GET /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 data
  • GET /content?id=N (v2.0.0+): which builder owns the page and its text as nodes; add kind=term&taxonomy=<slug> for a term description
  • POST /content (v2.0.0+): change nodes with updates: [{el, setting, value}], or send post_content for a page that keeps its text there
  • POST /content/replace (v2.0.0+): literal find and replace across the page’s text
  • GET /content/backups and POST /content/revert (v2.0.0+): list and restore earlier versions
  • POST /clone (v2.0.0+): copy a page or post into a new draft
  • GET, POST, DELETE /redirect (v2.0.0+): list, add or remove redirect rules
  • GET, POST, DELETE /merchant-policy (v2.0.0+): the return policy and shipping details added to WooCommerce Product schema
  • POST /register-key (v2.0.0+): store the hash of an API key from your own signed-in browser session
  • GET, POST /update (v2.0.2+): see which version is installed and which one WordPress.org offers, and install the offered version without opening wp-admin

The standard WordPress REST route also works: POST /wp/v2/posts/{id} with a meta payload containing Yoast or Rank Math keys.

Field aliases

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.

MCP server for Claude Desktop and Claude Code

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.

Security

  • Application Passwords (Basic Auth), HTTPS required in production. API keys (v2.0.0+) work over the REST API only, over HTTPS only, on this plugin’s routes only unless made with the wider scope, and are stored as SHA-256 hashes
  • Per-post edit_post capability check on every read and write, edit_term for terms, manage_options for redirects and site-wide settings
  • The SEO plugin’s and the page builder’s own rules for who may edit are followed as well: Yoast and Rank Math role settings, Elementor’s excluded roles, Beaver Builder’s Builder Access setting
  • Page copy is always cleaned with the post content allowlist (wp_kses_post), whoever sends it. Scripts and event handlers are never stored
  • Meta keys are allowlisted to the active plugin’s known fields
  • URL-shaped fields (canonical, og_image, twitter_image, link URLs, redirect destinations) sanitised through esc_url_raw
  • One admin screen, Tools > Agent API Keys, and only administrators can open it

Trademarks

Yoast 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.