Skip to main content
Glama
AbdulRehman0004

Shopify Content Engine MCP Server

Motor de Contenido para Productos Shopify

CI n8n OpenAI MCP Python License

Un pipeline de n8n que convierte un producto básico (product_name, product_description) en un kit de marketing completo listo para revisión — investigación SEO, texto de página de producto, una entrada de blog, anuncios de Google + Meta, publicaciones en redes sociales, un correo electrónico y una imagen principal — y escribe una fila por producto en una hoja de revisión. Nada se publica automáticamente; un humano aprueba.

Junto con el flujo de trabajo, este repositorio incluye las dos cosas que lo hacen operativo en lugar de una demostración: un entorno de evaluación que puntúa cada kit generado según las propias reglas del motor (límites de longitud, palabras prohibidas, hechos inventados) y un servidor MCP para que cualquier agente — Claude Desktop, Claude Code, Cursor, el tuyo propio — pueda validar borradores y ejecutar procesos.

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)

Por qué está construido así

Preocupación

Lo que hace el motor

Especificaciones inventadas

Cada prompt se basa solo en hechos; la evaluación marca cualquier número/unidad o palabra de afirmación (clínicamente, certificado, vegano, …) que no esté presente en la entrada del producto.

Análisis frágil

Las tres llamadas al modelo usan Salidas Estructuradas de OpenAI (strict: true) — JSON con validación de esquema, sin expresiones regulares.

Re-ejecuciones / costo

Una puerta de idempotencia omite cualquier cosa que ya tenga status=done; forceRegenerate lo anula. El modelo masivo es gpt-4o-mini.

Un producto malo

Reintento por llamada + continuar en caso de error. Los fallos se escriben como filas status=failed con un failure_reason (carta muerta) — el lote nunca se detiene.

Fallos no detectados

Se enrutan a un flujo de trabajo de Manejo de Errores separado → correo electrónico de alerta.

Pruebas sin efectos secundarios

dryRun=true genera y valida pero no escribe nada.

Publicación

Nunca automática. Los borradores llegan a la pestaña Revisión y un humano aprueba.

Límites de la plataforma

Límites estrictos (título SEO ≤ 60, meta ≤ 155, titular de Google ≤ 30, X ≤ 280, …) están en config/, se aplican en el nodo de Análisis y son verificados nuevamente por las evaluaciones.

Related MCP server: shopify

Flujo

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

Diagrama Mermaid completo: docs/architecture.mmd. La fuente del producto es hoy una Hoja de Google; 📥 Leer Productos es un punto de intercambio marcado para Shopify → Obtener Productos (title → product_name, body_html → product_description).

Evaluaciones

python -m evals puntúa los kits (filas de la pestaña Revisión) según las reglas que el motor promete cumplir. Las reglas provienen directamente de config/generation.config.yaml y config/brand-voice.yaml, por lo que cambiar un límite en la configuración cambia la evaluación.

Familia de verificación

Ejemplos

Integridad

status=done, los 19 campos de contenido presentes

Límites estrictos

8 límites de caracteres, 3 rangos de palabras, ≤15 titulares de Google cada uno ≤30 caracteres, 5–10 hashtags

Estructura

4–6 viñetas, H2/H3 en el blog, exactamente un CTA {PRODUCT_URL}, formato de slug

Colocación SEO

palabra clave principal en el título / meta / primera oración (advertencias)

Voz de marca

palabras prohibidas de brand-voice.yaml

Solo hechos

los números+unidades y palabras de afirmación en la salida deben existir en la entrada del producto

Juez LLM (--judge)

1–5 en solo hechos, voz de marca, calidad SEO + afirmaciones no respaldadas citadas (Salidas Estructuradas, opcional, necesita OPENAI_API_KEY)

Conjunto dorado actual (kit real de una ejecución en vivo, evals/golden/kits.json):

Producto

Puntuación

Lo que detectó

Limpiador Gel Hidratante Suave

88%

descripción 66 palabras (se desea 150–250), blog 507 palabras (se desea 900–1200), correo 28 palabras (se desea 60–120) — el modelo no alcanza la longitud; el nodo de Análisis trunca el texto demasiado largo pero aún no tiene un reintento de longitud mínima

Ese hallazgo es exactamente por qué existe el entorno de evaluación — ahora es un elemento pendiente (ver hoja de ruta). Ejecútalo contra tu propia exportación con python -m evals --input review-export.csv --min-score 0.9; el código de salida distinto de cero bloquea la CI.

Servidor MCP

mcp_server/ expone el motor a través del Protocolo de Contexto de Modelo (stdio):

Herramienta

Propósito

get_brand_voice

voz, audiencia, palabras prohibidas, regla de solo hechos

get_generation_limits

los límites estrictos + banderas de ejecución

list_sample_products

los cinco productos de prueba

validate_content_kit(row, product)

puntúa un borrador con las mismas reglas que las evaluaciones

run_content_engine(dry_run=True, …)

envía el webhook del flujo de trabajo con banderas por ejecución — por defecto en seco

Recursos: content-engine://columns (mapa de columnas de la hoja de Revisión), content-engine://prompts/{A|B|C}.

Configuración de Claude Desktop / Claude Code:

{
  "mcpServers": {
    "shopify-content-engine": {
      "command": "content-engine-mcp",
      "env": { "N8N_WEBHOOK_URL": "https://<your-instance>/webhook/shopify-content-engine-run" }
    }
  }
}

Estructura del repositorio

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)

Inicio rápido

Flujo de trabajo

  1. Importa workflows/error-handler.workflow.json, luego workflows/shopify-content-engine.workflow.json.

  2. Vuelve a seleccionar las credenciales en los nodos de OpenAI / Hojas de Google / Drive / Gmail (nunca almacenadas en el JSON).

  3. Apunta 📥 Leer Productos, 📖 Leer Hechos, 📤 Escribir a una hoja con las pestañas Products y Review.

  4. Establece Configuración → Flujo de trabajo de error al manejador de errores importado.

  5. Ejecuta en seco los cinco elementos de prueba (test/README.md), luego ejecuta de verdad. Las banderas de ejecución se pueden publicar en el cuerpo del webhook: {"dryRun": true, "enableImages": false}.

Evaluaciones + 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)

Hoja de ruta

  • Guardia de longitud mínima + un reintento autocorrectivo en el paso de Análisis (la evaluación actualmente marca el texto corto después del hecho).

  • Autenticación de encabezado en el disparador del webhook (credencial de n8n) — hoy depende de la ruta imposible de adivinar.

  • API de Administración de Shopify como fuente de productos y una escritura de Producto borrador detrás de la misma puerta de aprobación.

  • Conjunto dorado: más kits reales, uno por elemento de prueba, y una ejecución nocturna de --judge.

Licencia

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