How to bulk edit Shopify article SEO (at scale)
If you have a dozen Shopify articles, hand-editing them for SEO is annoying but doable. If you have several hundred — or you’ve inherited a store with a multi-year archive across two or three blogs — it’s a wall. You can’t refresh a meta description on every article, fix a heading pattern across the archive, or standardize tags without opening each article in the Shopify admin one at a time. That’s the gap this guide closes.
The problem: Shopify has no real bulk content editor
The Shopify admin lets you list your articles under Online Store → Blog posts, and you can do a few bulk actions from there: change publish status, change author, move articles to a different blog, or delete in bulk. That’s genuinely useful for housekeeping.
But it stops at metadata and status. There is no native way to bulk-edit the things that actually move SEO on a Shopify blog: article bodies, page titles, meta descriptions, internal links, summaries, or heading structure. The SEO surface in particular — Search engine listing preview → Edit website SEO — is shallow (page title plus meta description) and strictly one article at a time. For a 200-article archive, a “quick” meta-description sweep turns into a week of clicking.
The Admin API can technically update articles in bulk, but writing one-off scripts that batch, retry, and respect rate limits is its own project, and the moment you mistype a field path you’ve quietly damaged content on your live store.
The approach: sync down, edit the folder, push back
The fix is to stop editing inside the Shopify admin and bring the whole blog to where bulk edits are easy: a folder of plain markdown files on your Mac.
That round trip is what Specter does. It’s a native macOS app that does two-way sync between Shopify and a local folder. Run the connection flow, pick a folder, and Specter pulls every article from every blog on the store down as a .md file. Crucially, it’s a two-way sync — it can edit articles that are already published, not just create drafts. That’s the whole point for SEO, where the URLs that matter are the ones already ranking.
The workflow looks like this:
- Sync every article down to a folder. Each article becomes a markdown file. Frontmatter at the top preserves the title, handle (URL slug), blog assignment, tags, summary, featured-image URL, and the SEO fields —
meta_titleandmeta_description. - Run one pass across the folder. Hand it to Claude, ChatGPT, Gemini, or any other AI tool (here’s the Claude workflow on Shopify) — or run a five-line Python or shell script. Either operates on the folder like any other set of text files.
- Run a dry-run preview in Specter. Before anything touches your live store, you see exactly which articles will be created, updated, or flagged as a conflict.
- Push back. Specter sends the edits to Shopify over the Admin API once the preview looks right. It batches, throttles, and retries in the background — long sweeps don’t trip Shopify’s rate limits the way ad-hoc scripts do.
Because every editable field lives in the frontmatter or body, this isn’t limited to prose. You can bulk-edit titles, meta descriptions, handles, blog assignments, tags, and summaries the same way you edit the body — they’re just lines in the file.
What’s in the frontmatter
Every Shopify article in your sync folder opens with a YAML block that exposes the SEO and structural surface:
title— the article title that shows in the blogmeta_title— the SEO page title (what shows in the Google result and the browser tab)meta_description— the snippet under the title in search resultshandle— the URL slug, the bit after/blogs/news/in the article URLblog— which blog on the store this article lives in (a store can have multiple)tags— comma-separated tag listsummary— the article excerpt Shopify shows on the blog indexpublished_at,author,featured_image
Everything an article-level SEO sweep touches is in there. The body sits below the frontmatter as plain markdown.
Concrete bulk SEO jobs worth running
These are the tasks that are miserable one-by-one in the Shopify admin and trivial across a folder:
- Generate missing meta descriptions. Find every article with an empty
meta_descriptionand write a ~155-character description from the body. Leave existing ones alone. The meta-description workflow covers this in detail. - Rewrite SEO page titles. Tighten clickbait, front-load keywords, or enforce a length limit across the archive.
- Standardize tags. Merge duplicates (
how-tovshowto), fix casing, and apply a consistent taxonomy. Shopify tags are global per store, so a clean sweep matters. - Reassign articles to the right blog. If you’ve split or merged blogs (say, moving recipe articles out of the main news blog into a dedicated recipes blog), changing the
blogfield in frontmatter does it. - Insert internal links during a rewrite. Have an AI scan each article for mentions of topics covered elsewhere and weave in links to those articles.
- Fix heading structure. Enforce one H1 per article, demote stray H2s that should be H3s, and clean up the hierarchy.
- Update outdated links. Replace dead URLs, old domains, or collection paths that changed. The dedicated internal-link fixing guide covers a Claude-driven version of this.
This is the territory people mean by “programmatic SEO” on Shopify — generating or updating metadata and content at scale with a repeatable process rather than hand-editing each article. A folder of markdown is exactly the input a script wants.
Safety: preview the diff before it touches Shopify
Bulk automation is powerful precisely because it’s indiscriminate, which is also the risk. The dry-run preview is the safety net. It’s not a vague “this will sync N articles” — it shows the actual creates, updates, and conflicts so you can read the blast radius of an edit before a single byte reaches your live store.
Conflict prompts are the second layer. If you changed an article inside the Shopify admin and changed it locally, Specter asks you which version wins instead of silently clobbering one. After a 300-article sweep, that’s the difference between a clean update and a quiet disaster.
A fair warning: review the diff. The fact that you can rewrite every article in one pass doesn’t mean you should mass-publish whatever an AI produced. Spot-check the output, especially on articles that already get traffic.
The mental model
Shopify stays your publishing home. Your Mac holds the source of truth as markdown. The bulk work — whether it’s an AI rewrite or a five-line script — happens in the folder, where doing something to every article at once is the natural case rather than the impossible one. Specter just keeps the two ends honest, within the strict article/blog scope it’s been granted, so a sweeping SEO edit lands exactly the way the preview said it would.