GEO 指南

Vue、React網站能被人工智能讀取嗎?

王朋友 · 星盒AI 創始人發佈於 24 分鐘讀完
Vue、React網站能被人工智能讀取嗎?

先説結論

Vue 或 React 不會天然導致人工智能無法讀取網站。真正需要檢查的是:伺服器首次返回的 HTML(網頁內容和結構代碼)裏有沒有標題、正文和連結,HTTP 狀態碼(伺服器用數字説明訪問結果的方式)是否正確,以及爬蟲有沒有被訪問規則、伺服器或登錄機制攔截。

Vue 和 React 是開發網頁界面常用的技術工具。這裏的“網頁界面”,指的是用戶在瀏覽器裏看到和操作的部分。

網站使用哪種工具,並不能直接決定它是否能被讀取。問題的關鍵是:人工智能(AI)搜尋系統或搜尋引擎的爬蟲訪問頁面時,伺服器究竟返回了什麼。

爬蟲是一種自動訪問網頁、收集內容的程序。用戶用瀏覽器打開網站後,瀏覽器可以繼續運行 JavaScript——一種負責網頁交互和動態內容的程序語言——再請求數據、生成正文。爬蟲訪問同一個網頁地址時,拿到的卻可能只有幾段程序代碼和一句“加載中”。

因此,瀏覽器裏顯示正常,不等於爬蟲已經獲得了完整內容。

判斷一個 Vue 或 React 網站能否被讀取,不能只看開發框架,也不能只看頁面截圖。需要檢查頁面內容是怎樣生成的、首次返回的網頁代碼裏有什麼、訪問權限是否正常,以及抓取設置是否正確。

瀏覽器顯示的頁面,不一定是伺服器最初返回的頁面

用戶打開網頁時,伺服器——也就是向訪問者發送網頁內容的系統——會先返回一份 HTML。隨後,瀏覽器才可能運行 JavaScript,繼續補充文字、圖片和交互功能。

這個把代碼和數據變成完整頁面的過程,通常稱為“渲染”。

如果標題、正文和連結已經寫在伺服器首次返回的 HTML 中,那麼即使不運行 JavaScript,爬蟲也能獲得頁面的主要資訊。

如果首次返回的 HTML 裏只有:

<div id="root"></div>

或者:

<div id="app"></div>

正文需要等瀏覽器運行 JavaScript 後才會出現,這種方式稱為客戶端渲染,英文縮寫是 CSR。它的意思是:伺服器先返回一個內容很少的頁面,再由用戶的瀏覽器生成主要內容。

檢查這類網站時,不要只看瀏覽器開發者工具裏的 Elements 面板。Elements 面板展示的是 JavaScript 運行後的 DOM,也就是瀏覽器最終生成的頁面結構。它不能證明正文已經存在於伺服器首次返回的 HTML 中。

更直接的方法是打開“查看網頁源代碼”,搜尋頁面標題和正文中的一句獨特文本。

例如,頁面上有一句“本產品支持工業設備預測性維護”。如果瀏覽器裏能看到這句話,但網頁源代碼和伺服器的原始響應中都搜不到,就説明這句話依賴客戶端渲染。

Google 可能在後續處理過程中運行 JavaScript 並讀取這部分內容,但不能因為瀏覽器顯示正常,就認定所有搜尋引擎和 AI 搜尋系統都能穩定獲得它。

Vue、React網站能被人工智能讀取嗎?

判斷網站能否被讀取,先確認四件事

1. 首次返回的 HTML 裏有沒有主要內容

至少檢查以下內容:

  • H1,也就是頁面主標題
  • 頁面摘要
  • 主正文
  • 主要站內連結

這些內容如果能夠直接在首次 HTML 中找到,抓取結果會更容易測試,也較少受到腳本報錯和數據請求失敗的影響。

2. HTTP 狀態碼是否符合頁面的實際情況

正常頁面應返回 200,表示訪問成功;已經失效的頁面應返回 404 或 410,表示頁面不存在或已經移除;頁面跳轉應使用 3xx 狀態碼,表示伺服器正在把訪問者轉到另一個地址。

