# IGハーネス セットアップ依頼書（Claude Code 用）

> このファイルは「Claude Code に読ませてIGハーネスをセットアップしてもらう」ための依頼書です。
> **使い方（顧問先の方向け）**: Claude Code を開き、このファイルを渡して
> 「このファイルの手順どおりに IGハーネス をセットアップして。案内役として進めて」
> と伝えてください。あとは Claude が1ステップずつ案内します。
>
> 📖 画像つきの完全ガイド（詰まったらここ）:
> https://harness-wiki.pages.dev/article/ig-harness-complete-setup-guide

---

## ⛳ 最初に知っておくこと（所要 約20〜30分）

セットアップは2つに分かれます。

| パート | 内容 | 誰がやるか |
|--------|------|-----------|
| **Cloudflare側** | サーバー(Worker)・DB・管理画面・鍵の設定 | **Claude が自動** で `npx create-ig-harness` を回す |
| **Meta側** | Instagramアプリ作成・トークン取得・Webhook・公開 | **あなた（人間）が操作**。Claude は画面を案内するだけ |

**なぜMeta側は人間がやるのか**: Meta（Facebook）のコンソールはあなた自身のアカウントにログインして操作するため、Claude が代わりにログイン・アカウント作成・トークン発行することはできません（安全上の制約）。ここが一番つまずくポイントなので、Claude が1画面ずつ丁寧に案内します。

---

## 🤖 Claude Code への指示（Claudeはここを読んでください）

あなたの役割は **IGハーネス セットアップの案内役** です。次を厳守してください。

1. **自動でやる範囲**: Cloudflare へのデプロイ（`npx create-ig-harness`）、動作確認のcurl、アカウントレベルWebhook購読のcurl。ここは手を動かす。
2. **人間に依頼する範囲**: Metaコンソールでの操作全般（アプリ作成／App Secret表示／トークン発行／Webhook購読トグル／アプリ公開トグル／ルーティング設定）と、Cloudflareの初回ブラウザログイン。**これらは代行せず**、「今この画面でここを押してください」と案内し、結果（取得した値や完了報告）を待って次へ進む。
3. **進め方**: 下の パートA → B → C → D の順。各パートで人間の入力・完了報告が必要な箇所は、**そこで必ず停止**して待つこと。勝手に先へ進めない。
4. パスワード・トークンなどの秘密情報を人間が貼ってきたら、そのまま `wrangler secret` 経由で設定し、**チャットに再表示しない**。
5. 詰まったら、末尾の「よくあるエラー」表と wiki を参照して切り分ける。

---

## 事前に用意するもの（人間）

- [ ] **Instagramビジネスアカウント**（プロアカウントに切替済み）
- [ ] そのIGに **接続されたFacebookページ**（トークン発行に必要）
- [ ] **Cloudflareアカウント**（無料プランでOK。未作成なら https://dash.cloudflare.com/sign-up で作成）
- [ ] **Node.js 20以上**（未インストールなら Claude に「Node.js入れて」と頼めば案内します）

---

## パートA：Meta認証情報の取得（あなたが操作 / Claudeが案内）

Meta for Developers（https://developers.facebook.com/apps/）で、次の **5つ** を集めます。Claude はこの5つが揃うまで待機してください。

1. **App ID**（数字）
   - 場所: アプリ選択 → 設定 → ベーシック → アプリID
2. **App Secret**
   - 場所: 設定 → ベーシック → アプリシークレット →「表示」
3. **Page Access Token**（`EAA...` で始まる長い文字列。長期トークン推奨）
   - 場所: 左メニュー Instagram → API設定 →「アクセストークンを生成」
   - ※ IGビジネスアカウントに接続したFacebookページが必要
4. **Instagram Business Account ID**（数字。例 `17841400008460056`）
   - 取得: グラフAPIエクスプローラで `GET /me?fields=id,name&access_token={上のトークン}`
5. **Verify Token**（任意の文字列。あとでWebhook設定に使う。例 `my-verify-2026`）
   - これは自分で決めるだけ。`create-ig-harness` 実行時にランダム候補も出ます

> アプリをまだ作っていなければ、developers.facebook.com/apps →「アプリを作成」→ ユースケースは
> **「Instagramでメッセージとコンテンツを管理」** を選択 → アプリ名任意 → 作成。
> 詳しい画面手順は wiki を参照。

**このパートの完了条件**: 上の 1〜4 の値が手元にある（5は決めるだけ）。揃ったら Claude はパートBへ。

---

## パートB：Cloudflareへ自動デプロイ（Claudeが実行）

ターミナルで次を実行します（Claude が実行して構いません）。

```bash
npx create-ig-harness
```

対話ウィザードが自動で進みます。人間の操作が必要なのは次の2点だけ：

- **Cloudflareログイン**: 初回のみブラウザが開くので、**人間がログイン＆Authorizeを押す**（1回だけ）
- **パートAの5つの値を貼る**: プロンプトに従って入力

これだけで、ウィザードが以下を **全自動** で行います：

