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-connectorIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
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.
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.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| bulk-ai-cli-connector (this skill)by puneetindersingh | 83 | 3 | today | MCP Server |
| headroomby headroomlabs-ai | 100 | 78.0k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 104.6k | 2d ago | MCP Server |
| Scraplingby D4Vinci | 100 | 90.0k | today | MCP Server |
| crawl4aiby unclecode | 100 | 86.4k | 1d ago | MCP 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.
Skill content
View source on GitHubBulk 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.
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_runshows 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
-WIDTHxHEIGHTthumbnail 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
- Download the zip from WordPress.org or from Releases
- WP admin, Plugins → Add New → Upload Plugin
- 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.
- WP admin → Users → Your Profile → Application Passwords
- Name it (e.g.
Claude Code) → Add New Application Password - 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
headroom
78.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Agent-Reach
104.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
90.0k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
86.4kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key. Join our Discord https://discord.gg/VuxzM8mtf
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
