Skip to content
WP Visibility

Working with an assistant guide

Bulk Draft Missing Meta Descriptions With a Reviewable Sample

Freeze a list of posts with no description, draft each one from its own page, review a small sample in the queue, then verify the rendered tag before doing the rest.

Published

On this page

To fill missing meta descriptions with an assistant, freeze the list of posts first, have the assistant draft each description from that page’s own text, and send every description as its own change so each one can be reviewed and rejected on its own. Review a first sample of five to ten in full, fix the instructions if the sample shows a pattern of errors, and check the rendered tag on the live page before you run the rest. Pages that do not contain enough information to describe go on a separate list for a person to handle.

This guide assumes the assistant is already connected. If it is not, start with Connect an Assistant to Your WordPress SEO. For what makes a description good in the first place, see Write Useful Meta Descriptions for WordPress Pages. The job here is narrower: produce accurate, page-specific text at volume without losing track of what changed.

Check whether you need an assistant for this

Two cheaper routes exist, and one of them may be enough.

  • A template. WP Visibility’s shipped post description template is {excerpt}, so a post with no description of its own already prints its excerpt or the opening of its content. If those openings are decent summaries, that may already be enough; where they are not, writing excerpts by hand may be the better fix.
  • The built-in audit. With the Autopilot module on, the Run audit button in WP Visibility → Review queue looks at up to 50 of the newest published posts with no hand-written description and queues a proposal for each one that has text to draw from and does not already have an open proposal. The proposed text is the post’s excerpt or the opening of its content, the same text the template already prints, so approving it stores that fallback rather than a new summary. It needs no assistant. See Run the Site Audit.

Use an assistant when you want drafting that reads the whole page and follows your own rules, and you are prepared to review the result.

Google does not object to generated descriptions as such. Its snippet documentation, checked September 27, 2026, says programmatic generation “can be appropriate” for larger database-driven sites, and also that identical or similar descriptions on every page “aren’t helpful”. Its guidance on generative AI content, checked September 27, 2026, names meta descriptions among the metadata to check for accuracy, quality, and relevance.

Select and freeze the target list

A moving target list is how a batch loses track of itself. Make the list once, save it, and work only from the saved copy.

With an administrator connection, the assistant can build the list with a bulk dry run. In WP Visibility 2.10.3, the bulk-update-seo ability accepts a missing_description filter, a post type, and a limit of up to 100, and with dry_run set to true, its default, it changes no posts. It returns the matching published posts, newest first and no more than the limit, with post ID, title, and permalink. It needs a placeholder value in set to run, which the dry run never applies.

A request you can give the assistant:

Run bulk-update-seo as a dry run with filters post_type “page”, missing_description true, limit 50, and set description “placeholder”. Do not run it with dry_run false. Return a table of post ID, title, and permalink, and nothing else.

Save that table to a file with three more columns: source_ok, proposal_id, and verified. That file is the job.

Two details about what “missing” means. The filter counts a post as missing when it has no hand-written description in WP Visibility’s own field, so a post that relies on its excerpt is on the list even though it prints something. And the bulk ability needs manage_options, which in a default install means an Administrator. If the assistant connects as an Editor, build the list yourself (for example from the posts screen, where WP Visibility’s SEO column says No description) and give it the IDs.

Draft only from recorded page facts

For each ID on the list, the assistant should read the page before writing anything. The serialize-content ability returns the post body as markdown; get-post-seo returns the current SEO fields and the permalink. Both are reads.

Give the drafting rules in the request, and make the stop rule explicit:

For each post ID in this list, call serialize-content and read the page. Write one meta description, 70 to 160 characters, using only facts stated on that page. Do not add prices, locations, guarantees, awards, or service names that the page does not state. If the page has too little text to summarize, or you cannot tell what it offers, do not write a description: mark it “insufficient source” and give the reason.

The 70 to 160 range matches the typical range shown by WP Visibility’s editor meter. Google itself states no length limit and truncates as needed, per the snippet documentation above, so treat the range as an editing convention.

The “insufficient source” pages are the useful part of the output. A contact page with a form and a single sentence, a gallery page with images and no text, or a landing page that exists only for a campaign are all examples (illustrative, not from a real site). Those pages need a person to decide what they are for, or they need better content, and a confident sentence from an assistant would hide that.

One bounded description batch. Freeze the list: Save IDs once from a dry run or by hand. Draft from the page: Page facts only, or mark insufficient source. Review then verify: Read the sample, then check the live tag.
The order of one batch, not a measured workflow. An assistant's description changes become proposals when Assistant connection and Autopilot are on and Assistant changes is set to Hold for my review.

Send each description as its own change

It is tempting to use one bulk call for the whole list. Do not. In 2.10.3, bulk-update-seo applies one change set to every matched post: the same description on all of them. That fits a noindex change across a group; it does not fit descriptions, which should differ per page.

Instead, have the assistant call update-post-seo once per post, with the post ID, the description, and a short reason citing what on the page it summarized. With the Assistant connection and Autopilot modules on and Assistant changes set to Hold for my review, each call creates a proposal instead of writing, and the assistant receives a proposal ID. With Apply immediately selected, or with the Autopilot module off, the same call writes straight to the site, so check that setting before the batch starts.

Record each proposal ID in the file. A proposal ID is a successful result. If the assistant treats it as a failure and calls again, it creates a duplicate proposal, because repeated calls are not merged.

Two limits shape the batch size:

  • The Assistant write limit (per hour) counts write requests per WordPress user and client label, 100 by default in 2.10.3. Queued proposals count, and so does the bulk dry run. Resume a Rate Limited SEO Batch explains how the window works and how to continue if a batch stops partway.
  • Your reading time. Every proposal needs a person to read it against the page.

Review a sample before the rest

Send only the first five to ten posts. Open WP Visibility → Review queue and read each proposal’s diff next to the page itself. Approve or Reject a Proposal covers the controls.

For each one, check:

  1. Every factual detail in the description appears on the page.
  2. It describes this page, not the site in general.
  3. It does not repeat the wording of another description in the sample.
  4. It does not promise something the page does not.

Reject the ones that fail. If two or more fail for the same reason, change the drafting instructions and redraft those posts before sending more. If the sample passes, continue in batches you can read in one sitting.

Verify accepted changes on the live page

An approved proposal is applied through the plugin’s normal write path, but confirm the output. For each approved post, fetch the page and read the tag:

curl -s https://example.com/sample-page/ | grep -i 'name="description"'

Compare it with the approved text and mark the row verified. If the page shows the old value, clear the page cache or CDN and fetch again. If it still differs, check whether a theme or another plugin prints its own description tag.

If an approved description turns out to be wrong, Revert this change on the proposal restores the post’s SEO fields as they were just before approval. In 2.10.3 it does not check for later edits, so any SEO change made to that post since approval is overwritten too; check the post before you revert. See Undo a Change the Assistant Made.

Checklist

  • Target list saved once, with IDs and permalinks.
  • Drafting rule: facts from the page only, with an explicit “insufficient source” outcome.
  • One update-post-seo call per post, never a live bulk call for descriptions.
  • Hold for my review confirmed before the first call.
  • First sample reviewed in full against the pages.
  • Rendered tag checked on each approved page.
  • “Insufficient source” pages handed to a person.

Read next

WordPress SEO with your own assistant.

WP Visibility is $99 a year for unlimited sites, client sites included, with a 30-day refund. Use its SEO tools in WordPress or connect a supported assistant. Read how proposal review and permissions work.