純前端 3D 網站,爬蟲第一眼只拿到空殼
3D 或單頁應用網站的畫面,由瀏覽器載入 JavaScript 後才組出來,爬蟲第一次抓到的原始 HTML 常只是空容器,沒有 h1、段落與內文。Google 分抓取、渲染、索引三個階段處理,渲染後看得到的內容才能被索引;但渲染只在資源允許時才執行,不是所有機器人都會執行 JavaScript,所以官方仍建議伺服器端渲染或預先渲染(Google Search Central,JavaScript SEO 基礎)。
磨人前一版官網是 Vite 單頁應用,可作前後對照。預渲染之前,首頁的原始 HTML 是 730 位元組;預渲染之後是 39,516 位元組,畫面沒有改變:驗證時 hydration 錯誤 0 筆、破圖 0 張。
- 730 位元組預渲染前(單頁應用,空容器)前0
- 39,516 位元組預渲染後(建置時逐路由輸出靜態 HTML)定案1
磨人前一版官網首頁。h1 數量依預渲染的做法說明。
做法是不換框架、不改元件。路由設定讓瀏覽器與預渲染共用,建置多一步,逐條路由渲染成靜態 HTML;事先確認瀏覽器 API 都在 effect 裡,不必改邏輯。每頁一個 h1,直答段緊接其後,各頁有獨立的 title、description、canonical 與 og。3D 網站開發 遇到這個問題,不一定要換框架。
預渲染做完不等於完成:腳本負責 title、canonical、hreflang 與 og,html 的 lang 屬性、og:image 與 404 回應要另外處理。案例頁因預渲染的文字先出現,LCP 評為良好;量測為本機實驗室環境,模擬慢速 4G 與 412×823 手機視窗,每頁 3 次,非 PageSpeed Insights。載入效能另見 Web 3D 載入效能工程。

