--- name: shopify-content description: > Create and manage Shopify pages, blog posts, navigation, and SEO metadata. Workflow: determine content type, generate content, create via API or browser, verify. Use when creating pages, writing blog posts, updating navigation menus, managing redirects, or updating SEO metadata on a Shopify store. compatibility: claude-code-only --- # 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 ```bash 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": "

Our Story

Content here...

", "isPublished": true, "seo": { "title": "About Us | Store Name", "description": "Learn about our story and mission." } } } }' ``` **Page body** accepts HTML. Keep it semantic: - Use `

` through `

` for headings (the page title is `

`) - Use `

`, `