1. Tóm tắt: 11 ngày, 2.235.940 dòng log, nhưng chỉ có 12.867 yêu cầu hợp lệ từ bên ngoài

Đây là bài đầu tiên trong loạt bài "Kiểm toán khả năng tiếp cận của crawler AI". Câu hỏi rất cụ thể: crawler của các công cụ AI tạo sinh vào site của chúng tôi qua cánh cửa nào?

Chúng tôi lấy toàn bộ log truy cập nginx của site (yuezhitong.com) từ 2026-09-25 03:30 đến 2026-10-06 02:01 — 11 tệp log, 2.235.940 dòng yêu cầu. Sau ba lớp loại bỏ, chỉ còn 12.867 yêu cầu thực sự đến từ bên ngoài và có giá trị phân tích; trong đó crawler mang danh tính nhà cung cấp AI tạo sinh là 681 lượt.

Ba kết luận chính:

Dưới đây là toàn bộ phạm vi đo, chân dung của bảy crawler, và một danh sách sáu bước tự kiểm tra có thể làm ngay.

2. Phương pháp: ba lớp loại bỏ và cách xác định danh tính

Bước dễ sai nhất khi phân tích crawler là không loại sạch "lưu lượng không phải khách truy cập". Trong log của site này, hơn 95% là health check nội bộ, cộng thêm máy phát hành và script kiểm toán của chính chúng tôi — không loại bỏ thì mọi kết luận về "tỷ trọng crawler" đều sai.

LớpSố dòngChiếm dòng gốcGhi chú
Dòng log gốc2.235.940100%11 tệp, cửa sổ 2026-09-25 03:30:02 đến 2026-10-06 02:01:28
Health check nội bộ2.136.70695,56%UA = SLBHealthCheck, dải địa chỉ nội bộ mỗi 1-2 giây một lần
Nguồn của chính chúng tôi86.3673,86%Máy phát hành 120.25.184.110 + IP công khai của máy chủ gốc 8.163.22.32
Yêu cầu hợp lệ từ bên ngoài (cơ sở của bài này)12.8670,58%Đến từ 1.781 địa chỉ IP bên ngoài

Cách xác định danh tính: phân loại theo khai báo UA trong header (GPTBot / OAI-SearchBot / ChatGPT-User / ClaudeBot / Claude-SearchBot / PerplexityBot / meta-externalagent...), không đối chiếu reverse DNS sau đó. UA có thể bị giả mạo, nên chúng tôi không khẳng định "IP này chắc chắn thuộc công ty kia", mà chỉ mô tả "các yêu cầu nhân danh nhà cung cấp nào đó". Mọi tỷ lệ chỉ đúng trong cửa sổ này và trên site này, không suy rộng thành tỷ lệ toàn ngành.

3. Bức tranh chung: crawler AI tạo sinh đi qua những cánh cửa nào

Phân loại 681 lượt theo "thứ đầu tiên được lấy sau khi vào site", ta có bảng phân bố cửa dưới đây:

Cửa vàoSố yêu cầuTỷ trọngGhi chú
Tổng các thư mục nội dung15923,3%/geo/blog/ + /geo/vi/blog/ + /geo/vietnam-industry/ + /geo/vi/vietnam-industry/
robots.txt9714,2%Cửa luật: đọc cho phép/cấm trước khi quyết định lấy gì
Các trang khác trong /geo/578,4%Trang chủ, trang chẩn đoán, trang demo
Tài sản khác trong site527,6%Âm thanh/video trong /video/, cổng tải xuống /dl/
sitemap.xml497,2%Cửa chỉ mục: dùng để phát hiện danh sách trang
Trang chủ /202,9%Bò xuống từ trang chủ
llms.txt00%Tệp chỉ mục AI do chúng tôi tự làm, 11 ngày không có lượt truy cập AI nào
Đường dẫn khác24736,3%Gồm trang tin /article/, yêu cầu quét và yêu cầu dị dạng
Tổng681100%

