メインコンテンツへスキップ

AIO

AI引用を計測する

生成エンジンの回答に自社が引用・言及されたかを継続的にトラッキングする仕組みの実装を、netsujo.jpのai-citation-trackerを題材に解説します。

この記事の要点

  • 「AI経由でサイトに来た人数」と「AIの回答で自社が引用されたか」はまったく別の指標です。流入だけを見ると、引用されているのにクリックされない状態と、そもそも引用すらされない状態を区別できません。

  • 被引用はcitation presence(二値)とcitation share(割合)で追います。固定したクエリ集合と同一エンジンで、絶対値ではなく時系列の変化を見ることに意味があります。

  • 現状の実装はPerplexity中心のスケルトン段階です。出力は非決定的なため因果の断定は避け、改善すべきクエリの所在を特定する材料として使います。

— 01

「流入」と「被引用」は別物です

ChatGPTやPerplexity、GoogleのAI Overviews、Geminiといった生成エンジンが、検索行動の一部を代替しつつあります。ここで多くの担当者が見落とすのは、「AI経由でサイトに来た人数」と「AIの回答のなかで自社が引用されたかどうか」は、まったく別の指標だという事実です。本記事は後者、つまり生成エンジンの回答に自社が引用・言及されたかを継続的にトラッキングする仕組みの実装を扱います。なお現状の実装はPerplexityを中心としたスケルトン段階で、全エンジン横断の完全自動計測には至っていません。

まず計測対象を切り分けます。

  • AI流入(referral traffic): ChatGPTやPerplexityの回答に貼られたリンクをユーザーがクリックし、実際にサイトへ来訪した数。GA4では現在、ChatGPTやCopilotなどをAI Assistantsチャネルとして分類します。一方でGoogleのAI OverviewsやAI Mode経由の来訪はOrganic Search側に含まれるため、流入を見るときはチャネル定義の前提を確認する必要があります。日次の確定値ベースで見ると数時間から1〜2日遅れて観測される、いわば遅行指標です。

  • 被引用(citation presence): ユーザーがクリックしたかどうかに関係なく、生成エンジンの回答テキストや出典リストのなかに自社ドメインが含まれたかどうか。クリックされなくても、回答内に名前が出れば認知やブランド想起につながる可能性があります。こちらは先行指標として扱えます。

流入だけを見ていると、「AIに引用されているのに誰もクリックしていない」状態と「そもそも引用すらされていない」状態を区別できません。両者で打つべき手の優先度は変わります。前者はタイトルやスニペットの訴求改善が中心、後者はコンテンツそのものの引用適性の改善が中心になります。

GA4でのAI流入計測についてはAI検索からの流入は実際どれくらい?で詳しく扱いました。本記事はその補完として、「引用されたか」を測る側を解説します。役割分担は最後のセクションで改めて整理します。

— 02

計測する指標を定義する

被引用を数値で追うために、2つの基本指標を置きます。

  • citation presence(被引用の有無): あるクエリに対する回答のなかに、自社ドメインが出典・本文リンクとして1回でも出現したか。true / falseの二値です。

  • citation share(被引用シェア): 対象クエリ集合のうち、自社が引用されたクエリの割合。たとえば対象25クエリ中8クエリで引用されればシェアは32%です。

加えて、運用で役立つ補助指標として次を取ります。

  • citation depth: 回答内で自社が出典として現れた平均的な位置。上位に出るほど影響が大きいという仮説に基づきます。

  • competitor delta: 同じクエリ集合に対する自社シェアと、主要競合のシェアの差分。自社が伸びたのか、競合が落ちたのかを切り分けるために使います。

これらは特定のクエリ集合に強く依存します。指標の絶対値そのものより、同じクエリ集合・同じエンジンで時系列の変化を追うことに意味があります。

— 03

対象クエリ集合を設計する

被引用計測の精度は、クエリ集合の設計に大きく左右されます(ほかにモデルの揺れ・地域・ログイン状態・API仕様の変化も効きます)。トピッククラスタごとに、実際のユーザーが打ちそうな10〜30件の代表クエリを固定します。netsujo.jpの例では、次のような並びになります。

  • 指名・近接系: 「京都 Web3 開発会社」「京都 システム開発」

  • 用語解説系: 「DID とは」「RWA とは」

  • 課題解決系: 「PoC 失敗 原因」「スマートコントラクト 監査」

設計時の注意点は3つあります。

  1. 1

    集合を固定する。週ごとにクエリを足したり引いたりすると、シェアの変動が「コンテンツ改善の効果」なのか「集合を変えた影響」なのか分からなくなります。

  2. 2

    日本語は表記ゆれを織り込む。漢字・かな・ローマ字で回答が変わることがあるため、自然な範囲でバリエーションを含めます。

  3. 3

    指名検索を入れすぎない。社名を含むクエリは引用されやすく、シェアを実態より高く見せます。一般的な課題語の比率を意識します。

クラスタ定義はconfig/clusters.ymlのような設定ファイルに置き、コードから読み込む形にしておくと、エンジン横断で同じ集合を回せます。

— 04

クエリを投げて引用を判定する

現状のai-citation-trackerは、PerplexityのSonar APIを中心としたスケルトン実装です。Perplexityはレスポンスにcitations配列(出典URLのリスト)を返すため、被引用判定をもっとも素直に実装できます。最小ロジックは次のような擬似コードになります。

def query_perplexity(query, api_key):
    # Sonar API に messages を投げ、回答 + citations を受け取る
    resp = post("https://api.perplexity.ai/chat/completions", {
        "model": "sonar",
        "messages": [{"role": "user", "content": query}],
    }, auth=api_key)
    return resp

def check_brand_mention(citations, brand_hosts):
    # citations URL の hostname を parse し、完全一致 or サブドメイン一致で判定する。
    # 単純な部分文字列一致(host in url)は netsujo.jp.evil.com のような
    # 偽装ホストを誤検出するため避ける。
    for url in citations or []:        # citations は null/空がありうる
        host = urlparse(url).hostname or ""
        for brand in brand_hosts:      # 例: ["netsujo.jp"]
            if host == brand or host.endswith("." + brand):
                return True
    return False

citationsnullや空配列で返ることがある点、そして単純な部分文字列一致は誤検出する点に注意が必要です。URLをparseしてホスト名で判定します。

判定対象は2つに分けて扱うと安定します。

  • 出典リストの判定: citationsのような構造化された出典配列にドメインが含まれるか。誤検出が少なく、比較的取りやすい判定です(それでもURL正規化とnull処理は残ります)。

  • 本文テキストの判定: 回答本文中にブランド名やドメインが言及されているか。出典リンクは貼られないものの本文で名前だけ出る、というケースを拾えます。こちらは正規表現での表記ゆれ対策が必要です。

ChatGPT・Gemini・AI Overviewsは、出典の取り方がエンジンごとに異なります。ChatGPTは、UI上の回答を測るならログインを伴うブラウザ自動化、API上のweb search応答を測るなら公式APIの引用アノテーション、というように測定対象で配線が変わります。GeminiはGrounding with Google Searchが出典アノテーションを返すためAPIでの構造化取得が可能です。AI OverviewsはGoogle公式APIがなく、SerpAPIのような第三者SERP取得サービスでの近似になります(再現性や各社の利用規約に注意が必要です)。現状の実装はこの横断部分を拡張中で、完全自動の全エンジン計測には至っていません。Perplexityを起点に段階的に広げる前提で運用しています。

— 05

スナップショットを保存して推移を追う

1回の計測結果は、クエリ単位のスナップショットとして保存します。レスポンス全文ではなく、抽出済みの引用情報だけを残す点が肝心です(保存量とプライバシーの両面から)。1クエリ分の保存形式はおおよそ次の形です。

{
  "snapshot_date": "2026-06-02",
  "engine": "perplexity",
  "query": "京都 Web3 開発会社",
  "brand_hosts": ["netsujo.jp"],
  "citations": ["https://...", "https://..."],
  "brand_mentioned": true,
  "citation_count": 5
}

これを日付・エンジン・クエリごとにreports/ai-citations/配下へ蓄積します。週次で前回スナップショットと突き合わせ、次の差分を出します。

  • citation shareの前週比

  • 新たに引用されたクエリ(new mentions)

  • 引用が消えたクエリ(lost mentions)

  • 競合とのシェア差の変化

netsujo.jpではGitHub Actionsのcronで毎週月曜にまとめて回し、差分サマリーをDiscordに流す運用を想定しています。エンジンごとにレート制限が異なるため、実行間隔はそれに合わせて調整します。

— 06

引用されなかったクエリをループバックする

被引用計測の本当の価値は、数字を眺めることではなく、引用されなかったクエリを改善の入力に変えるところにあります。lost_mentionsや、そもそも一度も引用されないクエリが見つかったら、対応する自社ページを次の観点で見直します。

  • passage構造: 結論・定義が段落の先頭にまとまっているか。生成エンジンは引用しやすい一節(passage)を抜き出す傾向があり、要点が文章の奥に埋もれていると拾われにくくなる可能性があります。

  • 構造化データ: FAQや定義が構造化データとして機械可読になっているか。

  • クロール可否: そもそもAIクローラーがそのページに到達できているか。

引用されないページの典型パターンはAIに引用されないページの共通点に、引用適性を高める書き方は生成エンジン最適化(GEO)の基本llms.txtの実装ガイドにまとめてあります。計測で見つけた弱点を、これらの施策に流し込むループを回します。

— 07

計測の限界を正直に書く

この計測には、無視できない限界があります。運用判断を誤らないために明記します。

  • 出力の非決定性: 同じクエリでも、生成エンジンの回答は実行ごとに揺れます。1回のfalseで「引用されていない」と断定はできません。複数回・複数日の傾向で見る必要があります。

  • エンジンごとの差: Perplexityのように出典配列を返すエンジンと、出典の取得自体が近似になるエンジンでは、計測精度が揃いません。エンジン横断のシェアを単純合算すると誤解を生みます。

  • サンプル数の制約: クエリ集合が小さいと、シェアは数クエリの増減で大きく振れます。30クエリで1件動けば3ポイント超の変動です。

  • API仕様の変化: 出典の返し方やパラメータは各社の都合で変わります。判定ロジックは定期的な追従が前提です。

