·9分で読める

GA4でAIボットを除外してアナリティクスデータを正確にする方法

Google Analytics 4でAIクローラーのアクセスを除外し、正確なユーザー行動データを取得する設定方法とフィルター作成手順を解説します。

GA4Google AnalyticsAIボットフィルターアクセス解析

GA4でAIボットを除外してアナリティクスデータを正確にする方法

AIボットがGA4データを汚染している問題

2024年以降、GA4のレポートで説明のつかないセッション急増や、直帰率の異常な数値を経験したサイト運営者が増えています。その多くの原因がAIクローラーによるデータ汚染です。

AIボットがGA4に影響を与えるケース:

  • JavaScriptを実行するヘッドレスブラウザを使うAIクローラーが増えている
  • クロールセッションがGA4に計上されてコンバージョン率が下がる
  • 直帰率・滞在時間・ページビュー数が不正確になる
  • 広告のコンバージョン計測が狂う

GA4の標準ボットフィルタリング機能

まず、GA4に標準搭載されているボットフィルタリング機能を有効にします。

  1. GA4管理画面 → 「管理」をクリック
  2. 「データストリーム」→ 対象のストリームを選択
  3. 「詳細測定の設定」を開く
  4. 「既知のボットとスパイダーからのイベントを除外する」をONにする

注意:この標準機能はGoogleのボットリストに基づいており、最新のAIクローラー(PerplexityBot等)は含まれないことがあります。

カスタムフィルターでAIボットを除外する

方法① データフィルターの作成(GA4管理画面)

  1. GA4管理画面 → 「データの設定」→ 「データフィルター」
  2. 「フィルターを作成」をクリック
  3. フィルタータイプ:「デベロッパートラフィック」または「内部トラフィック」
  4. 条件:ホスト名または特定のイベントパラメータで除外

方法② GTM(Google Tag Manager)でUA検査

GTMを使っている場合、タグの発火条件にUser-Agent検査を追加できます:

// GTM カスタムJavaScript変数
function() {
  var ua = navigator.userAgent;
  var aiBotPattern = /GPTBot|ClaudeBot|PerplexityBot|Google-Extended|Amazonbot|Bytespider/i;
  return aiBotPattern.test(ua);
}

この変数を使って「AIボット = true の場合はGA4タグを発火しない」という条件を設定します。

方法③ gtag.js実装サイトの場合

<script>
  // GA4タグを読み込む前にUA検査
  (function() {
    var ua = navigator.userAgent;
    var aiBotPattern = /GPTBot|ClaudeBot|PerplexityBot|Google-Extended|Amazonbot|Bytespider|CCBot/i;

    if (aiBotPattern.test(ua)) {
      // AIボットの場合はGA4を無効化
      window['ga-disable-G-XXXXXXXX'] = true;
    }
  })();
</script>

<!-- GA4タグ(通常通り) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXX"></script>

Next.jsでGA4をAIボット除外付きで実装

// app/layout.tsx または _app.tsx
import Script from "next/script";

const AI_BOT_PATTERN = /GPTBot|ClaudeBot|PerplexityBot|Google-Extended|Amazonbot|Bytespider/i;

export default function RootLayout({ children }) {
  return (
    <html>
      <head>
        <Script id="ga4-bot-check" strategy="beforeInteractive">
          {/* AIボットの場合はGA4を無効化 */}
          {AI_BOT_PATTERN.test(navigator?.userAgent ?? "")
            ? "window['ga-disable-G-XXXXXXXX'] = true;"
            : ""}
        </Script>
        <Script
          src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXX"
          strategy="afterInteractive"
        />
      </head>
      <body>{children}</body>
    </html>
  );
}

サーバーサイドでの対応(最も確実)

最も確実なのは、AIボットにはそもそもHTMLを返さない(またはGA4タグなしのHTMLを返す)ことです:

// Next.js middleware.ts
import { NextRequest, NextResponse } from "next/server";

const AI_BOT_PATTERN = /GPTBot|ClaudeBot|PerplexityBot|Google-Extended|Amazonbot|Bytespider/i;

export function middleware(req: NextRequest) {
  const ua = req.headers.get("user-agent") ?? "";
  if (AI_BOT_PATTERN.test(ua)) {
    // AIボットには403を返すか、GA4タグなしのシンプルなレスポンスを返す
    return new NextResponse("Forbidden", { status: 403 });
  }
  return NextResponse.next();
}

AIアクセスの専門ツールと組み合わせる

GA4でのフィルタリングと並行して、AIボット専用の監視ツールを使うことで、ブロックした/されていないアクセスの全体像を把握できます。

AI Access Monitorでは、AIボットのアクセスをGA4とは独立して計測・記録します。GA4では見えない「ブロックしたAIボット」のアクセス数も把握できます。無料で始める →

まとめ:GA4データ品質向上チェックリスト

  • ✅ GA4の「既知のボット除外」機能をONにした
  • ✅ GTMまたはgtagでAIボットのUA検査を追加した
  • ✅ Next.js/サーバーサイドでAIボットを403ブロックした
  • ✅ AI Access Monitorでブロック済みアクセスも含めて全体を把握している

AI Access Monitor

まず計測から始めよう

1行のコード追加で、AIクローラーの計測を今日から開始。無料・設定不要。

無料で始める →