← /how-to/

How to bulk update meta titles and descriptions across your CMS with AI

Your crawl found 400 meta gaps. Pull every platform into local files, let AI write titles and descriptions to length, and approve each diff before it ships. Try it now free → or book a demo with Curtis

A meta description is a 90-second fix: find the page, open its settings, read enough of it to say something true, type 150 characters, save. The trouble is the multiplier. This morning's crawl found 314 pages missing a description and 80 titles past the limit, call it 400 of those 90-second fixes, and 400 at 90 seconds is 10 hours of typing 150 characters at a time, spread across the Shopify admin, the Webflow page settings, the WordPress sidebar, and the Wix SEO panel, with nothing tracking which of the 400 you have already done.

The writing stopped being the hard part the day AI learned to produce a competent 150 characters. The hard part is everything around the writing: getting 400 pages in front of the model with their full content, getting 400 fields back into 4 different admins, and knowing each one is true to its page and under the cap before it is public. The fix attacks all three at once. The pages come down as local files. Your agent runs the audit and writes to spec. Each field comes back as a diff against the page it describes, and nothing ships unread.

Your options

One page at a time, in the editor

The per-page route has the one thing no bulk tool gives you: full context. The snippet preview in the WordPress sidebar, Shopify's search engine listing, the Wix SEO panel, each shows the result while you write it, and a description written while looking at the page is usually a good one. The arithmetic is the problem. 90 seconds each is fine for the 12 pages a crawl finds on a small site. The audit said 400, across 4 admins, and the editor keeps no list of which ones are done. The crawl report becomes the checklist, and the checklist lives in your head.

Bulk tables in your SEO plugin or platform

Most platforms have grown a table view for exactly these two fields. A WordPress SEO plugin's bulk editor lists titles and descriptions one row per post, and its own help pages concede that proper optimization still means opening each post. Wix's Edit by Page is the native version: a searchable table of titles, descriptions, and slugs, covering some page types but not all. Shopify's bulk editor can surface the SEO columns for products, and Webflow has marketplace apps that do the same for its SEO tags. All of them remove the clicking. None of them write a word for you (some now bolt on an AI generator, covered below), show a snippet preview in the table, or reach past their own platform.

A CSV round trip

Shopify's product CSV carries SEO Title and SEO Description columns, matched on Handle, and a spreadsheet can at least count characters with a formula. The edges are specific. The export shows a blank where Shopify reuses the product title as the SEO title, so you cannot tell missing from inherited. Editing a Handle creates a duplicate product. The native CSV covers products only; pages and blog posts need an app. Webflow's CSV import can update matching items if the Item IDs survive your spreadsheet. Wix has no documented CSV path for these fields at all. Shopify's import writes straight to live; Webflow's lands staged until your next site publish. Either way there is no per-field preview and no undo built in.

AI meta generators that write straight to live

Every platform's app store has these now, and Wix ships one natively in its SEO panel. They solve both halves: the tool reads the page, writes the title and description, and fills the field. For a 20-page site that may be all you need, and it is the honest benchmark every other option should beat. The trade is where the output lands. It lands in the live field, at tool speed, with no diff and no length contract beyond the defaults. When a generator fills 400 descriptions, somebody either reads them after they are public or never reads them at all. And each generator stops at its platform's border, so a 4-platform audit becomes 4 subscriptions.

Scratch

Scratch turns the 4 admins into one folder of local files. On Shopify and Webflow the SEO fields sit in plain text next to each page's content; WordPress needs its plugin meta surfaced first, and the Wix blog brings title, excerpt, and SEO slug rather than meta fields (the coverage question below has the exact lists). Your own agent runs the audit, one search across every folder, then writes each missing or over-length field from the page's own body. Validators run before review, so the caps you set actually hold. Every new title and description comes back as a word-level diff against the original, you approve per item, and approved fields publish back through each platform's API (on Wix, to the post's draft). Published items revert per item. The bill arrives at review: 400 short diffs is an hour or two of reading, a fraction of the 10 hours of typing, and the reading is not delegable.

Option All 4 platforms Finds the gaps Writes the copy Review before live Undo after publish
In the editor, one page at a time No No, the crawl does You do The snippet preview No
Plugin and native bulk tables One each Sortable blanks You do, row by row No No
CSV round trip Not Wix Blank cells, ambiguously Bring your own No No, unless you exported first
AI meta generators One each Yes Yes Rarely No
Scratch Shopify and Webflow in full, WordPress via plugin meta, Wix blog partially (see FAQ) Yes, one grep Yes, your agent Every field, as a diff Per item, even after publish