Ba điểm cần đọc: Thứ nhất, robots.txt + sitemap.xml cộng lại 146 lượt (21,4%), cho thấy "luật + chỉ mục" là cửa vào thường quy của crawler AI tạo sinh; làm đúng hai tệp này là đầu tư chắc chắn có lãi. Thứ hai, thư mục nội dung chỉ 159 lượt (23,3%), cộng 20 lượt trang chủ, tức yêu cầu thật sự rơi vào "bài viết và báo cáo chúng tôi viết" chưa đến ba phần mười — ngân sách của crawler phân tán hơn ta tưởng. Thứ ba, "đường dẫn khác" chiếm 36,3%, trong đó lẫn rất nhiều quét tấn công và đường dẫn giả, cần tách ra bằng kiểm toán mẫu 404 ở phần sau.

4. Chân dung từng nhà: sở thích cửa vào của bảy crawler AI tạo sinh

Tách phân bố cửa theo từng nhà, khác biệt lớn hơn ta tưởng:

Crawler (khai báo UA)Số yêu cầuCửa luật + chỉ mục
(robots + sitemap)
Thư mục nội dungTrang chủKhácIP riêngTỷ lệ 404
ClaudeBot (Anthropic)2658726215030,8%
meta-externalagent (Meta)249010501449235,3%
GPTBot (OpenAI)7982883561,3%
OAI-SearchBot (OpenAI)63500310260%
ChatGPT-User (OpenAI)100073100%
PerplexityBot (Perplexity)9100840%
Claude-SearchBot (Anthropic)6000610%

Ba khác biệt đáng nhớ:

Để đối chiếu, crawler của công cụ tìm kiếm cùng kỳ (Googlebot, bingbot, PetalBot...) tổng cộng 687 lượt, quy mô tương đương crawler AI tạo sinh; cửa vào của chúng cũng tập trung ở robots.txt (Googlebot 22 lượt, bingbot 17 lượt) và sitemap.xml (bingbot 24 lượt).

5. Nhận định 1: llms.txt là cửa chúng tôi tự xây, 11 ngày không có crawler AI nào đi

Ngày 2026-09-17, chúng tôi thêm llms.txt vào gốc site và khai báo rõ ràng việc cho phép crawler AI trong robots.txt, đồng thời liệt kê trong llms.txt theo đề xuất llmstxt.org: chủ thể công ty, dịch vụ cốt lõi, trung tâm nội dung, nghiên cứu ngành và phạm vi số liệu đối ngoại. Giả định của nó là: công cụ AI sẽ dùng tệp này như "sitemap dành cho máy".

Câu trả lời từ 11 ngày log là: nó được đọc 14 lần, nhưng không một lần nào đến từ crawler của nhà cung cấp AI.

Bên yêu cầu (khai báo UA)Số lượtDanh tính
GEO-Optimizer/2.06Bộ máy chấm điểm mức độ sẵn sàng AI của chính chúng tôi (công cụ mã nguồn mở)
curl/7.61.13Script vận hành trên máy chủ
Chrome 86 (Linux)2Trình duyệt / script
Chrome 126 (Windows)1Trình duyệt
Chrome (Windows)1Trình duyệt
Dataprovider.com1Nhà cung cấp dữ liệu bên thứ ba
Crawler nhà cung cấp AI (GPTBot / ClaudeBot / OAI-SearchBot / PerplexityBot / meta-externalagent...)0—

So sánh cùng kỳ: robots.txt được yêu cầu 315 lần, sitemap.xml 87 lần. Nghĩa là trong cửa sổ tháng 9 đến tháng 10 năm 2026 này, cửa dành cho máy thật sự có tác dụng vẫn là robots.txt và sitemap.xml, còn llms.txt thì chưa.

Đánh giá của chúng tôi (bản trung thực): điều này không có nghĩa nên xóa llms.txt. Chi phí duy trì gần như bằng không, và với các công cụ kiểm toán GEO hay với những engine sau này mới đọc nó, đây là tài sản có sẵn; nhưng hiện tại nó không thể được coi là hạng mục bàn giao kiểu "làm rồi thì AI sẽ tìm thấy bạn". Trong chẩn đoán cho khách hàng, chúng tôi đặt nó ở nhóm "điểm cộng" chứ không phải "bắt buộc".

6. Nhận định 2: 88 lượt <thư mục>/null — đường dẫn giả phía crawler, tái hiện ở nhiều site

