Shopify Content Engine MCP Server
Shopify 製品コンテンツエンジン
n8n パイプラインで、最低限の製品情報(product_name、product_description)から、レビュー可能なマーケティングキット(SEO 調査、商品ページコピー、ブログ記事、Google + Meta 広告、ソーシャル投稿、メール、ヒーロー画像)を生成し、1 行あたり 1 製品を レビューシート に書き込みます。自動公開は一切行われず、人間が承認します。
ワークフローに加えて、このリポジトリには、実際に運用可能な 2 つの要素も含まれています。生成されたすべてのキットをエンジン自身のルール(文字数制限、禁止ワード、捏造事実)に照らしてスコアリングする 評価ハーネス と、Claude Desktop、Claude Code、Cursor、その他のエージェントがドラフトを検証したり実行をトリガーできるようにする MCP サーバー です。
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)なぜこのように構築されたのか
懸念事項 | エンジンの対応 |
捏造された仕様 | すべてのプロンプトは事実のみに基づく。評価は、製品入力に存在しない数字/単位や主張ワード( |
脆弱な解析 | 3 つのモデル呼び出しはすべて OpenAI Structured Outputs( |
再実行 / コスト | 冪等性ゲートにより、 |
1 つの不良製品 | 呼び出しごとのリトライ + エラー時継続。失敗は |
キャッチされない障害 | 別のエラーハンドラーワークフローにルーティングされ、警告メールを送信。 |
副作用なしのテスト |
|
公開 | 自動的には行われない。ドラフトは |
プラットフォームの制限 | ハードキャップ(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 シートです。📥 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 つの単語数範囲、各 30 文字以内の Google 見出し 15 個以下、5~10 個のハッシュタグ |
構造 | 4~6 個の箇条書き、ブログ内の H2/H3、 |
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)を介してエンジンを公開します:
ツール | 目的 |
| ボイス、オーディエンス、禁止ワード、事実のみルール |
| ハードキャップと実行フラグ |
| 5 つの固定テスト製品 |
| 評価と同じルールでドラフトをスコアリング |
| 実行フラグ付きでワークフローの webhook に POST — デフォルトはドライラン |
リソース: 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のタブがあるシートに指定します。設定 → エラーワークフロー をインポートしたエラーハンドラーに設定します。
5 つの固定テスト(
test/README.md)をドライランし、その後本番実行します。 実行フラグは webhook ボディに POST できます:{"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 ステップでの最低長さガード + 1 回の自己修正リトライ(現在評価は事後に短いコピーをフラグ付けします)。
Webhook トリガーでのヘッダー認証(n8n 認証情報)— 現在は推測困難なパスに依存しています。
Shopify Admin API を製品ソースとし、同じ承認ゲートの背後で
Draft productを書き戻す。ゴールデンセット: 各固定製品に対してより多くの実際のキット、および夜間の
--judge実行。
ライセンス
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