Guide
By Axel Antas-Bergkvist Published May 21, 2026 Updated May 29, 2026

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 the specific case of generating meta descriptions across an entire Shopify archive in a single pass — without overwriting the descriptions you’ve already carefully written, and without trusting a script to write directly to your live store.

Why Shopify’s admin makes this painful

Shopify exposes meta descriptions through the article’s metafields_global_description_tag (often surfaced in the admin as “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: get every article into a folder first

The fix is to stop editing one-at-a-time in the admin and operate on the whole archive as a folder of files. Connect Specter to your store via the OAuth flow, pick a sync folder, and every article appears as a .md file. Each one has frontmatter at the top:

---
title: "How we source our beans"
handle: "how-we-source-our-beans"
blog: "news"
meta_title: "How we source our beans — Acme Coffee"
meta_description: ""
tags: ["sourcing", "coffee"]
summary: "Inside the trips, the relationships, and the cup quality test."
---

The meta_description field is what we care about. An empty string means there’s nothing set on the Shopify side. A non-empty string means a human (or a previous pass) already wrote one.

Once your archive is in a folder, finding the gap is one search. Any editor that handles markdown can show you every file with an empty meta_description: "". A grep -r 'meta_description: ""' will do it from the terminal.

The AI prompt that respects existing values

Hand the folder to Claude, ChatGPT, or whichever AI tool you prefer (here’s the Claude workflow on Shopify) and give it a tightly-scoped instruction. The pattern that works:

Go through every .md file in this folder. For each file, check the meta_description field in the frontmatter.

Output the modified files in place. List the files you changed and the files you left alone.

The two clauses that matter are leave existing values alone and don’t touch anything else. AI tools love to “improve” things they weren’t asked to improve — a sentence near the top of the prompt explicitly forbidding it cuts most of the drift.

For an archive with mixed quality you might want a second pass that targets descriptions over 160 characters (Google truncates around there) or ones written in the wrong tense — but keep each pass narrow. One job per sweep is the rule that keeps bulk edits trustworthy.

Preview the diff before anything touches Shopify

Run a dry-run preview in Specter before pushing. The preview shows you, file by file, exactly which articles 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 file is meta_description, going from "" to a real sentence.

If you see body changes, title changes, or anything in the tags — that’s drift. Back out, scold the AI, and re-run with a tighter prompt. The diff is the safety net specifically so that you catch this before it ships.

When the diff looks right, push. Specter sends the updates to Shopify over the Admin API, batched and throttled so it doesn’t trip rate limits. A 200-article sweep typically completes in a couple of minutes.

What this looks like on the live store

After the push, every article that previously had no meta description has one. Open one in the Shopify admin, click Edit website SEO, and you’ll see the description Specter wrote sitting in the Meta description field — exactly as it would be if you’d typed it yourself.

Google won’t necessarily use the description 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 Specter pulls pages into the sync folder alongside articles. Run the same prompt across the pages folder.

It does not work for product descriptions or collection descriptions. Specter only requests the read_content and write_content scopes, which cover articles, blogs, and pages — not products. Product SEO is a separate surface that lives outside Specter’s scope. If you need it, you need a different tool.

When to run this

Once on the initial sweep of the archive. Then optionally as a recurring habit: every few months, sync down, run the same prompt, and any articles published in the meantime without descriptions get backfilled. The full bulk-SEO toolkit beyond meta descriptions — titles, tags, internal links — is covered 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.

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