SEO × AI搜尋在改變,你的成長策略也該向前。認識 AI 搜尋優化

第 4 章:讓搜尋和 AI 找得到、讀得到你的網站

先像新訪客一樣讀一次網頁。有網站檢查工具的資料時,再看 Google 是否拿到同一句文字。

AEO 第 4 章:讓搜尋和 AI 讀得到網站
將 Whoops 設為Google 偏好來源(另開 Google 設定頁)

你用手機讀得到小島「初學者吉他課」,搜尋工具打開同一頁,卻可能只看到登入畫面。讀者能看,不代表工具也拿得到正文。

在選定的公開頁面挑一句正文,分別查讀者和搜尋工具能否讀到。小島原句是:「沒有吉他也歡迎來試上,我們可以協助安排。」預約確認、借用範圍和準備規則都還沒寫。缺的答案留在改稿清單,這次查的是工具有沒有讀到已有的文字。

寫文章的人先做下面的公開頁閱讀與連結檢查,結果記進檢查表。有 Search Console 查看權限,再查 Google 取得的內容;後半章的程式碼與設定,留給查到問題時和網站維護者一起看。

先用沒登入的視窗讀一次

在 Chrome 開無痕視窗,Windows 用 Ctrl + Shift + N,Mac 用 Command + Shift + N,把課程頁完整網址貼進網址列。首頁能開,不代表這篇也能開。

  1. 看最後停在哪裡:課程頁、首頁,還是登入頁?
  2. 找到那句正文,選取後複製到工作單,核對文字是否完整。練習別的網站,就選它已有的一句說明。
  3. 從首頁或選單找到這篇,再點開相關指南與詢問入口,記下哪個入口找不到或去了別頁。
  4. 用手機讀一次,看看按鈕是否蓋住文字,表格裡的條件是否看得完整。

重要說明如果只放在圖片裡,就記下要補文字的位置。看得到「歡迎來試上」,卻找不到借琴條件,要補內容;連這句已寫好的正文都讀不到,才查是什麼擋住讀取。

讀到頁面、放進搜尋、被 AI 引用,是不同的事

一本書放在圖書館,不等於已登進查詢目錄,更不等於有人寫報告時引用了它。網站也要分開看這幾件事:

發現網址、取得內容、收進索引與 AI 引用,需要分別檢查。
前一步做到了,還要另查下一步有沒有發生。
發生什麼事網站上對應什麼
知道書在哪裡搜尋工具發現網址,站內連結可以提供路線
拿到書的內容工具取得頁面,叫「抓取」
登進查詢目錄搜尋系統把頁面放進可查的資料庫,叫「索引」
報告用這本書作依據AI 回答使用文章資訊,並附上來源連結

手機能讀到,表示讀者這一邊通過了檢查。Google 是否抓到、是否放進索引,得查它的紀錄;AI 有沒有引用,則要打開實際回答看來源。

Search Console 的資料需要有查看權限的帳號才能讀。沒有權限,就在下面的檢查表將這兩項結果填「尚無權限查看」,請站主提供資料。現在仍可把公開頁閱讀結果記好,接著去第 5 章改稿。

有查看權限時,比對 Google 的已抓取資料與即時測試

Search Console 是 Google 的網站檢查工具,能查看先前抓到的資料,也能現在重讀一次。兩份資料裡的 HTML 是描述網頁內容的程式碼。這次只找剛才選的正文句子,看看 Google 有沒有拿到它。

取得 HTML 後,可把內容存成或複製到文字文件。Windows 按 Ctrl + F,Mac 按 Command + F,貼上要找的句子。整句找不到,再找其中一小段文字,HTML 標記可能把句子隔開。用有權限的帳號打開 Search Console,查同一個完整網址:

  1. 在左上方的網站下拉選單,選包含課程頁的資源。「資源」(property)是帳號已加入的一個網站或網址範圍。
  2. 在頂端的網址檢查欄貼上課程頁完整網址,按 Enter。不要只填首頁或 /courses/beginner-guitar/。
  3. 展開 Page indexing(網頁索引),保存畫面顯示的索引狀態與 Last crawl(上次抓取時間)。
  4. 在索引結果開啟 View crawled page,查看 HTML,找剛才保存的原句。記下實際取得的文字與檢查時間。沒有這個入口或拿不到 HTML,就填「已抓取版本內容未確認」。
  5. 按 Test live URL(即時測試)。確認正在看 Live Test,開啟本次測試的頁面詳細資料(View tested page),在 HTML 找同一句文字。成功取得時也可看 Screenshot(畫面截圖)。