How the loop works on 400 pages

  1. Scratch pulls all four platforms into one workspace. Shopify products, pages, and articles land as files with their SEO title and meta description fields. Webflow pages arrive with their SEO and Open Graph metadata, collection items with the fields their template pages bind to. WordPress SEO fields are plugin-owned post meta, hidden by default, so you surface them deliberately before the run. The Wix blog carries title, excerpt, and SEO slug only. Four folders, side by side, on your laptop, with each connector's exact field list published for Shopify, Webflow, WordPress, and Wix. Nothing live has changed.
  2. Your agent runs the audit, then writes to spec. Wired to each platform's MCP server, an agent reads one record per call: at a typical 2 calls a second, reading the 1,400 pages behind your 400 fixes is about 12 minutes of round trips before the first word, and writing back is the same trip again. Against files it is one grep for empty or absent description fields, back in about a second. The agent builds an index of every page with its title length and H1, flags the template line stamped across 40 pages, then takes the brief. Fill every empty meta description from the page's own body, 150 characters or fewer, front-load what the page is about, no adjective the page does not earn. Trim every title over 60 characters without losing its main keyword, and keep it matched to the H1. The agent holds no API token while it works.
  3. You review every field as a diff and publish. Validators run first: a 161-character description fails the check before it reaches your queue, and the body fields you did not ask for stay untouched, which the diff proves. Then you read. Each new title sits next to the old one, each new description next to the blank it fills. The finding, counting, and writing were the 99% the agent owns. The 1% it cannot own is what your pages say about themselves on a results page, and that part stays with you, at the speed you can read. Approve per item, and Scratch writes only approved fields back.

Start with the 314 blanks. Backfilling an empty field is the safest batch you will ever review, because the value it replaces is nothing.

Where the limits actually come from

Questions people ask

Will Google show what I write, or rewrite it?

Not always. The large public studies put title rewrites above 60% of results, and descriptions get replaced with page text at a similar rate, even when they are sized correctly. What survives best is specific: titles of 51 to 60 characters were rewritten least in an 80,000-title study, and titles that matched the page's H1 also survived better. That is why the brief in the loop above pins length and H1 agreement. Write for the case you control, and accept that Google edits the rest.

Can canonical tags be fixed in the same pass?

No. On most platforms the canonical is not a per-record content field, so there is nothing in the files to edit. Shopify renders it from the theme, Webflow builds it from a site-wide setting with per-page overrides only through custom code, Wix generates it automatically with edits buried in advanced settings, and WordPress canonicals come from core or your SEO plugin, self-referencing by default. Scratch does not claim canonical fields on any of these platforms. That job lives in your theme, your site settings, or your plugin configuration, and Google treats the tag as a hint, not a rule, so fix the duplicate content too.

Does it cover the same fields on every platform?

No. Shopify claims SEO title and meta description on products, pages, blogs, and articles. Webflow claims page metadata, SEO and Open Graph included, plus the collection fields its template pages bind their tags to. In WordPress the SEO fields belong to your plugin and live in post meta, which Scratch keeps out of the default view exactly so other jobs cannot write into them by accident; surfacing them is a deliberate act, not a default. The Wix connector covers the blog, drafts only: title, excerpt, and SEO slug, not a sitewide per-page meta description table, and an approved edit lands on the post's draft rather than the live version. If Wix pages matter to your audit, tell Curtis.

Can a 161-character description slip through?

No. Once you set the cap, validators run before anything reaches review, and an over-length field fails the check instead of costing you a read. Two honest footnotes. The 160 is your convention, picked to survive desktop truncation, not a rule Google enforces. And Shopify applies its own 70-character title cap at the platform whatever you set. The point of the validator is the contract: the cap you pick holds across all 400 fields without anyone counting characters by hand.

Will the AI write a description that does not match the page?

It can. A description that confidently summarizes the wrong thing passes every length check, so the cap alone will not save you. The agent writes from the page's own body, the whole file rather than a URL list, which removes most of the guessing. What remains is for the diff: the new description sits next to the page it claims to describe, and you catch the mismatch there, before Google caches it under the page's own URL.

Can I undo a published batch?

Yes. Reverts run per item: the original value stays next to every published change, and rejecting a change puts the old value back. For the 314 fields that started blank, the old value is blank, so a revert returns the page to missing rather than to wrong. Which is one more reason the blanks are the batch to start with.

Do I need to write the scripts myself?

No. The grep, the length index, and the character counting are the agent's work; you write the brief in plain English and read the diffs. If you can describe the cap and the voice, you can run the job. Set validators up the second time, when the monthly crawl makes this a routine instead of a rescue.

See it on your own pages

Your crawl already gave you the number. Watch the loop clear it on your own pages. See it run on your pages →, or download Scratch free, connect one platform tonight, and run the grep. Knowing your real gap count costs nothing, even if you stop there.

See it run on your own content.

Curtis runs these calls himself. Thirty minutes, no pitch, no slides. He connects your platforms live and shows you your content as an editable, reviewable diff. Bring anything sticky: a refresh, a migration, or a rebrand.

See it run on your content → or download it free