大部分人在 robots.txt 裡封鎖 AI 爬蟲時,做的其實不是保護內容,而是把自己從 ChatGPT、Perplexity 和 Claude 的答案裡刪掉。原因在於 OpenAI、Anthropic、Perplexity 派出的都不是單一一隻爬蟲,而是各有兩到三隻:一種把你的內容抓去訓練模型,另一種即時檢索你的頁面、在答案裡標上來源連結。你通常想擋的是前者,絕對想留的是後者。但只寫一組 User-agent: * 搭配 Disallow: /,會把兩者一起關在門外。
訓練爬蟲和檢索爬蟲,是兩件不同的事
以 OpenAI 為例,GPTBot 負責抓內容進語料庫、供未來模型訓練;OAI-SearchBot 負責把你的頁面放進 ChatGPT 的搜尋索引,讓你在即時回答中被引用並附上連結;ChatGPT-User 則是使用者在對話中要求造訪某個網址時才出動。這代表你封鎖 GPTBot,只影響「內容會不會被拿去訓練」,完全不影響 ChatGPT 當下能不能引用你。Anthropic 和 Perplexity 是一樣的分工邏輯,只是名字不同。搞混這一層,就會把該放行的擋掉、把想擋的漏掉。
- 「GPTBot」(OpenAI):抓取內容供訓練基礎模型;封鎖它不會讓你從 ChatGPT 搜尋消失。
- 「OAI-SearchBot」(OpenAI):為 ChatGPT 搜尋與即時回答建立索引、帶來來源引用;想被引用就要放行。
- 「ChatGPT-User」(OpenAI):使用者在對話中主動要求造訪某網址時才觸發。
- 「ClaudeBot」(Anthropic):抓取內容供訓練與模型使用。
- 「Claude-SearchBot」與「Claude-User」(Anthropic):分別負責搜尋索引,以及使用者當下觸發的擷取。
- 「PerplexityBot」(Perplexity):為 Perplexity 答案引擎建立索引;封鎖它等於退出 Perplexity 引用。
- 「Perplexity-User」(Perplexity):使用者提問當下才即時擷取,曾被指控不完全遵守 robots.txt。
- 其他常見對象:「Google-Extended」(不是實際爬蟲,而是一個控制項,決定內容是否用於 Gemini 的訓練與 grounding)、「CCBot」(Common Crawl,眾多模型的訓練語料來源)、「Bytespider」(ByteDance,抓取兇猛)。
robots.txt 的基本規則,先別急著貼設定
robots.txt 必須放在網域根目錄,網址固定是你的網域後面接 /robots.txt;而且每個主機各自一份——blog.example.com 和 www.example.com 是兩個不同主機,前者的規則管不到後者,http 與 https、不同 port 也算不同來源。語法只有三個關鍵字:User-agent 指定對象,Disallow 擋路徑,Allow 開例外。當 Allow 和 Disallow 衝突時,主流引擎採「最長路徑優先」,所以你可以在大範圍封鎖裡用 Allow 開一道小門。
- robots.txt 是「請求」不是「防火牆」:守規矩的爬蟲(GPTBot、ClaudeBot、Googlebot)會遵守,但惡意或不守規的爬蟲可以無視。真要強制擋,得靠伺服器層的 WAF、防火牆規則或驗證機制。
- 擋了爬取不等於刪掉既有資料:robots.txt 只影響「之後還能不能抓」,已經進到訓練資料裡的內容不會因此消失。
- User-agent 名稱要精準:比對大小寫不敏感,但拼錯(例如寫成 GPT-Bot 或 Perplexity Bot)等於沒設,而且每一組規則只對比對到的那個 User-agent 生效。
情境一:允許被引用、拒絕被訓練(多數 B2B SaaS 的預設)
如果你要出現在 AI 答案裡、被標為來源,同時不想內容被無償拿去訓練下一代模型,就放行檢索爬蟲、封鎖訓練爬蟲。這是我們替多數 B2B 客戶採用的預設配置:能見度優先,訓練授權另議。實作上,每一隻爬蟲寫成獨立的 User-agent 群組、各自帶自己的規則;把明確的 Allow: / 寫給檢索爬蟲,能清楚表達意圖,也能覆蓋掉任何全站封鎖的舊設定。
- User-agent: GPTBot → Disallow: /(訓練爬蟲,封鎖)
- User-agent: ClaudeBot → Disallow: /(訓練爬蟲,封鎖)
- User-agent: CCBot → Disallow: /(Common Crawl 訓練語料,封鎖)
- User-agent: OAI-SearchBot → Allow: /(ChatGPT 搜尋引用,放行)
- User-agent: PerplexityBot → Allow: /(Perplexity 引用,放行)
- User-agent: Claude-SearchBot → Allow: /(Claude 搜尋引用,放行)
- 若也不想進 Gemini 訓練,可再加 User-agent: Google-Extended → Disallow: /(不影響 Google 搜尋排名)