有些使用客戶端路由的網站,會讓錯誤頁面也返回 200。客戶端路由指的是由瀏覽器腳本控制不同網頁地址和頁面內容之間的切換。

當用戶看到“頁面不存在”,伺服器卻向爬蟲表示“訪問成功”時,這種情況通常稱為 soft 404,也就是頁面內容已經失效,但狀態碼仍然是 200。

3. 抓取和收錄設置是否正確

“抓取”是爬蟲訪問並獲取網頁內容,“收錄”則是頁面進入搜尋系統可以查詢的內容庫。

需要核對:

  • robots.txt 是否允許目標爬蟲訪問。robots.txt 是網站專門寫給爬蟲看的訪問規則文件。
  • 頁面代碼中的 robots meta 是否帶有意外的 noindex。robots meta 是寫在網頁裏的抓取控制標籤,noindex 表示“不要收錄這個頁面”。
  • canonical 是否指向正確地址。canonical 是用來告訴搜尋引擎“哪個網頁地址是規範版本”的標記。
  • sitemap 是否包含需要公開收錄的頁面。sitemap 是列出網站公開網頁地址的文件,中文常稱為站點地圖。

4. 目標爬蟲能否真正拿到正文

即使 robots.txt 已經放行,爬蟲仍可能遇到:

  • 403,即伺服器拒絕訪問
  • 驗證碼
  • 登錄頁面
  • 地區限制
  • 空白 HTML
  • 長時間停留在“加載中”的頁面

robots.txt 管理的是“是否允許訪問”,不保證伺服器最終返回了什麼。訪問許可和實際返回內容必須分別檢查。

Vue、React網站能被人工智能讀取嗎?

用三分鐘檢查一個重要頁面

不要只測試首頁。產品頁、服務頁、案例頁、幫助文檔和文章頁,才是 AI 回答具體問題時更可能讀取和引用的內容。

先選擇一個重要的公開 URL。URL 就是網頁地址。然後完成下面四步。

第一步:查看網頁源代碼

打開瀏覽器的“查看網頁源代碼”,依次搜尋:

  • H1 主標題
  • 正文中的一句獨特文本
  • 主要站內連結

如果這些內容都能搜到,説明關鍵內容已經進入伺服器首次返回的 HTML。

如果源代碼中只有根節點、腳本地址或加載提示,説明頁面主要依賴客戶端渲染。根節點就是 JavaScript 後續生成整頁內容時所使用的初始容器。

第二步:檢查伺服器的原始響應

在終端中直接請求這個網頁地址,重點檢查:

  • HTTP 狀態碼是否正確
  • 是否發生了異常跳轉
  • 返回內容中是否包含正文
  • 返回內容的大小是否正常

還應使用目標爬蟲的 User-Agent 進行測試。User-Agent 是訪問者向伺服器説明自己身份的一段資訊。這樣可以確認目標爬蟲訪問時,是否會遇到 403、驗證碼、地區攔截或登錄頁面。

第三步:檢查網頁地址和抓取設置

依次核對:

  • robots.txt 是否誤封目標爬蟲
  • 頁面是否帶有意外的 noindex
  • canonical 是否指向正確的公開地址
  • sitemap 是否包含規範地址
  • 站內連結是否使用真實的 href

href 是網頁代碼中用來填寫連結目標地址的屬性。如果內容只能通過點擊事件切換,沒有獨立的網頁地址,也沒有真實連結,爬蟲就不容易發現和訪問它。

第四步:檢查實際抓取結果

對於 Google,可以使用 Search Console 的網址檢查功能。Search Console 是 Google 提供的網站抓取、收錄和搜尋表現檢查工具,可以用來查看抓取狀態以及 Google 處理後的頁面內容。

對於其他 AI 搜尋系統,可以結合伺服器日誌核對:

  • 官方 User-Agent 是否到訪
  • 伺服器返回了什麼狀態碼
  • 返回內容的大小是否正常
  • 當時是否返回了正文

伺服器日誌沒有訪問記錄,不能單獨證明對方從未讀取頁面。但如果已經留下訪問記錄,就可以確認伺服器在那次訪問中實際返回了什麼。

Google能運行JavaScript,為什麼還要處理渲染?

