Trang web của bạn có thể đứng Top 1 Google nhưng vẫn "vô hình" trước ChatGPT

Trình thu thập dữ liệu của Google thực thi JavaScript của bạn, lấy mã HTML đã được kết xuất vào chỉ mục, và có thể đưa một trang web được kết xuất ở phía client (client-side rendered) lên trang đầu của kết quả tìm kiếm. Tuy nhiên, chính trang web đó, khi được truy vấn thông qua ChatGPT hoặc công cụ tìm kiếm AI của Bing, lại biến mất vì các bot vận hành những dịch vụ này không bao giờ thực thi JavaScript. Kết quả là một trang web xếp hạng cao nhưng không một trợ lý AI nào có thể tìm thấy.

Tại sao các trình thu thập dữ liệu AI bỏ lỡ nội dung của bạn

Hai trong số các trình thu thập dữ liệu AI được sử dụng rộng rãi nhất—GPTBot của OpenAI và ClaudeBot của Anthropic—hoàn toàn không thực hiện kết xuất JavaScript. Một nghiên cứu vào tháng 12 năm 2024 của Vercel và MERJ cho thấy cả hai bot này chỉ đơn giản là tải xuống mã HTML thô và bất kỳ tệp JavaScript nào được liên kết, sau đó dừng lại. Các tập lệnh không bao giờ được chạy, vì vậy các bot chỉ nhìn thấy một "vỏ rỗng".

Ngược lại, Googlebot sẽ đưa trang vào hàng đợi, thực thi các tập lệnh và lập chỉ mục DOM kết quả. Sự khác biệt cơ bản đó có nghĩa là một trang web được xây dựng bằng các framework thuần client-side (React, Vue, v.v.) có thể hiển thị đầy đủ với Google trong khi vẫn là một "tờ giấy trắng" đối với tìm kiếm dựa trên AI.

Google so với AI: Khoảng cách về khả năng kết xuất (Rendering Gap)

Google từ lâu đã đầu tư vào headless rendering. Bot của Google có thể xử lý các ứng dụng đơn trang (single-page applications) phức tạp, hydrate chúng và trích xuất dữ liệu cấu trúc xuất hiện sau lần tải đầu tiên. Tuy nhiên, các trình thu thập dữ liệu AI vẫn đang ở chế độ "chỉ tải xuống" (download-only). Chúng có thể phân tích JSON-LD được chèn thông qua các công cụ như react-helmet, nhưng chỉ khi mã đánh dấu đó có sẵn trong mã HTML thô.

Các công cụ dành cho nhà phát triển có thể gây hiểu lầm. Bảng Elements trong Chrome hiển thị trang web sau khi JavaScript đã chạy, tạo ra ấn tượng sai lầm rằng mã đánh dấu là một phần của mã nguồn. Sử dụng "view-source" (hoặc curl mà không cần trình duyệt) sẽ tiết lộ những gì một con bot thực sự nhận được. Nếu nội dung hoặc dữ liệu cấu trúc bị thiếu ở đó, các trình thu thập dữ liệu AI sẽ không bao giờ thấy được chúng.

Vấn đề này biểu hiện như thế nào

Một trang web React điển hình dựa vào kết xuất phía client sẽ xếp hạng cao trên Google cho các từ khóa như "máy pha cà phê tốt nhất" hoặc "cách sửa vòi nước bị rò rỉ". Tuy nhiên, một người dùng hỏi ChatGPT: "Những máy pha cà phê nào tốt nhất?" sẽ nhận được các câu trả lời bỏ qua hoàn toàn trang web đó. Khoảng cách tương tự cũng tồn tại đối với AI của Bing, vốn phục vụ khoảng 92% các truy vấn của agent ChatGPT. Khả năng kết xuất JavaScript của Bing còn hạn chế, vì vậy một trang web chỉ có client-side có thể trở nên vô hình đối với cả hai nhà cung cấp tìm kiếm AI lớn nhất.

Vấn đề này diễn ra một cách âm thầm. Các bảng điều khiển SEO theo dõi thứ hạng Google sẽ báo cáo một vị trí tốt, trong khi lưu lượng truy cập từ các trợ lý AI của trang web vẫn bằng không. Sự sai lệch đó có thể khiến các doanh nghiệp mất đi một phần thị phần lưu lượng truy cập khám phá đang ngày càng tăng, đặc biệt là khi ngày càng nhiều người dùng dựa vào các giao diện hội thoại để có câu trả lời nhanh.

