GA4でAIボットを除外してアナリティクスデータを正確にする方法
AIボットがGA4データを汚染している問題
2024年以降、GA4のレポートで説明のつかないセッション急増や、直帰率の異常な数値を経験したサイト運営者が増えています。その多くの原因がAIクローラーによるデータ汚染です。
AIボットがGA4に影響を与えるケース:
- JavaScriptを実行するヘッドレスブラウザを使うAIクローラーが増えている
- クロールセッションがGA4に計上されてコンバージョン率が下がる
- 直帰率・滞在時間・ページビュー数が不正確になる
- 広告のコンバージョン計測が狂う
GA4の標準ボットフィルタリング機能
まず、GA4に標準搭載されているボットフィルタリング機能を有効にします。
- GA4管理画面 → 「管理」をクリック
- 「データストリーム」→ 対象のストリームを選択
- 「詳細測定の設定」を開く
- 「既知のボットとスパイダーからのイベントを除外する」をONにする
注意:この標準機能はGoogleのボットリストに基づいており、最新のAIクローラー(PerplexityBot等)は含まれないことがあります。
カスタムフィルターでAIボットを除外する
方法① データフィルターの作成(GA4管理画面)
- GA4管理画面 → 「データの設定」→ 「データフィルター」
- 「フィルターを作成」をクリック
- フィルタータイプ:「デベロッパートラフィック」または「内部トラフィック」
- 条件:ホスト名または特定のイベントパラメータで除外
方法② 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でブロック済みアクセスも含めて全体を把握している