情境二:連引用都不留,全面封鎖 AI 存取
付費牆後的內容、法遵敏感資料,或還在授權談判階段的素材,可能需要連檢索都擋。做法是把所有已知的 AI User-agent 逐一列出、各設 Disallow: /。但要清楚代價:全擋之後,你在 AI 答案裡的引用會歸零,等於自願退出這條正在長大的流量來源。這通常是防禦性、暫時性的設定,不該當成 B2B 行銷網站的預設。
- OpenAI:對 GPTBot、OAI-SearchBot、ChatGPT-User 各自設 Disallow: /
- Anthropic:對 ClaudeBot、Claude-SearchBot、Claude-User 各自設 Disallow: /
- Perplexity:對 PerplexityBot、Perplexity-User 各自設 Disallow: /
- 選配再加擋:Google-Extended、Applebot-Extended、Bytespider、CCBot 各自設 Disallow: /
別讓「一鍵封鎖所有 AI」的樣板害了你的 GEO
網路上流傳很多「把這段貼進 robots.txt 就能擋光 AI」的樣板,問題是它們一律對所有 AI User-agent 下 Disallow: /,把負責引用你的檢索爬蟲一起擋掉。結果你以為在保護內容,實際上是主動退出 ChatGPT 搜尋、Perplexity 和 Claude 的來源名單。對想被 AI 引用的 B2B 品牌,這幾乎都是反效果。貼任何樣板之前,先確認它擋的是訓練還是檢索。
設定完,怎麼確認真的生效
- 直接檢查:瀏覽器打開你的網域加上 /robots.txt,確認檔案存在、放在根目錄、群組沒有拼錯。
- 讀伺服器日誌:搜尋 User-agent 欄位裡的 GPTBot、ClaudeBot、PerplexityBot,看被擋的是否回 403、放行的是否正常抓到頁面。
- 驗證真身:AI 爬蟲的 User-agent 可被偽造,OpenAI、Anthropic 都公布官方 IP 區段,用反向 DNS 加正向 DNS 交叉確認,才不會被冒名爬蟲騙過。
- 模擬請求:用 curl 帶上對應 User-agent 拉頁面,對照 robots.txt 規則是否如預期放行或封鎖。
- 定期回看:各家會新增或更名 User-agent(例如 OAI-SearchBot 是後來才從 GPTBot 分出來的),每季檢查一次,別讓設定過期。
robots.txt 不是保險箱,是門口的告示牌。它決定你歡迎哪一種 AI 進門、把哪一種擋在外面;而在 GEO 的世界裡,把檢索爬蟲擋在門外,等於把生意擋在門外。— Tenten GEO 顧問團隊
設定 robots.txt 只是 GEO 技術基礎的第一格。真正決定你能不能被 AI 引用的,還包括結構化資料、llms.txt、內容能不能被乾淨抽取,以及品牌在各家引擎的實際能見度。想知道你現在是被 AI 引用,還是被自己的 robots.txt 擋在門外,可以預約一次 30 分鐘 GEO 診斷,我們用你的實際網域跑一遍爬蟲存取與引用現況,當場告訴你缺口在哪。



