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

Shopify Admin Page Content Audit

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

shopify-admin-page-content-audit is a Claude Code skill that lists all Shopify pages and blog posts and flags empty or short content and missing SEO fields.

About

This skill scans every Shopify page and blog article for missing or thin content and missing SEO title/description fields. A store manager uses it to find pages penalized by search engines or that create a poor customer experience, especially after a CMS migration or theme change. It is read-only and produces a dated CSV of flagged issues.

  • Scans all Shopify pages and blog articles for thin or empty content
  • Flags missing SEO title and description fields
  • Read-only; outputs a dated content-audit CSV

Shopify Admin Page Content 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-page-content-audit capabilities & compatibility

Free skill; requires an authenticated Shopify store session with read_content scope.

Capabilities
content audit · seo audit · thin content detection
Works with
github
Use cases
seo
Runs
Runs locally
Pricing
Bring your own API key
Requires keys
SHOPIFYSTOREADMINAUTHVIASHOPIFYCLI
From the docs

What shopify-admin-page-content-audit says it does

Scans all store pages and blog articles for missing or thin content (short body, missing SEO title/description, empty body).
SKILL.md
A page with fewer than 300 words is generally considered "thin content" by search engines
SKILL.md
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-page-content-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

Audit Shopify pages and blog posts for thin content and missing SEO fields.

Who is it for?

Store managers auditing content pages and articles for thin content and missing SEO metadata.

Skip if: Auditing products and collections; it explicitly complements seo-metadata-audit which covers those.

When should I use this skill?

You need to find thin-content or SEO-incomplete Shopify pages and blog articles, e.g. after a CMS migration.

What you get

A dated CSV lists every page and article with empty/short body or missing SEO title/description.

  • CSV content_audit_<date>.csv with type, title, body_length, has_seo_title, has_seo_description, issue columns

By the numbers

  • 9-column output CSV
  • default min_body_length of 100 characters

Files

SKILL.mdMarkdownGitHub ↗

Purpose

Scans all store pages and blog articles for missing or thin content (short body, missing SEO title/description, empty body). Thin content pages are penalized by search engines and create a poor customer experience. Read-only — no mutations. Complements seo-metadata-audit (which covers products and collections).

Prerequisites

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

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
min_body_lengthintegerno100Flag pages with body content shorter than this (characters)
include_unpublishedboolnofalseAlso audit unpublished pages and articles
formatstringnohumanOutput format: human or json

Safety

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

Workflow Steps

1. OPERATION: pages — query Inputs: first: 250, select title, body, bodySummary, seo, publishedAt, pagination cursor Expected output: All pages with content and SEO data

2. OPERATION: articles — query Inputs: first: 250, select title, body, seo, publishedAt, blog { title }, pagination cursor Expected output: All blog articles with content data

3. Flag: empty body, body < min_body_length, missing SEO title, missing SEO description

GraphQL Operations

# pages:query — validated against api_version 2025-04
query PageContentAudit($after: String) {
  pages(first: 250, after: $after) {
    edges {
      node {
        id
        title
        handle
        publishedAt
        bodySummary
        body
        seoTitle: metafield(namespace: "global", key: "title_tag") { value }
        seoDescription: metafield(namespace: "global", key: "description_tag") { value }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
# articles:query — validated against api_version 2025-04
query ArticleContentAudit($after: String) {
  articles(first: 250, after: $after) {
    edges {
      node {
        id
        title
        handle
        publishedAt
        body
        summary
        seoTitle: metafield(namespace: "global", key: "title_tag") { value }
        seoDescription: metafield(namespace: "global", key: "description_tag") { value }
        blog {
          id
          title
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Session Tracking

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

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Page Content 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):

══════════════════════════════════════════════
PAGE CONTENT AUDIT
  Pages scanned:    <n>  |  Issues: <n>
  Articles scanned: <n>  |  Issues: <n>

  Issues:
    Page: "<title>" — empty body
    Article: "<title>" — missing SEO description
  Output: content_audit_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "page-content-audit",
  "store": "<domain>",
  "pages_scanned": 0,
  "articles_scanned": 0,
  "issues_found": 0,
  "output_file": "content_audit_<date>.csv"
}

Output Format

CSV file content_audit_<YYYY-MM-DD>.csv with columns: type, id, title, handle, published_at, body_length, has_seo_title, has_seo_description, issue

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
No pages or articlesMinimal storeExit with 0 results

Best Practices

  • A page with fewer than 300 words is generally considered "thin content" by search engines — use min_body_length: 1500 (characters ≈ ~250 words) as a starting threshold.
  • The About, FAQ, and Contact pages are high-trust pages that should never be empty — prioritize these.
  • Run after any CMS migration or theme change that may have wiped page content.
  • Pair with seo-metadata-audit for a complete SEO audit covering products, collections, pages, and blog articles in one workflow.

Related skills

FAQ

Does it cover products?

No, it covers pages and blog articles; pair it with seo-metadata-audit for products and collections.

What counts as thin content?

A page with fewer than 300 words is generally considered thin content; the default min_body_length flag is 100 characters and can be raised.

Marketing & SEOseocontent

This week in AI coding

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

unsubscribe anytime.