SkillAgentSearch skills...

bulk-ai-cli-connector

Bulk AI CLI Connector: connect Claude, ChatGPT and MCP agents to WordPress. Bulk edit Yoast and Rank Math SEO meta, JSON-LD schema, redirects and Elementor or Beaver Builder page copy over the REST API, with undo. Free WordPress.org plugin with a bundled MCP server.

Install / Use

claude mcp add puneetindersingh -- npx -y github:puneetindersingh/bulk-ai-cli-connector

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

83/100

Supported Platforms

Claude Code
Claude Desktop

Our assessment of bulk-ai-cli-connector

bulk-ai-cli-connector scores 83/100 on our quality scale, 580th of 841 AI & Machine Learning skills we index.

Its MCP Server is 23 KB long, well organised into 35 sections with 13 code examples: a thorough specification that gives an agent plenty to work with.

It has 3 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
3/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated today, so bulk-ai-cli-connector is actively maintained.
  • It is released under GPL-2.0, a copyleft license: you can use it, but modified versions you distribute must carry the same license.
  • Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

bulk-ai-cli-connector compared with similar skills

All 4 of these similar skills score higher than bulk-ai-cli-connector; compare them before choosing.

SkillScoreStarsUpdatedFormat
bulk-ai-cli-connector (this skill)by puneetindersingh833todayMCP Server
headroomby headroomlabs-ai10078.0ktodayCLAUDE.md
Agent-Reachby Panniantong100104.6k2d agoMCP Server
Scraplingby D4Vinci10090.0ktodayMCP Server
crawl4aiby unclecode10086.4k1d agoMCP Server

Frequently asked questions

How do I install bulk-ai-cli-connector?
Run claude mcp add puneetindersingh -- npx -y github:puneetindersingh/bulk-ai-cli-connector. The install tabs above show the steps for each supported agent.
Which AI agents does bulk-ai-cli-connector work with?
It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
Is bulk-ai-cli-connector safe to use?
It is GPL-2.0-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is bulk-ai-cli-connector still maintained?
The repository was last updated today, so bulk-ai-cli-connector is actively maintained.

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

Formerly Bulk SEO Meta Editor for AI Agents. Same plugin, same WordPress.org address.

WordPress Plugin Version WordPress Plugin Downloads Tested WP Version License: GPL v2 npm

Connect Claude, ChatGPT and MCP agents to WordPress. A free, GPL-2.0 WordPress plugin that lets AI agents, command-line tools and your own scripts 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 makes no requests of its own to any service. Each call signs in as a WordPress user and can only do what that user could do in wp-admin.

Available in the official directory: wordpress.org/plugins/bulk-seo-meta-editor-for-ai-agents

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, and n8n, Zapier, Make or any script works over plain HTTPS
  • Bulk edit Yoast SEO and Rank Math meta (up to 100 posts, pages, products or term archives per call): titles, descriptions, canonical, robots, Open Graph and Twitter fields. Works on the free editions
  • Edit Elementor and Beaver Builder pages with an AI agent (2.0.0+): read a page's headings, paragraphs, button labels and list items as a list and change only the ones you name. SiteOrigin Page Builder, Advanced Custom Fields text fields (and, from 2.1.0, new rows in ACF repeaters and flexible content, and ACF fields on terms), Gutenberg, the classic editor, Divi and WPBakery pages are covered too
  • Undo and dry run (2.0.0+): every page content write stores the previous version first, dry_run shows what would change and writes nothing
  • Custom JSON-LD schema per post and per taxonomy term (FAQPage, Service, LocalBusiness, HowTo, any type), merged into the active SEO plugin's schema graph, or printed as the plugin's own block when no SEO plugin graph is on the page (1.9.0+)
  • Redirects, page copies and WooCommerce merchant listing fields (2.0.0+)
  • API keys (2.0.0+) for sites where the host or a security plugin blocks application passwords
  • Bulk image alt text updates by image URL (resolves CDN paths and -WIDTHxHEIGHT thumbnail suffixes back to the parent attachment)
  • Post titles through /bulk (post_title, slug untouched), sitemap cache flush (POST /sitemap/flush) and an invalid Product schema guard for quote-only WooCommerce catalogues (1.9.0+)
  • CSV import/export for spreadsheet-based editing
  • Taxonomy term archives, CPT archive pages, and global SEO scopes (author/date/search/404/home)
  • A bundled MCP server so Claude Code or Claude Desktop can drive the SEO meta and schema tools with one-command setup

What problem does it solve?

WordPress doesn't expose Yoast or Rank Math meta fields via the REST API by default. To edit a meta title programmatically you'd normally need WP-CLI access, a custom plugin, or the SEO plugin's premium tier. This plugin adds a clean, authenticated REST surface that:

  • Works with whichever SEO plugin is already installed (or both)
  • Validates per-post permissions (so a Contributor can't edit other authors' posts)
  • Sanitizes URL fields automatically
  • Returns predictable, plugin-neutral field aliases (title, description, focus_kw, ...)

Installation

Option 1: WordPress.org directory (recommended)

WP admin, Plugins → Add New, search for Bulk AI CLI Connector, then Install and Activate. Updates then arrive through the normal WordPress update channel.

Option 2: WP-CLI

wp plugin install bulk-seo-meta-editor-for-ai-agents --activate

Option 3: zip upload

  1. Download the zip from WordPress.org or from Releases
  2. WP admin, Plugins → Add New → Upload Plugin
  3. Activate

Option 4: must-use plugin (auto-active, for agency fleets)

Copy the whole plugin folder into wp-content/mu-plugins/ and add a one-line loader file next to it, for example wp-content/mu-plugins/load-bulk-seo.php containing <?php require __DIR__ . '/bulk-seo-meta-editor-for-ai-agents/bulk-seo-meta-editor-for-ai-agents.php';. Since 2.0.0 the plugin is more than one file, so the main file on its own is not enough. No activation required and it cannot be switched off from the admin.

Authentication

Uses standard WordPress Application Passwords. HTTPS required in production.

  1. WP admin → Users → Your Profile → Application Passwords
  2. Name it (e.g. Claude Code) → Add New Application Password
  3. Copy the generated password (24 chars, shown once)

Use it as Basic Auth: username:application password

API keys (2.0.0+)

For sites where a security plugin or the host blocks application passwords. An administrator makes a key under Settings → AI CLI Connector. It is shown once and only its SHA-256 hash is stored.

curl -H 'X-Bulkseme-Key: bsme_...' https://example.com/wp-json/seo-meta-bridge/v1/status
curl -u 'username:bsme_...'        https://example.com/wp-json/seo-meta-bridge/v1/status
  • A key signs requests in as the account that made it and is removed when that account is deleted.
  • It is read for REST API requests only, over HTTPS only.
  • By default it is accepted on this plugin's routes only. Choose the wider scope when the tool also needs WordPress's own REST routes; such a key is as powerful as an application password.
  • Switch key sign-in off with add_filter('bulkseme_api_key_auth_enabled', '__return_false');.

Local development over HTTP

WordPress disables Application Passwords on non-HTTPS sites by default, so you'll get 401 Unauthorized on a local http://127.0.0.1 install. Drop this mu-plugin into wp-content/mu-plugins/enable-app-passwords-local.php for local testing only:

<?php
// LOCAL DEV ONLY. Never ship this to production.
add_filter('wp_is_application_passwords_available', '__return_true');
add_filter('wp_is_application_passwords_available_for_user', '__return_true');

Also note: PHP's built-in dev server (php -S) does not handle WordPress URL rewriting, so /wp-json/... URLs return the front-page HTML on a local install. Use the ?rest_route=/... form instead, it works on every WP install regardless of permalink structure or web server. The bundled MCP server already uses that form.

REST endpoints

All endpoints require the user to have edit_posts capability. That is only the outer gate: every write also checks a per-object capability. Post writes check edit_post against the target post, image alt writes check edit_post against the resolved attachment, term writes check the edit_term meta capability against the term, and CPT archive plus global-scope writes require manage_options because they change the SEO plugin's site-wide settings.

GET /wp-json/seo-meta-bridge/v1/status

