AEOの効果測定:GA4でChatGPT・Geminiからの流入を確認する手順と参照元の分類スクリプト
要点
- GA4にはAI アシスタント チャネルがある。 メディアが
ai-assistantの来訪で、ヘルプの例示はChatGPT・Gemini・Deepseek・Copilot・Grok。GoogleのAIによる概要とAIモードは対象外です。 - サービス別は参照元 / メディアで見る。 チャネルの合計だけでなく、
chatgpt.com / ai-assistantのような行で内訳を確認します。 - 自作スクリプトで7区分に分ける。 AIアシスタント・検索・SNS・アグリゲータ・直接・値なし・その他。各行に判定の根拠を残し、根拠のない候補は別に数えます。
- 参照元が届かない来訪は数えられない。 AI経由でも直接に入りえます。数えた件数は「判別できた分」です。
GIGAZINEが2026年10月24日に公開した2026年9月分のアクセス解析では、検索で来訪したフレーズの1位が「AI」でした。一方、同じ記事の「流入が大きかったサイト」上位10件はX、Googleニュース、はてなブックマーク、SmartNewsなどで、AIチャットのサービスは入っていません。AIは読まれる話題として強くても、AIの回答から来訪する経路がどれだけあるかは、各サイトが自分の計測で確かめるしかありません。GIGAZINEの数値は他サイトの実績なので、ここでは自サイトの見込みに使いません。
この記事は、AEO(Answer Engine Optimization、GEO/LLMOとも呼ばれる)の取り組みを続けるサイト運営者向けに、ChatGPTやGeminiからの来訪をGA4で確認する手順と、参照元の一覧をまとめて分類する通信しないNode.jsスクリプトを示します。AI検索で読まれるための点検はAI検索向けのサイト点検で扱いました。ここではその後の、来訪を数える段階を扱います。
GA4の「AI アシスタント」チャネルが判定するもの
デフォルト チャネル グループのヘルプは、AI アシスタントを「ChatGPT、Gemini、Deepseek、Copilot、Grok などのソースからユーザーがサイトにアクセスする際のチャネル」と説明し、GoogleのAIによる概要とAIモードは除外するとしています。判定ルールは次の2点です(2026年10月26日に英語版・日本語版の本文で確認)。
- メディアが
ai-assistantと完全に一致すれば、AI アシスタント チャネルに入る。 - 参照URLがAIアシスタントのリストと一致すると、メディアは
ai-assistant、キャンペーンは(ai-assistant)に設定される。
ヘルプが挙げるのはサービス名で、照合に使うリストの中身は本文に載っていません。ヘルプからダウンロードできる参照元カテゴリの表にAIの区分があるかは、今回確認していません。つまり、ヘルプの例示にないサービスがAI アシスタントに入るかどうかは、実際に記録された行を見るまで分かりません。
「最新情報」には、2026年5月13日の項でAI アシスタント チャネルの追加が載っており、例としてChatGPT・Gemini・Claudeを挙げています。2026年6月11日の項にはSource Group(参照元グループ)の追加があり、ChatGPT (OpenAI)とPerplexityに触れています。Source Groupは広告セクションで参照元の表記をまとめる別の仕組みで、AI アシスタント チャネルの判定一覧ではありません。この記事のスクリプトでも、この2つを別の根拠として扱います。
GA4の画面で確認する手順
- GA4のプロパティを開き、レポートの「集客」から「トラフィック獲得」を開きます。
- 表のディメンションが「セッションのデフォルト チャネル グループ」になっていることを確認し、AI アシスタントの行を探します。行がなければ、その期間にAI アシスタントと判定された記録がないということです。訪問がなかったとは断定できません。
- ディメンションを「セッションの参照元 / メディア」に切り替え、
ai-assistantで検索します。chatgpt.com / ai-assistant、gemini.google.com / ai-assistantのように、サービス別の行が出ます。 - 同じ表で、
referralやorganicのままのAI関連らしい行もないか見ます。GA4がAI アシスタントと判定しなかった参照元は、ここにしか現れません。
画面の項目名は、ヘルプが「集客レポート」で確認できると説明しているディメンション名に合わせています。今回は画面を撮影していないので、表示名が変わっている場合はヘルプの名称で探してください。期間を変えるときは、計測タグが外れていた日や、チャネルが追加される前の期間を含めていないかも確認します。
参照元の一覧を分類スクリプトにかける
画面の表は数十行までなら目で追えますが、期間を変えて繰り返すと、どの行をAIとして数えたかが毎回ぶれます。そこで、参照元とメディアの組を決まった規則で7区分に分けるスクリプトを作りました。
分類スクリプト ai-referrer-classify.mjs を保存する。Node.js 18以降で、追加パッケージなしで動きます。通信はしません。まず、同梱の架空サンプルで出力を確かめます。
node .\ai-referrer-classify.mjs --samplefictional sample (not real analytics data)sessions total: 212AIアシスタント / AI検索: 16 sessions (7.5%), 4 rows従来の検索エンジン: 64 sessions (30.2%), 3 rowsSNS: 4 sessions (1.9%), 1 rowsニュースアグリゲータ・ブックマーク: 5 sessions (2.4%), 1 rows直接(参照元なし): 120 sessions (56.6%), 1 rows参照元の値なし((not set)・空欄): 2 sessions (0.9%), 1 rowsその他の参照元: 1 sessions (0.5%), 1 rows of AI: GA4 medium=ai-assistant 12 sessions; unverified-only evidence 2 sessionsrows with missing sessions (not counted as 0): 1この数値は説明用に作った架空のサンプルです。 CodeAgentや実在のサイトの計測値ではなく、GA4が各参照元を実際にどう判定するかを示すものでもありません。続く行ごとの出力では、perplexity.ai / referralのようにGA4がAI アシスタントと記録していない行も、ホスト名の一覧からAIとして数え、根拠の種類を表示します。
自分のデータを使うときは、セッションの参照元・メディア・セッション数を列に持つCSVを渡します。列名はGA4 Data APIのディメンション名sessionSource・sessionMediumと指標名sessionsです。列の順番は問いません。
node .\ai-referrer-classify.mjs --csv .\ga4-source-medium.csvnode .\ai-referrer-classify.mjs chatgpt.com referral # 1件だけ判定するnode .\ai-referrer-classify.mjs --list # AIのホスト一覧と根拠Data APIで取得するなら、runReportのリクエストでディメンションにsessionSourceとsessionMedium、指標にsessionsを指定します。GA4の画面から書き出したCSVは列名や先頭の行が異なるので、そのままでは読めません。画面の書き出し形式はこの記事では検証していないため、列名を上の3つに書き換えてから渡してください。
判定の順番は、GA4のメディアai-assistant、(direct)、(not set)と空欄、AIのホスト名、AIのソースラベル、ニュースアグリゲータ、検索、メディアorganic、SNS、その他です。gemini.google.comは検索の規則より先にAIとして判定し、news.google.comはGoogleニュースとしてアグリゲータに入れます。Google検索のgoogle / organicは検索です。
AIのホスト名には、根拠の種類を付けています。
| 根拠の種類 | 意味 | 例 |
|---|---|---|
official | デフォルト チャネル グループのヘルプがAI アシスタントの例に挙げるサービス | ChatGPT、Gemini、Copilot、DeepSeek、Grok |
whats-new | 最新情報の2026年5月13日の項が例に挙げるサービス | ChatGPT、Gemini、Claude |
source-group | 最新情報の2026年6月11日のSource Groupの項に名前がある | ChatGPT (OpenAI)、Perplexity |
observed | codeagent.jpのGA4でメディアai-assistantとして記録されていた | chatgpt.com、gemini.google.com |
third-party | 第三者のカスタムチャネルグループ解説記事の正規表現に含まれていた候補。Googleの公式一覧ではなく、今回は記事本文を再確認できていない | you.com、poe.com など |
unverified | 候補として載せるが、上のどの根拠も確認できていない | duck.ai、wenxin.baidu.com、ソースラベルのopenai |
公式の例示はサービス名なので、chatgpt.comのようなホスト名はサービスの公開URLを当てたものです。出力の末尾に、AIのうち根拠がunverifiedだけの件数を別に出します。この件数はAIの合計に含めつつ、報告では分けて書く想定です。
テスト11件で固定したこと
開発用リポジトリでは、同じスクリプトに対してnode:testのテストを用意しています。2026年10月26日にNode.js 24.22.1で実行し、11件すべて通過しました。
- ホスト名の正規化(大文字、末尾のドット、
www.、URLから取り出す場合) - 一覧のAIホストと、そのサブドメインがAIに入ること
- メディア
ai-assistantがホスト名の規則より優先され、一覧にないホストでもAIとして残ること - Google検索は検索、Geminiは AI、Googleニュースはアグリゲータ、Googleドキュメントはその他に分かれること
organicメディアで一覧にない参照元を検索に入れ、一覧未確認と表示すること- SNS・アグリゲータ・直接・値なし・その他の代表例
- 根拠の種類が決まった6種類だけで、
officialのサービスがヘルプの5件と一致すること - セッション数の空欄を欠落として扱い、0とは数えず、小数や文字は停止すること
- 架空サンプルの集計値
- CSVの読み込みと集計
- 公開している配布ファイルと開発用ファイルが同じ内容であること
テストは文字列の判定だけを見ます。GA4やAIサービスへの通信はなく、GA4が今後どのホストをAI アシスタントと判定するかは保証しません。
CodeAgentで分類して分かったこと
codeagent.jpのGA4から2026年10月26日に取得した参照元 / メディアの保存データを、同じスクリプトで分類しました。このサイトでは自サイトのアクセス数を記事に載せない方針なので、件数と割合は省き、観測できたことだけを書きます。
chatgpt.comとgemini.google.comが、メディアai-assistantとして記録されていました。GA4のAI アシスタント チャネルは、このサイトでも実際に値を返しています。openaiというソースラベルが、メディアorganicと(not set)の行で記録されていました。organicの行は、GA4の規則ではAI アシスタントではなくオーガニック検索に入ります。どの画面からの来訪かは確認できないので、スクリプトではunverifiedのAI候補として別に数えています。- ERNIE Botのホスト名とされる
wenxin.baidu.comがreferralで記録されていました。GA4はAI アシスタントと判定しておらず、根拠も確認できていないので、これもunverifiedです。 - Microsoft Teamsの配信用と見られるホストなど、どの区分の規則にも当たらない参照元は「その他」に残しました。名前から推測して区分を増やすことはしていません。
GA4の標準チャネルだけを見ると、openai / organicのような行はオーガニック検索の合計に含まれ、AIの候補として目に入りません。参照元 / メディアの行を一度は全部見て、どの行をどの根拠で数えたかを残すことが、このスクリプトを作った理由です。
判定の限界
- 参照元が届かない経路。 アプリの中からリンクを開いた場合や、URLをコピーして貼った場合などは、参照元が届かないことがあります。どのアプリがどう送るかは、この記事では検証していません。
- ホスト名の変化。 サービスのドメインが変わったり、新しいサービスが出たりすると、一覧の更新が必要です。旧ホスト名として挙げられる
chat.openai.comも第三者の記事由来の候補です。一覧は根拠の種類と一緒に見直します。 - Googleのリストは非公開。 GA4がどのホストをAI アシスタントとするかは、例示以外は記録された行から推し量るしかありません。
- AIによる概要とAIモードは対象外。 Google検索の中のAI機能からの来訪は、AI アシスタント チャネルでは数えません。検索での表示とクリックは、Search Consoleの検索パフォーマンスなど別の集計で見ます。
- 値なしと0は別。 CSVでセッション数が空欄の行は欠落として扱い、0セッションの行とは分けます。CSVに行がない参照元は、0件と記録された行と同じではありません。計測タグが外れていた期間の記録がないことも、訪問がなかったことを意味しません。
- 件数が小さいサイトの比較。 月に数件の差は、記事の改善による変化なのか偶然なのか区別できません。期間をそろえ、同じ規則で数えた結果を並べます。
よくある質問
GA4でChatGPTからの流入はどこで確認できますか?
集客レポートの「トラフィック獲得」で、表のディメンションを「セッションのデフォルト チャネル グループ」にしてAI アシスタントの行を見ます。サービス別に分けるときは「セッションの参照元 / メディア」に切り替え、メディアがai-assistantの行を探します。Googleのヘルプは、AI アシスタントの例としてChatGPT・Gemini・Deepseek・Copilot・Grokを挙げています(2026年10月26日確認)。
GoogleのAIによる概要やAIモードからのクリックもAI アシスタントに入りますか?
入りません。デフォルト チャネル グループのヘルプは、AI アシスタント チャネルからGoogleのAIによる概要とAIモードを除外すると説明しています。参照元がGoogle検索として届けば、規則上は検索サイトの一覧に基づいてオーガニック検索に分類されますが、この記事では実際のクリックで確かめていません。
参照元が届かなかったAI経由の来訪も数えられますか?
数えられません。参照元が届かない来訪は、GA4では直接((direct))として記録されえます。この記事の分類スクリプトも参照元の文字列だけを見るので、届かなかった情報を復元できません。AIアシスタントの件数は「参照元で判別できた分」として読みます。
出典と確認日
GA4の判定ルールは、デフォルト チャネル グループ(英語版も確認)と最新情報の本文を2026年10月26日に読んで確認しました。GIGAZINEの記事も同日に確認し、検索フレーズと流入元の順位だけを引用しています。第三者のカスタムチャネルグループ解説記事は、スクリプトの候補一覧の出所として記録していますが、Googleの公式一覧ではなく、今回は本文の該当箇所を確認できていません。
分類スクリプトとテストはCodeAgentが作成したものです。Googleが作成・保証する一覧ではありません。AI検索で読まれるための前提はAI検索向けのサイト点検、AIのクローラーと各社のUser-AgentはAIクローラーのUser-Agent一覧とrobots.txtの書き方を参照してください。
この記事の情報・検証メモ
- aeo
- ai-search
- ga4
- analytics
- nodejs
- testing
- 公開日
- 情報確認
- 参考リンク
- 3件
- 更新性
- 定期更新
仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。
一次情報・参考リンク
- アナリティクス ヘルプ: デフォルト チャネル グループ(AI アシスタントの説明と判定ルール、2026-10-26確認) https://support.google.com/analytics/answer/9756891?hl=ja
- Analytics Help: What's new in Google Analytics(2026-05-13 AI Assistant、2026-06-11 Source Group、2026-10-26確認) https://support.google.com/analytics/answer/9164320?hl=en
- GIGAZINE: 2026年度9月分のGIGAZINEのアクセス解析結果(2026-10-24公開、2026-10-26確認) https://gigazine.net/news/20261024-access/