View crawled page 顯示先前抓取的 HTML,即時測試則現在重新取得頁面。不是每個網址都能查看已抓取資料,拿不到就記為未確認。

Last crawl 只告訴你上次何時抓取,不會告訴你讀到了哪句話。要比較正文,得保存實際取得的 HTML 文字。

已抓取版本保存先前內容,即時測試重新讀現在的頁面。
比的是兩份實際取得的正文,抓取時間本身不代表讀到哪一句。
你拿到的結果可以怎麼記
已抓取 HTML 與即時測試都有原句兩份取得的內容都有原課程說明,仍缺借琴條件
之後改頁時,已抓取 HTML 有原句,即時測試有改後句已取得兩份不同內容,保存各自的原文
即時測試有正文,但拿不到已抓取 HTML目前可讀;Google 已抓取版本的內容未確認
只有索引狀態與抓取時間已保存索引欄位,尚未確認正文版本

即時測試讀得到內容,頁面仍可能沒有被索引或引用。遇到「已抓取,尚未索引」,保存訊息原文,再請維護者查正文、重複內容與站內入口。

Google Search Central 示範網址檢查:查看已索引資料與即時測試。影片發布於 2020 年 1 月 23 日。 Google 示範網址檢查工具。

找不到網站或看到權限訊息,就記下畫面提示。自己管理網站但還沒加入資源,可以照 Google 加入網站資源說明設定,或請已驗證的站主授予權限。

用你選的頁面,完成一張檢查表

把剛才看到的結果放進同一張表,沒查到的資料也記下來:

用什麼工具查什麼看到什麼接著做什麼
Chrome 無痕視窗課程頁與原句網址未跳走,可複製「沒有吉他也歡迎來試上,我們可以協助安排。」保存原句與畫面,列出借琴答案缺什麼
網站選單與連結能否走到課程頁及詢問入口記下點哪段文字、最後到哪頁找不到時,記插入位置或錯誤網址
Search Console 索引結果狀態及已抓取 HTML保存狀態;HTML 有取得就抄相關句子,否則填版本未確認請站主或維護者提供缺的資料
Search Console 即時測試當下能否取得正文保存工具訊息與 HTML 原句讀不到時,按下方對應問題往下查

把表放進工作單,每筆寫上日期、完整網址,以及截圖或文字存在哪裡。

表裡要看得出哪個工具讀不到哪一頁、哪一句,以及還缺什麼資料。有人修好後,用原工具查同一網址,把新結果放在舊結果旁。

查到問題後,再讀相應的技術段落

完成上面的檢查表,就可以帶著缺的答案去第 5 章改稿。下列技術內容依遇到的問題選讀,維護者可以照結果查設定:

你遇到什麼去看下方哪段
頁面打不開,或搜尋工具收到不同內容查網站回應
要確認有沒有阻擋抓取或索引的設定看 robots.txt 與 noindex
手機有文章,但工具取得的 HTML 沒正文查文章載入方式
Google 選了另一個主要網址核對主要網址設定
已索引,要查 Google AI 的其他納入條件Google AI 納入條件
要分清 ChatGPT 搜尋與模型訓練的網站請求先分清工具用途

打不開,或工具收到不同內容:查網站回應

瀏覽器向網站要資料,網站會回覆狀態碼,告訴你這次請求的結果。這套交換方式叫 HTTP。代碼就像領件時得到的回覆:「拿到了」「拒絕領取」「找不到」。

狀態碼網站在說什麼管理者接著查什麼
200這次請求成功交出的是否為正確正文
403拒絕存取哪條防護或權限規則擋住請求
404找不到網址是否正確,文章是否搬走
500 等 5xx(後面兩個數字可以不同)提供網頁的電腦(伺服器)出錯當時哪個服務故障

Google 的最低技術條件是:Googlebot 能進來、網站回傳 HTTP 200,而且文字格式是 Google 能讀的,內容也不違反它的垃圾內容政策。Googlebot 是 Google 讀網頁的自動工具;符合條件後,Google 仍會決定是否把頁面放入索引。