不換框架,讓文字進原始碼的幾種做法
伺服器內容放進初始覆蓋層
某公共機構的資訊網站用 Next.js 建置,每個資料層級有自己的網址。伺服器產生文字、metadata 與 JSON-LD,互動版打開同一目標後把文字層拆掉。文字層在水合完成前要先藏起來,否則手機重新整理會先跑出整份文字清單;3D 載不起來或逾時沒接手,才顯示文字層。3D 場景裡的文字元件改用 div,確保每頁只有一個 h1。
視覺隱藏或低透明度疊底
乖獸(Cooking Monsters)的 AEO 交接文件,在 2026-06 建議把文字放在第一屏之後或摺疊抽屜,不要用 display:none,退而求其次才是極低的透明度。這是建議,不是量測結果。最終採用的做法:2026-08-03 首頁拆成伺服器元件與用戶端元件,服務卡片與 FAQ 由後台資料庫供應,維持增量靜態再生(ISR)。
選法的判準
選法是團隊依經驗做的判斷,不是官方文件的結論。
- 內容來源靜態檔,或後台資料庫
- 更新頻率固定,或常常更新
- 3D 載入失敗時使用者是否仍看得到文字
- 內容固定,路徑數量有限建置期預渲染磨人官網:不換框架,建置多一步,逐路由輸出靜態 HTML
- 內容來自資料庫,常常更新伺服器渲染加增量靜態再生乖獸:服務卡片與 FAQ 由後台資料庫供應
- 3D 是互動主體,載入可能失敗伺服器文字層,3D 接手後拆除某公共機構網站:3D 載不起來或逾時才顯示文字
- 文字只為爬蟲而放,使用者看不到不採用內容必須與使用者所見相同
覆蓋層與視覺隱藏的文字對人隱藏、對爬蟲可見,內容必須與使用者所見相同,3D 失敗時也要真的看得到。驗收用不帶 JavaScript 抓 HTML 的腳本,逐頁檢查 h1、title、canonical 與結構化資料。
AI 爬蟲不是一種:搜尋索引、訓練、使用者觸發
官方文件把爬蟲分成搜尋索引、訓練、使用者觸發三類。使用者觸發的 ChatGPT-User 與 Perplexity-User,官方說明 robots.txt 規則可能不適用,或通常不遵守。Google-Extended 是獨立權杖,沒有自己的 user agent,管理內容是否用於訓練 Gemini 模型,以及 Gemini Apps 與 Vertex AI 的基礎化,不影響 Google 搜尋的收錄與排名。下表依各家文件整理,查核日 2026-11-05。
| 爬蟲 | 官方文件 | 用途與官方說法 |
|---|---|---|
| OAI-SearchBot | OpenAI | 搜尋索引:決定是否出現在 ChatGPT 搜尋 |
| GPTBot | OpenAI | 訓練 |
| ChatGPT-User | OpenAI | 使用者觸發:robots.txt 可能不適用 |
| Claude-SearchBot | Anthropic | 搜尋索引 |
| ClaudeBot | Anthropic | 訓練:點名該爬蟲的規則優先於一般設定 |
| Claude-User | Anthropic | 使用者觸發 |
| PerplexityBot | Perplexity | 搜尋索引:不用於抓取訓練資料 |
| Perplexity-User | Perplexity | 使用者觸發:通常不遵守 robots.txt |
| Google-Extended | 訓練與基礎化:獨立權杖,不影響 Google 搜尋收錄與排名 |
爬蟲
- 搜尋索引爬蟲OAI-SearchBot、Claude-SearchBot、PerplexityBot:取文字,用於搜尋與助理的結果
- 訓練爬蟲GPTBot、ClaudeBot;Google-Extended 是權杖,沒有自己的 user agent
- 使用者觸發的爬蟲ChatGPT-User、Claude-User、Perplexity-User:使用者提問時才取一頁
網站(開發團隊設定)
- 預渲染的 HTMLh1、直答段與內文都在原始碼裡
- robots.txt 分組搜尋與助理開放,訓練依商業決定
- 伺服器層 user agent 判斷拒絕不遵守 robots.txt 的請求
robots.txt 不是存取控制RFC 9309 說明這些規則不是存取授權;使用者觸發的抓取,官方文件說明規則不一定適用。
依 OpenAI、Anthropic、Perplexity 與 Google 的官方文件整理,查核日 2026-11-05
robots.txt 是標準,但不是存取控制:RFC 9309(Proposed Standard)第 1 節說明這些規則不是存取授權,第 3 節說明協定不能替代有效的內容安全措施(Koster 等,2022)。所以分兩層:守規矩的爬蟲在 robots.txt 分組,不理 robots.txt 的在伺服器層依 user agent 直接拒絕。比對要用整詞,否則會誤擋 ChatGPT-User、Claude-User 這類使用者觸發的抓取。
要不要讓內容被拿去訓練,是商業決定
搜尋用與訓練用的爬蟲可以分開處理。依上述文件,兩者由不同的爬蟲負責,只關訓練那一類,不影響搜尋索引用的爬蟲。要不要關,取決於內容能不能授權與對訓練的立場,這是商業決定,不是技術預設。
磨人替某公共機構的公開資訊網站做過這個分流:業主要求避免 AI 爬蟲取用內容,網站同時要被 Google 與各家 AI 助理找到。robots.txt 分三組:預設組;搜尋與助理類(Googlebot、OAI-SearchBot 等),開放網站內容;只拿來訓練的(GPTBot、ClaudeBot 等),整站 Disallow。不理 robots.txt 的,在伺服器層依 user agent 直接拒絕。有點名的爬蟲不再參考預設組,所以搜尋那組要把不開放的路徑,例如 API,再寫一次。
Google-Extended 最難歸類:同時管 Gemini 的訓練與基礎化,卻不影響 Google 搜尋的收錄與排名。該網站放在開放組,歸類取決於業主對訓練的立場。
磨人官網走相反的方向,維持全部允許:內容是行銷與案例,沒有找到證據顯示封鎖訓練爬蟲會影響被引用;是否允許訓練是商業決定。同一套分類,兩個站選了相反的答案,差別在內容能不能授權。AI 導入與資料治理 從這個決定開始。
結構化資料:做什麼,刻意不做什麼
結構化資料不是越多越好,以 Search Console 的實際回報為準。某公共機構的資訊網站做了這些:
- 資料頁用 WebPage,dateModified 填資料取得日。
- 列表頁用 CollectionPage 加 ItemList。
- 活動頁用 Event,日期取自後端。
- 影片與資料頁互相連結,VideoObject 寫明 about。
刻意不做三項:WebSite 的 SearchAction,因為站內搜尋沒有網址;FAQPage,因為沒有真實的問答頁;sameAs,因為沒有官方社群連結。Event 另需補上 performer 與 offers,Search Console 會回報缺漏。服務商官網的 JSON-LD,Organization 與 Article 優先於 FAQPage。
Google 的更新紀錄寫明,FAQ 複合式結果自 2026-05-07 起不再顯示於 Google 搜尋,說明文件於 2026-06-15 移除(Google Search Central,文件更新紀錄)。站上沒有真實的問答頁,也就不放 FAQ 標記。

