Amazon Slot Prompt MCP Server
by youmix
README.md
# Amazon Slot Prompt
日本の Amazon 商品ページ向け **Slot 画像** を、ChatGPT Web の画像生成で作る MCP です。
MCP は画像を生成しません。指定 Slot の固定ルールを返し、ChatGPT が添付の商品実物画像と商品情報から **完成した 1:1 画像を 1 枚** 作ります。長い画像生成プロンプトをユーザーに書かせるツールではありません。
**Slot1〜Slot6** が使えます。Role は固定、レイアウトは自由です。
## これは何か
| 誰が | 何をするか |
| --- | --- |
| あなた | Slot番号・商品タイトル・商品説明・商品補足を送り、商品実物画像をチャットに添付する |
| MCP | 指定 Slot の固定ルールを返す(外部画像生成 API は呼ばない) |
| ChatGPT | 添付画像 + 商品情報 + Slot ルールに従い、完成した 1:1 画像を 1 枚生成する |
## 公開 URL
デプロイ後の Worker 名は `amazon-slot-prompt` です。
| 用途 | URL |
| --- | --- |
| ChatGPT に登録する MCP URL | `https://amazon-slot-prompt.hiroyuki.workers.dev/mcp` |
| 動作確認 | `https://amazon-slot-prompt.hiroyuki.workers.dev/health` |
ブラウザで `/mcp` を開いても画像は出ません。ChatGPT のコネクタ経由で使います。
初回は `npm run deploy` が必要です。デプロイ前はホスト名がまだありません。以前の Worker `amazon-slot-mcp` が残っている場合、コネクタ URL をこちらへ差し替えてください。
---
## ChatGPT での使い方
### 1 回だけの準備
1. ChatGPT を開き、**Settings → Apps & Connectors → Advanced settings** で **Developer Mode** を有効にする
2. **Settings → Connectors** からカスタムコネクタを追加する
| 項目 | 入力 |
| --- | --- |
| 名前 | 任意(例: `AmazonGenerator`) |
| MCP Server URL | `https://amazon-slot-prompt.hiroyuki.workers.dev/mcp` |
| Authentication | **No authentication** |
3. 新しいチャットを開き、コネクタをオンにする
### 毎回の使い方
1. 商品の実物画像をチャットに添付する
2. コネクタを指定して送る
Slot 指定あり(その Slot のみ):
```text
@AmazonGenerator
Slot1
商品タイトル:
トリケラトプス ぬいぐるみ
商品説明:
ここに商品説明全文
商品補足:
ここに任意の補足情報
```
Slot 指定なし(6 分割タイル 1 枚):
```text
@AmazonGenerator
商品タイトル:
トリケラトプス ぬいぐるみ
商品説明:
ここに商品説明全文
商品補足:
ここに任意の補足情報
```
Slot 未指定は Slot1 にフォールバックしません。Slot1〜6 を **1 枚の正方形画像内** に 3 列 × 2 段で同時表示します(独立 6 枚ではない)。
「添付画像をもとに画像を生成してください」「1:1 画像を作成してください」などの定型文は不要です。
### うまくいったときの流れ
1. ChatGPT がツールを呼ぶ
- Slot 指定あり → `slotN`、または `generate_slot_image`(`slot_request` に番号)
- Slot 指定なし → `six_panel`、または `generate_slot_image`(`slot_request` 空)
2. MCP が対応ルールと「完成画像を今すぐ生成せよ」という指示を返す
3. ChatGPT が会話内の添付画像と商品情報を使い、完成画像を 1 枚表示する
### 失敗したら
次のような結果は失敗です。
- プロンプト文だけ出して終わる
- 元画像をそのまま返す
- 白背景の商品単体(検索メイン画像風)になる
- 説明にない機能・付属品が追加される
やり直すときは:
```text
プロンプトではなく、完成した1:1の訴求画像を生成して表示して。
添付の商品画像は変えないで。
```
---
## Tools
| Tool | Role | 用途 |
| --- | --- | --- |
| `generate_slot_image` | 自動分岐 | **推奨メイン入口。** `slot_request` あり → 単一 Slot、空 → 6 分割タイル |
| `six_panel` | SIX_PANEL | Slot 未指定専用。3 列 × 2 段コンタクトシート 1 枚 |
| `slot1` | 第一訴求画像 | 明示 Slot1 のみ |
| `slot2` | 特徴証明 | 明示 Slot2 のみ |
| `slot3` | 完成品例 | 明示 Slot3 のみ |
| `slot4` | 使用例 | 明示 Slot4 のみ |
| `slot5` | 制作ギャラリー | 明示 Slot5 のみ |
| `slot6` | スペック・仕様 | 明示 Slot6 のみ |
### 入力(共通)
| 項目 | 必須 | 内容 |
| --- | --- | --- |
| `product_title` | はい | 商品タイトル |
| `product_description` | はい | 商品説明 |
| `product_supplement` | いいえ | 商品補足 |
| `slot_request` | いいえ | `generate_slot_image` のみ。例: `slot3`。空 = SIX_PANEL |
商品実物画像はツール引数ではありません。**現在のチャットへの添付** を使います。
---
## Slot ルール
### 全 Slot 共通
- 商品事実は不変。アートディレクションは自由
- 入力にない数値・特徴・用途・付属品の創作禁止
- 添付の商品実物画像を保持(再生成・美化描き直し禁止)
- 固定レイアウトテンプレート禁止(Role のみ固定)
- 1:1 の完成画像を 1 枚生成(プロンプトのみ返却は禁止)
- MCP 自身は外部画像生成 API を呼ばない
詳細は [`prompts/common-ec-facts.md`](prompts/common-ec-facts.md)(Slot2〜6 に結合)、[`prompts/slot1.md`](prompts/slot1.md) 〜 [`prompts/slot6.md`](prompts/slot6.md) です。
### 各 Role
| Slot | Role | 要点 |
| --- | --- | --- |
| 1 | 第一訴求画像 | Hero。販売戦略 → ビジュアルコンセプト先行 |
| 2 | 特徴証明 | 「説明」ではなく視覚的証拠 |
| 3 | 完成品例 | 入力にある代表完成形のみ |
| 4 | 使用例 | 入力にある使用場面のみ |
| 5 | 制作ギャラリー | 複数作例の世界観。Slot3 と役割分離 |
| 6 | スペック・仕様 | 存在項目のみ。空欄禁止 |
---
## 開発
Node.js 20 以上が必要です。
```bash
npm install
npm run check # 型チェック
npm run test:smoke # Slot ルールと MCP 応答の契約テスト
npm run deploy # Cloudflare Workers へ公開
```
### ローカル
```bash
npm run dev # Node http://localhost:3001/mcp
npm run dev:worker # Wrangler(Workers 相当)
```
| スクリプト | 内容 |
| --- | --- |
| `npm run dev` | Node HTTP サーバー。`PORT`(既定 3001) |
| `npm run dev:worker` | `wrangler dev`。既定は `http://localhost:8787` |
| `npm run build` | Node 向け TypeScript ビルド |
| `npm run start` | `dist` から Node サーバーを起動 |
| `npm run cf-typegen` | Wrangler の `Env` 型を生成 |
`wrangler dev` は workerd を使うため、macOS 13.5 未満では動かないことがあります。その場合は `npm run dev` を使ってください。
### 構成
| パス | 内容 |
| --- | --- |
| `src/worker.ts` | Cloudflare Workers エントリ(`/mcp`・`/health`) |
| `src/index.ts` | ローカル Node サーバー |
| `src/create-server.ts` | MCP ツール登録 |
| `src/slots.ts` | Slot 定義と ChatGPT 向け応答 |
| `prompts/slot1.md`〜`slot6.md` | 各 Slot の固定プロンプト |
| `prompts/common-ec-facts.md` | Slot2〜6 に結合する共通 EC 事実ルール |
| `wrangler.jsonc` | Worker 設定(`nodejs_compat`、observability) |
| `scripts/smoke-test.mjs` | ルールとツール応答のスモークテスト |
ルールを変えたら `npm run test:smoke` のあと `npm run deploy` してください。
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues