AI Citation Source URL 分析的做法,是先把回答畫面上原封不動顯示的來源值存起來,再分三層往下處理:回答呈現了什麼、URL 讀回拿到什麼、頁面內容支不支撐回答旁邊那幾句話。這適用於要拿 citation 做比較或內容決策的觀測;只拿得到網域、沒有完整路徑時,就停在呈現層,把 path 留白,而不是補一個看起來合理的頁面。本文提供的是可以直接建欄位的方法:資料模型要存哪幾欄、正規化規則必須先寫清楚哪幾件事、redirect 與 canonical 怎麼分開記、主張支撐怎麼逐句判讀,以及報告要同時並列哪四個計數。
舉一個常見的情況:你在 ChatGPT 的回答裡看到一張來源卡寫著 example.com,順手在報表記成「官網被引用」。三週後要交報告時回頭查,發現那張卡當時連的是三年前的一篇舊文章,而且回答裡講價格的那一句,那一頁從頭到尾沒提過價格。這兩件事,當初那個 citation=true 都看不出來。
一個連結只能證明回答當下呈現了某個來源線索。要讓 citation 資料能比較、能拿去做內容決策,就得把原始值和後續讀回結果都留著,並且讓「來源呈現」和「頁面核對」各佔各的欄位。
Otlex 示範帳戶的來源匯出畫面,示意來源欄位可以怎麼保存;不是每個平台都提供相同欄位。
AI Citation Source URL 分析:先拆來源證據層
一個 citation 來源至少有三層資料,可以想成有人遞名片給你的過程:
- 回答呈現層:回答中顯示了什麼來源名稱、網域、短網址、內文連結或來源卡。等於對方遞了名片、說自己在某公司。
- 取得讀回層:當時是否能開啟 URL、回傳哪個狀態、是否重新導向到另一個 URL。等於你真的打了名片上那支電話,看電話通不通、轉接到哪。
- 內容支撐層:讀回頁面的主題、日期、canonical 和正文,是否能支持回答相鄰的主張。等於接電話的人確認他真的在那個部門、也真的負責那件事。
三層可以互相連結,但把它們壓成一個 citation=true 就沒有回頭路了。舉例來說,回答只顯示 example.com:呈現層有來源,成立;沒有完整路徑,讀回層只能標「URL 不完整」;內容支撐層還沒有任何證據。報告要讓這個差異看得見,空的欄位就讓它空著。
URL 資料模型:哪些欄位要原樣保存
原始值永遠先於正規化值
收據可以整理成報帳明細,但收據本身不能改。URL 也是這個關係:原始值是憑證,正規化值是為了比較而整理出來的。建議至少保存以下欄位:
| 欄位 | 用途 | 何時填入 |
|---|---|---|
answer_id | 連回回答事件 | 看到來源時 |
source_display | 保存畫面上的原始文字 | 觀測當下 |
source_url_raw | 保存原始 URL | 可取得完整 URL 時 |
source_domain_raw | 保存原始網域或來源名稱 | 來源只顯示網域時 |
url_normalized | 依規則整理後的比較值 | 正規化後 |
redirect_chain | 保存每一跳 URL 與狀態 | 讀回 URL 時 |
canonical_url_read | 記錄頁面明示 canonical | 讀回 HTML 時 |
fetch_status | 區分取得成功、錯誤、受限 | 讀回完成時 |
claim_support | 記錄對相鄰主張的支撐判讀 | 人工核對時 |
checked_at | 保存讀回時間 | 每次核對時 |
這個資料模型是工作方法示例,不是任何 AI 平台的公開欄位。若這次只取得 source_domain_raw,就讓 source_url_raw 空白或標成 unavailable。把首頁、/pricing 或產品頁填進去,下一輪就沒有人分得出哪一格是觀測到的、哪一格是當初順手推的。
使用示例 URL 說明資料流
以下僅展示格式,example.invalid 只作示例來源,並非實測結果:
answer_id: example-042
source_display: Example source
source_url_raw: https://example.invalid/articles/ai-search?utm_source=answer
url_normalized: https://example.invalid/articles/ai-search
redirect_chain: []
canonical_url_read: https://example.invalid/articles/ai-search
fetch_status: needs_review
claim_support: pending
checked_at: 2026-09-21
注意 source_url_raw 留著 ?utm_source=answer,url_normalized 才把它拿掉——兩欄各自回答不同問題,誰也不覆蓋誰。示例中的 needs_review 和 pending 是狀態名稱,不是結果。
正規化:哪些差異可以合併,哪些要保留
可以先拆成結構元件
URL 可以拆成 scheme、host、port、path、query、fragment。比較時先保留原始 URL,再另產生欄位:
scheme: https
host: example.invalid
port: default
path: /articles/ai-search
query: utm_source=answer
fragment: section-2
正規化規則要先寫下來,而且是寫成一份團隊都看得到的文件,不是各自在腦中記。要決定的大概是這幾條:HTTP 與 HTTPS 是否視為同一來源、大小寫是否保留、結尾斜線怎麼處理、預設 port 是否移除、追蹤參數另存到哪一欄、fragment 是否只當頁面位置。規則沒有寫出來以前,兩個長得很像的 URL 先各自成列,別急著去重。
追蹤參數不要只用眼睛刪掉
?utm_source=answer 拿掉通常沒事,?lang=en 拿掉就換了一種語言的頁面,?plan=pro 拿掉可能換掉整張價格表。同樣是問號後面那串,有的只是行銷標籤,有的會真的換頁。
所以流程是先把 query 原樣存起來,再依站點和參數清單決定 url_normalized。一個參數只要會切換語言、產品、篩選器或登入狀態,它就是頁面身分的一部分,要留在正規化值裡。
Fragment 和 path 的差異
#section-2 像書的頁碼,/articles/ai-search 像書名。翻到第幾頁不會換一本書,換了書名就是另一本。技術上也對得起來:HTTP 請求不會把 fragment 傳給伺服器,所以同一個 path、不同 fragment,拿回來的是同一份文件。
fragment 值得保留在原始值裡,因為它能還原回答當時指向頁面的哪一段;比較頁面身分時要不要移除,就在規則裡講明。path 則可能直接指向不同資源,處理方式要和 fragment 分開。
Host、子網域與國際化
www.example.com、example.com、m.example.com 和 zh.example.com 像同一個品牌的四家分店:招牌看起來一樣,貨架上的東西可能完全不同,也可能其中三家門口貼著「請至總店」。
網域正規化只能處理字面差異,至於它們是不是同一頁,要由 redirect 或內容關係證明。hreflang、語言路徑和地區頁一樣要保留原始 host 與 path,另外標 locale 或 market。
Redirect 與 Canonical:頁面關係怎麼核對
先保存 redirect chain
搬家留了轉寄地址,信寄得到新家,但舊地址還是舊地址——兩個都得記,不然三個月後你會分不清當初信是寄到哪。
URL 讀回時,把每一跳的 status、Location、URL 和時間都存下來。永久重新導向、暫時重新導向、連續兩跳或繞成迴圈,對來源判讀的意義都不一樣。回答顯示的是原始 URL,最後讀到的是目標 URL,報告要同時顯示兩者,別讓目標 URL 把原值蓋掉。
Google Search Central 的 canonical 文件說明,redirect 和 rel="canonical" 都是影響 canonicalization 的訊號,sitemap 則是較弱的訊號;Google 也可能自行判定最適合顯示的版本。這段官方指引支持「分開保存 redirect、canonical 和 sitemap 相關欄位」的做法,至於你的 citation 來源會不會被 Google 選成 canonical,文件沒有這樣承諾。
canonical 是頁面聲明,不是 citation 來源替換器
canonical 比較像公司登記地址:那是公司自己申報的正式地址,跟你那天實際走進去的門市未必是同一個。
舉例來說,回答顯示 /old-path,讀回後 301 到 /new-path,新頁的 rel="canonical" 又指向自己。這三個值可以連成一條 URL 關係,而原始 citation 仍然是 /old-path,目前可核對內容的是 /new-path。分開記才答得出兩個不同的問題:AI 當下顯示哪個 URL,以及現在該打開哪一頁做內容核對。
檢查 canonical 的實際頁面
讀回頁面時,保存 HTTP 狀態、HTML 中的 canonical、頁面 title、主標題、頁面日期和正文摘要。
canonical 會出問題的情況大致有四種:載入失敗、指向另一個語言版本、指向已經不存在的頁面、和 redirect 互相矛盾(例如頁面 301 到 A,canonical 卻寫 B)。四種都標成需要處理,交給人看;在這一步挑一個「看起來應該是對的」URL,等於把推測寫進了證據欄。
Google 的官方文件也提醒不要用 robots.txt 做 canonicalization,各種 canonical 方法之間不應指向互相衝突的 URL,站內連結則應一致指向偏好的 canonical。這些是網站端的技術檢查建議,和「AI 回答當下顯示了哪個來源」屬於兩件事,留證仍要各做各的。
主張支撐:來源頁真的回答了什麼
先切出回答中的主張
引用一份年報去證明「他們有做 A、B、C」,年報也許只提到 A。AI 回答附的來源也一樣:一段回答可能同時講產品類別、適用對象、價格、功能和限制,來源頁只支援其中兩項。
做法是把回答拆成 claim_id,每個主張連到相鄰的句子與來源 URL,再逐一判讀 supported、partial、not_found、conflicting 或 needs_review。拆得細一點,之後要回答「哪一句缺支撐」才有辦法指到具體位置。
這些狀態描述的是核對結果,和品牌好壞無關。not_found 的意思是「在這次讀回的範圍內找不到支持句子」,可能是頁面更新了、內容其實在另一個連結上,也可能是回答本身超出了來源。遇到衝突就把兩邊原文都留著,交給人工處理。
分開來源品質與來源關係
來源頁是官方頁、第三方報導、論壇還是社群,這是來源類型欄位;它支不支持某一句主張,這是 claim support 欄位。兩欄放在一起看很容易出錯:來源是官方網域,就把回答整段標成 supported,是最常見的一種。
反方向也一樣要小心。一篇第三方產業報導可能確實支持回答裡那句市場背景,這件事和「品牌官網被引用」沒有關係,兩者要分開記。
保留日期邊界
產品價格、服務範圍、政策、功能和公司資料都會更新。回答時間和來源讀回時間都要留下,來源內容若有發布或更新日期,也一併保存。
差別會在這種地方出現:9 月 10 日的回答說某方案月費 X,你 9 月 25 日打開頁面看到 Y。報告要寫的是「9 月 25 日讀到的頁面顯示 Y」,而不是倒推成回答當時就寫著 Y。
報告:怎麼比較 URL 來源
先看來源事件,再看去重後頁面
算「來了幾個人」有好幾種算法:舉手次數、幾個人、幾個家庭、幾戶地址,四個數字答的是不同問題。URL 也是,報表可以並列這四欄:
raw_source_count:回答裡出現幾次來源unique_url_count:去重後有幾個不同 URLunique_domain_count:來自幾個不同網域canonical_group_count:收斂到幾個 canonical 群組
同一個回答可能重複顯示同一個 URL,也可能用一張網域卡片連到不同頁面。四個數字一起放,並寫明去重層級,讀的人才知道那個「引用數」是哪一種。
來源表範例
| answer_id | source_display | raw URL | normalized URL | final URL | canonical | 支撐狀態 |
|---|---|---|---|---|---|---|
| example-042 | Example source | /articles/ai-search?utm_source=answer | /articles/ai-search | 同上 | 同上 | 待核對 |
表格是格式示例,example-042 與 example.invalid 僅作示範。正式報告要能從每一列回連到回答原文、讀回時間和原始 HTML 或受控檔案。
URL 差異帶回內容工作
URL 表整理完,通常會落在三種情況,各自對應不同的下一步:
- 回答持續引用舊頁面:先確認 redirect、canonical、內鏈和頁面內容,再決定要不要更新內容。
- 來源讀回成功但支撐不足:回到那幾句主張和文章段落,找哪個要點沒有寫進頁面。
- 只看到第三方來源:另記來源類型和回答上下文,先弄清楚那個題目上 AI 習慣引用什麼類型的頁面。
這三條是待驗證的工作方向,URL 表本身只呈現差異,成因仍要另外查。
限制:URL 分析的證據到哪裡為止
Google Search Central 現行文件說,AI Overviews 與 AI Mode 的回答和連結集合可能因模型與技術而不同,頁面符合一般技術要求仍可能遇到抓取、索引或提供上的差異。URL 分析能讓來源證據更精確,至於把一次 citation 寫成固定排名或未來承諾,超出這份資料能承擔的範圍。
Google 的 canonical 文件描述的是 Google Search 如何理解重複或相似頁面的偏好訊號,那是搜尋端的判定,和 AI 回答裡出現哪個 citation URL 屬於不同問題。OpenAI ChatGPT Search 說明也提醒 citations 可能不完整、過時或錯誤,來源頁仍需要打開核對。
Otlex 是 EthorX(伊索斯科技有限公司)開發的 AI 搜尋優化平台,觀測 ChatGPT、Google AI Overview、Google AI Mode、Gemini、Grok、Perplexity、Claude 等七個 AI 引擎回答中的提及、引用與推薦。這段描述說明的是觀測範圍;某一筆 citation URL 的讀回結果、canonical 與主張支撐判讀,仍要回到那一筆資料本身。
相關概念與產品連結
若你先要分清提及、引用和推薦事件,可以讀已發布的 品牌提及和引用 FAQ;若要把來源 URL 放入固定題庫重跑,讀 重複 AI 觀測 FAQ。要做前後頁面測試,可先讀 ChatGPT 品牌監測。
Otlex 可觀測七個 AI 引擎中的回答提及、引用與推薦,協助把來源和內容缺口放回同一份觀測資料。若需要處理網站 URL、頁面結構與內容修訂的範圍,可以從 EthorX GEO 服務了解服務內容,再按實際資料與權限評估。
常見問題
AI 顯示一個網域,就算完整 citation URL 嗎?
把它記成來源呈現就好,完整 URL 要等畫面或來源入口實際提供時才填。缺 path 的時候自己補首頁或產品頁,等於在證據欄裡放了一筆推論;三個月後要回查「當初引用的到底是哪一頁」,那一格就幫不上忙了。
Redirect 後的 URL 可以覆蓋原始 citation 嗎?
兩個都留,各放一欄。原始 citation 是回答呈現的值,redirect 目標是讀回後的頁面關係,中間每一跳的狀態也存下來。報告這樣才答得出「AI 那天顯示什麼」和「現在打開會到哪一頁」兩個問題。
canonical URL 和 AI 引用 URL 一定相同嗎?
不一定相同。頁面可以聲明一個 canonical,回答也可能顯示另一個仍可存取的 URL。Google Search 會綜合 redirect、canonical、sitemap 等訊號判定適合顯示的版本,那是 Google 自己的判定過程;各家 AI 回答會採用哪個 URL,要回到當次回答看。
來源頁能找到一個句子,就算整個回答被支持嗎?
先把回答拆成主張,再逐一記 supported、partial、not_found、conflicting 或 needs_review。舉例來說,回答同時講了「這家公司做 AI 搜尋觀測」和「入門方案月費 X」,來源頁只寫了前者,那就是前者 supported、後者 not_found,兩格分開填。
URL 正規化後,所有同網域頁面都能合併嗎?
網域去重和頁面去重是兩個層級,要分開處理。同一個網域下的不同 path 可能是不同文章、不同語言或不同產品頁;要合併,得有明確的 URL 規則、redirect 或內容關係當依據。無論怎麼合併,原始 URL 那一欄都留著。
查證邊界
本文外部文件查閱日期為 2026-09-21,使用 Google Search Central AI features、生成式 AI 搜尋指南、canonical URL 官方文件,以及 OpenAI ChatGPT Search 說明。URL 欄位、正規化、redirect、canonical 與 claim support 是本文的分析方法,不是 AI 平台公布的共同 citation 標準。文中的 example.invalid、example-042 與價格情境都是說明用的假設案例,不是實測結果。本文沒有使用未授權的來源帳號資料或假造的 URL 讀回結果;讀不到的頁面保留待核對。