Các nhà phát triển đang làm sai điều gì

Nhiều đội ngũ giả định rằng nếu Google có thể đọc được trang web, thì bất kỳ trình thu thập dữ liệu nào cũng có thể. Họ thường:

  • Dựa vào react-helmet hoặc các thư viện tương tự để chèn JSON-LD sau khi trang tải xong, với niềm tin rằng mã đánh dấu đã "ở đó".
  • Chỉ kiểm tra trong chế độ xem Elements của trình duyệt, chứ không kiểm tra trong mã nguồn thô.
  • Bỏ qua bước kiểm tra nhanh bằng curl, dẫn đến việc không nhận ra rằng tiêu đề hoặc các cụm từ khóa chính không bao giờ xuất hiện trong phản hồi HTML ban đầu.

Những thực hành này tạo ra ảo tưởng về sức khỏe SEO trong khi thực tế lại khiến trang web bị "mù" trước tìm kiếm AI.

Cách khắc phục

Giải pháp là cung cấp nội dung thực sự ngay trong phản hồi HTTP đầu tiên. Có ba phương pháp đã được chứng minh hiệu quả:

  • Server-Side Rendering (SSR) – Máy chủ thực thi JavaScript, kết xuất toàn bộ HTML và gửi nó đến máy khách. Trang web đến nơi đã được đổ đầy nội dung.
  • Static Generation – Tại thời điểm build, framework tạo ra các tệp HTML tĩnh bao gồm tất cả nội dung. Không cần kết xuất khi runtime.
  • Prerendering – Một dịch vụ middleware kết xuất trang một lần, lưu bộ nhớ đệm kết quả và cung cấp bản chụp tĩnh (static snapshot) cho các trình thu thập dữ liệu.

Các framework như Next.js (React) và Nuxt (Vue) cung cấp hỗ trợ tích hợp cho các kỹ thuật này. Việc chuyển đổi từ một bundle thuần client-side sang một trong các phương pháp trên sẽ đảm bảo cả Googlebot và các trình thu thập dữ liệu AI đều thấy cùng một nội dung.

Một bài kiểm tra nhanh:

curl -s https://yourpage.com | grep "your headline text"

Nếu lệnh trả về kết quả trống, tiêu đề không có trong HTML thô và các bot AI sẽ bỏ lỡ nó.

Điều cần lưu ý

Trạng thái hiện tại là một sự mất cân đối rõ rệt: công cụ kết xuất của Google rất tinh vi; còn các trình thu thập dữ liệu AI thì không. Nghiên cứu phát hiện ra khoảng cách này chỉ mới có vài tháng tuổi, và cả OpenAI lẫn Anthropic đều đã ra tín hiệu quan tâm đến việc cải thiện quy trình lập chỉ mục của họ. Tuy nhiên, chưa có lộ trình công khai nào đảm bảo rằng việc thực thi JavaScript đầy đủ sẽ sớm được bổ sung.

Trong thời gian qua, cái giá của việc phớt lờ vấn đề này đã thay đổi. Mười năm trước, hình phạt là việc Google lập chỉ mục chậm hơn; ngày nay, đó là việc bị loại khỏi kênh khám phá đang phát triển nhanh nhất—tìm kiếm dựa trên AI. Các công ty phụ thuộc vào lưu lượng truy cập tự nhiên nên kiểm tra các trang của mình bằng các công cụ xem mã nguồn (raw-source tools), áp dụng SSR hoặc tạo trang tĩnh (static generation) nếu có thể, và theo dõi các báo cáo lập chỉ mục dành riêng cho AI khi chúng được cung cấp.

Bài học rút ra: Một trang web trông có vẻ hoàn hảo trong bảng xếp hạng của Google có thể trở nên vô hình đối với ChatGPT và Bing AI nếu nó chỉ dựa vào việc kết xuất phía máy khách (client-side rendering). Việc cung cấp nội dung ngay trong mã HTML ban đầu—thông qua SSR, tạo trang tĩnh hoặc prerendering—sẽ thu hẹp khoảng cách này và đảm bảo khả năng được khám phá trên cả tìm kiếm truyền thống lẫn tìm kiếm AI.