Shopify Content Engine MCP Server
Shopify Product Content Engine
Eine n8n-Pipeline, die aus einem nackten Produkt (product_name, product_description) ein vollständiges, prüfbereites Marketing-Kit macht – SEO-Recherche, Produktseitentext, einen Blogbeitrag, Google- + Meta-Anzeigen, Social-Posts, eine E-Mail und ein Hero-Bild – und eine Zeile pro Produkt in ein Prüfblatt schreibt. Nichts veröffentlicht automatisch; ein Mensch genehmigt.
Neben dem Workflow liefert dieses Repo zwei Dinge, die es betriebsbereit und nicht nur eine Demo machen: ein Eval-Harnass, das jedes generierte Kit anhand der eigenen Regeln der Engine bewertet (Längenbeschränkungen, gesperrte Wörter, erfundene Tatsachen) und einen MCP-Server, sodass jeder Agent – Claude Desktop, Claude Code, Cursor, Ihr eigener – Entwürfe validieren und Ausführungen auslösen kann.
product_name + product_description
│
▼
┌────────────── n8n ──────────────┐
│ idempotency gate → 3 LLM calls │──▶ Review sheet (status=done | failed)
│ strict JSON → validate → map │──▶ hero image → Drive
│ dry-run · retry · dead-letter │──▶ batch summary email
└─────────────────────────────────┘
▲ │
MCP server eval harness
(validate / run) (rules + LLM judge, gates CI)Warum es so gebaut ist
Anliegen | Was die Engine tut |
Halluzinierte Spezifikationen | Jeder Prompt ist nur auf Fakten basiert; das Eval markiert jede Zahl/Einheit oder Behauptungswörter ( |
Fragiles Parsen | Alle drei Modellaufrufe verwenden OpenAI Structured Outputs ( |
Wiederholungen / Kosten | Ein Idempotenz-Gate überspringt alles, was bereits |
Ein schlechtes Produkt | Wiederholung pro Aufruf + Fortsetzen bei Fehler. Fehlschläge werden als |
Unentdeckte Fehler | Wird an einen separaten Error-Handler-Workflow weitergeleitet → Alarm-E-Mail. |
Testen ohne Nebenwirkungen |
|
Veröffentlichen | Niemals automatisch. Entwürfe landen im Reiter |
Plattformlimits | Harte Grenzen (SEO-Titel ≤ 60, Meta ≤ 155, Google-Überschrift ≤ 30, X ≤ 280, …) befinden sich in |
Related MCP server: Shopify MCP Server
Ablauf
Manual / Schedule / Webhook ─▶ ⚙️ Config ─▶ 📥 Read Products [swap point → Shopify]
─▶ 📖 Read Done ─▶ 🚦 Idempotency Gate ─▶ 🔢 Limit ─▶ 🔁 Loop (1 product at a time)
─▶ 🤖 A: SEO + Product Page ─▶ 🤖 B: Blog ─▶ 🤖 C: Ads / Social / Email / Image prompt
─▶ 🧩 Parse, Validate & Map ─▶ 🧪 Dry run?
├─ yes ─▶ 📝 Dry-run log (no write) ─▶ loop
└─ no ─▶ 🖼️ Images? ─▶ 🎨 gpt-image-1 ─▶ ☁️ Drive ─▶ 📤 Upsert Review row ─▶ loop
🔁 done ─▶ 📊 Batch summary ─▶ ✉️ Email (optional)
(uncaught) ─▶ ⚠️ Error Handler workflow ─▶ alert emailVollständiges Mermaid-Diagramm: docs/architecture.mmd.
Produktquelle ist heute ein Google Sheet; 📥 Read Products ist ein markierter Austauschpunkt für Shopify → Get Products (title → product_name, body_html → product_description).
Evaluierungen
python -m evals bewertet Kits (Zeilen aus dem Reiter Review) anhand der Regeln, die die Engine einzuhalten verspricht. Regeln stammen direkt aus config/generation.config.yaml und config/brand-voice.yaml, sodass eine Änderung einer Grenze in der Konfiguration auch die Evaluierung ändert.
Prüfgruppe | Beispiele |
Vollständigkeit |
|
Harte Grenzen | 8 Zeichenbegrenzungen, 3 Wortbereiche, ≤15 Google-Überschriften mit jeweils ≤30 Zeichen, 5–10 Hashtags |
Struktur | 4–6 Aufzählungspunkte, H2/H3 im Blog, genau ein |
SEO-Platzierung | Primäres Schlüsselwort im Titel / Meta / ersten Satz (Warnungen) |
Markenstimme | Gesperrte Wörter aus |
Nur Fakten | Zahlen+Einheiten und Behauptungswörter in der Ausgabe müssen im Produktinput vorhanden sein |
LLM-Richter ( | 1–5 für Nur-Fakten, Markenstimme, SEO-Qualität + zitierte nicht belegte Behauptungen (Structured Outputs, opt-in, benötigt |
Aktueller goldenen Satz (echtes Kit aus einem Live-Lauf, evals/golden/kits.json):
Produkt | Bewertung | Was es erfasst hat |
Gentle Hydrating Gel Cleanser | 88% | description 66 Wörter (gewünscht 150–250), Blog 507 Wörter (gewünscht 900–1200), E-Mail 28 Wörter (gewünscht 60–120) – das Modell liefert zu wenig Länge; der Parse-Node kürzt überlange Texte, hat aber noch keine Mindestlängen-Wiederholung |
Diese Erkenntnis ist genau der Grund, warum das Harnass existiert – es ist jetzt ein offener Punkt (siehe Fahrplan). Führen Sie es gegen Ihren eigenen Export aus mit python -m evals --input review-export.csv --min-score 0.9; der Exit-Code ungleich Null sperrt CI.
MCP-Server
mcp_server/ stellt die Engine über das Model Context Protocol (stdio) bereit:
Werkzeug | Zweck |
| Stimme, Zielgruppe, gesperrte Wörter, Nur-Fakten-Regel |
| Die harten Grenzen + Ausführungsflags |
| Die fünf Testprodukte |
| Bewertet einen Entwurf mit denselben Regeln wie die Evaluierungen |
| POST an den Workflow-Webhook mit ausführungsspezifischen Flags – standardmäßig Trockenlauf |
Ressourcen: content-engine://columns (Spaltenzuordnung des Prüfblatts), content-engine://prompts/{A|B|C}.
Konfiguration für Claude Desktop / Claude Code:
{
"mcpServers": {
"shopify-content-engine": {
"command": "content-engine-mcp",
"env": { "N8N_WEBHOOK_URL": "https://<your-instance>/webhook/shopify-content-engine-run" }
}
}
}Repo-Struktur
workflows/ shopify-content-engine.workflow.json · error-handler.workflow.json (import these)
prompts/ system prompts A / B / C + prompt library (version-controlled mirror of ⚙️ Config)
config/ brand-voice.yaml · generation.config.yaml (limits, flags)
docs/ runbook.md · architecture.mmd · output-sheet-columns.md
test/ product-fixtures.json (5 products) · dry-run checklist · a real generated kit
evals/ checks.py (rules) · judge.py (LLM judge) · golden/ · tests/
mcp_server/ server.py · tests/
scripts/ check_workflows.py — static checks on the exported JSON (runs in CI)Schnellstart
Workflow
Importieren Sie
workflows/error-handler.workflow.json, dannworkflows/shopify-content-engine.workflow.json.Wählen Sie die Anmeldeinformationen für die OpenAI / Google Sheets / Drive / Gmail-Knoten neu aus (niemals im JSON gespeichert).
Zeigen Sie
📥 Read Products,📖 Read Done,📤 Writeauf ein Blatt mit den ReiternProductsundReview.Setzen Sie Settings → Error Workflow auf den importierten Error-Handler.
Führen Sie einen Trockenlauf mit den fünf Testprodukten durch (
test/README.md), dann führen Sie es wirklich aus. Ausführungsflags können im Webhook-Body gesendet werden:{"dryRun": true, "enableImages": false}.
Evals + MCP
pip install -e ".[mcp,dev]"
python -m evals # score the golden set
python -m evals --input export.csv # score your own Review-tab export
pytest # 27 tests: rules, negative cases, MCP tools in-process
content-engine-mcp # start the MCP server (stdio)Fahrplan
Mindestlängen-Guard + eine selbstkorrigierende Wiederholung im Parse-Schritt (die Evaluierung markiert derzeit kurze Texte im Nachhinein).
Header-Authentifizierung am Webhook-Trigger (n8n-Anmeldeinformation) – derzeit basierend auf dem nicht erratbaren Pfad.
Shopify Admin API als Produktquelle und ein
Draft product-Rückschreiben hinter demselben Genehmigungs-Gate.Goldener Satz: weitere echte Kits, eines pro Testprodukt, und ein nächtlicher
--judge-Lauf.
Lizenz
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Optimize Shopify product pages, publish with approval, and schedule social posts from chat.
Bulk edit Shopify products from an AI agent: search, preview, apply and undo catalog edits.
Let your AI manage WooCommerce and Shopify stores: products, SEO, descriptions and images.
Create, write and publish Printify products from chat, after a preview you approve.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAI-powered Shopify Admin via Claude + MCP, enabling full store management through conversation including products, collections, analytics, and bulk operations.-
- AlicenseNot gradedqualityDmaintenanceEnables to manage Shopify store resources like products, orders, customers, inventory, and collections through natural language using the Shopify Admin API.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Shopify stores via natural language, with tools for products, orders, inventory, customers, and analytics.6 npmMIT
- AlicenseAqualityBmaintenanceDrives an AI CMO to add products, generate on-brand content (UGC video, posts, images), approve, and publish across 30+ platforms via natural language.297 npmMIT