Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
40rty-ai avatar

Shopify Admin Seo Metadata Audit

  • 7 installs
  • 173 repo stars
  • Updated June 26, 2026
  • 40rty-ai/shopify-admin-skills

shopify-admin-seo-metadata-audit is a Claude Code skill that scans Shopify products, collections, and pages for missing or short SEO titles and meta descriptions.

About

shopify-admin-seo-metadata-audit scans active products, collections, and pages and flags records with missing or short SEO titles and meta descriptions. A merchandiser runs it to find and prioritize SEO gaps by traffic potential. It is read-only and outputs a prioritized list.

  • Scans products, collections, and pages for missing SEO titles and meta descriptions
  • Flags short titles/descriptions against configurable length thresholds
  • Read-only; prioritizes gaps by traffic potential

Shopify Admin Seo Metadata Audit by the numbers

  • 7 all-time installs (skills.sh)
  • Ranked #1,549 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

shopify-admin-seo-metadata-audit capabilities & compatibility

Free; needs a Shopify CLI session with read_products and read_content scopes

Capabilities
seo audit · metadata audit · content audit
Use cases
seo
Runs
Runs locally
Pricing
Free
From the docs

What shopify-admin-seo-metadata-audit says it does

Scans all active products, collections, and pages and flags records with missing or short SEO titles
SKILL.md
Produces a prioritized list of SEO gaps sorted by traffic potential (products → collections → pages).
SKILL.md
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-seo-metadata-audit

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs7
repo stars173
Last updatedJune 26, 2026
Repository40rty-ai/shopify-admin-skills

What it does

A store owner audits products, collections, and pages for missing or short SEO metadata.

Who is it for?

Store owners finding SEO metadata gaps across the catalog

Skip if: Writing or fixing the metadata (this skill only audits, read-only)

When should I use this skill?

You want to find products, collections, or pages missing SEO titles or descriptions

What you get

A prioritized list of records with missing or short SEO titles and descriptions.

  • prioritized list of SEO metadata gaps

By the numbers

  • default min_title_length 10 characters
  • default min_description_length 50 characters
  • scans 3 record types (products, collections, pages)

Files

SKILL.mdMarkdownGitHub ↗

Purpose

Scans all active products, collections, and pages and flags records with missing or short SEO titles (seo.title) and meta descriptions (seo.description). Produces a prioritized list of SEO gaps sorted by traffic potential (products → collections → pages). Read-only — no mutations.

Prerequisites

  • Authenticated Shopify CLI session: shopify store auth --store <domain> --scopes read_products,read_content
  • API scopes: read_products, read_content

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
min_title_lengthintegerno10Flag SEO titles shorter than this (characters)
min_description_lengthintegerno50Flag meta descriptions shorter than this (characters)
scopestringnoallWhat to scan: products, collections, pages, or all
formatstringnohumanOutput format: human or json

Safety

ℹ️ Read-only skill — no mutations are executed. Safe to run at any time.

Workflow Steps

1. OPERATION: products — query (if scope includes products) Inputs: query: "status:active", first: 250, select seo { title, description }, pagination cursor Expected output: All active products with SEO fields; paginate until hasNextPage: false

2. OPERATION: collections — query (if scope includes collections) Inputs: first: 250, select seo { title, description }, pagination cursor Expected output: All collections with SEO fields

3. OPERATION: pages — query (if scope includes pages) Inputs: first: 250, select seo { title, description }, pagination cursor Expected output: All pages with SEO fields

4. Flag records: missing title, missing description, title < min_title_length, description < min_description_length

GraphQL Operations

# products:query — validated against api_version 2025-01
query ProductSEO($after: String) {
  products(first: 250, after: $after, query: "status:active") {
    edges {
      node {
        id
        title
        handle
        seo {
          title
          description
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
# collections:query — validated against api_version 2025-01
query CollectionSEO($after: String) {
  collections(first: 250, after: $after) {
    edges {
      node {
        id
        title
        handle
        seo {
          title
          description
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
# pages:query — validated against api_version 2025-04
query PageSEO($after: String) {
  pages(first: 250, after: $after) {
    edges {
      node {
        id
        title
        handle
        seoTitle: metafield(namespace: "global", key: "title_tag") { value }
        seoDescription: metafield(namespace: "global", key: "description_tag") { value }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Session Tracking

Claude MUST emit the following output at each stage. This is mandatory.

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: SEO Metadata Audit                   ║
║  Store: <store domain>                       ║
║  Started: <YYYY-MM-DD HH:MM UTC>             ║
╚══════════════════════════════════════════════╝

After each step, emit:

[N/TOTAL] <QUERY|MUTATION>  <OperationName>
          → Params: <brief summary of key inputs>
          → Result: <count or outcome>

On completion, emit:

For format: human (default):

══════════════════════════════════════════════
SEO METADATA AUDIT
  Products scanned:     <n>  |  Missing SEO: <n>
  Collections scanned:  <n>  |  Missing SEO: <n>
  Pages scanned:        <n>  |  Missing SEO: <n>

  Top gaps (products):
    "<title>" — missing: description
    "<title>" — title too short (<n> chars)
  Output: seo_audit_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "seo-metadata-audit",
  "store": "<domain>",
  "summary": {
    "products": { "scanned": 0, "missing_title": 0, "missing_description": 0, "short_title": 0, "short_description": 0 },
    "collections": { "scanned": 0, "missing_title": 0, "missing_description": 0 },
    "pages": { "scanned": 0, "missing_title": 0, "missing_description": 0 }
  },
  "output_file": "seo_audit_<date>.csv"
}

Output Format

CSV file seo_audit_<YYYY-MM-DD>.csv with columns: type, id, title, handle, seo_title, seo_description, issue

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
Empty storeNo products/collections/pagesExit with summary: 0 records

Best Practices

  • Prioritize fixing missing meta descriptions on top-selling products first — descriptions appear in search result snippets and directly impact click-through rate.
  • A good SEO title length is 50–60 characters; meta descriptions should be 120–160 characters. Adjust min_title_length and min_description_length to match these targets.
  • Run monthly as part of a catalog hygiene routine, especially after bulk product imports which often omit SEO fields.
  • After fixing gaps, pair with product-data-completeness-score for a comprehensive catalog quality view.

Related skills

FAQ

What does it flag?

Missing titles, missing descriptions, titles shorter than min_title_length, and descriptions shorter than min_description_length.

What can it scan?

Products, collections, pages, or all of them via the scope parameter.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.