Skip to main content
Glama
AbdulRehman0004

Shopify Content Engine MCP Server

Shopify 製品コンテンツエンジン

CI n8n OpenAI MCP Python License

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)

なぜこのように構築されたのか

懸念事項

エンジンの対応

捏造された仕様

すべてのプロンプトは事実のみに基づく。評価は、製品入力に存在しない数字/単位や主張ワード(clinically、certified、vegan など)をフラグ付けする。

脆弱な解析

3 つのモデル呼び出しはすべて OpenAI Structured Outputs(strict: true)を使用。スキーマ検証済みの JSON、正規表現不要。

再実行 / コスト

冪等性ゲートにより、status=done のものはスキップ。forceRegenerate で上書き可能。バルクモデルは gpt-4o-mini。

1 つの不良製品

呼び出しごとのリトライ + エラー時継続。失敗は status=failed 行として failure_reason(デッドレター)とともに書き込まれ、バッチは停止しない。

キャッチされない障害

別のエラーハンドラーワークフローにルーティングされ、警告メールを送信。

副作用なしのテスト

dryRun=true で生成と検証を行うが、書き込みは行わない。

公開

自動的には行われない。ドラフトは Review タブに格納され、人間が承認する。

プラットフォームの制限

ハードキャップ(SEO タイトル ≤ 60、メタ ≤ 155、Google 見出し ≤ 30、X ≤ 280 など)は config/ にあり、Parse ノードで強制され、評価でも再チェックされる。

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 から直接取得されるため、設定のキャップを変更すると評価も変更されます。

チェックファミリー

例

完全性

status=done、19 のコンテンツフィールドすべてが存在する

ハードキャップ

8 つの文字数制限、3 つの単語数範囲、各 30 文字以内の Google 見出し 15 個以下、5~10 個のハッシュタグ

構造

4~6 個の箇条書き、ブログ内の H2/H3、{PRODUCT_URL} CTA が 1 つだけ、スラッグ形式

SEO 配置

プライマリキーワードがタイトル/メタ/最初の文に含まれているか(警告)

ブランドボイス

brand-voice.yaml からの禁止ワード

事実のみ

出力内の数字+単位と主張ワードは製品入力に存在しなければならない

LLM 判定(--judge)

1~5 で事実のみ、ブランドボイス、SEO 品質、引用された未検証の主張(Structured Outputs、オプトイン、OPENAI_API_KEY が必要)

現在のゴールデンセット(実際のランからの本物のキット、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)を介してエンジンを公開します:

ツール

目的

get_brand_voice

ボイス、オーディエンス、禁止ワード、事実のみルール

get_generation_limits

ハードキャップと実行フラグ

list_sample_products

5 つの固定テスト製品

validate_content_kit(row, product)

評価と同じルールでドラフトをスコアリング

run_content_engine(dry_run=True, …)

実行フラグ付きでワークフローの 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)

クイックスタート

ワークフロー

  1. workflows/error-handler.workflow.json をインポートし、次に workflows/shopify-content-engine.workflow.json をインポートします。

  2. OpenAI / Google Sheets / Drive / Gmail ノードの認証情報を再選択します(JSON には保存されていません)。

  3. 📥 Read Products、📖 Read Done、📤 Write を、Products と Review のタブがあるシートに指定します。

  4. 設定 → エラーワークフロー をインポートしたエラーハンドラーに設定します。

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables to manage Shopify store resources like products, orders, customers, inventory, and collections through natural language using the Shopify Admin API.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage Shopify stores via natural language, with tools for products, orders, inventory, customers, and analytics.
    6 npm
    MIT