
有個客戶花了半年寫內容,每篇都做了 FAQ、加了結構化資料,AI 就是不引用他。後來我們看了一眼他的 robots.txt——上一任工程師為了「防止內容被 AI 偷走」,把 GPTBot 到 PerplexityBot 全擋了。他花半年蓋房子,門是鎖著的。
更常見的版本是:robots.txt 寫得完美,門卻鎖在更前面一層——CDN。而那道鎖不是你關的,是平台預設值,畫面上也不會有任何提示。
這篇是地基檢查。六個步驟,全部可以在一個下午做完,而且每一步我都告訴你該期待什麼、不該期待什麼——包括那些做了其實沒用、但滿街都在教的動作。
本文的爬蟲名單與平台行為,全部逐一核對自各廠商官方文件——OpenAI、Anthropic、Perplexity、Google Search Central、Cloudflare,核對日期 2026 年 8 月 12 日。市面上的爬蟲名單多半互相轉抄,代號改了沒人更新;這份的每一條你都可以自己點進官方頁面對。
目次
- 先搞懂:擋你的不是一種爬蟲,是三種
- 步驟一:robots.txt 完整放行清單(可直接複製)
- 步驟二:驗證它真的生效
- 步驟三:CDN 與 WAF——最容易被忽略的那道鎖
- 步驟四:llms.txt 要不要做?誠實版
- 步驟五:JSON-LD 該做到哪、不該期待什麼
- 步驟六:內容結構——被抓走的是段落,不是文章
- 一頁式檢查清單
- 三個常見誤區
- 常見問題 FAQ
先搞懂:擋你的不是一種爬蟲,是三種
多數「AI 爬蟲名單」文章把所有 bot 列成一排叫你全開或全關,這是錯的。同一家公司會派出用途完全不同的爬蟲,你擋錯一隻的後果差很多:
| 類型 | 它在做什麼 | 擋掉的後果 |
|---|---|---|
| 訓練型(Training) | 抓內容去訓練模型 | 你的內容不進模型訓練資料。不影響被引用。 |
| 搜尋索引型(Search) | 建立 AI 搜尋的索引 | 你直接退出這個引擎的引用名單。 最致命。 |
| 代理/即時取用型(Agent) | 使用者當下提問或交辦任務時去讀你的頁面 | 使用者問到你時,AI 讀不到你的即時內容 |
這就是最貴的誤解所在:很多人為了「不讓 AI 拿去訓練」而擋掉 GPTBot,以為守住了資產。實際上 GPTBot 是訓練型的,擋它不影響你被 ChatGPT 引用;真正決定你會不會出現在 ChatGPT 答案裡的是 OAI-SearchBot。這兩件事可以分開決定——而多數人不知道可以分開。
同樣的邏輯:Google 的 AI Overviews 用的是一般搜尋索引,入口是 Googlebot。Google-Extended 管的只是「要不要拿去訓練 Gemini」,Google 官方明確說明它不影響網站在搜尋的收錄。所以擋 Google-Extended 不會讓你消失在 AI Overviews,擋 Googlebot 才會。
記住這三分法,後面每一步都在用它。Cloudflare 在 2026 年 7 月也改用同一組分類(Search/Agent/Training)來管流量,這不是巧合——這是目前業界對 AI 爬蟲唯一有意義的切法。
步驟一:robots.txt 完整放行清單(可直接複製)
以下名單依各家官方文件整理(2026 年 8 月核對):
| 廠商 | User-agent | 類型 | 說明 |
|---|---|---|---|
| OpenAI | GPTBot | 訓練 | 訓練基礎模型用 |
| OpenAI | OAI-SearchBot | 搜尋索引 | 決定你會不會出現在 ChatGPT 搜尋結果 |
| OpenAI | ChatGPT-User | 代理 | 使用者在 ChatGPT 中的操作觸發 |
| OpenAI | OAI-AdsBot | 驗證 | 驗證投放到 ChatGPT 的廣告頁面安全性 |
| Anthropic | ClaudeBot | 訓練 | 收集可能用於訓練的網頁內容 |
| Anthropic | Claude-SearchBot | 搜尋索引 | 提升 Claude 搜尋結果品質 |
| Anthropic | Claude-User | 代理 | 使用者向 Claude 提問時取用網頁 |
| Perplexity | PerplexityBot | 搜尋索引 | 官方載明不用於訓練基礎模型 |
| Perplexity | Perplexity-User | 代理 | 官方載明使用者發起的請求一般會忽略 robots.txt |
Googlebot | 搜尋索引 | AI Overviews 的實際入口 | |
Google-Extended | 訓練/接地 | 控制是否用於 Gemini 訓練與 grounding;不影響搜尋收錄 | |
Google-CloudVertexBot | 專案型 | 站主自行要求、建 Vertex AI Agent 時才會來 | |
| Apple | Applebot-Extended | 訓練 | Apple 的 AI 訓練退出開關 |
| Common Crawl | CCBot | 訓練 | 開放語料庫,多數模型的間接來源 |
| ByteDance | Bytespider | 訓練 | 有不遵守 robots.txt 的紀錄 |
| Meta | meta-externalagent | 訓練 | Meta AI 用 |
| Amazon | Amazonbot | 訓練/助理 | Alexa 與 Amazon AI 用 |
如果你的目標是最大化被引用,把它們全部放行即可:
User-agent: GPTBot
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: OAI-AdsBot
User-agent: ClaudeBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Googlebot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: CCBot
User-agent: meta-externalagent
User-agent: Amazonbot
Allow: /
User-agent: *
Allow: /
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://你的網域/sitemap.xml
如果你想被引用、但不想被拿去訓練,把訓練型單獨關掉:
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Googlebot
Allow: /
一個容易忽略的重點:robots.txt 的比對規則是取最精確的那一組,其他組就不套用。所以只要你為某隻爬蟲寫了獨立區塊,User-agent: * 的規則對它完全失效。
這代表兩件事——第一,如果你的 * 本來就是全放行,那份白名單其實一行也沒改變現在的行為,別誤以為「我做了設定」就等於做了什麼;第二,它真正的價值在未來:哪天你在 * 加了 Disallow,這些 AI 爬蟲不會被誤傷。
步驟二:驗證它真的生效
寫完不驗證等於沒寫。三個層次,從快到慢:
1. 檔案真的在(最基本,但真的有人漏)
curl -I https://你的網域/robots.txt
要回 200,且 content-type 是 text/plain。回 404 或被 CDN 導到首頁都是白做。
2. 模擬爬蟲抓一次
curl -A "OAI-SearchBot" -I https://你的網域/你的文章網址/
要回 200。如果回 403,問題不在 robots.txt——往下一步走。
3. 看伺服器 log
真正的答案在存取紀錄。搜尋 log 裡的 user-agent,確認這些 bot 有真的來過、拿到的是 200 而不是 403 或 429。沒有 log 存取權限的話,用主機商的流量分析面板找 bot 流量分類。
步驟三:CDN 與 WAF——最容易被忽略的那道鎖
這一步是實務上最常見的失敗點,也是幾乎沒有 GEO 文章會提的:robots.txt 是一張請求爬蟲自律的告示,CDN 的封鎖是一道真的門。前者你寫得再漂亮,後者關著就是關著。
差別在這裡:
| robots.txt | CDN/WAF 封鎖 | |
|---|---|---|
| 性質 | 禮貌性規範,靠爬蟲自願遵守 | 實際攔截,回 403 |
| 你怎麼發現 | 看得到檔案內容 | 沒有任何提示,靜默失效 |
| 誰設定的 | 通常是你 | 常常是主機商或平台預設值 |
Cloudflare 使用者:現在就去把這三個開關看一遍
動作:Cloudflare 後台 → Security(安全性)→ Bots(機器人)→ 找到 AI Scrapers and Crawlers,確認 Search、Agent、Training 三類各自的設定是你真的想要的,而不是留在預設值。每一類可以各自選:全站封鎖、只在有廣告的頁面封鎖、或不封鎖。
Cloudflare 在 2026 年 7 月把原本單一的「封鎖 AI 機器人」開關,改成依行為分成這三類——正好對應本文開頭那張表。Search 一定要放行,那是你被引用的入口;Training 和 Agent 依你的立場決定,但要是「決定」,不是「沒動過」。
還有一件事必須先看懂再動手:Googlebot 是用同一隻爬蟲同時做搜尋與 AI 訓練的。所以封鎖 Training 類會連 Googlebot 一起擋掉,除非你明確設定例外。你以為只是關掉訓練,實際上可能一起關掉了 AI Overviews 的入口。
時程上也有一個要留意的變化:新加入 Cloudflare 的網域,在有刊登廣告的頁面上會預設封鎖 Training 與 Agent 類(Search 維持放行),站主可在安全設定中退出這個預設。既有網域不受影響,但這代表平台預設值會變——所以這件事不是設定一次就結束。
不是用 Cloudflare 也要檢查
同樣的靜默封鎖會出現在:主機商內建的防火牆規則、資安外掛(WordPress 常見的那幾套都有「封鎖惡意爬蟲」預設清單,有些把 AI bot 列進去)、以及 rate limiting——爬蟲不是被擋,是抓太多次被限速,log 裡會看到 429。
驗證方式跟步驟二一樣:用 curl -A 模擬。差別在,這次你要對至少三隻不同類型的爬蟲各測一次(一隻搜尋型、一隻訓練型、一隻代理型),因為它們可能落在不同的規則裡:
curl -A "OAI-SearchBot" -I https://你的網域/文章網址/
curl -A "PerplexityBot" -I https://你的網域/文章網址/
curl -A "Claude-User" -I https://你的網域/文章網址/
三個都要 200。任何一個回 403,先去 CDN 後台,不要再改 robots.txt。
步驟四:llms.txt 要不要做?誠實版
llms.txt 是放在網站根目錄的 Markdown 檔案,用來主動告訴 AI「我這裡最重要的內容有哪些」。概念很好,但你需要知道現況。
證據分級如下:
第一級,官方說法:Google 在 2026 年 6 月更新文件,明確表示 llms.txt 對搜尋排名與 AI Overviews 沒有影響,Search 直接忽略此檔案。
第二級,第三方觀測(採信方向,別當精準值):多份追蹤研究指出主流 AI 爬蟲(GPTBot、ClaudeBot、PerplexityBot、OAI-SearchBot、Google-Extended)絕大多數跳過此檔案、直接爬 HTML;其中一份 90 天測試中,llms.txt 只佔全部 AI bot 請求的約 0.1%。採用率方面,一份 30 萬網域的調查得到約 10% 的採用率。
它目前真正有用的地方:開發工具類的 AI(Cursor、Continue 這類編輯器)可以被指向 llms.txt 來讀取乾淨的文件。如果你是開發者工具或有 API 文件的公司,這是實質的使用情境。
我的建議:花二十分鐘做,不要花二十小時。成本極低、沒有壞處、規格若被採用你已經在場。但別把它寫進提案當成效項目,也別因為做了它就期待引用率上升。
範例格式:
# 你的品牌名
> 一句話說明這個網站是什麼、服務誰。
## 核心內容
- [文章標題](https://你的網域/網址/): 40–60 字的摘要,說明這篇回答什麼問題
- [文章標題](https://你的網域/網址/): 40–60 字的摘要
## 關於
- [關於我們](https://你的網域/about/): 品牌事實、成立時間、可查證資訊
兩個實作建議。第一,別用手維護:靜態檔案一定會跟網站脫節,一份列了三篇、網站上卻有三十篇的 llms.txt,比沒有還糟——它主動告訴 AI 你只有三篇值得看。用程式從已發布內容自動產生,上線一次就不用再管。
第二,自動產生不等於全部列出。如果站上有測試頁、活動頁或與品牌定位無關的內容,要在產生邏輯裡排除掉。llms.txt 的意義是「我推薦你看這些」,不是網站地圖——那是 sitemap.xml 的工作。
步驟五:JSON-LD 該做到哪、不該期待什麼
先講期待管理:目前公開的大規模觀察,看不到 Schema 與「被 AI 引用」之間的明確因果效果。它對傳統 SERP 版位與機器讀取基本資訊有用,但不是衝高引用率的槓桿。所以——做,但用做地基的心態做,不要當成效指標。
值得下的三種:
Article/BlogPosting:作者、發布日、更新日、所屬組織。重點在dateModified——這是機器判斷內容新舊最直接的訊號。FAQPage:文末的問答區塊。它讓「一問一答」的對應關係變成機器可讀,而不用靠模型自己從版面推測。Organization:全站層級,放品牌名、網址、sameAs指向你的社群與公開登記資料。這是幫 AI 把散落各處的提及連結到同一個實體,對品牌認知的價值高於單篇文章的 Schema。
三個常踩的坑:
坑一:JSON-LD 內容和頁面看到的不一致。 Schema 裡寫的標題、日期、作者必須跟頁面上實際顯示的相同。不一致會被判定為操弄。
坑二:WordPress 會弄壞你的 JSON-LD。 這是本站實際踩到的:WordPress 的 wpautop 會在內文區塊裡 JSON-LD 的每個換行後插入 <br />,而且會存進資料庫的原始內容裡,直接破壞 JSON 語法,機器解析不了。解法是把 JSON-LD 壓成單行再貼進內文,或改用外掛/主題輸出到 <head>。
坑三:多篇文章的 @id 重複。 每篇的 mainEntityOfPage.@id 必須是該篇自己的網址。用範本複製貼上時最常忘記改。
驗證用 Google 的複合式搜尋結果測試工具與 Schema.org 官方驗證器各跑一次,兩邊都過才算數。
步驟六:內容結構——被抓走的是段落,不是文章
這一步的投報率遠高於前面五步,卻最少人做。
理解一件事就夠了:檢索系統把你的文章切成片段(chunk)分別建立索引,AI 引用時抓走的往往是一個段落,不是整篇。這代表——
每個段落都必須自己站得住。 一個被單獨抓走的段落,如果開頭是「因此,綜合以上」,它離開上下文就毫無意義,也就不會被選中。
四個具體動作:
- H2 用使用者真的會問的問句。 不要寫「產品特色」,寫「XX 和 YY 差在哪?」。標題本身就是檢索比對的目標。
- 結論句放段首。 一段一結論,先給答案再解釋。這跟中文作文教的「起承轉合」相反,但符合機器抽取的方式。
- 定義用可直接截取的句型。 「[主題]是指⋯⋯」「常見的三種方式為⋯⋯」。避免把定義藏在轉折句裡。
- 數字帶條件、主張帶來源。 「提升 40%」不如「在上萬筆查詢的測試基準上平均提升超過四成」。可驗證性是被選中的主要理由之一。
還有一個減法動作:刪掉無法驗證的形容詞。「業界領先」「效果卓越」這種句子不可能被當成答案引用,它只是佔位。
一頁式檢查清單
存取層
– [ ] /robots.txt 回 200 且為 text/plain
– [ ] 搜尋索引型爬蟲(OAI-SearchBot、Claude-SearchBot、PerplexityBot、Googlebot)全部放行
– [ ] 訓練型爬蟲(GPTBot、ClaudeBot、Google-Extended、CCBot)已依你的立場明確決定,不是預設值
– [ ] 用 curl -A 模擬搜尋型、訓練型、代理型各至少一隻,三個都回 200
– [ ] Cloudflare 後台 Security → Bots → AI Scrapers and Crawlers 三類設定已逐一確認,Search 為放行
– [ ] 主機商防火牆、資安外掛的爬蟲封鎖清單已檢查
– [ ] log 裡看得到 AI bot 實際來訪,且不是 403/429
– [ ] sitemap.xml 存在且在 robots.txt 裡宣告
索引層
– [ ] llms.txt 由程式自動產生,且已排除無關內容
– [ ] 每篇有 Article/BlogPosting,dateModified 正確
– [ ] 問答區塊有 FAQPage
– [ ] 全站有 Organization,sameAs 已填
– [ ] JSON-LD 為單行、@id 每篇唯一、與頁面內容一致
– [ ] 兩個驗證工具都通過
內容層
– [ ] H2 至少半數是使用者會問的問句
– [ ] 每段第一句就是該段結論
– [ ] 全文至少一個「[主題]是指⋯⋯」的定義句
– [ ] 數字都附條件或來源
– [ ] 已刪除無法驗證的形容詞
節奏
– [ ] 這份清單已排進每季固定檢查
三個常見誤區
誤區一:擋 GPTBot 就是保護內容。 你擋的是訓練,不是引用。真正決定 ChatGPT 會不會引用你的是 OAI-SearchBot,而且這兩件事可以分開設定。
誤區二:robots.txt 寫對就等於門開著。 robots.txt 是請爬蟲自律的告示,CDN 與 WAF 才是真的門。而且 CDN 的封鎖是靜默的——沒有任何畫面會告訴你「你正在流失 AI 引用」。
誤區三:做一次就好。 爬蟲代號會改版、平台預設值會變(Cloudflare 2026 年 7 月才改過一次分類方式)、資安外掛更新可能帶進新的封鎖清單。這是排進行事曆的例行檢查,不是上線任務。這也是為什麼我們主張所有 AI 能見度的工作都該有固定的量測節奏,而不是打一波就收。
結論
這六個步驟做完,你不會因此被 AI 引用——你只是終於站上起跑線。技術層的意義是排除掉「明明有機會卻進不了場」這件事,剩下的仗在內容與衡量。
門打開之後,下一個問題是「怎麼知道有沒有效」。那需要一個指標和一套量法:模型聲量與別只測一次。名詞卡住的話,GEO 術語表在這裡。
—— Vanessa | GEO is cool
常見問題 FAQ
Q:擋掉 GPTBot 會讓我不被 ChatGPT 引用嗎? 不會。GPTBot 是訓練用爬蟲,決定你會不會出現在 ChatGPT 搜尋結果的是 OAI-SearchBot。這兩件事可以分開設定。
Q:擋 Google-Extended 會影響 AI Overviews 嗎? 不會。Google 官方說明 Google-Extended 只控制內容是否用於 Gemini 訓練與接地,不影響網站在 Google 搜尋的收錄,而 AI Overviews 用的是一般搜尋索引。
Q:Cloudflare 會擋掉 AI 爬蟲嗎? 會,而且可能是你沒動過的預設值。到後台 Security → Bots → AI Scrapers and Crawlers,確認 Search、Agent、Training 三類的設定;Search 一定要放行,那是被引用的入口。
Q:為什麼封鎖 Training 可能連 Googlebot 一起擋掉? 因為 Googlebot 用同一隻爬蟲同時做搜尋索引與 AI 訓練。在受影響的頁面上封鎖 Training 類,會連帶擋掉 Googlebot,除非另外設定例外。
Q:llms.txt 真的有用嗎? 以 AI 搜尋引用而言,目前證據是否定的:Google 明確表示搜尋端忽略此檔案,多數 AI 爬蟲也直接爬 HTML。它在開發工具情境有實際用途。成本低可以做,但不該當成效項目。
Q:加 Schema 會讓 AI 更常引用我嗎? 目前看不到明確因果效果。它對傳統 SERP 版位與機器讀取基本資訊有用,但不是衝高 AI 引用率的槓桿。
Q:這份檢查清單多久跑一次? 建議每季一次。爬蟲代號會改版、平台預設值會變、資安外掛更新可能帶進新的封鎖清單,這些都是靜默失效。