看到 200(成功)狀態碼,還得讀內容。網站可能成功回覆了「請完成驗證」,卻沒有交出正文,就像領到包裹,裡面不是你要的講義。

狀態碼 200 還要讀正文;驗證頁、拒絕、找不到與伺服器錯誤各自處理。
200 代表請求成功,仍要看拿到的是正文還是驗證頁。

網站回覆時會附帶一些資訊,叫作「回應標頭」,有些搜尋設定就放在這裡。下面從狀態碼和正文查起,再看這些設定。

瀏覽器每向網站要一份資料,就送出一次請求。一頁可能需要文字、圖片等許多資料,Network(網路紀錄)會列出面板開著時送出的請求,所以清單通常不只一筆。在 Chrome 開啟開發人員工具,可以照下面步驟查自己收到的狀態碼:

  1. 打開課程頁,從右上角選單進入 More tools > Developer tools(更多工具 → 開發人員工具),選 Network。
  2. 保持這個面板開著,重新整理課程頁,按 Doc 篩選網頁文件。
  3. 點選列表中一筆網頁文件,在 Headers(標頭)的 General(一般資料)核對 Request URL(請求網址)。如果不是課程頁完整網址,回到列表換一筆;確認是選定頁面後,再讀 Status Code(狀態碼)。
  4. 切到 Response(回應內容),搜尋剛才選的正文句子,把結果和時間記下來。

這裡查到的是你的瀏覽器收到的內容。Google 收到什麼,要回到 Search Console 即時測試,在本次測試的頁面詳細資料裡,從 More info 查看回應標頭等資料。瀏覽器收到 200,還不能證明搜尋工具也讀得到;Network 面板顯示的是這次瀏覽器請求的回應資料。

讀者能看、搜尋工具卻收到 403 時,請管理者按檢查時間找防護紀錄。網站可能使用 CDN,也就是替網站分送內容的服務,阻擋規則可能設在那裡。找出擋住這篇文章的規則後,再處理它。

維護者修好後,仍用原本失敗的工具查同一個課程網址,核對狀態碼和那句正文。工具、頁面和句子都相同,才比較得出問題有沒有解決。

已能取得頁面,仍要查搜尋限制:看 robots.txt 與 noindex

這兩種搜尋指示,控制的是不同步驟:

指示意思在哪裡找
robots.txt指定哪些路徑可以抓取網站的抓取規則檔
noindex請搜尋系統不要把這頁放入索引頁面程式碼或回應標頭

robots.txt 控制能不能抓取內容,像「這個房間別進去」,管能不能拿書;noindex 像「這本別登進目錄」,管會不會列進目錄。分開查,才知道工具卡在哪一步。

robots.txt 管抓取路徑,noindex 管是否收進索引。
一個管能不能拿內容,一個管是否放進搜尋資料庫。

robots.txt 通常可以直接用瀏覽器讀。假設課程頁是 https://example.com/courses/beginner-guitar/,規則檔的完整地址就是 https://example.com/robots.txt。規則檔放在網站網址的起點,這個位置叫網站根目錄。用自己的網址時,這樣找:

  1. 從完整頁面網址的 http:// 或 https:// 後開始,找接下來第一個 /。
  2. 保留這個 / 前的所有文字,不改動任何字元。
  3. 把從這裡起的頁面路徑換成 /robots.txt。
  4. 把改好的網址貼進瀏覽器,保存看到的規則內容或畫面訊息。

檔案裡有多組工具名稱或路徑,看不出哪條影響課程頁,就把內容交給維護者,對照 Google 的robots.txt 位置與規則核對。

noindex 可能寫在 HTML 裡,看到下面一行就代表要求不要索引:

<meta name="robots" content="noindex">

在 Chrome 打開課程頁後,用檢視網頁原始碼的快捷鍵:Windows 按 Ctrl + U,Mac 按 Command + Option + U。再按 Ctrl + F(Mac 用 Command + F)找 noindex。找到時保存包含它的完整標記;這個字也可能出現在說明文字裡,要看是否真的寫在 robots 等索引指示中。

