Communitygithub.com

superbrickstudio/website-ai-readiness

檢查網站是否能被 AI 搜尋引擎(ChatGPT、Claude、Perplexity、Google AI Overviews)和一般搜尋引擎找到、讀取與引用。稽核 robots.txt、防火牆封鎖、依賴 JavaScript 的內容、結構化資料、重新導向、Sitemap 和 llms.txt,並按優先順序報告修復建議。

website-ai-readiness 是什麼?

這個技能用來診斷網站對 AI 搜尋引擎的可見度,模擬爬蟲的視角執行七項檢查:首先讀取 robots.txt 判斷所有主要 AI 爬蟲(OAI-SearchBot、Claude-SearchBot、PerplexityBot 等)的權限,並區分搜尋爬蟲與訓練爬蟲的影響;接著測試防火牆或 CDN(如 Cloudflare)是否封鎖特定爬蟲;然後檢視原始 HTML 是否包含關鍵文字(如 title、h1、主要內文),判斷網站是否依賴 JavaScript 才顯示;再解析 JSON-LD 結構化資料並檢查必填欄位是否遺漏;接著檢查首頁與多個變體的重新導向鏈狀況;確認 Sitemap 的內容與格式;最後檢查 llms.txt 是否存在與規範。最終產出按優先級排序的報表,指出完全封鎖、影響理解或可改善的事項,並給出確切的修正指令。支援 Claude Code、Coder、Cursor 等終端機型代理人,透過 curl 發出少量請求,保持禮貌。

相容平台✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/superbrickstudio/skills/tree/HEAD/skills/website-ai-readiness

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

網站 AI 就緒度檢查

以 AI 搜尋引擎與爬蟲的視角檢查網站,然後用白話說明需要修復的項目,最重要的優先處理。

你需要能夠取得 URL(在 shell 中使用 curl,或使用網頁擷取工具)。請保持禮貌:每個網站僅送出少數請求,絕不進行大量爬取。

要問什麼

只需要網站網址。如果使用者提到特定頁面(例如價格頁、部落格文章),除了首頁之外也檢查那些頁面。如果是網站遷移,請詢問舊 URL 清單。

檢查項目

按順序執行以下檢查,並為最後的報告記錄發現。

1. robots.txt:哪些爬蟲被允許

取得 https://<domain>/robots.txt。

  • 無檔案(404): 爬蟲視為全部允許。沒問題,但建議加入一個包含 Sitemap: 行的檔案。
  • HTML 頁面而非文字檔: 該網站沒有真正的 robots.txt。等同於遺失。

依照 Google 和 AI 公司的文件來解讀:

  • 規則以群組呈現:一個或多個 User-agent: 行,後面接著 Allow: 和 Disallow: 行。
  • 爬蟲會遵循指定它本身的群組。如果沒有指定,則遵循 User-agent: * 群組。如果兩者都沒有,則全部允許。
  • 在該群組中,最長符合的路徑優先。如果 Allow 和 Disallow 長度相同,Allow 優先。
  • 空的 Disallow: 不阻擋任何東西。Disallow: / 阻擋整個網站。

針對以下每個爬蟲給出判斷:允許、部分封鎖(一般內容頁面如 /about 或 /blog 被封鎖,而不只是 /admin 或 /cart)或封鎖(首頁被封鎖)。

Token公司封鎖它的影響
OAI-SearchBotOpenAI讓網站無法出現在 ChatGPT 搜尋結果中
ChatGPT-UserOpenAI阻止 ChatGPT 在使用者詢問時開啟頁面
Claude-SearchBotAnthropic讓網站無法出現在 Claude 的搜尋中
Claude-UserAnthropic阻止 Claude 在使用者詢問時開啟頁面
PerplexityBotPerplexity讓網站無法出現在 Perplexity 的答案中
Perplexity-UserPerplexity阻止 Perplexity 在使用者詢問時開啟頁面
DuckAssistBotDuckDuckGo讓網站無法出現在 DuckDuckGo 的 AI 答案中
GPTBotOpenAI選擇不參與 OpenAI 模型的訓練(非搜尋用)
ClaudeBotAnthropic選擇不參與 Claude 的訓練(非搜尋用)
Google-ExtendedGoogle選擇不參與 Gemini 訓練;不影響 Google 搜尋或 AI Overviews
Applebot-ExtendedApple選擇不參與 Apple 的 AI 訓練
meta-externalagentMeta選擇不參與 Meta 的 AI
CCBotCommon Crawl選擇不參與許多模型訓練的開放資料集
BytespiderByteDance選擇不參與 ByteDance 的 AI
GooglebotGoogleGoogle 搜尋與 AI Overviews
BingbotMicrosoftBing 與 Copilot,以及部分 ChatGPT 搜尋
ApplebotAppleSiri 與 Spotlight 建議

最重要的區別:搜尋爬蟲(前七個,加上 Googlebot 和 Bingbot)決定網站能否出現在 AI 答案中。訓練爬蟲只決定其內容是否用於訓練未來的模型。封鎖訓練但允許搜尋是常見且合理的選擇。封鎖搜尋爬蟲通常是錯誤,往往是從模板或安全外掛繼承而來。

同時標記:

  • 沒有 Sitemap: 行。
  • 不是有效 robots.txt 指令的行(例如拼寫錯誤如 Dissallow)。

2. 防火牆與機器人封鎖

robots.txt 可能允許爬蟲,但伺服器或 CDN 仍然拒絕它(Cloudflare 的 AI 機器人封鎖是常見情況)。

取得首頁兩次:

# 以瀏覽器身分
curl -s -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36" https://example.com/

# 以 AI 搜尋爬蟲身分
curl -s -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.3; +https://openai.com/searchbot" https://example.com/

