cloudflare-api
Hit the Cloudflare REST API directly for operations that wrangler and MCP can't handle well. Bulk DNS, custom hostnames, email…
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
Claude Code
$ npx -y skills add jezweb/claude-skills --skill shopify-content --agent claude-code
Codex
$ npx skills add jezweb/claude-skills --skill shopify-content -a codex -y
Cursor
$ npx skills add jezweb/claude-skills --skill shopify-content -a cursor -y
Gemini CLI
$ npx skills add jezweb/claude-skills --skill shopify-content -a gemini-cli -y
GitHub Copilot
$ npx skills add jezweb/claude-skills --skill shopify-content -a github-copilot -y
OpenCode
$ npx skills add jezweb/claude-skills --skill shopify-content -a opencode -y
Windsurf
$ npx skills add jezweb/claude-skills --skill shopify-content -a windsurf -y
name: shopify-content description: "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." compatibility: claude-code-only
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.
| 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 |
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:
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 }
}
}Navigation menus have limited API support. Use browser automation:
1. Navigate to `https://{store}.myshopify.com/admin/menus` 2. Select the menu to edit (typically "Main menu" or "Footer menu") 3. Add, reorder, or remove menu items 4. 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 }
}
}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"
}
}'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 }
}
}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:
---
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.
Every blog post should have:
Use `publishDate` on articles for scheduled publishing. Pages publish immediately when `isPublished: true`.
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---
Production workflow skills for Claude Code. Each skill guides Claude through a recipe to produce tangible output — scaffolded projects, generated assets, professional documents, deployed services. Ten plugins of practical, production-oriented skills.
Hit the Cloudflare REST API directly for operations that wrangler and MCP can't handle well. Bulk DNS, custom hostnames, email…
Scaffold and deploy Cloudflare Workers with Hono routing, Vite plugin, and Static Assets. Describe project, scaffold structure,…
Generate Drizzle ORM schemas for Cloudflare D1 databases with correct D1-specific patterns. Produces schema files, migration…
Cloudflare D1 migration workflow: generate with Drizzle, inspect SQL for gotchas, apply to local and remote, fix stuck…
Generate database seed scripts with realistic sample data. Reads Drizzle schemas or SQL migrations, respects foreign key…
Scaffold Hono API routes for Cloudflare Workers. Produces route files, middleware, typed bindings, Zod validation, error…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.