Googlebot 是 Google 用來抓取網頁的程序。它可以運行 JavaScript,但獲取網頁和運行腳本並不是同時完成的。

Google 官方説明的處理過程包括:

  1. 獲取伺服器返回的 HTTP 內容,並解析頁面中的連結。
  2. 將符合條件的頁面放入渲染隊列,等待運行 JavaScript。
  3. 在資源允許時,使用無頭 Chromium 執行腳本。無頭 Chromium 是沒有可視化操作界面的 Chrome 瀏覽器核心。
  4. 解析腳本運行後生成的 HTML,再進入後續收錄流程。

頁面進入渲染隊列後可能需要等待。如果腳本、數據接口或其他頁面資源被 robots.txt 阻止,正文也可能無法正常生成。

JavaScript 網站還經常出現以下問題:

  • 客戶端路由中的錯誤頁面仍然返回 200,形成 soft 404。
  • canonical、noindex 或結構化數據完全依賴腳本寫入,排查時很難確認搜尋系統最終獲得了什麼。結構化數據是用固定格式向搜尋系統説明頁面資訊的一段代碼。
  • 數據請求失敗後,頁面一直停留在“加載中”。
  • 用戶瀏覽器能夠訪問的資源,不一定也向 Googlebot 開放。

因此,對於需要公開收錄的內容,更適合採用伺服器端渲染、靜態生成,或者 hydration。

伺服器端渲染,是由伺服器先生成帶有正文的 HTML;靜態生成,是在網站構建或發佈時提前生成 HTML;hydration 則是伺服器先返回完整 HTML,再由瀏覽器運行 JavaScript,為頁面補充交互功能。

動態渲染也能識別爬蟲,並向爬蟲返回提前生成的頁面,但 Google 將其視為過渡方案,而不是長期推薦的架構。

無論使用哪種方式,提前生成的內容都必須與用戶最終看到的內容保持一致。如果網站向爬蟲和用戶提供不同主題的內容,可能被視為隱藏內容。

來源:Google JavaScript SEO 基礎、Google 動態渲染説明

AI搜尋爬蟲都會運行JavaScript嗎?

目前沒有官方依據支持“所有 AI 爬蟲都不運行 JavaScript”,也沒有依據證明它們都會運行。

OpenAI 公佈了三類相關爬蟲和訪問工具:

  • OAI-SearchBot 用於 OpenAI 的搜尋索引,也就是為搜尋功能收集網頁內容。
  • GPTBot 用於模型訓練。
  • ChatGPT-User 與用戶主動要求 ChatGPT 訪問網頁有關。

Anthropic 也區分 ClaudeBot、Claude-User 和 Claude-SearchBot。其中,Claude-SearchBot 與 Claude 的搜尋結果有關。Anthropic 表示,阻止它可能降低網站在相關搜尋結果中的可見度和準確性。

兩家公司公佈了這些工具的用途、User-Agent、IP 範圍和 robots.txt 管理方式。IP 是設備或伺服器在網絡中的地址。但兩家公司都沒有承諾這些爬蟲一定會運行網頁 JavaScript。

來源:OpenAI 爬蟲説明、Anthropic 爬蟲説明

因此,不能把關鍵內容是否可讀,建立在尚未確認的 JavaScript 運行能力上。

更容易測試和驗收的做法,是讓首次返回的 HTML 直接包含標題、摘要、正文、連結和基礎頁面資訊。即使某個抓取系統具備瀏覽器渲染能力,這種處理也能減少渲染等待、腳本報錯和數據請求失敗造成的影響。

還要再次區分兩件事:robots.txt 解決的是“是否允許訪問”,不是“訪問後一定能讀到正文”。即使已經允許 OAI-SearchBot 或 Claude-SearchBot,伺服器仍可能返回登錄頁、驗證碼、403、空白 HTML,或者一份必須繼續運行程序才能生成正文的頁面。

CSR、SSR和SSG應該怎樣選擇?

不同頁面不必使用同一種內容生成方式。可以根據頁面是否公開、內容更新頻率和交互需求分別處理。