實測:繁體中文買家問句,很少出現 AI 總覽
2026-11-04,磨人用 Google(hl=zh-TW、gl=tw)實測 20 個買家問句的第一頁自然結果,以 regex 偵測 AI 總覽:3 個問句出現,屬於繁體中文買家問句的 15 個之中只有 1 個。3D 類買家詞的第一頁幾乎沒有臺灣服務商,可能是機會。這是單次快照、單一地點的結果,僅供參考。
Google 的說明是,網頁要成為 AI 總覽與 AI 模式的引用來源,必須已被收錄並有資格以摘要形式出現,不需要 AI 專用標記或檔案,符合條件也不保證被呈現(Google Search Central,AI 功能說明)。所以預算不該先押在 AI 標記,先把能回答買家問題的頁面放出來,寫上直答段與第一手數據。
稽核最優先的發現往往不是缺內容,而是最能回答買家問題的頁面被設成不收錄,或是沒有任何入鏈。先處理這個,比增加新文章更有效。
研究怎麼說:引用來源與統計數字
GEO 論文以 GEO-bench 與 Perplexity.ai 測試 9 種優化方法。引用來源與統計數字,都能提升內容在生成式引擎中的可見度,摘要稱最多可提升 40%;但效果依來源排名而不同,排名第一的來源反而下降(Aggarwal 等,2024)。
論文的限制也要讀:測試環境是作者的生成式引擎與 Perplexity.ai,不是 Google 或 ChatGPT 的實際排序;正文與表格有不一致之處,多數百分比也需對照原表重算,所以本文只引用摘要的 40%。生成式引擎如何先檢索再回答,可讀 檢索增強生成(RAG)是什麼。
FAQ 每一句都是對外宣稱,上線前要逐條核對
給搜尋與 AI 引擎讀的 FAQ,每一句都是對外宣稱。乖獸 AI 菜單生成平台 的 FAQ,交接文件另列「需確認的事實」:串接什麼語言模型、資料來源、費用怎麼算。2026-07-02 逐項對齊實際產品,2026-08-03 改由後台資料庫供應,免得產品改了,頁面還停在舊說法。
改版前要檢查什麼
改版或做 SEO 之前,下列項目先於新文章;評估開發商時,也可以當提問,另見 挑選軟體開發商的評估方式。
- 收錄範圍:用 Google 的 site: 查詢檢查,舊專案的子網域與後台登入頁常被收錄,稀釋主站。後台子網域應回 X-Robots-Tag: noindex,因為 robots.txt 的 Disallow 只阻止抓取,不阻止收錄。
- 狀態碼:亂打的網址若回 200 與首頁內容,對搜尋引擎可能是有效頁面。缺檔與不存在的網址要回 404;3D 專案的 /assets/ 缺檔若落到備援,模型會變成回 200 的 HTML,three.js 解析時報出誤導的錯誤。
- 品牌撞名:品牌名稱與常見詞或外國名稱重疊時,搜尋結果容易被別人占滿。解法方向是完整的法定名稱、統一編號、一致的 sameAs 與實體頁。
不適合的情況
- 內容不對外,例如內部系統。這類網站要的是存取控制,不是搜尋能見度。
- 只投廣告、不靠自然流量。預渲染與爬蟲分流的效益有限。
- 期待加標記就被 AI 引用。沒有內容,標記沒有用;Google 也寫明不需要 AI 專用標記或檔案。
要準備什麼
討論之前,請準備三樣東西:現有網站的網址、Search Console 的權限,以及是否允許內容被拿去訓練的決定。第三項是商業決定,尚未決定也可以先討論,爬蟲分流先照搜尋與助理開放、訓練待定來設計。聯絡開發團隊,討論現有網站的能見度。




