Bulk SEO Meta Editor for AI Agents
Bulk edit Yoast SEO or Rank Math meta from outside wp-admin. WordPress does not expose those fields over the REST API, so editing a meta title programmatically normally means WP-CLI, a custom plugin, or a premium SEO…
Solid choice
Bulk SEO Meta Editor for AI Age… is a solid plugin choice in 2026, with a few things worth checking first. It runs on 10+ sites and was last updated 3 days ago, and scores 66/100 on our health check.
- Actively developed — last update 3 days ago
- Tested with the latest WordPress (7.1)
- Small user base (10+ active installs)
- Very few reviews so far
How does it stack up?
Side-by-side on installs, updates, ratings & supportDaily downloads
Download spikes usually follow a new release — each site that auto-updates counts as a download.
Rankings
Where Bulk SEO Meta Editor for AI… stands todayWordPress.org search rankings
Live position in the plugin search, top 100| Keyword | Position |
|---|---|
| bulk edit | >100 |
| mcp | >100 |
| meta description | >100 |
| rank math | >100 |
| Yoast | >100 |
Version adoption
Share of active sites per release.
About Bulk SEO Meta Editor for AI Agents
From the official readme · v1.9.0Description
Bulk edit Yoast SEO or Rank Math meta from outside wp-admin. WordPress does not expose those fields over the REST API, so editing a meta title programmatically normally means WP-CLI, a custom plugin, or a premium SEO tier. This plugin adds a clean, authenticated REST surface instead, so AI agents (Claude, ChatGPT, Perplexity), automation tools (n8n, Zapier, Make) and headless workflows can read and rewrite SEO titles, meta descriptions, canonical URLs, robots directives, Open Graph and Twitter fields on up to 100 posts in a single HTTP call.
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.
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 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_alton up to 200 media-library attachments per call by image URL. Resolves CDN paths and-WIDTHxHEIGHTthumbnail 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-mcpon 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_titlein a/bulkitem to rename a post; the slug is never touched - Sitemap refresh (v1.9.0+):
POST /sitemap/flushclears the Yoast or Rank Math sitemap cache after REST edits - Invalid Product schema guard (v1.9.0+): drops
Productnodes that carry nooffers,revieworaggregateRating, the ones Search Console reports as invalid on quote-only WooCommerce catalogues. Disable withadd_filter('bulkseme_drop_invalid_product_schema', '__return_false')
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 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; addkind=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
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 (Claude / Claude Code)
A Node.js MCP server is bundled at https://github.com/puneetindersingh/bulk-seo-meta-editor-for-ai-agents/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.
Security
- Application Passwords (Basic Auth), HTTPS required in production
- Per-post
edit_postcapability check on every write - Meta keys are allowlisted to the active plugin’s known fields
- URL-shaped fields (canonical, og_image, twitter_image) sanitised through
esc_url_raw - No new admin UI, no settings page, nothing to misconfigure
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.
Installation
- Install from the WordPress.org plugin directory: Plugins → Add New, search for Bulk SEO Meta Editor for AI Agents. Or with WP-CLI:
wp plugin install bulk-seo-meta-editor-for-ai-agents --activate. Or uploadbulk-seo-meta-editor-for-ai-agents.zipvia Plugins → Add New → Upload Plugin - Activate. There is no settings page: the REST API is live as soon as the plugin is active
- Set up an Application Password: Users → Your Profile → Application Passwords → Add New
- Test:
curl -u 'username:app pass' https://yoursite.com/wp-json/seo-meta-bridge/v1/status
For the optional MCP server, install via npm: npm install -g bulk-seo-meta-editor-mcp and configure Claude Desktop / Claude Code with WP_BASE_URL, WP_USER, and WP_APP_PASS environment variables.
Frequently asked questions
How do I bulk edit meta descriptions in WordPress?
Activate the plugin, create an Application Password under Users → Your Profile, then send one POST to /wp-json/seo-meta-bridge/v1/bulk with up to 100 items. Each item is a post ID plus the fields to change, for example {"id":123,"meta":{"description":"..."}}. If you would rather work in a spreadsheet, GET /export returns every row as CSV (with live character counts) and POST /import writes the edited file back.
Can I bulk edit Yoast SEO titles without Yoast Premium?
Yes. The plugin writes the same postmeta keys Yoast Free reads from, so bulk title and description edits work on the free edition. Rank Math Free works the same way.
Does it work with Rank Math as well as Yoast?
Both. It detects whichever plugin is active and maps plugin-neutral aliases (title, description, focus_kw) onto the right meta keys for that plugin, so the same request body works on either site.
Can Claude or ChatGPT edit my WordPress SEO meta?
Yes, that is what it was built for. The bundled MCP server (bulk-seo-meta-editor-mcp on npm) gives Claude Code and Claude Desktop ten tools: status, read, write, bulk update, list posts, list terms, CSV export, CSV import, and schema get and set. Any other agent or automation tool can call the REST endpoints directly over HTTP Basic Auth.
How do I bulk update image alt text?
POST /bulk-alts accepts up to 200 { image_url, new_alt } pairs per call and writes _wp_attachment_image_alt on the matching media-library attachment. CDN paths and -WIDTHxHEIGHT thumbnail suffixes resolve back to the parent attachment automatically.
Can I add custom JSON-LD schema to a post?
Yes, since 1.6.0. Schema is stored per post and injected through Yoast’s wpseo_schema_graph filter or Rank Math’s rank_math/json_ld filter, so your nodes merge into the graph those plugins already output rather than appearing as a duplicate second block. Add mode appends, replace mode swaps the graph.
Can I add schema to a category or product category archive?
Yes, since 1.9.0. Send a /bulk item with kind: "term", the taxonomy slug and a schema field, the same way you send term titles and descriptions. The schema renders on the first page of that term’s archive only, which is the page that shows the term description. Read it back with GET /schema?id=&kind=term&taxonomy=. Writing needs the edit_term capability on that term.
Does the schema work without Yoast or Rank Math?
Yes, since 1.9.0. If no SEO plugin schema graph is printed on the page, whether because neither plugin is installed or because its schema output has been switched off, the plugin prints the stored schema as its own block. Meta title and description editing still needs Yoast or Rank Math, because those fields belong to them.
Why did the Product schema disappear from some WooCommerce product pages?
Since 1.9.0 the plugin removes Product nodes that carry none of offers, review or aggregateRating from the Yoast and Rank Math schema graphs. Google requires at least one of them, so a quote-only product (no price) can never earn a product rich result and only produces an “invalid” entry in Search Console. Products with a price are untouched, and the node comes back on its own once a price is added. To keep those nodes anyway: add_filter('bulkseme_drop_invalid_product_schema', '__return_false');.
Can I rename a post through the API?
Yes, since 1.9.0. Send post_title in a /bulk item. The value is sanitised as plain text, the slug and URL never change, and the caller needs edit_post on that post. /import ignores the post_title column, so a CSV round trip cannot rename anything.
Does this work with a headless or decoupled WordPress setup?
Yes. Every field is readable and writable over REST, so a headless front end, a CI job or a content-ops script can manage SEO meta the same way it manages any other structured field.
Does this work with Yoast SEO Free / Premium / Rank Math Free / PRO?
Yes. The plugin uses the postmeta keys that all editions read from, so it works regardless of which tier is installed.
Can I run both Yoast and Rank Math at the same time?
You shouldn’t. They conflict with each other in the front-end (duplicate meta tags). This plugin auto-detects whichever is active; if both are active, Yoast wins.
Is it safe to install on production?
Yes. The plugin is read-only until something hits the REST endpoints, and writes are scoped to SEO meta keys, custom schema, image alt text and (only when you send it) the post title. It cannot edit post content, users, or any other table. Per-post permission checks prevent privilege escalation.
Does it work with WooCommerce products?
Yes. Meta is registered on every public post type, so products, custom post types, etc. are all covered. Product category and product tag archives (and any other custom taxonomy) are also editable via the term endpoints (v1.3.0+).
Can I edit category / tag archive SEO meta in bulk?
Yes (v1.3.0+). Pass ?include_terms=1 to /export to pull category, tag, and any custom-taxonomy archive rows alongside posts. Post /bulk items with kind: "term" and the taxonomy slug to update them. Yoast term meta is stored in the wpseo_taxonomy_meta option; Rank Math uses standard term meta. Both are handled transparently, you pass plugin-neutral aliases (title, description, og_title, etc.) and the plugin writes to the right place.
Why am I getting 401 Unauthorized on localhost?
WordPress disables Application Passwords on non-HTTPS sites by default. For local development only, drop a small mu-plugin into wp-content/mu-plugins/ with add_filter('wp_is_application_passwords_available', '__return_true');.
Why does `curl` work but my Python/Node script gets 403 Forbidden?
The host’s web-application firewall (Apache mod_security, Wordfence, Solid Security, Cloudflare WAF) is rejecting the request based on User-Agent before WordPress sees it. Default UAs like python-requests/2.x and Node’s bare node-fetch are on most WAF blocklists. Send a regular browser User-Agent header on every REST call (e.g. Mozilla/5.0 ... Chrome/124.0 Safari/537.36) and the 403 disappears. The bundled MCP server (v1.4.2+) already does this automatically, override with MCP_USER_AGENT if your host has a stricter rule. Symptom signature: curl -u 'user:pass'…
Can the plugin be used to write arbitrary postmeta?
No. Only meta keys belonging to the active SEO plugin (Yoast or Rank Math) are accepted, plus the plugin’s own schema and schema_mode fields and, since 1.9.0, post_title. Other keys are rejected with unknown_or_disallowed_key.
Changelog
Adds schema on taxonomy terms, schema output without an SEO plugin graph, post_title via /bulk, POST /sitemap/flush, and removes Product schema nodes that have no offers, review or rating (filter bulkseme_drop_invalid_product_schema to keep them). Now requires WordPress 5.7.
1.9.0
- New: custom JSON-LD schema on taxonomy terms.
/bulkitems withkind: "term"accept the sameschemaandschema_modefields as posts, stored in term meta under the same keys, andGET /schema?id=<term_id>&kind=term&taxonomy=<slug>reads them back. The schema renders on the first page of the term archive only. On Rank Math the archive keeps itsCollectionPagetype next to an injectedFAQPageinstead of losing it. - New: schema output when no SEO plugin graph is printed. With no Yoast or Rank Math installed, or with their schema output switched off, stored schema is printed as the plugin’s own JSON-LD block (encoded with JSON_HEX_TAG and JSON_HEX_AMP, on top of the existing markup checks). When a graph is printed, nothing changes: the nodes still merge into it. Filter
bulkseme_print_standalone_schemadisables the standalone block. - New:
post_titleaccepted in/bulkitems. Plain text only, slug untouched,edit_postrequired, empty values rejected withempty_post_title./importkeeps treatingpost_titleas a read-only column. - New:
POST /sitemap/flushclears the Rank Math and Yoast sitemap caches (edit_others_postsrequired) so sitemaps pick up REST edits without a wp-admin save. - New: invalid Product schema guard.
Productnodes withoutoffers,revieworaggregateRatingare removed from the Yoast and Rank Math graphs, together with any dangling@idreferences to them. Priced products are untouched. Disable withadd_filter('bulkseme_drop_invalid_product_schema', '__return_false'). /statusnow reportssupports_term_schema,supports_post_title,supports_sitemap_flushanddrops_invalid_product_schema.- Requires WordPress 5.7 or later (was 5.6) for
wp_print_inline_script_tag().
1.8.2
- Security: the custom JSON-LD schema field now rejects any value that contains a raw HTML angle bracket (< or >) when saved, and strips angle brackets from stored schema on output. This closes a stored cross-site scripting issue on Rank Math sites, where a crafted JSON-LD object key could break out of the schema script block. Yoast sites were not affected. No valid JSON-LD needs raw angle brackets, so normal schema is untouched. Reported responsibly by Junhui Mo (Guangzhou University).
1.8.1
- Security:
GET /exportnow capability-filters every row it returns, using the same capability the matching write path enforces. Term rows require theedit_termmeta capability on each term, so taxonomies registered with their own capabilities are respected. CPT archive rows requiremanage_options, matching the archive write path, because those values live in the SEO plugin’s site-wide settings rather than on an object. Post rows are checked withedit_postper post instead of relying on theedit_others_postspre-filter, which covers only the core post capabilities and not custom post types that declare their owncapability_type. Rows the caller cannot manage are omitted, so/exportno longer returns SEO metadata for objects the caller could not open in wp-admin. - Note: a caller who could previously export taxonomy terms or CPT archive settings without holding the matching capability will now receive fewer rows. Administrators, and Editors acting within their own capabilities, see no change.
row_countstill reports the number of rows actually emitted.
1.8.0
- Security: every bulk write now enforces a per-object capability check in addition to the route-level
edit_postsgate.POST /bulk-altschecksedit_poston each resolved attachment, term updates check theedit_termmeta capability on each term, and CPT archive updates now requiremanage_options(they change the SEO plugin’s site-wide settings, the same bar the global scopes already had). Authors and Contributors can no longer touch objects they could not edit in wp-admin. - Changed: writes into Yoast SEO settings now go through Yoast’s own public API instead of updating its stored options directly. Term meta is saved with
WPSEO_Taxonomy_Meta::set_values()(merged with the term’s current values so untouched fields are preserved) and archive/global titles withWPSEO_Options::set(), which routes each key to the right option group, validates it, and clears Yoast’s caches. Rank Math ships no public setter for its title settings, so those writes still read-modify-write the option array Rank Math reads back, through a single documented helper. - Internal: the plugin version constant is now a plain define kept in sync with the plugin header, replacing the runtime header parse.
1.7.0
- Changed:
GET /exportnow returns JSON in the shape{ "filename", "row_count", "csv" }instead of streaming raw CSV bytes. Thecsvfield holds the complete CSV content; save it to a file to open in a spreadsheet. The plugin no longer produces any direct output, so every response flows through the REST API serializer. Query parameters and the CSV column shape are unchanged, and/importaccepts the same CSV as before. - Upgraders: scripts that saved the old raw response body to a file should now read the
csvfield of the JSON response. The bundled MCP server 1.7.0 handles both shapes automatically.
1.6.1
- Fix: image alt updates now resolve far more image URLs to their media-library attachment. Previously the resolver only matched the exact stored file URL, so it missed the most common front-end forms and returned “not in media library” for images that were genuinely in the library. It now also resolves: size crops (foo-1024×683.jpg), the “-scaled” big-image original WordPress generates since 5.3 (whether the page references the scaled file or the plain original), cache-busting query strings, and images served from a CDN or alternate host that keep the /wp-content/uploads/ path. A safe filename fallback resolves year/month folder drift only when exactly one attachment owns that filename, so it never guesses between duplicates. Genuinely external or page-builder-hardcoded images (including most inline SVG icons) still report a clear “not an attachment” hint, since their alt lives in the builder, not the media library.
For developers
Is this your plugin? Show off the numbers.
Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.
Best Bulk SEO Meta Editor for AI A… alternatives
All bulk edit plugins →FAQ
Bulk SEO Meta Editor for AI Agents: quick answers
Straight answers, pulled from live WordPress.org data.
Live data from WordPress.org · checked Oct 3, 2026
Is Bulk SEO Meta Editor for AI Age… free?
Yes. Bulk SEO Meta Editor for AI Age… is free to download and use from the official WordPress.org plugin directory.
Is Bulk SEO Meta Editor for AI Age… safe to use in 2026?
Bulk SEO Meta Editor for AI Age… is a solid plugin choice in 2026, with a few things worth checking first. It runs on 10+ sites and was last updated 3 days ago, and scores 66/100 on our health check.
How many websites use Bulk SEO Meta Editor for AI Age…?
Bulk SEO Meta Editor for AI Age… is active on 10+ WordPress websites and has been downloaded 349 times since it launched in August 2026. It was downloaded 218 times in the last 30 days.
Does Bulk SEO Meta Editor for AI Age… work with WordPress 7.1?
Yes. The developer has tested Bulk SEO Meta Editor for AI Age… up to WordPress 7.1.2, the latest release. It requires WordPress 5.7 or newer.
What PHP version does Bulk SEO Meta Editor for AI Age… need?
Bulk SEO Meta Editor for AI Age… requires PHP 7.4 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.
When was Bulk SEO Meta Editor for AI Age… last updated?
The latest version, 1.9.0, was released on September 30, 2026 (3 days ago).
Who makes Bulk SEO Meta Editor for AI Age…?
Bulk SEO Meta Editor for AI Age… is developed and maintained by puneetindersingh.
What are the best alternatives to Bulk SEO Meta Editor for AI Age…?
The most popular alternatives to Bulk SEO Meta Editor for AI Age… are Quick Featured Images (50K+ installs), BEAR (30K+ installs) and ACF Quick Edit Fields (30K+ installs).
Powered by PageForge
Want thousands of pages that rank like these? Build them in an afternoon.
This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.
- CSV, Google Sheets & API data sources
- AI content, schema & internal links per page
- Works with Elementor, Gutenberg, Yoast & Rank Math
- Free on WordPress.org — no credit card