另一個位置是「回應標頭」。先照前面「查網站回應」的操作開啟 Network,選課程頁那筆請求,在 Headers > Response Headers 找 X-Robots-Tag,看看值裡有沒有 noindex。Google 說明,noindex 也能放在回應標頭裡;原始碼沒找到,不代表標頭也沒有。兩處都記下結果,複雜設定交給維護者判讀。

課程頁如果在開發時加了 noindex,上線後要確認是否仍需要。公開課程說明希望讓人搜尋到,私人紀錄則要限制存取,管理者得按每頁用途設定。

Google 要先讀得到頁面,才看得到 noindex。若 robots.txt 同時要求別抓這頁,就像在門口寫著別進去,又期待館員看到房內的紙條。要移除或恢復搜尋內容,請管理者一起安排抓取與索引設定。私人資料用登入和權限保護;robots.txt 與 noindex 管理的是搜尋工具,無法代替這些保護。

手機有正文,取得的 HTML 卻沒有:查文章載入方式

有些網頁一開始就交出完整文字,有些只先交出外框,再用 JavaScript 把文章填進去。將資料和程式處理成能閱讀的頁面,叫「渲染」。

想像先拿到一張空白課表,老師稍後才填上各節課;你在填寫前後查看,讀到的內容就不同。

前面的「已抓取資料/即時測試」比的是上次與現在。這裡則看同一次讀取:一開始有沒有正文,執行 JavaScript 後又有沒有?

比對一開始交出的 HTML 與執行程式後的內容,看正文在哪個版本出現。
同一頁,先查最初文字,再查工具處理後的文字。

請維護者提供同一頁最初送出的 HTML,以及這個搜尋工具渲染後的內容。註明每份資料由哪個工具取得,再搜尋同一句正文。

看到什麼接著做什麼
最初的 HTML 和渲染後都有你選的那句文字保存兩份內容
最初只有外框,渲染後有你選的那句文字記下這個工具可取得正文;其他工具分別測試
渲染後仍找不到你選的那句文字查文章載入時出錯或被阻擋的位置

Google Search 能處理 JavaScript,所以最初的 HTML 沒有正文時,接著看 Google 的渲染結果。其他工具則各自測試。

小島可以請維護者把固定試上規則放進網站最初送出的 HTML,剩餘時段再由預約系統提供。像活動通知先寫集合方式,名額另外查;讀者不用等預約系統載入完,才知道基本安排。

影片可以示範怎麼做,旁邊再用文字列出要準備什麼、要先問什麼,讀者就能邊看邊查。

Google 選了另一個網址:核對主要網址設定

同一篇文章可能有原本網址,也有加上廣告追蹤資料的網址,像同一份作業存了幾個副本:內容相同,地址不同。

網站可以用 canonical 指定偏好的主要網址,告訴搜尋系統:「這幾份裡,我希望以這個網址為主。」它是一個選擇主要版本的訊號,Google 也會綜合其他資料作決定。

回到同一網址的 Search Console 索引結果,展開 Page indexing,保存 User-declared canonical(網站指定的主要網址)與 Google-selected canonical(Google 選的主要網址)。這兩欄顯示主要網址;正文讀到了什麼,仍要查 HTML。Google 選哪個網址,要看索引資料,即時測試不能預測。

請維護者比較這兩個網址。哪一欄顯示首頁,就把欄位名稱和首頁網址記下來;網站指定首頁,和 Google 自己選了首頁,得分開找原因。讀過首頁與課程頁,查清為什麼指向首頁,再處理設定。

課程頁幫人選課,準備頁告訴人當天要做什麼,回答的是不同問題,兩頁都要保留自己的完整內容。

已索引,還要確認 Google AI 納入條件時

要有機會成為 Google AI 回答中的來源連結,頁面需要已索引、能顯示搜尋摘要,網站的 AI 納入設定也要允許。摘要就是搜尋結果下方那一小段文章內容。下面就查摘要限制與納入設定。

nosnippet 是要求不顯示搜尋文字摘要的指示。請維護者沿用前面查 noindex 的方法,在 HTML 的 robots 標記與回應標頭 X-Robots-Tag 中核對摘要限制,再另查下面的 Google AI 納入選項。

Search Console 另有 Settings > Search generative AI,控制網站連結與內容是否納入所列 AI 功能,包括 AI Overviews、AI Mode 與 Google Discover 的生成式 AI 功能。

