n8nを使って自社のサイトに特化したSEOレポートを自動生成しよう

毎月のSEOレポート、まだ手作業で作っていませんか?

GA4を開いて、Search Consoleを開いて、数字をスプレッドシートにコピペして、グラフを整えて——
毎月この繰り返しをしていないでしょうか。

「数字を並べるだけなら何とかなる。でも、分析コメントを書くのが一番しんどい」。
そんな声をよく聞きます。前月比で何が変わったのか、なぜ変わったのか、次に何をすべきか。
この「だから何なのか」を言語化する作業が、レポート作成で最も時間がかかる部分です。

今回、私たちは n8n + GA4 API + Search Console API + LLM(Claude) を組み合わせて、
データ取得から分析コメント生成、Teamsへの投稿までを完全自動化する実験を行いました。

その実験ログを公開します。

n8nとLLMを組み合わせれば、「自社サイト専用のSEOアナリスト」を自動化できる

先に結論をお伝えします。今回構築したワークフローでできることは以下の通りです。

  • GA4から直近のセッション数・ページビュー・流入経路・ユーザー行動データを自動取得
  • Search Consoleから検索クエリ・表示回数・クリック数・掲載順位を自動取得
  • 取得したデータをLLM(Claude)に渡して、サイト固有の分析コメントを自動生成
  • レポートをTeamsチャネルに自動投稿(週次 or 月次で定期実行)

汎用的なSEOツールとの違いは、自社のKPIや事業文脈をプロンプトに組み込める点です。
「うちのサイトにとって何が重要か」に特化した分析が得られます。

全体のアーキテクチャは以下の通りです。

graph LR
    A[GA4 Data API] --> C[n8n]
    B[Search Console API] --> C
    C --> D[LLM / Claude API]
    D --> E[レポート生成]
    E --> F[Teams投稿]

    style C fill:#ff6d5a,color:#fff
    style D fill:#7c5cfc,color:#fff

構築にかかった時間は約半日。月々の運用コストはAPI利用料のみで、ほぼゼロです。

なぜ「n8n × API × LLM」の構成にしたのか

n8nを選んだ理由

自動化ツールはZapierやMakeなど選択肢がありますが、n8nを選んだ理由は3つあります。

  1. セルフホスト可能:社内データを外部のSaaSに出さずに済みます。製造業の情報管理要件に合致する点が大きい
  2. API連携の自由度が高い:HTTP Requestノードで任意のAPIを柔軟に呼び出せます。
    GA4 Data APIやSearch Console APIにも対応可能
  3. ワークフローをGit管理できる:JSONエクスポートでバージョン管理ができるため、チームでの運用にも向いています

ものづくりAI研究所では、こうした自動化実験の基盤としてn8nを採用しています。

GA4 API / Search Console APIを直接使う理由

GA4の標準レポートやLooker Studioでもレポートは作れます。
しかし、今回あえてAPIを直接叩く構成にしました。理由は明確です。

  • 「自社にとって重要な指標だけ」を抽出するには、APIが最も柔軟
  • Search ConsoleのデータとGA4のデータを1つのレポートにまとめるには、両方のAPIが必要
  • 何より、LLMに渡すための構造化データを得るにはAPIが最適

つまり、API直接アクセスは「LLMに分析させる」ための前提条件なのです。

SEOレポート作成にLLMを挟む理由

レポート自動化の既存ソリューション——Looker StudioやData Portalは「数字の可視化」まではできます。
しかし、「分析コメント」は人間が書くしかなかったのが従来の限界でした。

LLMの登場で「数値データ → 分析テキスト」の変換が可能になりました。ポイントは、プロンプトに自社の文脈を埋め込むことです。

  • 自社サイトのKPI定義(何を重視しているか)
  • 注力しているページやキーワード
  • 前月比で注目すべき変化の閾値

これにより、汎用SEOツールの定型コメントではなく、自社のWeb担当者が書くような分析が自動生成されます。

実際に構築してみた — 5つのステップ

graph LR
    S1[Step 1
API有効化] --> S2[Step 2
GA4データ取得]
    S2 --> S3[Step 3
Search Console
データ取得]
    S3 --> S4[Step 4
LLMで分析生成]
    S4 --> S5[Step 5
Teams投稿
定期実行]

    style S1 fill:#e8e8e8,color:#333
    style S2 fill:#4285f4,color:#fff
    style S3 fill:#34a853,color:#fff
    style S4 fill:#7c5cfc,color:#fff
    style S5 fill:#ff6d5a,color:#fff

Step 1:Google Cloud ConsoleでAPIを有効化する

まず、Google Cloud Consoleで以下の2つのAPIを有効化します。

  • GA4 Data API(Analytics Data API v1)
  • Search Console API(Search Console API v1)

サービスアカウントを作成し、JSON鍵ファイルをダウンロードします。
その後、GA4プロパティとSearch Consoleプロパティの両方に、このサービスアカウントのメールアドレスを閲覧者以上の権限で追加してください。

つまずきポイント
GA4プロパティへの権限付与を忘れがちです。
Google Cloud Console側でAPIを有効化しただけでは、データにアクセスできません。
GA4の管理画面で「プロパティのアクセス管理」からサービスアカウントを追加する必要があります。

Step 2:n8nでGA4データを取得する

n8nのHTTP Requestノードを使って、GA4 Data API v1を呼び出します。

