mcpbeat Sign in

Shopify Content Skill for Claude

Create and manage Shopify pages, blog posts, navigation menus, redirects, and SEO metadata via the Admin API or browser automation. Use whenever the user wants to add a page to a Shopify store, write a Shopify blog post, update the storefront navigation, manage redirects, or tune SEO metadata on a Shopify site.

2k tokens
context cost
the whole folder, loaded on every use
2
files
instructions only
0
copies elsewhere
how many repositories repackaged it
953
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/jezweb/claude-skills --skill shopify-content

The instruction itself

16 sections, as written by the author

Shopify Content

Create and manage Shopify store content — pages, blog posts, navigation menus, and SEO metadata. Produces live content in the store via the Admin API or browser automation.

Prerequisites

  • Admin API access token with read_content, write_content scopes (use shopify-setup skill)
  • For navigation: read_online_store_navigation, write_online_store_navigation scopes

Workflow

Step 1: Determine Content Type

| Content Type | API Support | Method |

|-------------|-------------|--------|

| Pages | Full | GraphQL Admin API |

| Blog posts | Full | GraphQL Admin API |

| Navigation menus | Limited | Browser automation preferred |

| Redirects | Full | REST Admin API |

| SEO metadata | Per-resource | GraphQL on the resource |

| Metaobjects | Full | GraphQL Admin API |

Step 2a: Create Pages

curl -s https://{store}/admin/api/2025-01/graphql.json \
  -H "Content-Type: application/json" \
  -H "X-Shopify-Access-Token: {token}" \
  -d '{
    "query": "mutation pageCreate($page: PageCreateInput!) { pageCreate(page: $page) { page { id title handle } userErrors { field message } } }",
    "variables": {
      "page": {
        "title": "About Us",
        "handle": "about",
        "body": "<h2>Our Story</h2><p>Content here...</p>",
        "isPublished": true,
        "seo": {
          "title": "About Us | Store Name",
          "description": "Learn about our story and mission."
        }
      }
    }
  }'

Page body accepts HTML. Keep it semantic:

  • Use <h2> through <h6> for headings (the page title is <h1>)
  • Use <p>, <ul>, <ol> for body text
  • Use <a href="..."> for links
  • Avoid inline styles — the theme handles styling

Step 2b: Create Blog Posts

Shopify blogs have a two-level structure: Blog (container) > Article (post).

Find or create a blog:

{
  blogs(first: 10) {
    edges {
      node { id title handle }
    }
  }
}

Most stores have a default blog called "News". Create articles in it:

mutation {
  articleCreate(article: {
    blogId: "gid://shopify/Blog/123"
    title: "New Product Launch"
    handle: "new-product-launch"
    contentHtml: "<p>We're excited to announce...</p>"
    author: { name: "Store Team" }
    tags: ["news", "products"]
    isPublished: true
    publishDate: "2026-02-22T00:00:00Z"
    seo: {
      title: "New Product Launch | Store Name"
      description: "Announcing our latest product range."
    }
    image: {
      src: "https://example.com/blog-image.jpg"
      altText: "New product collection"
    }
  }) {
    article { id title handle }
    userErrors { field message }
  }
}

Step 2c: Update Navigation Menus

Navigation menus have limited API support. Use browser automation:

  • Navigate to https://{store}.myshopify.com/admin/menus
  • Select the menu to edit (typically "Main menu" or "Footer menu")
  • Add, reorder, or remove menu items
  • Save changes

Alternatively, use the GraphQL menuUpdate mutation if the API version supports it:

mutation menuUpdate($id: ID!, $items: [MenuItemInput!]!) {
  menuUpdate(id: $id, items: $items) {
    menu { id title }
    userErrors { field message }
  }
}

Step 2d: Create Redirects

URL redirects use the REST API:

curl -s https://{store}/admin/api/2025-01/redirects.json \
  -H "Content-Type: application/json" \
  -H "X-Shopify-Access-Token: {token}" \
  -d '{
    "redirect": {
      "path": "/old-page",
      "target": "/new-page"
    }
  }'