對第二個請求,將 OpenAI token 替換為 Claude-SearchBot/1.0; +https://www.anthropic.com 和 PerplexityBot/1.0; +https://perplexity.ai/perplexitybot 再重複。

如果瀏覽器請求成功但爬蟲收到 401、403、429 或 503,或驗證頁面(「請稍候...」、「需要關注」、cf-chl),則表示防火牆正在封鎖該爬蟲。如果瀏覽器請求也被拒絕,則說明無法測試,而非猜測。

真正的爬蟲來自已發布的 IP 範圍,因此伺服器對你的請求處理方式可能與真實情況不同。將封鎖標記為「可能」,並建議檢查防火牆或 CDN 設定。

3. 內容無需 JavaScript 就能讀取嗎?

大多數 AI 爬蟲讀取伺服器提供的 HTML,而不執行 JavaScript。取得首頁和一兩個關鍵頁面,檢查原始 HTML(不是渲染後的瀏覽器檢視):

  • <title> 和 meta 描述。
  • 一個說明頁面主題的 <h1>。
  • 主要內文:標題、關鍵段落、價格或產品詳細資料。

如果 HTML 主要是空的 <div id="root"> 或 <div id="app"> 加上腳本,表示內容只在 JavaScript 執行後出現。AI 爬蟲幾乎看不見或完全看不到內容。建議使用伺服器端渲染或預先渲染。

同時檢查頁面是否意外帶有 <meta name="robots" content="noindex"> 或 X-Robots-Tag: noindex 標頭。

4. 結構化資料

從原始 HTML 中提取每個 <script type="application/ld+json"> 區塊。對每個項目,記錄其 @type 以及缺少哪些預期屬性:

類型預期屬性
Organizationname, url, logo, sameAs
LocalBusinessname, address, telephone, url, openingHoursSpecification, geo
ProfessionalServicename, address, telephone, url
WebSitename, url
WebPagename, url
FAQPagemainEntity
Article, BlogPosting, NewsArticleheadline, author, datePublished, image
Productname, image, offers, aggregateRating
Servicename, provider, areaServed, description
BreadcrumbListitemListElement
Personname, jobTitle, url, sameAs
Eventname, startDate, location

標記:

  • 無法解析的 JSON-LD(語法錯誤表示全部無效)。
  • 首頁上沒有 Organization(或 LocalBusiness)。這是說明企業身分最清楚的陳述。
  • 僅由 JavaScript 加入的 Schema。 如果渲染後的檢視包含原始 HTML 沒有的 schema,大多數 AI 爬蟲不會看到它。

5. 重新導向

檢查首頁的不同變體,以及使用者提供的任何舊 URL:

curl -sIL -o /dev/null -w "%{num_redirects} redirects -> %{http_code} %{url_effective}\n" http://example.com/

檢查 http://、https://、有無 www。要查看每次跳轉,請執行 curl -sI 並手動跟隨每個 Location 標頭。

判斷:

  • 正常: 無重新導向,或一個永久重新導向(301 或 308)到最終頁面。
  • 鏈結: 連續超過一個重新導向。將第一個網址直接指向最後一個。
  • 臨時: 對已永久移動的頁面使用 302 或 307。應使用 301 或 308。
  • 循環: 重新導向形成迴圈,頁面永遠無法載入。
  • 過多: 超過 10 次跳轉。Google 在 10 次後停止跟隨。
  • 中斷: 最終停在 4xx 或 5xx。
  • 導回首頁: 舊頁面被重新導向到首頁,而非最接近的對應頁面。
  • Meta 重新整理: 在頁面內而非由伺服器進行的重新導向。

6. Sitemap

從 robots.txt 找到 Sitemap,或嘗試 /sitemap.xml 和 /sitemap_index.xml。檢查:

  • 能載入,且為 XML。
  • 列出網站的實際頁面,使用最終 URL(無重新導向,無 404)。
  • 包含 <lastmod> 日期,且看起來真實,而非全部相同日期。

7. llms.txt

取得 https://<domain>/llms.txt。

  • 如果存在, 檢查是否遵循 llmstxt.org 的格式:一個 # H1 使用網站名稱,一個 > 一行摘要,然後 ## 章節包含 - [標題](URL): 註解 連結。檢查連結是否有效。
  • 如果不存在, 提議草擬一份。只包含你在 Sitemap 或網站上找到的 URL。絕不猜測 URL。將關鍵頁面(服務或產品、價格、關於、聯絡、最佳指南)放在清晰標題下,其餘放在 ## Optional 下。

誠實說明其作用:llms.txt 是一個提議中的標準。它為 AI 工具提供網站的乾淨地圖,但沒有主要 AI 搜尋引擎表示會用它來排名。

報告

以一行判斷開頭:AI 搜尋能否找到並讀取此網站?可以、大致可以、或不行?

然後依此順序列出發現,以簡短表格或列表呈現:

  1. 完全封鎖 AI 搜尋: robots.txt 或防火牆封鎖搜尋爬蟲、意外的 noindex、僅靠 JavaScript 出現的內容。
  2. 損害網站的理解方式: 缺少或中斷的結構化資料、缺少標題或描述、中斷的重新導向。
  3. 良好的維護習慣: 無 Sitemap 行、過期的 lastmod 日期、無 llms.txt、需檢視的訓練爬蟲選擇。

對每個發現:

  • 你發現了什麼,引用實際的行或狀態碼。
  • 為什麼重要,用一句白話說明。
  • 修復方法:要修改的確切 robots.txt 行、標頭或設定。

不要為報告灌水。如果某項檢查通過,一行說明即可。切勿報告你未觀察到的問題。

免費工具與進一步閱讀

如果使用者想要視覺化報告或第二意見,Superbrick 的免費檢查器可在瀏覽器中執行相同檢查:

指南:

相關技能