Shopify JSON-LD Parser
Parse JSON-LD from Shopify product pages (or any schema.org/Product JSON-LD) to extract structured commerce data reliably.
Quick Start
- Fetch HTML:
web_fetch a product page URL.
- Parse: Run
scripts/parse_shopify_jsonld.py input.html (outputs JSON).
- Query output for offers, availability, etc.
Example:
exec command="python3 skills/shopify-jsonld-parser/scripts/parse_shopify_jsonld.py page.html"
Workflow
- Input: HTML file/path with JSON-LD (from
web_fetch, read, or local).
- Find JSON-LD: Script extracts all
<script type="application/ld+json"> contents.
- Parse Product: Traverse @graph or root for
@type: Product, extract:
- name, description, image, sku, brand
- offers: array of Offer objects → price, priceCurrency, availability, url, itemCondition
- availability (product-level or per-offer): http://schema.org/InStock, OutOfStock, PreOrder, etc.
- Variants: Infer from multiple offers or hasVariant.
- Output: Clean JSON:
{product: {...}, offers: [...], inventory_status: "InStock|OutOfStock|Limited|Unknown"}
Inventory is typically availability enum, not exact quantity (use Shopify API for levels). Map:
- InStock → available
- OutOfStock → unavailable
- PreOrder/BackOrder → preorder
Usage Examples
Extract offers from page:
read path="shopify-page.html" → html
write path="tmp.html" content=html
exec command="python3 skills/shopify-jsonld-parser/scripts/parse_shopify_jsonld.py tmp.html" → parsed.json
read path="parsed.json"
Query CLI-style:
Add --query price or --field offers[0].availability flags to script.
Script Reference
scripts/parse_shopify_jsonld.py [input.html] [--query FIELD] [--output json|yaml]
- Handles malformed JSON-LD gracefully.
- Supports multiple @graph items.
- Validates schema.org types.
Schema Reference
See references/schema.md for schema.org/Product + Offer properties.
Troubleshooting
- No JSON-LD: Returns
{error: "No product JSON-LD found"}
- Multiple products: Takes first @type:Product.
- Dynamic Liquid: Static HTML only (no JS-rendered).