Khi bóc tách các lượt 404, chúng tôi thấy một nhóm yêu cầu có hình dạng rất đều: đường dẫn luôn bằng "thư mục hiện tại + /null". Chúng không tập trung ở một thư mục, mà đi theo trang mà crawler đang ở.

NgàySố yêu cầuMã trạng thái
2026-09-258584 lần 404 + 1 lần 301
2026-09-301404
2026-10-041404
2026-10-051404
Tổng8887 lần 404 + 1 lần 301
Đường dẫn yêu cầuSố lượtReferer trong cùng header (trang crawler đang ở)
/geo/blog/null18Các trang bài viết trong /geo/blog/
/geo/vi/blog/null12Các trang bài viết trong /geo/vi/blog/
/geo/vi/vietnam-industry/null8Các trang báo cáo trong /geo/vi/vietnam-industry/
/geo/vietnam-industry/null6Các trang báo cáo trong /geo/vietnam-industry/
/geo/null và /geo/vi/null6Các trang trong /geo/ và /geo/vi/
/vietnam/<thành phố>.../null (kho dữ liệu thành phố)36Bảng điều khiển thành phố và các trang mô-đun con
/video/<bài hát>/null2Các trang thư viện nhạc trong /video/

Cả 88 lượt đều đến từ cùng một UA: meta-externalagent. Chúng tôi làm ba bước rà soát:

  1. Tìm kiếm trong mã nguồn trang. Lấy toàn bộ trang liên quan (cả bản tiếng Trung và tiếng Việt, trang bài viết, trang báo cáo ngành, trang kho thành phố), tìm chuỗi "null" không phân biệt chữ hoa chữ thường: 0 kết quả.
  2. Kiểm tra tính đầy đủ của liên kết. Đếm số thẻ <a> và số thẻ thiếu href trên mỗi trang: ví dụ một trang báo cáo ngành bản tiếng Việt có "11 thẻ a / 0 thẻ thiếu href", và 5 thẻ <link> đều có href. Không có liên kết khuyết.
  3. Đối chiếu chéo bên ngoài. Trong các ghi chép vận hành công khai, có ít nhất ba nơi tái hiện hoàn toàn cùng một dấu vân tay — cùng hình dạng "/null", cùng meta-externalagent, và cũng không tìm thấy chuỗi null trong mã nguồn trang.

Ba ghi chép bên ngoài đều kết luận giống nhau: khi render trang, crawler đọc một trường "đáng lẽ là URL" thành giá trị rỗng; giá trị rỗng bị ép thành chuỗi "null", rồi được phân giải như URL tương đối so với thư mục hiện tại, và tạo ra một lượt 404. Ở phía máy chủ, không có cấu hình nào tạo ra được mẫu này — vì xét riêng từng khâu trong chuỗi thì mọi thứ đều đúng.

Vì vậy chúng tôi xác định đây là đường dẫn giả phía crawler, không phải lỗi trang của mình. Định tính này quan trọng: nếu coi đó là bug nội bộ để "sửa trang", ta sẽ sửa vô ích một vòng; động tác đúng là xử lý rõ ràng loại đường dẫn này ở phía máy chủ để giảm lãng phí ngân sách thu thập.

7. Nhận định 3: tỷ lệ 404 của crawler AI dao động từ 0% đến 35%

Cùng một site, cùng một cửa sổ, tỷ lệ đụng 404 của từng crawler khác nhau rất lớn:

Crawler2xx (gồm 206)404301Tỷ lệ 404
meta-externalagent16088135,3%
GPTBot78101,3%
ClaudeBot263200,8%
OAI-SearchBot63000%
ChatGPT-User10000%
PerplexityBot9000%
Claude-SearchBot6000%

Một con số khác đáng xem hơn là "404 trong thư mục nội dung". Tổng yêu cầu bên ngoài có 5.085 lượt 404 (chiếm 39,5% yêu cầu bên ngoài), trong đó 5.024 lượt rơi vào đường dẫn không liên quan nội dung (/.env, /.git, /wp-login.php — dạng quét thông tin đăng nhập). Rơi vào /geo/blog/ chỉ có 18 lượt — và cả 18 lượt đều là /geo/blog/null.

Nói cách khác: trong 11 ngày, không có bất kỳ bài viết thật nào của chúng tôi trả về 404. Sức khỏe của tài sản nội dung là sạch; trong đống 404 trông có vẻ hỗn loạn, tuyệt đại đa số là quét từ bên ngoài và một đường dẫn giả này.

