SEO Report Agent — Claude Code用配布スターター
SEO Report Agent — Claude Code 用配布スターター
GA4 × Search Console から自動で SEO 定点観測レポートを生成して Discord に投稿する Claude Code エージェント のスターターキット。
できること
毎朝 / 毎夕、Discord にこんなレポートが届きます:
📅 5/26(火) 朝レポ | Phase 3・Organic 95.2%
…ん、昨日のデータ見てた。総評は「安定」。
DAU は平日水準に戻って、前週火曜とほぼ同じ。
昨日(5/26) 前週火(5/19)
DAU 11,071 11,047 (±0%)
PV 17,878 17,896 (±0%)
Bounce 44.7% 44.2%
■ 効いてる (WoW)
🟢 宮城が急浮上: aircon/miyagi +168%
🟢 living-support/hokkaido +400%
■ 気になる
🔴 vehicle/shizuoka -86% なのに pos 3.2→3.0 で改善
→ AI Overview か季節要因の疑い
■ アクション
🔴 北海道給付金: pos5.2 でも CTR 2.5%。タイトル見直しで +110cl/wk
🟡 shizuoka EV のクリック消失原因を SERP で特定
- 6 分程度で完了 / 1 回約 $0.5-2.0
- データソース: GA4 + Search Console(両方の公式データ)
- データ羅列ではなく So what? と Next action を必ず含める仕様
---
アーキテクチャ
┌────────────────────┐
│ launchd / cron │ 定時起動 (毎朝 7:00 など)
└─────────┬──────────┘
▼
┌────────────────────┐
│ scripts/run-agent.sh │ Claude Code を非対話モードで起動
└─────────┬──────────┘
▼
┌──────────────────────────────────────────────┐
│ Claude Code (claude -p) │
│ │
│ サブエージェント: seo-report │
│ ├ サイト固有パラメータ (property_id, URL) │
│ ├ 人格・口調 │
│ └ スキル: seo-reporting (preload) │
│ ├ GA × GSC クロス分析手順 │
│ ├ Phase 判定ロジック │
│ ├ Bot 除外フィルタ │
│ └ 朝レポ / 夕方レポのテンプレ │
│ │
│ MCP: │
│ ├ analytics-mcp (GA4) │
│ └ gsc (Search Console) │
└─────────┬─────────────────────────────────────┘
▼
┌────────────────────┐
│ Discord Webhook │
└────────────────────┘
設計のキモ: Anthropic 公式の "Subagent → Skill (preload)" パターン。
スキルは 業界横断の手順書、エージェントは サイト固有設定と人格 に専念。
---
配布物の中身
seo-report-agent-starter/
├── README.md ← このファイル
├── LICENSE ← MIT
├── .gitignore ← 機密ファイル除外
├── .env.example ← Discord Webhook URL 設定例
├── .mcp.json.example ← MCP 設定例
├── .claude/
│ ├── agents/
│ │ └── seo-report.md ← ★ サイト固有パラメータ・人格 (要編集)
│ └── skills/
│ └── seo-reporting/
│ └── SKILL.md ← 汎用 GA × GSC 分析ロジック (編集不要)
└── scripts/
├── notify-discord.sh ← Discord 通知 (汎用 Webhook)
└── run-agent.sh ← Claude 起動ラッパー
---
必要なもの
| ツール / サービス | 用途 | 取得 |
|---|---|---|
| Claude Code | エージェント本体 | https://claude.com/claude-code |
| Anthropic API キー (or Claude Pro/Max) | Claude 利用 | https://console.anthropic.com |
| Google Cloud プロジェクト | GA / GSC API 認証 | https://console.cloud.google.com |
| Service Account または OAuth クライアント | GA / GSC 認証 | 上記コンソール内で作成 |
| GA4 プロパティ | データソース | https://analytics.google.com |
| Search Console プロパティ | データソース | https://search.google.com/search-console |
| Discord サーバ + Webhook | 通知先 | Discord サーバの設定 |
| pipx | GA4 MCP の起動 | brew install pipx など |
| Python 3.10+ | GSC MCP の起動 | brew install python など |
| jq, curl | スクリプト用 | 標準で入っていることが多い |
---
セットアップ手順(30 分くらい)
Step 1. このスターターを配置
unzip seo-report-agent-starter.zip
cd seo-report-agent-starter
chmod +x scripts/*.sh
または既存プロジェクトに統合する場合は .claude/ scripts/ .mcp.json.example .env.example をマージ。
Step 2. Google Cloud で API を有効化
Google Cloud Console で以下 3 つの API を有効化:
- Google Analytics Data API
- Google Analytics Admin API
- Search Console API
Step 3. 認証情報を作成
方式 A: Service Account(定期実行向け・推奨)
- IAM & 管理 → サービスアカウント で新規 SA を作成
- SA の鍵 (JSON) を発行・ダウンロード →
~/.config/gcloud/seo-agent-sa.jsonなどに保存 - GA4 → 管理 → プロパティアクセス管理 → SA のメールアドレスを 閲覧者 で追加
- Search Console → 設定 → ユーザーと権限 → SA のメールアドレスを 制限付き で追加
方式 B: OAuth(個人利用向け・ブラウザ認証で楽)
gcloud auth application-default login \
--scopes https://www.googleapis.com/auth/analytics.readonly,https://www.googleapis.com/auth/webmasters,https://www.googleapis.com/auth/cloud-platform
→ ~/.config/gcloud/application_default_credentials.json が生成される。
Step 4. MCP サーバを準備
GA4 MCP(公式・pipx で起動)
# pipx が無ければ
brew install pipx
# テスト
pipx run analytics-mcp --help
→ 設定は .mcp.json の analytics-mcp セクション。
Search Console MCP(コミュニティ製・git clone)
git clone https://github.com/AminForou/mcp-gsc.git ~/.local/share/mcp-gsc
cd ~/.local/share/mcp-gsc
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
Step 5. .mcp.json を作成
cp .mcp.json.example .mcp.json
# エディタで開いて、絶対パスと project_id を埋める
埋める箇所:
GOOGLE_APPLICATION_CREDENTIALS: 上で作った SA JSON or ADC JSON の絶対パスGOOGLE_PROJECT_ID: GCP プロジェクト IDGSC_CREDENTIALS_PATH: 同じ JSON のパス(GSC MCP も同じ SA を使い回せます)command/argsの絶対パス: 自分の環境のもの
Step 6. Discord Webhook を作成
- Discord サーバ → チャンネル設定 → 連携サービス → ウェブフック
- 新しいウェブフックを作成 → URL をコピー
.env.exampleをコピーして URL を貼り付け:
cp .env.example .env
# .env を開いて DISCORD_WEBHOOK_URL を貼り付け
Step 7. エージェントをカスタマイズ
.claude/agents/seo-report.md を開いて以下を自分のサイトに合わせて書き換える:
- サイト名・リリース日・事業モデル
- GA4 property_id (★必須★)
- GSC site_url (★必須★)
- サイト構造(URL prefix とページタイプ)
- SEO 戦略の勝ち筋
- 人格・口調(お好みで)
Step 8. 動作確認
MCP 接続確認
claude # Claude Code を起動
> /mcp # MCP 一覧を表示
# "analytics-mcp" と "gsc" が表示されれば OK
1 回手動実行
bash scripts/run-agent.sh seo-report .claude/agents/seo-report.md
→ 6 分くらいで Discord にレポートが投稿される。
Step 9. 定期実行(任意)
macOS なら launchd、Linux なら cron を使う。詳細は agent.md 末尾「スケジュール」セクション参照。
---
カスタマイズの勘所
サイトを 2 つ以上運用する場合
.claude/agents/seo-report/ をコピーして seo-report-siteB/ を作る:
cp -r .claude/agents/seo-report .claude/agents/seo-report-siteB
# agent.md の name と property_id / site_url を書き換える
スキル本体 (.claude/skills/seo-reporting/SKILL.md) は触らない。
これが「skill = 業界横断手順書」の真価。
通知先を Slack に変える
scripts/notify-discord.sh を notify-slack.sh にコピーして、Slack の Incoming Webhook URL に POST するように書き換えるだけ。agent.md の通知呼び出しも書き換える。
朝レポ / 夕方レポの形式を変える
.claude/skills/seo-reporting/SKILL.md の「朝レポート」「夕方レポート」セクションのテンプレートを編集する。全エージェントに即反映 されるのが skill 中央集権の利点。
言語を英語に変える
agent.md と SKILL.md の本文を英語化。Claude は両言語で同じように動きます。
---
トラブルシュート
| 症状 | 原因 | 対処 |
|---|---|---|
/mcp で MCP が表示されない | .mcp.json 文法エラー / Claude 再起動忘れ | JSON 検証 + Claude Code 再起動 |
PERMISSION_DENIED | GA4 / GSC で SA を招待してない | プロパティアクセス管理で SA を「閲覧者」で追加 |
API has not been used in project | Google Cloud で API 有効化忘れ | Console で各 API を有効化 |
| Discord 投稿が来ない | DISCORD_WEBHOOK_URL 未設定 / 形式不正 | .env を確認、curl -X POST 単独で疎通テスト |
| 異常な DAU 値(3 倍など) | Bot 除外フィルタ未適用 | SKILL.md の「Bot 除外フィルタ必須」セクション参照 |
| GSC データが取れない | site_url の形式違い | 末尾スラッシュ込みの正規 URL を指定(or sc-domain: 形式) |
---
参考リンク
- Agent Skills 公式仕様: https://agentskills.io
- Claude Code Skills ドキュメント: https://code.claude.com/docs/en/skills
- Claude Code Subagents ドキュメント: https://code.claude.com/docs/en/sub-agents
- Anthropic 公式 GA4 MCP: https://github.com/googleanalytics/google-analytics-mcp
- GSC MCP(コミュニティ): https://github.com/AminForou/mcp-gsc
- MCP プロトコル: https://modelcontextprotocol.io
---
ライセンス
MIT。商用利用・改変・再配布自由。詳細は LICENSE を参照。
---
クレジット
このスターターは 「Subagent × Skill × MCP」 という Anthropic 公式パターンの実装例です。
スキル分離設計は実運用中の SEO エージェント(補助金エージェント運営)の知見を汎用化したもので、特に「Bot 除外フィルタ」「WoW 日割り正規化」「Phase 判定」などは現場で踏んだ落とし穴を反映しています。