Step 2e: Update SEO Metadata

SEO fields are on each resource (product, page, article). Update via the resource's mutation:

mutation {
  pageUpdate(page: {
    id: "gid://shopify/Page/123"
    seo: {
      title: "Updated SEO Title"
      description: "Updated meta description under 160 chars."
    }
  }) {
    page { id title }
    userErrors { field message }
  }
}

Step 3: Verify

Query back the content to confirm:

{
  pages(first: 10, reverse: true) {
    edges {
      node { id title handle isPublished createdAt }
    }
  }
}

Provide the admin URL and the live URL for the user to review:

  • Admin: https://{store}.myshopify.com/admin/pages
  • Live: https://{store}.myshopify.com/pages/{handle}

Critical Patterns

Page vs Metaobject

For simple content (About, Contact, FAQ), use pages. For structured, repeatable content (team members, testimonials, locations), use metaobjects — they have typed fields and can be queried programmatically.

Blog SEO

Every blog post should have:

  • SEO title: under 60 characters, includes primary keyword
  • Meta description: under 160 characters, compelling summary
  • Handle: clean URL slug with keywords
  • Image with alt text: for social sharing and accessibility

Content Scheduling

Use publishDate on articles for scheduled publishing. Pages publish immediately when isPublished: true.

Bulk Content

For many pages (e.g. location pages, service pages), use a loop with rate limiting:

for page in pages_data:
    create_page(page)
    sleep(0.5)  # Respect rate limits

Reference Files

  • references/content-types.md — API endpoints, metaobject patterns, and browser-only operations

Other skills for the same job

different authors, same section of the catalogue
Screenshots
by ComeOnOliver
×2

Generate marketing screenshots of your app using Playwright. Use when the user wants to create screenshots for Product Hunt, social media, landing pages, or documentation.

6k tokens
Screenshot
by nexu-io

| Capture desktop, app windows, or pixel regions across OS platforms. Useful for marketing screenshots, design reviews, and bug reports.

290 tokens
Screenshots Marketing
by nexu-io

| Generate marketing screenshots with Playwright. Useful for landing-page hero shots, App Store screenshots, and changelog visuals.

300 tokens
Ads Attribution
by AgriciDaniel

Audit cross-platform attribution, conversion definitions, reporting windows, GA4, AdServices and AdAttributionKit, MMPs, browser and server events, offline conversions, and platform reconciliation. Use for attribution audit, attribution models, conversion windows, requests to add or total Meta and Google conversions, incompatible reporting-window aggregation, GA4 attribution, MMP review, AppsFlyer, Adjust, Branch, Singular, or cross-platform discrepancies.

498 tokens
Godot Genre Idle Clicker
by thedivergentai

Expert blueprint for idle/clicker games including big number handling (mantissa + exponent system), exponential growth curves (cost_growth_factor 1.15x), generator systems (auto-producers), offline progress calculation, prestige systems (reset for permanent multipliers), number formatting (K/M/B suffixes, scientific notation). Use for incremental games, idle games, or cookie clicker derivatives. Trigger keywords: idle_game, big_number, exponential_growth, generator_system, offline_progress, prestige_system, number_formatting.

10k tokens scripts
Screenshots
by lingxling

Generate marketing screenshots of your app using Playwright. Use when the user wants to create screenshots for Product Hunt, social media, landing pages, or documentation.

3k tokens
Screenshots
by christophacham

Generate marketing screenshots of your app using Playwright. Use when the user wants to create screenshots for Product Hunt, social media, landing pages, or documentation.

3k tokens
Claude For Safari
by SDLLL

Control the user's real Safari browser on macOS using AppleScript and screencapture. This skill should be used when the user asks to interact with Safari, browse websites, read web pages, automate browser tasks, take screenshots of web content, or when any task would benefit from seeing or interacting with what's in their browser. Triggers on keywords like "safari", "browser", "web page", "open tab", "screenshot the page", "read this site", "browse", "click on", "fill in the form".

6k tokens

How to use it

Copy the folder

Take jezweb/shopify-content from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.