先説明三個常見縮寫:

  • CSR,客戶端渲染: 伺服器先返回少量 HTML,再由瀏覽器運行 JavaScript 生成正文。
  • SSR,伺服器端渲染: 每次收到訪問請求時,由伺服器生成帶有正文的 HTML。
  • SSG,靜態生成: 在網站構建或發佈時提前生成 HTML,訪問時直接返回已經生成的頁面。

SPA 是單頁應用的英文縮寫。它通常在用戶進入網站後,通過客戶端腳本切換不同內容,而不是每次都從伺服器獲取一份完整的新頁面。

頁面類型 建議方式 原因 改造重點
品牌介紹、服務頁、文章、幫助文檔 SSG 靜態生成 內容可以在發佈時生成,首次響應直接包含完整 HTML 生成獨立地址、標題、正文、canonical 和更新時間
價格、庫存等頻繁更新的公開頁面 SSR,或能夠定期重新生成頁面的靜態方式 既要及時更新數據,也要讓伺服器直接返回正文 保證錯誤狀態碼正確,數據請求失敗時不能只剩“加載中”
登錄後台、表單編輯器、內部看板 可以保留 CSR 這些頁面通常不需要公開收錄 在登錄頁之外提供公開的產品説明和幫助頁面
已經上線的大型 SPA,暫時無法遷移 優先預先生成重要頁面 先解決核心公開頁面的讀取問題 保證預先生成的內容與用戶看到的內容一致

SSG 適合內容在發佈時已經確定的頁面。Next.js 是常用於 React 網站的開發框架。它的官方説明指出,靜態生成會在構建時產生 HTML,並可通過 CDN 提供給不同訪問者。CDN 是把網站內容分發到多個網絡節點、讓訪問者就近獲取內容的服務。博客、營銷頁、文檔和產品列表通常適合這種方式。

SSR 適合每次訪問都需要獲取新數據的公開頁面。Next.js 的伺服器端渲染會在每次請求時生成 HTML。Nuxt 是常用於 Vue 網站的開發框架,它的通用渲染會先由伺服器返回完整 HTML,再由瀏覽器運行 JavaScript 完成 hydration。

這些方式都能讓關鍵正文先於客戶端交互程序出現在網頁響應中。

沒有必要因為抓取問題立刻重寫整個網站。可以按頁面地址逐步改造,優先處理首頁、核心服務頁、產品頁、常見問題頁、案例頁和文章模板。登錄後台和需要大量交互的工具可以繼續使用 CSR。

哪些公開內容能夠直接回答用戶問題,應當決定改造範圍和處理順序。

React網站應該怎樣改?

如果現有網站是 React SPA,可以先列出所有公開頁面地址,再按內容特點分為兩類:

  • 長期穩定的內容,使用 Next.js 靜態生成。
  • 需要實時數據的公開頁面,使用伺服器端渲染,或者支持定期更新的靜態生成方式。

登錄後才能使用的組件和交互功能,可以繼續採用客戶端渲染。

React 提供 react-dom/server 服務端接口,可以把網頁組件生成 HTML。正式網站通常會使用成熟框架統一處理頁面地址、數據獲取、臨時存儲、狀態碼和 hydration,減少自行維護伺服器端渲染系統的工作。

來源:React 服務端 API、Next.js 服務端渲染、Next.js 靜態生成

改造完成後,不能只檢查頁面是否還能正常點擊和操作,還要重新檢查伺服器首次返回的內容。以下資訊最好直接包含在 HTML 中:

  • H1 主標題
  • 主正文
  • 主要連結
  • canonical
  • robots meta
  • 結構化數據

篩選器、登錄狀態、動畫和個性化推薦仍然可以在客戶端運行。

Vue網站應該怎樣改?

Vue SPA 可以把公開內容頁面遷移到 Nuxt。

Nuxt 官方説明,通用渲染會先由伺服器返回完整 HTML,再由瀏覽器完成 hydration。客戶端渲染模式則需要瀏覽器下載並運行 JavaScript 後才能生成頁面內容,初始響應可能沒有正文。

來源:Nuxt 渲染模式

