Guide
How to bulk-write meta descriptions for Shopify articles
Open any Shopify article in the admin, scroll past the body, and you’ll find a small section called Search engine listing preview with an Edit website SEO link. Click it and you can set the page title and meta description for that one article. It’s a fine UI for editing one article. It’s a catastrophe when you have two hundred articles and most of them are missing a meta description.
This guide covers generating meta descriptions across an entire Shopify archive in a single pass — without overwriting the descriptions you’ve already carefully written, and without ever publishing a change you haven’t seen.
Why Shopify’s admin makes this painful
Shopify surfaces meta descriptions through the article’s “page description.” There’s no list view that shows which articles have one and which don’t. There’s no bulk-edit panel. There’s no filter for “articles missing a meta description.”
So if you want a complete sweep, the manual flow is: open each article, click Edit website SEO, scroll, read the body, write a description, save, close, next article. For a 200-article store that’s a solid week of stupid work. And the moment you stop midway, you’ve lost track of which ones you’d already done.
The setup: bring the whole archive into one workspace
The fix is to stop editing one-at-a-time in the admin and operate on the whole archive at once. Connect your Shopify store in the browser and every article lands in your workspace as clean, structured content, with its SEO fields exposed alongside the body:
meta_title— the SEO page titlemeta_description— the snippet under the title in search resultshandle,blog,tags,summary, and the rest
The meta_description field is what we care about. Empty means there’s nothing set on the Shopify side; non-empty means a human (or a previous pass) already wrote one. With the whole archive in one place, the gap is visible at a glance, and the AI can act on it across every article at once.
The recipe that respects existing values
Run a tightly-scoped AI recipe across your connected articles, with the whole blog as context. The pattern that works:
Go through every article in this blog. For each one, check the
meta_descriptionfield.
- If it’s non-empty, leave the article completely untouched. Do not rewrite, do not “improve,” do not standardise it.
- If it’s empty, read the article body and write a meta description: 140–155 characters, descriptive of what the reader will get, no clickbait, no emoji, no quotation marks. End with a period.
- Do not modify any other field. Do not modify the body.
The two clauses that matter are leave existing values alone and don’t touch anything else. AI loves to “improve” things it wasn’t asked to improve — a sentence near the top explicitly forbidding it cuts most of the drift. Because the recipe runs across the whole archive, the “skip ones that already have a description” rule applies everywhere in one pass.
Browsing and reviewing are free; only the AI run spends credits, and every workspace opens with 500 free — enough to see exactly what a meta-description pass does across your archive. For an archive with mixed quality you might run a second pass targeting descriptions over 160 characters (Google truncates around there), but keep each pass narrow. One job per recipe is the rule that keeps bulk edits trustworthy.
Review the diff before anything touches Shopify
Before anything ships, the workspace shows you a dry-run diff — article by article, exactly which ones will be updated, with the old and new value of every changed field. For a meta-description sweep that’s gone right, you’ll see a long list of updates where the only changed line in each article is meta_description, going from empty to a real sentence.
If you see body changes, title changes, or anything in the tags — that’s drift. Send those back and re-run with a tighter recipe. The diff is the safety net specifically so you catch this before it ships.
When the diff looks right, publish. Spectersync sends the updates to Shopify over the Admin API, batched and throttled so it doesn’t trip rate limits, and keeps a snapshot behind the publish so you can roll back. A 200-article sweep typically completes in a couple of minutes.
What this looks like on the live store
After the publish, every article that previously had no meta description has one. Open one in the Shopify admin, click Edit website SEO, and the description sits in the Meta description field — exactly as if you’d typed it yourself.
Google won’t necessarily use it verbatim — it picks what it thinks is most relevant for the query — but for a long tail of branded and informational searches it tends to use what you provide. The point of the sweep isn’t perfect descriptions on every article; it’s the difference between “no description, Google guesses from body text” and “intentional description, ~155 characters, written for the reader.”
A note on Shopify’s other content surfaces
This same pattern works for pages — your About, Contact, Shipping pages — because Shopify exposes the meta description field the same way for pages as for articles, and Spectersync handles pages alongside articles. Run the same recipe across your pages.
It does not work for product or collection descriptions. Spectersync’s scope covers articles, blogs, and pages — not products. Product SEO is a separate surface outside its scope.
When to run this
Once on the initial sweep, then optionally as a recurring habit: every few months, run the same recipe and any articles published in the meantime without descriptions get backfilled. The full bulk-SEO toolkit beyond meta descriptions — titles, tags, internal links — is in bulk-edit Shopify article SEO.
The point isn’t to automate SEO end-to-end. It’s to remove the friction that makes you skip the boring-but-important parts. Meta descriptions are the canonical example: every article should have one, almost no archive does, and the gap exists entirely because the admin makes filling it tedious.
Prefer to run it locally?
If you’d rather sweep a folder of .md files on your own machine — finding the gap with grep and running your own AI or script, engine local — the same meta-description workflow is covered for the desktop and open-source edition. Subscribe now →