它有納入、排除與繼承三種選擇。「繼承」是沿用較上層資源的設定,Search Console 把這種上層稱為「父資源」。網址前綴資源只包含指定網址開頭的頁面,例如 https://example.com/courses/ 只涵蓋這個網址開頭的頁面。WordPress 裡建一個分類,不會自動新增 Search Console 資源。

假設站主已分別加入下列三個資源,課程區選繼承時,可以看出兩種結果:

已加入的資源情況一情況二
example.com 整站排除排除
https://example.com/ 網址前綴繼承整站的排除手動選納入
https://example.com/courses/ 課程區繼承,最後是排除繼承上一列的納入

Google 的AI 設定與繼承規則是:沒有父資源時預設納入;有父資源時預設繼承。要分清網站資源涵蓋哪一段網址,可以對照網域與網址前綴資源的範圍。

請管理者記下查的是整站還是課程區、是否繼承,以及實際生效的選擇。調整前,確認站主想開放哪些頁面、設定會影響哪裡。這個選項只管所列 Google AI 功能,一般搜尋的納入、排名和模型訓練要分開看。

設定符合條件後,搜尋系統仍會決定每次回答選哪篇。實際用了哪一頁,要回到回答裡看來源。

要查 ChatGPT 搜尋或模型訓練:先分清工具用途

模型是 AI 裡用來產生回答的部分。製作或調整模型時,用許多資料讓它學習怎麼產生內容,叫作訓練。

搜尋是回答眼前這題時,去查外部網頁,像寫報告時翻書。搜尋和訓練用途不同,站主可以分別決定是否開放。

OAI-SearchBot 的搜尋取用與 GPTBot 的模型訓練,分別設定。
確認工具用途,再查對應的開放設定。

網站紀錄裡的 User-Agent 是工具報上的身分文字。來源位址(IP)則像寄件地址,表示請求從哪個網路位置送來,與文章網址不同。維護者要對照官方公布的工具名稱和 IP,確認請求是否真的來自那個工具。新手先說清「想查搜尋取用,還是模型訓練」,維護者才知道要查哪一列。

名稱它在做什麼管理者查哪裡
Googlebot替 Google Search 讀網頁Google 搜尋的抓取規則與實際回應
Google-Extended控制指定 Google 產品的模型訓練及回答時取用外部資料robots.txt 的這項控制;它沒有獨立 HTTP User-Agent,也不控制 Google Search 納入或排名
OAI-SearchBot替 ChatGPT 搜尋取得內容抓取規則,以及官方公布的 IP 是否被網站防護擋住
GPTBot取得可能用來訓練模型的內容站主對訓練用途的選擇
ChatGPT-User因使用者提問等動作而訪問部分網頁該次使用者觸發的請求;它不自動抓遍網路,也不決定搜尋納入,robots 規則可能不適用

Google-Extended 的適用產品,要對照 Google 的爬蟲說明;OpenAI 各爬蟲的用途與來源 IP,則以 OpenAI 公布的資料核對。

例如,站主可允許 OAI-SearchBot 取得公開課程說明,同時拒絕 GPTBot 的訓練用途。要查 ChatGPT 搜尋是否讀得到,就用搜尋那一列的資料;要查它是否引用,再打開回答中的來源連結。

OpenAI 官方爬蟲文件,說明搜尋與訓練可分開設定
OpenAI 爬蟲文件把搜尋與訓練分開控制:OAI-SearchBot 用於搜尋,GPTBot 用於模型訓練。(點圖放大)

喜歡這篇內容?讓下次搜尋,更容易遇見 Whoops。

將 Whoops 設為 Google 偏好來源(另開 Google 設定頁)前往 Google 選取並確認,即可完成設定。

Sliven 褚崇名

Sliven 褚崇名是 Whoops SEO 創辦人,負責技術 SEO、內容與關鍵字策略、WordPress 網站重建,以及 AI SEO、AEO、GEO 的量測與內容優化。作者頁可查閱由他署名的〈SEO 是什麼〉與〈AI SEO 是什麼〉等教學;內容中的自有量測、模型觀測與第三方來源應分開判讀,並以各頁標示的方法與限制為準。是否適合特定專案,仍需依網站現況、目標、執行範圍與可驗證成果判斷。

查看作者文章 →