同一個網站可以為不同頁面設置不同方式:

  • 首頁和文章頁提前生成 HTML。
  • 公開列表頁使用臨時存儲或增量更新。
  • 用戶後台繼續關閉伺服器端渲染。

遷移時還要檢查 window、document 和 localStorage 等只存在於瀏覽器環境中的對象。如果伺服器端程序直接調用這些對象,可能引發報錯,導致頁面返回 500,也就是伺服器內部錯誤,或者返回空白內容。

短期內無法遷移到 Nuxt,可以先對核心頁面進行靜態導出或預先生成,再安排後續遷移。

預先生成的版本必須與瀏覽器版本保持相同的正文、標題和連結,不能只向爬蟲增加關鍵詞。

SEO與GEO:基礎相同,驗證對象不同

搜尋引擎優化的英文縮寫是 SEO,主要關注網頁能否進入傳統搜尋結果。生成式引擎優化的英文縮寫是 GEO,關注內容能否被生成式 AI 搜尋發現、理解和引用。

二者都需要先解決網頁能否被訪問、讀取和收錄的問題。

Google 在 2026 年發佈的生成式搜尋指南説明,生成式 AI 搜尋仍建立在核心搜尋索引、排名和質量系統之上。頁面要進入 Google 的生成式 AI 功能,需要先被收錄,並且有資格在搜尋結果中顯示摘要。使用 JavaScript 框架會增加 SEO 的處理難度。

來源:Google 生成式 AI 搜尋優化指南

SEO 和 GEO 的驗證對象又不完全相同。

傳統 SEO 可以使用 Search Console 檢查 Google 的抓取、渲染和收錄結果。其他 AI 搜尋系統還可能區分搜尋爬蟲、用戶觸發的訪問工具和訓練爬蟲,不同用途對應不同的控制設置。

網站需要分別核對:

  • User-Agent
  • robots.txt 規則
  • 官方 IP 範圍
  • 伺服器日誌
  • 實際搜尋結果

只配置一條 Allow: /,也就是允許訪問全站,不能證明所有平台都已經完成訪問、讀取和收錄。

國內 AI 搜尋目前沒有統一、公開並且可以驗證的 JavaScript 渲染規範。面向國內平台時,仍應讓公開頁面的首次響應包含完整正文,同時把內容發佈到目標平台能夠正常收錄的公開入口。

具體平台是否已經抓取內容,需要結合實際搜尋結果和伺服器日誌確認,不能直接套用海外平台的爬蟲名單。

改造完成後,應該怎樣驗收?

驗收至少要覆蓋五類頁面:主頁、服務頁、產品頁、文章頁、常見問題頁或幫助頁。每類抽取 1 至 3 個網頁地址,逐項記錄結果。

驗收項 通過標準
首次 HTML H1、摘要、主正文和主要連結能夠直接搜尋到
HTTP 狀態 正常頁返回 200,失效頁返回 404 或 410,跳轉使用 3xx
抓取控制 robots.txt 未誤封目標爬蟲,頁面沒有意外的 noindex
網頁地址信號 canonical 正確,sitemap 包含公開的規範地址
內容一致 首次 HTML 與瀏覽器最終頁面中的核心事實一致
日誌證據 目標 User-Agent 訪問時返回正常狀態和非空正文
Google 驗證 Search Console 的抓取和渲染結果中能夠看到核心內容

發現問題後,建議按以下順序修復:

  1. 狀態碼錯誤
  2. 訪問攔截
  3. 首次 HTML 沒有正文
  4. canonical 和 sitemap 錯誤
  5. 結構化數據問題
  6. 頁面性能問題

結構化數據不能代替正文。如果可讀的 HTML 中沒有正文,只提供一段 JSON-LD,也不能解決整頁資訊缺失的問題。JSON-LD 是一種常用的結構化數據代碼格式。

四個常見誤區

誤區一:Google能運行JavaScript,網站就不用處理渲染

Google 具備 JavaScript 渲染能力,但仍可能遇到排隊等待、資源被阻止和腳本執行失敗。

更重要的是,Google 的能力不能代表其他搜尋引擎和 AI 爬蟲具備相同能力。

誤區二:robots.txt放行後就算完成