- リポジトリ取得（公開GitHubから）・依存インストール・ビルド
- R2バケット作成 / D1データベース作成＋スキーマ適用
- Worker デプロイ
- シークレット設定（App Secret・トークン・IG User ID・Verify Token・API Key）
- 管理画面（Next.js）を Cloudflare Pages にデプロイ
- （任意）Claude Code / Cursor 用の `.mcp.json` 生成 → **これで後から自然言語操作が可能に**

**完了画面に出る次の値を必ず保存**（再表示不可のものあり）：

- `Worker URL`（例 `https://ig-harness-xxxx.workers.dev`）
- `管理画面 URL`
- `API Key`

**このパートの完了条件**: Worker URL と API Key を取得。取れたら Claude はパートCへ。

---

## パートC：Meta側の最終設定（あなたが操作 / Claudeが案内・一部代行）

### C-1. Webhook設定（人間が操作）
developers.facebook.com/apps → 対象アプリ → Webhooks（またはInstagram → Webhook）で：

- **コールバックURL**: `{Worker URL}/webhook`
- **トークンを認証**: パートAで決めた **Verify Token** と同じ値
- **購読フィールド**: `messages` / `messaging_postbacks` / `comments` / `mentions` を全てオン

### C-2. アカウントレベル購読（Claudeが代行実行OK）
Metaコンソールのトグルだけでは不十分。次のcurlを実行（`{IG_USER_ID}` と `{TOKEN}` は実値に置換。Claude が実行して可）：

```bash
curl -X POST "https://graph.instagram.com/v25.0/{IG_USER_ID}/subscribed_apps?subscribed_fields=messages,messaging_postbacks,comments,mentions&access_token={TOKEN}"
```

`{"success":true}` が返ればOK。

### C-3. アプリ公開（人間が操作）
設定 → ベーシック に次を貼り、公開トグルをオン：

- プライバシーポリシーURL: `{Worker URL}/privacy-policy`
- データ削除URL: `{Worker URL}/data-deletion`
- 利用規約URL: `{Worker URL}/terms-of-service`
- アプリアイコン（1024×1024 PNG）／ カテゴリ「ビジネス」

> 「自分のビジネスのためだけに使う場合はアプリレビュー不要」。IGハーネスの機能（DM配信・Webhook受信・コメント誘導のDM配布）は全て **Standard Access** で動くので、公開トグルを押すだけで運用開始できます。
> （※ 親コメント直下に“ネストされる”本物のスレッド返信を使う時だけ Meta App Review が必要。通常のコメント誘導では不要）

### C-4. ルーティング設定（人間が操作 / ManyChat経験者は必須）
Instagram API ダッシュボード → **ルーティング設定** で、自分のアプリを **プライマリレシーバー** に設定。
これをしないと `スレッド所有者ではない` エラーでDM送信できません。

**このパートの完了条件**: C-1〜C-4 完了。終わったら Claude はパートDへ。

---

## パートD：動作確認（Claudeが代行）

Claude が次を順に実行して確認します。

```bash
# 1) Webhook検証（test123 が返ればOK）
curl "{Worker URL}/webhook?hub.mode=subscribe&hub.verify_token={Verify Token}&hub.challenge=test123"
```

2) 別のIGアカウントから、対象IGビジネスアカウントに **DMを1通** 送る → 管理画面 or API でフォロワー登録を確認
3) テスト用に「コメント→DM自動配布」ルールを1本作り、対象リールにキーワードでコメント → DMが届くか実地確認

ここまで通れば **セットアップ完了**。以後は Claude Code に自然言語で
「〇〇のリールに『欲しい』でコメントした人に、フォロー確認してから特典DMを配布するゲートを作って」
のように指示すれば運用できます（MCP設定済みの場合）。

---

## ⚠️ よくあるエラーと解決策

| 症状 | 原因 | 解決 |
|------|------|------|
| Webhookが届かない | アカウントレベル購読が未設定 | パートC-2 のcurlを実行 |
| Webhookが届かない | アプリが開発モードのまま | パートC-3 で公開 |
| イベントが `standby` で来る | 他アプリ(ManyChat等)がプライマリ受信 | パートC-4 ルーティング設定 |
| `2534014` ユーザーが見つからない | プライマリレシーバーでない | パートC-4 ルーティング設定 |
| `2534037` スレッド所有者ではない | ルーティング未完了 | パートC-4 ルーティング設定 |
| ManyChatを消してもstandbyが続く | IGアプリ/FBの連携残骸 | IGアプリ→設定→接続済みアプリ、FB→ビジネス統合 からManyChatを削除し、購読を再登録 |
| 新規フォロワーに自動DMが送れない | IG API仕様（相手が先にDMを送るまで送信窓が開かない・全世界共通） | 「コメント→DM」トリガーを使う |
| `wrangler login` でブラウザが開かない | 環境依存 | 表示されたURLを手動でブラウザに貼る |

---

## 参考リンク

- 📖 画像つき完全ガイド: https://harness-wiki.pages.dev/article/ig-harness-complete-setup-guide
- GitHub（公開）: https://github.com/Shudesu/ig-harness-oss
- 最短セットアップ手順: リポジトリ内 `docs/QUICKSTART.md`
- 実体験ベースの罠集: リポジトリ内 `docs/SETUP-GUIDE.md`

---

*この依頼書は朝倉駿（料理家・SNS集客コンサルタント）の顧問サービスの一環として提供されています。*
