Guide
By Axel Antas-Bergkvist Published May 9, 2026 Updated May 31, 2026

How to bulk-write meta descriptions for WordPress posts

If you’ve got a WordPress site with more than fifty posts, odds are most of them are missing a meta description, or carrying one that Yoast auto-generated three years ago from the first 155 characters of the body. Hand-writing one for every old post is one of those jobs that’s been on your list for two years and will be on it for two more. This guide is the workflow I use to clear that backlog in one pass.

It’s a specific application of the broader bulk SEO edit pattern — sync down, edit the folder, push back — narrowed to the single field that gives you the most search-result lift for the least effort.

Why meta descriptions are worth doing in bulk

The meta description doesn’t directly affect rankings, but it affects whether someone clicks your result. Google rewrites a chunk of them anyway, but the ones you write yourself win more often than auto-generated ones — a meaningful, scannable description is the difference between a 2% click-through and a 5% one across an archive. Multiplied across hundreds of posts, that’s real traffic.

The reason this never gets done is the same reason every bulk content job on WordPress doesn’t: there’s no native interface for it. Yoast and Rank Math both give you a single field per post, inside the Block Editor, one post at a time. The Bulk Edit dropdown in the post list doesn’t touch SEO fields. So you stare down 300 posts and your good intentions die.

Works for Yoast and Rank Math

Both plugins expose the meta description through the WordPress REST API. Yoast uses _yoast_wpseo_metadesc, Rank Math uses rank_math_description, but Specter normalizes both into the same frontmatter key. You write locally; Specter writes back to whichever plugin you’re using. SEOPress and All in One SEO work the same way — check one post round-trips correctly before running anything in bulk.

The workflow

This is the same shape as every bulk job — covered in detail in bulk edit WordPress for SEO — applied to one field.

  1. Sync your site down to a folder. Connect Specter with your site URL, username, and an Application Password, pick a local folder, and let it pull every post. Each post becomes a .md file with frontmatter at the top.
  2. Open one post and find the meta-description field. Depending on your setup it’ll be meta_description, description, or the plugin-specific name. It’s a single line near the top of the frontmatter, often empty or auto-filled.
  3. Hand the folder to your AI. Claude, ChatGPT, Gemini, whichever you already use (Claude workflow). The instruction is the important part — see the prompt below.
  4. Preview the diff. Specter’s dry-run shows you every post that would be updated, the old value, and the new value. Read through the list. If 80% look good and 20% are garbage, push the good ones and refine the prompt for the rest.
  5. Sync back. One push, and the descriptions land in Yoast or Rank Math on your live site.

A prompt that respects existing descriptions

The hard part isn’t generating descriptions — it’s not nuking ones you’ve already written by hand. This prompt does the right thing:

Look through every .md file in this folder. For each post:

- If the meta_description field in the frontmatter is empty
  or matches the first 155 characters of the post body
  (i.e. it was auto-generated), write a new one based on
  the post body. Aim for 145 to 160 characters, lead with
  the reader's problem or the post's payoff, and don't end
  on a cut-off word.

- If the meta_description is already a hand-written sentence
  that doesn't match the post's opening, LEAVE IT ALONE.
  Print "skipped: existing description" for that file.

Don't touch any other field. Don't touch the post body.

The two rules that matter: only fill empty or obviously-auto-generated descriptions, and tell the AI explicitly to log skips. The skip log is how you verify it didn’t quietly overwrite your good ones — if the count of “skipped” lines matches the count of posts where you remember writing the description by hand, you’re safe.

Preview, then push

The dry-run preview is non-negotiable for this kind of job. You’re touching every post in your archive. Specter’s preview lays out the full list of changes — every post, old value, new value — before anything reaches WordPress. Scroll through it. Spot-check a dozen random rows. If something looks off, cancel the sync, fix the prompt, regenerate.

Conflicts are the second safety net. If a post got edited in wp-admin after you synced down — maybe a teammate updated the description in Yoast while you were running the AI pass — Specter flags the conflict instead of clobbering their work, and asks which version wins.

Where this fits

Meta descriptions are the highest-ROI bulk SEO job because every post needs one, the field is small, and the AI is genuinely good at writing them. The same sync-edit-preview-push loop opens up the rest of the bulk SEO checklist: rewriting SEO titles, refreshing old posts, standardizing categories. The setup is the same; the prompt is what changes. Start with descriptions.

Buy Specter Pro — $99/year Browse all WordPress guides