8. Xử lý: đổi <thư mục>/null từ 404 thành 410

Nguyên tắc xử lý có hai điểm: không động vào nội dung thật, chỉ đổi cách trả lời với đường dẫn giả; sau khi đổi phải chạy đối chứng dương và âm.

Vì sao không dùng phương án "sửa trang": vì trước đó chúng tôi đã chứng minh trang không có vấn đề (mã nguồn 0 kết quả "null", liên kết không khuyết). Đi tìm bug trên trang sẽ là công cốc.

Vì sao là 410 chứ không giữ 404: 410 Gone là tín hiệu rõ ràng — "tài nguyên này vĩnh viễn không còn". So với 404 nghĩa là "tạm thời chưa tìm thấy", nó kiềm chế crawler thử lại nhiều lần hơn và tiết kiệm chi phí máy chủ. Cách xử lý tương tự ở nơi khác cũng dùng giải pháp này (bản tương đương trên Apache là RedirectMatch 410 "/null/?$").

Đường dẫn yêu cầuTrước xử lýSau xử lý
/geo/blog/null404410
/geo/null404410
/geo/vi/vietnam-industry/null404410
/vietnam/ho-chi-minh/null404410
/vietnam/ho-chi-minh/cost/null404410
/video/jingdeqi/null404410
/null (và /geo/blog/null/ có dấu gạch chéo cuối)404410
Đối chứng dương (không được ảnh hưởng): /geo/, /geo/blog/, /geo/vietnam-industry/, hai trang báo cáo ngành, /sitemap.xml, /llms.txt, /robots.txt, /vietnam/ho-chi-minh/, /video/music/200200 (10/10)
Đối chứng âm (phải vẫn là 404): /geo/notexist-xyz.html, /geo/geo-tools/articles.json404404 (2/2)

Ghi chú triển khai: các khối tiền tố kiểu location ^~ /geo/ và location ^~ /vietnam/ của nginx sẽ chặn location regex cấp server, nên không thể chỉ viết luật ở tầng server mà phải lồng thêm một dòng trong từng khối tiền tố tương ứng, đồng thời giữ một dòng dự phòng cấp server cho các đường dẫn còn lại. Sau khi sửa, chạy nginx -t đạt và reload có hiệu lực, rồi đọc lại từng dòng theo bảng trên. Kết quả xử lý: 8/8 đường dẫn giả chuyển 410, 10/10 đối chứng dương giữ 200, 2/2 đối chứng âm giữ 404.

9. Danh sách sáu bước tự kiểm tra khả năng tiếp cận cho khách hàng

Bộ động tác này không cần mua công cụ, chỉ cần log và một dòng curl trong terminal. Thứ tự xếp theo tỷ lệ đầu tư trên kết quả:

BướcLàm gìNgưỡng đạt
1. Loại nhiễuLoại health check nội bộ, IP của chính mình, đầu dò giám sát khỏi logSau khi loại, cơ sở phải nhỏ hơn nhiều so với dòng gốc; nếu bằng 0 nghĩa là bạn đang phân tích chính mình
2. Chia nhóm theo UATách crawler AI tạo sinh / crawler công cụ tìm kiếm / UA không rõLiệt kê được số yêu cầu và tỷ lệ 404 của từng crawler AI
3. Xem cửa luậtrobots.txt và sitemap.xml có truy cập được không, có được yêu cầu thật khôngCả hai đều phải có lượt truy cập của crawler AI; trong sitemap không được có loc trả 404
4. Xem cửa nội dungSố yêu cầu vào thư mục nội dung và số bài viết sau khi loại trùngSố bài viết sau loại trùng phải tăng đơn điệu theo thời gian; nếu mãi bằng 0 nghĩa là nội dung không được phát hiện
5. Xem mẫu 404Gom 404 theo "hình dạng đường dẫn" chứ đừng xem từng dòngPhân biệt được ba loại: liên kết chết thật (phải sửa), quét tấn công (phải chặn), đường dẫn giả (phải trả lời rõ ràng)
6. Xử lý đường dẫn giảTrả 410 cho hình dạng đường dẫn đã xác nhận là không có nội dungSau khi sửa, chạy đối chứng: dương vẫn 200, âm vẫn 404

