Shopify Content Engine MCP Server
Shopify Content Engine для товаров
Конвейер n8n, который превращает «голый» товар (product_name, product_description) в полный маркетинговый набор, готовый к рецензированию — SEO-исследование, текст карточки товара, пост в блоге, рекламу в Google + Meta, посты в соцсетях, письмо и изображение героя — и записывает одну строку на товар в лист рецензирования. Ничто не публикуется автоматически; утверждает человек.
Наряду с рабочим процессом в этом репозитории поставляются две вещи, которые делают его работоспособным, а не демонстрацией: тестовый стенд (eval harness), который оценивает каждый сгенерированный набор по собственным правилам движка (ограничения длины, запрещённые слова, выдуманные факты), и MCP-сервер, чтобы любой агент — Claude Desktop, Claude Code, Cursor, ваш собственный — мог проверять черновики и запускать выполнение.
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)Почему он так построен
Проблема | Что делает движок |
Галлюцинированные характеристики | Каждый промпт основан только на фактах; оценка помечает любое число/единицу или слово-утверждение ( |
Хрупкий парсинг | Все три вызова модели используют OpenAI Structured Outputs ( |
Повторные запуски / стоимость | Шлюз идемпотентности пропускает всё, что уже имеет |
Один плохой товар | Повторные попытки на каждый вызов + продолжение при ошибке. Сбои записываются как строки |
Неотловленные сбои | Направляются в отдельный рабочий процесс Error Handler → оповещение по электронной почте. |
Тестирование без побочных эффектов |
|
Публикация | Никогда не автоматическая. Черновики попадают на вкладку |
Ограничения платформы | Жёсткие ограничения (SEO-заголовок ≤ 60, мета-описание ≤ 155, заголовок Google ≤ 30, X ≤ 280, …) находятся в |
Related MCP server: Shopify MCP Server
Поток
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Полная диаграмма Mermaid: docs/architecture.mmd.
Источник товаров сегодня — Google Sheet; 📥 Read Products — отмеченная точка замены на Shopify → Get Products (title → product_name, body_html → product_description).
Оценки
python -m evals оценивает наборы (строки на вкладке Review) по правилам, которые движок обещает соблюдать. Правила берутся прямо из config/generation.config.yaml и config/brand-voice.yaml, поэтому изменение ограничения в конфиге меняет оценку.
Семейство проверок | Примеры |
Полнота |
|
Жёсткие ограничения | 8 символьных ограничений, 3 диапазона слов, ≤15 заголовков Google, каждый ≤30 символов, 5–10 хэштегов |
Структура | 4–6 пунктов, H2/H3 в блоге, ровно один CTA |
Размещение SEO | основное ключевое слово в заголовке / мета-описании / первом предложении (предупреждения) |
Голос бренда | запрещённые слова из |
Только факты | числа+единицы и слова-утверждения в выводе должны присутствовать во входных данных товара |
Судья LLM ( | 1–5 по критериям «только факты», голос бренда, качество SEO + процитированные неподтверждённые утверждения (Structured Outputs, опционально, требуется |
Текущий золотой набор (реальный набор из живого запуска, evals/golden/kits.json):
Товар | Оценка | Что было выявлено |
Gentle Hydrating Gel Cleanser | 88% | описание 66 слов (нужно 150–250), блог 507 слов (нужно 900–1200), письмо 28 слов (нужно 60–120) — модель недодаёт по длине; узел Parse обрезает слишком длинный текст, но пока нет повторной попытки при недостаточной длине |
Именно этот вывод и есть причина существования тестового стенда — теперь это открытый пункт (см. дорожную карту). Запустите его на своём экспорте с помощью python -m evals --input review-export.csv --min-score 0.9; ненулевой код возврата блокирует CI.
MCP-сервер
mcp_server/ предоставляет движок через Model Context Protocol (stdio):
Инструмент | Назначение |
| голос, аудитория, запрещённые слова, правило «только факты» |
| жёсткие ограничения + флаги запуска |
| пять фикстурных товаров |
| оценить черновик по тем же правилам, что и оценки |
| отправить POST на вебхук рабочего процесса с флагами запуска — по умолчанию dry-run |
Ресурсы: content-engine://columns (карта столбцов листа Review), content-engine://prompts/{A|B|C}.
Конфигурация Claude Desktop / Claude Code:
{
"mcpServers": {
"shopify-content-engine": {
"command": "content-engine-mcp",
"env": { "N8N_WEBHOOK_URL": "https://<your-instance>/webhook/shopify-content-engine-run" }
}
}
}Структура репозитория
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)Быстрый старт
Рабочий процесс
Импортируйте
workflows/error-handler.workflow.json, затемworkflows/shopify-content-engine.workflow.json.Повторно выберите учётные данные на узлах OpenAI / Google Sheets / Drive / Gmail (они никогда не хранятся в JSON).
Укажите
📥 Read Products,📖 Read Done,📤 Writeна лист с вкладкамиProductsиReview.Установите Settings → Error Workflow на импортированный обработчик ошибок.
Выполните сухой прогон пяти фикстур (
test/README.md), затем запустите по-настоящему. Флаги запуска можно передать в теле вебхука:{"dryRun": true, "enableImages": false}.
Оценки + 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)Дорожная карта
Защита от недостаточной длины + одна самокорректирующаяся повторная попытка на этапе Parse (оценка сейчас помечает короткий текст постфактум).
Аутентификация по заголовку на триггере вебхука (учётные данные n8n) — сегодня он полагается на непредсказуемый путь.
Shopify Admin API как источник товаров и запись обратно в
Draft productза тем же шлюзом утверждения.Золотой набор: больше реальных наборов, по одному на фикстуру, и ночной запуск
--judge.
Лицензия
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
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.
Shopify product discovery and x402-paid offer verification for AI agents.
Connect AI to store orders, products and inventory with scoped access and human approvals.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAI-powered Shopify Admin via Claude + MCP, enabling full store management through conversation including products, collections, analytics, and bulk operations.-
- FlicenseNot gradedqualityDmaintenanceEnables to manage Shopify store resources like products, orders, customers, inventory, and collections through natural language using the Shopify Admin API.-
- 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.245 npmMIT