認証にはサービスアカウントのJWT認証を使います。
n8nの「Credentials」でGoogle Service Accountを登録し、先ほどダウンロードしたJSON鍵ファイルの内容を設定してください。

リクエストボディでは、dimensions(日付、ページパスなど)とmetrics(セッション数、PV数、アクティブユーザー数など)を指定します。
レスポンスはネストされたJSON構造で返ってくるので、Setノードやコードノードで必要なデータだけを抽出・整形します。

Step 3:Search Consoleのデータも取得する

Search Console APIの呼び出しもGA4と同じ流れです。
検索アナリティクスのエンドポイントから、以下のデータを取得します。

  • 検索クエリ(どんなキーワードで検索されたか)
  • ページURL
  • クリック数・表示回数・CTR・掲載順位

GA4データとSearch Consoleデータは、n8nのMergeノードで1つのデータセットに統合します。

つまずきポイント:GA4とSearch Consoleでは日付範囲のずれが発生しやすいです。
Search Consoleのデータは2〜3日遅れで反映されるため、両者の集計期間を揃える工夫が必要です。

Step 4:LLMに渡して分析コメントを自動生成する

ここが今回の実験の核心部分です。統合したデータをLLM(Claude API)に渡して、分析コメントを自動生成します。

graph TD
    A[GA4データ
セッション・PV・流入経路] --> C[データ統合・整形]
    B[Search Consoleデータ
クエリ・順位・CTR] --> C
    C --> D[プロンプト構築]
    E[自社KPI定義
注力キーワード
変化の閾値] --> D
    D --> F[Claude API]
    F --> G[分析レポート
Markdown形式]

    style C fill:#ff6d5a,color:#fff
    style D fill:#ff6d5a,color:#fff
    style F fill:#7c5cfc,color:#fff
    style G fill:#34a853,color:#fff

プロンプト設計のポイントは3つあります。

  1. 役割の設定:「あなたは〇〇社のWebマーケティングアナリストです」とシステムプロンプトで指定
  2. 自社文脈の埋め込み:KPI定義や注目指標をプロンプトに含める
  3. 出力フォーマットの指定:Markdown形式でレポート構成を指定し、そのまま投稿できる形にする

実験結果:生成された分析コメントの品質は「7割はそのまま使える」レベルでした。
「前月比でセッション数が12%増加しており、特にブログ記事Aの流入増が主因です」のような分析は的確です。
ただし、「なぜその変化が起きたのか」の考察はやや表層的になりがちで、ここは人間がひと言添える必要があります。

プロンプトは3〜4回のチューニングで実用レベルに達しました。

Step 5:Teamsに自動投稿して定期実行する

最後に、生成されたレポートをMicrosoft TeamsのIncoming Webhook経由で投稿します。
n8nのHTTP RequestノードでWebhook URLにPOSTするだけです。

定期実行は、n8nのScheduleトリガーで設定します。毎週月曜の朝9時にレポートが届く、という運用にしました。

実験から見えた「使えるレベル」と「まだ足りない部分」

うまくいったこと

  • データ取得からレポート生成、投稿まで完全自動化を達成
  • LLMの分析コメントは7割がそのまま使える品質。人間が軽く手直しすれば実用十分
  • 構築後の運用コストはほぼゼロ(API利用料のみ)

改善が必要な点

  • LLMの分析が「前月比で下がりました」のような表層的コメントに留まることがある。プロンプトの継続改善が必要
  • データ量が多いとトークン数が増えてコストが上昇する。事前にデータを要約・フィルタリングする工夫が有効
  • Teamsへの投稿時にMarkdownの互換性問題が発生する場合がある。Adaptive Card形式への変換を検討中

業務にどう効くか

graph LR
    subgraph Before["従来の運用"]
        direction TB
        B1[GA4を開く] --> B2[数値をコピペ]
        B2 --> B3[グラフ作成]
        B3 --> B4[分析コメント執筆]
        B4 --> B5[レポート共有]
    end

    subgraph After["自動化後の運用"]
        direction TB
        A1[n8nが自動実行] --> A2[Teamsに届く]
        A2 --> A3[15分レビュー]
    end

    Before -. "毎月2〜3時間" .-> After
    After -. "毎月15分" .-> Done[次の施策を考える時間へ]

    style Before fill:#fff3e0,color:#333
    style After fill:#e8f5e9,color:#333
    style Done fill:#7c5cfc,color:#fff

従来、毎月2〜3時間かけていたレポート作成が、自動化後はレビュー15分に短縮されました。

これは単なる時間削減ではありません。「レポートを作る時間」が「レポートを読んで次の施策を考える時間」に変わるのです。
特に、製造業のようにWeb担当が他業務と兼務しているケースでは、この効果は大きいはずです。

再現するためのチェックリスト

この実験を自社で再現するために必要なものをまとめます。

必要なもの 備考
Google Cloud Consoleアカウント GA4 Data API / Search Console API を有効化
GA4プロパティ + Search Consoleプロパティ サービスアカウントに閲覧者以上の権限を付与
n8n環境 セルフホスト版 or n8n Cloud
LLM APIキー Claude API 等
Teamsチャネル + Incoming Webhook URL 投稿先のチャネル

まずは「GA4データの取得だけ」でも試してみてください。1つ動けば、残りのステップは同じパターンの繰り返しです。

n8n × API連携の構築支援や、ものづくりAI研究所の取り組みについてのご相談は、お気軽にアディエムまでお問い合わせください。

参照元

関連記事