robots.txt 只管理訪問許可。伺服器防火牆、CDN 驗證、登錄狀態、地區限制和空白 HTML,仍然可能讓爬蟲無法讀取正文。

誤區三:添加Schema就能解決讀取問題

Schema 是結構化數據標記,用來按照固定格式説明頁面中的人物、產品、文章等資訊。

Google 官方説明,生成式 AI 搜尋不要求特殊的 Schema。結構化數據可以繼續服務於常規 SEO 和搜尋結果中的特殊展示,但正文、標題、連結和正常的訪問狀態仍然是必要條件。

誤區四:必須一次重寫整個網站

公開內容頁面和登錄後台的收錄價值不同。

應先處理能夠直接回答用戶問題的公開頁面,讓伺服器返回完整 HTML,再根據驗收結果決定是否擴大改造範圍。

常見問題(FAQ)

FAQ 是“常見問題解答”的英文縮寫。

Vue或React網站一定會被AI漏讀嗎?

不一定。

Vue 和 React 既可以採用客戶端渲染,也可以通過 Nuxt、Next.js 或服務端接口輸出 HTML。

判斷時要看伺服器首次返回的內容是否包含完整正文,以及爬蟲訪問時能否獲得正確狀態和所需資源。

網頁源代碼中有正文,就説明沒有問題了嗎?

不能。

這隻能確認關鍵內容已經進入首次返回的 HTML。還需要繼續檢查 robots.txt、noindex、canonical、狀態碼、sitemap、站內連結和伺服器訪問控制。

正文雖然存在,但頁面返回 403,或者 canonical 指向錯誤地址,同樣會影響抓取和收錄。

Google到底能不能讀取客戶端渲染的內容?

Google 可以處理沒有被阻止的 JavaScript。官方説明,Google 會使用無頭 Chromium 執行腳本,並利用渲染後的 HTML 進行收錄。

但渲染會進入獨立隊列,資源被阻止或腳本報錯時可能失敗。Google 官方也指出,JavaScript 框架會增加 SEO 的處理難度,因此伺服器端或靜態輸出更容易測試和驗證。

OAI-SearchBot和Claude-SearchBot會運行JavaScript嗎?

兩家公司的官方爬蟲説明都沒有作出這項承諾。

目前可以確認的是,它們分別用於搜尋索引或搜尋質量,網站可以通過 robots.txt 管理訪問。關鍵內容應優先包含在伺服器首次返回的 HTML 中,再通過伺服器日誌核對實際訪問情況。

已有SPA是否必須全站重構?

通常不用。

可以先改造主頁、服務頁、產品頁、文章、案例和常見問題頁等重要公開頁面。後台、編輯器和賬戶中心等登錄後頁面可以繼續使用 CSR。

第一批頁面通過驗收後,再決定是否擴大遷移範圍。

預先生成頁面會被認為是作弊嗎?

關鍵在於內容是否一致。

Google 官方説明,動態渲染本身通常不會被視為隱藏內容,但它屬於過渡方案。向爬蟲和用戶提供不同主題的內容可能構成違規。長期仍建議採用伺服器端渲染、靜態生成或 hydration。

JSON-LD可以繼續用客戶端腳本寫入嗎?

Google 能夠處理由 JavaScript 生成的 JSON-LD,官方也要求網站測試自己的具體實現。

考慮到其他抓取系統的能力並不透明,標題、正文、連結和基礎頁面資訊仍應優先直接包含在 HTML 響應中。

改造後多久能被AI引用?

沒有官方保證。

技術改造只能解決“可以訪問、可以讀取、可以進入索引”這些前置問題,不能保證收錄、排名或引用。

網站需要分別監測搜尋索引、爬蟲日誌和目標 AI 的回答,記錄內容是否出現、引用了哪個網頁地址,再根據結果補充內容和權威信號。

官方來源

  1. Google JavaScript SEO 基礎
  2. Google 動態渲染説明
  3. Google 生成式 AI 搜尋優化指南
  4. OpenAI 爬蟲説明
  5. Anthropic 爬蟲説明
  6. React 服務端 API
  7. Next.js 服務端渲染
  8. Next.js 靜態生成
  9. Nuxt 渲染模式