Detect active SEO plugin and list available field aliases.

curl -u 'user:app pass' https://site.com/wp-json/seo-meta-bridge/v1/status

POST /wp-json/wp/v2/posts/{id} (standard WP route)

Update meta on a single post. The plugin registers Yoast/Rank Math meta keys with the standard route, so vanilla WP REST works:

curl -u 'user:app pass' -X POST https://site.com/wp-json/wp/v2/posts/123 \
  -H 'Content-Type: application/json' \
  -d '{
    "meta": {
      "_yoast_wpseo_title": "New Title",
      "_yoast_wpseo_metadesc": "New meta description under 150 chars."
    }
  }'

POST /wp-json/seo-meta-bridge/v1/bulk

Update up to 100 posts in one call.

curl -u 'user:app pass' -X POST https://site.com/wp-json/seo-meta-bridge/v1/bulk \
  -H 'Content-Type: application/json' \
  -d '{
    "items": [
      { "id": 123, "meta": { "_yoast_wpseo_title": "Title A" } },
      { "id": 124, "meta": { "_yoast_wpseo_title": "Title B" } }
    ]
  }'

Response: { "count": N, "results": [{ "id", "status", "errors": [...] }] }

Partial-success semantics: within a single item, valid meta keys are applied even when other keys in the same payload are rejected. The item's status is error if any key was rejected; the errors array names which ones. Use it to detect typos without re-sending the whole batch. Example: a payload with _yoast_wpseo_title (valid) and _arbitrary_key (rejected) updates the title and reports errors: ["unknown_or_disallowed_key:_arbitrary_key"].

Allowlist: only meta keys belonging to the active SEO plugin (Yoast or Rank Math) are accepted, plus the plugin's own schema / schema_mode fields and post_title. Arbitrary postmeta writes are rejected, this endpoint cannot be used as a generic postmeta editor.

Post title (1.9.0+): { "id": 123, "meta": { "post_title": "New title" } } renames the post. Plain text only, the slug never changes, edit_post is required and an empty value returns empty_post_title. /import keeps post_title read-only, so CSV round trips cannot rename posts.

GET /wp-json/seo-meta-bridge/v1/export

Export all posts' SEO meta as CSV (header row matches the /import shape). Since 1.7.0 the response is JSON: { "filename": "seo-meta-export.csv", "row_count": N, "csv": "..." }. Save the csv field to a file:

curl -u 'user:app pass' 'https://site.com/wp-json/seo-meta-bridge/v1/export?post_type=post,page&status=publish&limit=500&offset=0' \
  | jq -r .csv > export.csv

POST /wp-json/seo-meta-bridge/v1/import

Apply updates from CSV (multipart upload with field name csv) or JSON { rows: [...] }. Round-trips with /export.

curl -u 'user:app pass' -X POST https://site.com/wp-json/seo-meta-bridge/v1/import \
  -F 'csv=@updated.csv'

POST /wp-json/seo-meta-bridge/v1/bulk-alts (image alt text)

Update image alt text on up to 200 media-library attachments by image URL. The plugin resolves each URL to its attachment (stripping -WIDTHxHEIGHT size suffixes and query strings) and updates _wp_attachment_image_alt.

curl -u 'user:app pass' -X POST https://site.com/wp-json/seo-meta-bridge/v1/bulk-alts \
  -H 'Content-Type: application/json' \
  -d '{ "items": [ { "image_url": "https://site.com/wp-content/uploads/photo.jpg", "new_alt": "Descriptive alt text" } ] }'

Each row reports status (ok / unchanged / skipped / error), the resolved attachment_id, and the previous_alt.

Custom JSON-LD schema (via /bulk + /schema)

Attach custom JSON-LD to a post or a taxonomy term. The plugin stores it and injects it into the active SEO plugin's schema graph at render time (Yoast via wpseo_schema_graph, Rank Math via rank_math/json_ld), so your nodes join the existing @graph rather than creating a second, competing block. Since 1.9.

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars3
CategoryAI
Updated14h ago
Forks3

Languages

PHP

Trust signals

92/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low