Skip to main content
Glama
AbdulRehman0004

Shopify Content Engine MCP Server

Shopify Product Content Engine

CI n8n OpenAI MCP Python License

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 (clinically, certified, vegan, …), die nicht im Produktinput vorhanden sind.

Fragiles Parsen

Alle drei Modellaufrufe verwenden OpenAI Structured Outputs (strict: true) – schema-valides JSON, kein Regex.

Wiederholungen / Kosten

Ein Idempotenz-Gate überspringt alles, was bereits status=done ist; forceRegenerate überschreibt. Bulk-Modell ist gpt-4o-mini.

Ein schlechtes Produkt

Wiederholung pro Aufruf + Fortsetzen bei Fehler. Fehlschläge werden als status=failed-Zeilen mit einem failure_reason (Dead-Letter) geschrieben – der Batch stoppt nie.

Unentdeckte Fehler

Wird an einen separaten Error-Handler-Workflow weitergeleitet → Alarm-E-Mail.

Testen ohne Nebenwirkungen

dryRun=true generiert und validiert, schreibt aber nichts.

Veröffentlichen

Niemals automatisch. Entwürfe landen im Reiter Review und ein Mensch genehmigt.

Plattformlimits

Harte Grenzen (SEO-Titel ≤ 60, Meta ≤ 155, Google-Überschrift ≤ 30, X ≤ 280, …) befinden sich in config/, werden im Parse-Node durchgesetzt und von den Evals erneut geprüft.

Related MCP server: shopify

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 email

Vollstä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

status=done, alle 19 Inhaltsfelder vorhanden

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 {PRODUCT_URL}-CTA, Slug-Format

SEO-Platzierung

Primäres Schlüsselwort im Titel / Meta / ersten Satz (Warnungen)

Markenstimme

Gesperrte Wörter aus brand-voice.yaml

Nur Fakten

Zahlen+Einheiten und Behauptungswörter in der Ausgabe müssen im Produktinput vorhanden sein

LLM-Richter (--judge)

1–5 für Nur-Fakten, Markenstimme, SEO-Qualität + zitierte nicht belegte Behauptungen (Structured Outputs, opt-in, benötigt OPENAI_API_KEY)

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

get_brand_voice

Stimme, Zielgruppe, gesperrte Wörter, Nur-Fakten-Regel

get_generation_limits

Die harten Grenzen + Ausführungsflags

list_sample_products

Die fünf Testprodukte

validate_content_kit(row, product)

Bewertet einen Entwurf mit denselben Regeln wie die Evaluierungen

run_content_engine(dry_run=True, …)

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

  1. Importieren Sie workflows/error-handler.workflow.json, dann workflows/shopify-content-engine.workflow.json.

  2. Wählen Sie die Anmeldeinformationen für die OpenAI / Google Sheets / Drive / Gmail-Knoten neu aus (niemals im JSON gespeichert).

  3. Zeigen Sie 📥 Read Products, 📖 Read Done, 📤 Write auf ein Blatt mit den Reitern Products und Review.

  4. Setzen Sie Settings → Error Workflow auf den importierten Error-Handler.

  5. 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

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to read and write Shopify store data including products, orders, customers, inventory, and more via the Admin GraphQL API.
    28
    58
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    Enables to manage Shopify store resources like products, orders, customers, inventory, and collections through natural language using the Shopify Admin API.
  • A
    license
    C
    quality
    D
    maintenance
    Enables AI assistants like Cursor or Claude Desktop to fully manage a Shopify store using the Model Context Protocol, with tools for products, orders, customers, inventory, discounts, and analytics.
    32
    MIT

View all related MCP servers

Related MCP Connectors

  • Manage your Savanto store from your AI: catalog, content, prompts, and analytics, by chat.

  • Run GenflowAI templates and AI creative workflows for ecommerce visuals, UGC ads, and videos.

  • Manage your Jumpseller store with AI. Products, orders, customers, and more.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AbdulRehman0004/shopify-ai-content-engine'

If you have feedback or need assistance with the MCP directory API, please join our Discord server