そのため、「この施策で引用率が何ポイント上がった」という因果の断定は避けています。計測が示せるのは、固定した条件下での相対的な推移と、改善すべきクエリの所在までです。

— 08

AI流入計測との役割分担

最後に、GA4でのAI流入計測と、本記事の被引用計測の役割を整理します。

  • AI流入計測(GA4): AIの回答から実際にクリックして来訪した数を測る。コンバージョンに近い、確定した結果の指標。詳細はAI検索からの流入は実際どれくらい?

  • 被引用計測(本記事): クリックの有無に関係なく、回答内に登場したかを測る。流入の手前にある、先行指標。

この2つを並べると、診断の解像度が上がります。被引用シェアが高いのに流入が少なければ、スニペットや訴求の改善余地があります。被引用シェアが低ければ、まずコンテンツの引用適性そのものを上げる段階です。なお生成エンジンの引用は非決定的で、引用された内容が常に正確とは限らない点も前提に置いておきます。それでも、改善すべきページを特定する材料としては有効です。netsujo.jpでの全体方針は事実だけで戦うSEO/AIOにまとめてあります。

よくあるご質問

AI流入計測があれば、被引用計測は不要では?

役割が違います。流入はクリックされて初めてカウントされる結果指標で、引用されてもクリックされなければゼロのままです。被引用計測は、クリック前の「回答に登場したか」を捉える先行指標であり、流入が動く前に施策の効きを確認できます。

全エンジンを自動で計測できますか?

現状のai-citation-trackerはPerplexity APIを中心としたスケルトン実装です。ChatGPT・Gemini・AI Overviewsは出典取得の配線がエンジンごとに異なり、横断の完全自動計測は拡張中です。まずPerplexityで運用を立ち上げ、段階的に広げる前提です。

citation presenceとcitation shareはどう違いますか?

presenceは「あるクエリ1件で引用されたか」の二値、shareは「クエリ集合全体のうち引用された割合」です。presenceを集計した割合がshareだと捉えると整理しやすいです。

どのくらいの頻度で計測すべきですか?

週次を初期値にすると扱いやすいです。生成エンジンの回答は揺れるため、重要クエリは1回の結果で判断せず複数回実行して補正します。頻度はクエリ数やAPIコストでも調整します。コンテンツを大きく変えた前後では、ベースラインを取ってから2週間後に再計測する運用が向いています。

引用されなかったクエリには何をすればよいですか?

対応ページのpassage構造(結論を先頭に置く)、構造化データ、AIクローラーの到達可否を見直します。詳細は「AIに引用されないページの共通点」と「GEOの基本」を参照してください。

この記事の著者

飯田 友広

飯田 友広

代表取締役

Netsujo株式会社 代表取締役。京都発のWeb3・AI実装スタートアップを2023年6月に創業。京都府ワーキンググループ「Chain UP KYOTO」参画(2026-03-10)、京都美術工芸大学での講義・龍谷大学でのセミナー実績、ITコミュニティ「みやこでIT」(connpassメンバー592名・イベント158回以上・2019年2月から運営)運営。NPO法人NEMTUS理事、BAR KRYPTO運営。ソーシャル企業認証「S認証」取得企業(2026-02)。技術領域はWeb3/ブロックチェーン/DID/NFT/生成AI/コミュニティ運営。

プロフィールを見る

この記事が向いている方

  • AIO/GEOの効果を、流入だけでなく被引用シェアでも追いたいWeb担当者

  • ChatGPTやPerplexityで自社が引用されているかを継続計測したい方

  • 引用されないクエリを見つけて、コンテンツ改善のループを回したい方

— 壁打ち相談

読者のよくある相談

記事を読んだ後に「自分の状況だとどう判断すべきか」を整理するための壁打ち相談を受け付けています。下記のような相談例が当てはまる方は、お気軽にご連絡ください。

Q. 自社が今どのクエリで引用されているか可視化したいです。

クエリ集合の設計から判定ロジック、スナップショット運用まで、既存サイトに合わせて被引用トラッキングの立ち上げ方を壁打ちできます。

Q. AI流入は取れているのに、引用されているのか分かりません。

被引用シェアと流入を並べて診断し、スニペット改善とコンテンツ改善のどちらを優先すべきかを整理します。

上記いずれかが該当する場合、初回30分の壁打ち相談で論点整理に対応します。記事に書ききれない個別事情を踏まえた判断材料が必要な段階こそ、壁打ちが活きやすいフェーズです。

SEO/AIO支援|Netsujo SIGNAL

AI引用の計測と改善をつくる

生成エンジンでの被引用トラッキング、クエリ集合の設計、引用されないページの改善ループまでご相談いただけます。何から手をつけるか決まっていない段階でも構いません。

無料でWeb3導入を相談する初回相談無料・原則1営業日以内に一次返信