投稿する

SEO Report Agent — Claude Code用配布スターター

GA4とSearch Consoleのデータを統合し、SEOの定点観測レポートを自動生成するClaude Code用エージェントのスターターキットです。単なるデータの羅列ではなく、サイトの成長フェーズに合わせた分析や、URL単位のクロス分析、次の一手(Next Action)の提案までを自動で行い、Discordへ通知します。 毎朝・毎夕の定期実行に対応しており、専任のSEO担当者が不在の環境でも、AIが「今何が起きているか」を鋭く分析して報告します。Bot除外や日割り正規化などの専門的な分析ロジックを標準搭載しており、サイト固有の情報を設定するだけで、高精度なSEOレポート運用を即座に開始できるのが特徴です。
zip未取得

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 サーバの設定
pipxGA4 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(定期実行向け・推奨)

  1. IAM & 管理 → サービスアカウント で新規 SA を作成
  2. SA の鍵 (JSON) を発行・ダウンロード → ~/.config/gcloud/seo-agent-sa.json などに保存
  3. GA4 → 管理 → プロパティアクセス管理 → SA のメールアドレスを 閲覧者 で追加
  4. 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 プロジェクト ID
  • GSC_CREDENTIALS_PATH: 同じ JSON のパス(GSC MCP も同じ SA を使い回せます)
  • command / args の絶対パス: 自分の環境のもの

Step 6. Discord Webhook を作成

  1. Discord サーバ → チャンネル設定 → 連携サービス → ウェブフック
  2. 新しいウェブフックを作成 → URL をコピー
  3. .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_DENIEDGA4 / GSC で SA を招待してないプロパティアクセス管理で SA を「閲覧者」で追加
API has not been used in projectGoogle 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 判定」などは現場で踏んだ落とし穴を反映しています。