Thêm một kinh nghiệm: đừng đưa llms.txt vào KPI. Làm nó rất rẻ; nhưng trong cửa sổ 11 ngày của dự án này, lượt truy cập AI mà nó mang lại là 0. Thứ thật sự quyết định "AI có tìm thấy bạn hay không" vẫn là robots.txt, sitemap.xml và khả năng phân tích của chính trang nội dung.

10. Ranh giới và hạn chế

11. Quy về GEO: vì sao việc này quan trọng với thương hiệu Trung - Việt

Sự suy giảm của tìm kiếm truyền thống đã là kết luận: Gartner (2024-02) dự báo lưu lượng tìm kiếm truyền thống sẽ giảm 25% vào năm 2026; khảo sát của Bain cho thấy 80% người tiêu dùng đã giao ít nhất 40% nhu cầu tìm kiếm cho kết quả AI. Thị trường GEO Trung Quốc từ 349,3 tỷ CNY năm 2025 dự kiến lên 942 tỷ CNY năm 2026 (iiMedia Research 2026-02); tại Việt Nam, tỷ lệ phủ ChatGPT đã đạt 81% (Technode 2025-08).

Những con số này thường được dùng để lập luận "phải mua dịch vụ GEO". Nhưng dữ liệu của bài này chỉ về một kết luận mộc mạc hơn: engine tạo sinh lấy nguyên liệu từ robots.txt, sitemap và thư mục nội dung — ba việc này không làm tốt thì nói chuyện được trích dẫn chỉ là nói suông; làm đúng ba việc này rồi mới có tư cách bàn đến nội dung và thương hiệu.

Vì vậy trong chẩn đoán GEO cho khách hàng, ba hạng mục đầu tiên của chúng tôi chính là ba cánh cửa ở mục ba bài này: luật đọc được (robots.txt cùng khai báo cho phép), chỉ mục đầy đủ (sitemap không có loc trả 404), trang nội dung phân tích được (dữ liệu có cấu trúc và phần thân sạch). Hạng mục thứ tư mới là nội dung.

12. Nguồn dữ liệu và cách kiểm chứng

Nguồn thứ nhất (có thể tính lại): toàn bộ log truy cập nginx của site yuezhitong.com, cửa sổ 2026-09-25 03:30:02 đến 2026-10-06 02:01:28, gồm 11 tệp log, 2.235.940 dòng; quy trình là phân loại theo khai báo UA cộng ba lớp loại bỏ (health check nội bộ / nguồn của chính mình / yêu cầu hợp lệ bên ngoài), xuất ra số đếm có cấu trúc rồi viết vào bài. Mọi con số thứ nhất trong bài đều có thể tính lại bằng cùng một script ETL trên log gốc, không dựa vào lấy mẫu.

Đối chiếu chéo bên thứ ba (dấu vân tay /null ở mục sáu): bản khôi phục log tình báo mối đe dọa của shuffle-on.com (Null: Eight Hundred Requests for a Page Nobody Ever Wrote) · ghi chép xử lý của máy chủ WooCommerce tại headwall-hosting.com (đổi /null thành 410) · ghi chép rà soát 404 trên Search Console của dev.ootssu.com. Cả ba là ghi chép quan sát độc lập (hai trong số đó có dấu thời gian log năm 2026), dấu vân tay trùng khớp.

Chuẩn số liệu ngành (dùng thống nhất khi đối ngoại): Gartner (2024-02, tìm kiếm truyền thống giảm 25% vào 2026) · Bain (80% người tiêu dùng dùng AI cho ít nhất 40% nhu cầu tìm kiếm) · iiMedia Research (2026-02, thị trường GEO Trung Quốc 349,3 tỷ CNY năm 2025, dự kiến 942 tỷ CNY năm 2026) · Technode (2025-08, tỷ lệ phủ ChatGPT tại Việt Nam 81%).

Kiểm chứng xử lý: cấu hình nginx được sao lưu trước khi đổi, kiểm tra cú pháp bằng nginx -t, sau khi reload dùng curl đọc lại từng dòng cho 8 đường dẫn giả, 10 đối chứng dương và 2 đối chứng âm; kết quả ở bảng mục tám.