Google Search Console chỉ cho bạn biết URL nào đã được yêu cầu lập chỉ mục, không cho biết Googlebot thực sự đã crawl những gì, bao nhiêu lần và lãng phí bao nhiêu lượt vào trang rác. Phân tích log seo là cách duy nhất để nhìn thấy hành vi crawl thật trên server, từ đó quyết định chặn, mở hay tối ưu cho bot.
Bài này đi thẳng vào cách đọc log để ra việc, không phải để làm báo cáo cho đẹp. Nếu site của bạn dưới 10.000 URL và crawl trong Search Console luôn khớp với sitemap, log mang lại ít giá trị hơn công sức bỏ ra.
Vì sao log là nguồn duy nhất nói thật về crawl
Mọi công cụ khác đều là suy diễn. Search Console lấy mẫu, các tool crawl giả lập hành vi bot, còn file log ghi lại từng request TCP đến server với IP, thời gian, user-agent, URL, mã trạng thái và bytes trả về. Không có log, bạn chỉ đoán bot làm gì. Có log, bạn đếm được.
Điểm khác biệt lớn nhất là log cho thấy crawl budget bị đốt ở đâu. Với site thương mại điện tử 500.000 URL, việc Googlebot dành 40-60% lượt crawl cho tham số lọc như ?sort=price&filter=color là chuyện thường gặp. Bạn sẽ không bao giờ thấy con số này trong Search Console, nhưng trong log nó hiện ra bằng vài dòng filter trong Excel hoặc Log Parser.
Log cũng cho biết tần suất crawl thực tế theo nhóm URL. Ví dụ: URL bài viết mới được crawl trung bình 3-5 lần trong 48 giờ đầu sau khi publish, trong khi URL danh mục cũ chỉ 1 lần/tuần. Nếu bài mới của bạn 7 ngày chưa có dòng log nào của Googlebot dù đã submit sitemap, vấn đề không phải là content mà là khả năng khám phá hoặc server chặn nhầm.
Log khác gì dữ liệu crawl của tool
Tool crawl từ ngoài vào, nó chỉ biết server trả về gì khi nó tự request. Log ghi lại mọi bot thật, mọi thời điểm, kể cả lúc server trả về 503 lúc 2h sáng mà bạn không trực tuyến để thấy. Đó là lý do khi audit site lớn, người làm kỹ thuật luôn xin log trước khi đưa ra kết luận về index.
Cần thu thập log thế nào để phân tích được
Không phải cứ có file access.log là phân tích được. Log phải đủ trường và đủ thời gian lưu trữ.
- Định dạng tối thiểu: IP, timestamp, phương thức, URL đầy đủ kèm query string, mã trạng thái HTTP, user-agent, referrer, thời gian phản hồi và bytes. Với Nginx, cần log_format có
$remote_addr $time_iso8601 "$request" $status $body_bytes_sent "$http_user_agent". Thiếu query string, bạn không thể phát hiện tham số rác. - Thời gian lưu: Tối thiểu 14 ngày, lý tưởng là 30 ngày liên tục. Googlebot có chu kỳ crawl lại khoảng 3-14 ngày tùy nhóm URL, nên log dưới 7 ngày sẽ làm bạn bỏ lỡ pattern. Nhiều hosting mặc định xoay vòng log mỗi 24h và nén thành .gz, hãy gom về một nơi lưu trữ trước khi bị xóa.
- Tách log theo domain/subdomain: Nếu chạy nhiều site trên cùng server, log gộp sẽ khiến bạn đếm nhầm lượt crawl. Cấu hình vhost ghi log riêng cho từng hostname.
- Bỏ qua CDN nếu cấu hình sai: Nếu dùng Cloudflare, Akamai hay CloudFront, log ở origin chỉ thấy IP của CDN. Phải bật log tại CDN hoặc bật khôi phục IP thật qua header
X-Forwarded-For/CF-Connecting-IP, nếu không mọi phân tích về IP bot đều sai.
Một site có 100.000 visit/ngày thường sinh ra 2-8GB log thô mỗi ngày. Đừng cố mở bằng Notepad. Dùng công cụ xử lý log chuyên dụng để lọc theo user-agent chứa Googlebot, Bingbot, GPTBot trước, sau đó mới phân tích sâu.
Về cách người mua tự đánh giá phần mềm xử lý log: hãy xem nó có cho phép bạn import log thô dạng .log/.gz, tự nhận diện bot theo IP và user-agent, lọc theo dải thời gian, và xuất ra bảng URL kèm số lần crawl, mã trạng thái, thời gian phản hồi trung bình hay không. Thay vì hỏi giá cố định, hãy yêu cầu bản dùng thử với chính file log 1GB của bạn để đo thời gian xử lý và độ chính xác phân loại bot.
Bảng phát hiện – ý nghĩa – việc làm tiếp trong phân tích log seo
Đây là phần quan trọng nhất. Đừng dừng ở việc đếm lượt crawl, hãy chuyển mỗi phát hiện thành hành động kỹ thuật cụ thể.
| Phát hiện từ log | Ý nghĩa | Việc làm tiếp |
|---|---|---|
35-50% lượt crawl của Googlebot đổ vào URL có tham số ?filter=, ?utm=, ?page= lặp vô hạn |
Crawl budget bị đốt, URL chuẩn không được crawl đủ sâu. Thường đi kèm 20-30% response là 200 nhưng nội dung trùng lặp. | Chuẩn hóa tham số trong Google Search Console, chặn crawl bằng robots.txt cho tham số không có giá trị SEO, gắn canonical tuyệt đối và kiểm tra lại log sau 7 ngày xem tỷ lệ có giảm xuống dưới 15% không. |
| Googlebot gặp 15-25% mã 301/302 trên nhóm URL danh mục, dây chuyền redirect 2-3 hop | Lãng phí lượt crawl và pha loãng tín hiệu. Mỗi hop redirect cộng thêm 150-400ms thời gian phản hồi. | Cập nhật toàn bộ internal link trỏ thẳng tới URL đích 200, dọn redirect chain, giữ lại 301 1 hop duy nhất. Theo dõi log để tỷ lệ 3xx của Googlebot về dưới 5%. |
| Tỷ lệ 5xx cho Googlebot vượt 1% trong 3 ngày liên tiếp, tập trung vào khung 01:00 – 04:00 | Server quá tải theo giờ hoặc job backup/cron làm sập. Bot sẽ giảm tần suất crawl 30-50% trong 48-72 giờ sau đó. | Kiểm tra log hệ thống và monitor CPU/RAM, tách job nặng ra khỏi giờ crawl cao điểm, trả về 503 kèm header Retry-After thay vì 500. Xác nhận trong log bot đã quay lại tần suất cũ sau 2-3 ngày. |
| URL mới publish 72 giờ chưa có bất kỳ dòng log nào của Googlebot, dù sitemap đã 200 | URL mồ côi hoặc bị chặn khám phá. Không có crawl thì không có index, dù content tốt đến đâu. | Kiểm tra orphan page, bổ sung internal link từ trang có tần suất crawl cao, kiểm tra robots.txt và meta robots, dùng log để xác nhận bot đã crawl trong 24h tiếp theo. |
| Bingbot và Googlebot đều crawl mạnh nhưng tỷ lệ 404 chiếm 18-22% tổng lượt | Lãng phí lớn do link nội bộ gãy, sitemap chứa URL chết, hoặc redirect lỗi. Bot đánh giá chất lượng bảo trì site thấp. | Xuất toàn bộ URL 404 bị bot crawl, đối chiếu với internal link và sitemap, 301 về URL thay thế gần nhất hoặc trả 410 nếu không còn giá trị, cập nhật sitemap chỉ chứa URL 200. |
| Thời gian phản hồi trung bình cho Googlebot trên 1.200ms, P95 trên 2.500ms | Ngưỡng chậm. Googlebot sẽ giảm số request đồng thời và bỏ dở crawl sâu. Site có TTFB trên 800ms thường bị crawl ít hơn 20-40% so với site cùng quy mô. | Tối ưu cache server, giảm truy vấn DB cho bot, bật cache riêng cho Googlebot nếu cần, đo lại trong log đến khi TTFB trung bình cho bot xuống dưới 600ms. |
Hãy đặt ngưỡng cảnh báo cho riêng mình: nếu URL rác chiếm trên 20% tổng lượt crawl của Googlebot trong 7 ngày, hoặc 4xx/5xx vượt 5% tổng lượt, đó là lúc phải can thiệp ngay thay vì chờ báo cáo tháng.
Cách phân biệt bot thật và bot giả mạo user-agent
Bất kỳ ai cũng có thể đổi user-agent thành Googlebot/2.1 (+http://www.google.com/bot.html). Trong log, bạn sẽ thấy hàng trăm IP lạ tự xưng là Googlebot để dò quét. Nếu không lọc, bạn sẽ đánh giá sai hoàn toàn về tần suất crawl và còn mở cửa cho kẻ cào dữ liệu.
Cách duy nhất được Google xác nhận là xác thực bằng reverse DNS.
- Lấy IP từ log: Ví dụ trong log có dòng
66.249.66.1 - - [10/May/2026:02:13:45 +0700] "GET /san-pham/abc HTTP/1.1" 200 1234 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" - Reverse DNS lookup: Chạy lệnh
host 66.249.66.1hoặcnslookup 66.249.66.1. IP Googlebot thật sẽ trả về hostname có đuôi.googlebot.comhoặc.google.com. Ví dụ:crawl-66-249-66-1.googlebot.com. - Forward DNS xác nhận lại: Chạy tiếp
host crawl-66-249-66-1.googlebot.comvà đối chiếu IP trả về có khớp với IP ban đầu không. Chỉ khi khớp cả hai chiều, đó mới là Googlebot thật.
host 66.249.66.1 # crawl-66-249-66-1.googlebot.com host crawl-66-249-66-1.googlebot.com # crawl-66-249-66-1.googlebot.com has address 66.249.66.1
Với Bingbot, đuôi hostname phải là .search.msn.com. Với các bot khác, mỗi nhà cung cấp có một dải reverse DNS riêng và họ đều công bố trong tài liệu dành cho quản trị viên.
Khi xử lý log số lượng lớn, đừng lookup thủ công từng IP. Hãy lọc ra danh sách IP duy nhất tự xưng là Googlebot, thường chỉ vài trăm đến vài nghìn IP trong 30 ngày, rồi chạy script lookup hàng loạt. Tỷ lệ giả mạo trên site mở, không chặn thường chiếm 10-30% tổng request mang user-agent Googlebot, đặc biệt cao ở các site có dữ liệu giá, vé, bất động sản.
Một sai lầm phổ biến là chặn IP giả mạo bằng robots.txt. Bot giả không đọc robots.txt. Phải chặn ở tầng firewall hoặc WAF sau khi đã xác thực reverse DNS, và chỉ chặn IP đã xác định là giả.
Nhìn riêng nhóm bot của các công cụ AI
Từ cuối năm 2023 đến nay, log của hầu hết site nội dung đều xuất hiện thêm nhóm bot AI với tần suất tăng nhanh. Khác với Googlebot, nhóm này không phục vụ lập chỉ mục tìm kiếm truyền thống mà phục vụ huấn luyện và tìm kiếm tổng hợp.
Ba nhóm chính bạn sẽ thấy trong log:
- GPTBot của OpenAI: user-agent chứa
GPTBot, tôn trọng robots.txt. - ClaudeBot của Anthropic: user-agent chứa
ClaudeBot, cũng tôn trọng robots.txt. - Google-Extended: token riêng của Google để cho phép hoặc từ chối việc dùng dữ liệu site cho các tính năng AI tổng hợp, không ảnh hưởng crawl tìm kiếm thông thường.
- CCBot của Common Crawl, Bytespider của ByteDance, PerplexityBot: Tần suất thấp hơn nhưng vẫn đáng kể ở site tin tức.
Cách xử lý trong log tương tự bot tìm kiếm: đếm riêng từng UA, tính tỷ lệ so với Googlebot. Một site tin tức 200.000 URL hiện nay có thể thấy GPTBot chiếm 5-15% tổng lượt crawl so với Googlebot, cá biệt có ngày bằng 30% nếu site bị đưa vào hàng đợi huấn luyện. Nếu bạn chưa có chính sách rõ ràng, đừng vội chặn hết.
Hãy quyết định dựa trên log và mục tiêu kinh doanh:
- Nếu muốn chặn huấn luyện AI nhưng vẫn giữ hiển thị trên tìm kiếm, chặn
GPTBotvàCCBottrong robots.txt, giữ nguyên choGooglebot. Thêm dòngUser-agent: Google-ExtendedvớiDisallow: /nếu không muốn Google dùng nội dung cho AI mà vẫn cho phép crawl tìm kiếm. - Nếu muốn mở cho AI để tăng khả năng được trích dẫn trong câu trả lời tổng hợp, hãy đảm bảo log cho thấy bot AI crawl được bản HTML đầy đủ, không bị chặn bởi WAF và không trả về bản rút gọn cho bot.
Luôn xác thực bot AI bằng reverse DNS như với Googlebot, vì tỷ lệ giả mạo GPTBot hiện nay rất cao. Đừng tin user-agent.
Quy trình phân tích log SEO gọn mà ra việc trong 4 bước
Bước 1: Lọc và làm sạch
Xuất log 14-30 ngày, lọc riêng các UA chứa Googlebot, Bingbotскоde>, AdsBot-Google, GPTBot, ClaudeBot, Google-Extended. Loại bỏ request nội bộ, health check và IP văn phòng. Chuẩn hóa URL, tách path và query string thành hai cột riêng để đếm tham số.
Bước 2: Chia nhóm URL để đếm
Đừng đếm từng URL lẻ. Nhóm theo mẫu: /san-pham/*, /danh-muc/*, /blog/*, /tag/*, /?filter=*, /wp-json/*, /api/*. Sau đó tính cho mỗi nhóm: tổng lượt crawl, % trên tổng crawl, mã trạng thái phân bổ, thời gian phản hồi trung bình. Một pivot table đơn giản đã đủ để thấy nhóm nào đang nuốt budget.
Bước 3: Đối chiếu với sitemap và internal link
Lấy danh sách URL trong sitemap, so với danh sách URL bot đã crawl trong log. Tỷ lệ URL trong sitemap được bot crawl trong 7 ngày nên đạt trên 80% với site cập nhật thường xuyên. Nếu dưới 50%, sitemap chứa nhiều URL kém chất lượng hoặc internal link không trỏ tới chúng. Ngược lại, nếu bot crawl nhiều URL ngoài sitemap, đó là tín hiệu cấu trúc site đang để lộ quá nhiều URL rác.
Bước 4: Ra quyết định và đo lại
Mỗi thay đổi về robots.txt, canonical, redirect hay tốc độ server đều phải được đo lại bằng log sau 7-10 ngày, không phải bằng cảm giác. Ví dụ sau khi chặn Disallow: /*?filter=, hãy kiểm tra log xem lượt crawl vào nhóm filter đã giảm từ 40% xuống dưới 10% chưa, và lượt crawl vào nhóm /san-pham/ có tăng tương ứng không. Nếu không tăng, vấn đề nằm ở chỗ khác.
Khi nào không nên đầu tư sâu vào phân tích log
Phân tích log tốn thời gian và tài nguyên lưu trữ. Có những trường hợp không nên làm hoặc chỉ làm ở mức cơ bản:
- Site mới dưới 2.000 URL, chưa có traffic tìm kiếm đáng kể. Thay vì mổ xẻ log, hãy tập trung vào content và internal link. Log lúc này chủ yếu là bot khám phá, chưa có pattern để tối ưu.
- Site chạy trên nền tảng đóng không cho truy cập log thô như một số website builder. Đừng cố suy diễn từ báo cáo tóm tắt của họ, dữ liệu đã bị làm tròn và thiếu query string.
- Khi server log không đầy đủ do cache CDN che hết. Nếu 90% request được CDN trả về và không ghi log tại CDN, phân tích log origin sẽ cho bức tranh sai lệch hoàn toàn.
Nói thẳng, log không giúp bạn lên top nếu content mỏng và không có nhu cầu tìm kiếm. Log chỉ giúp bot tiêu tiền crawl đúng chỗ, để những gì bạn đã làm tốt được nhìn thấy nhanh hơn và sâu hơn. Nếu phải chọn giữa viết thêm 10 bài chất lượng và ngồi lọc 30 ngày log cho site 500 URL, hãy chọn viết bài.
Khi đã ở quy mô hàng trăm nghìn URL, log là nơi duy nhất cho bạn biết sự thật. Hãy lưu log đủ dài, lọc đúng bot thật bằng reverse DNS, đọc theo nhóm URL và chuyển mỗi con số thành một việc chặn, sửa hoặc mở. Làm đều đặn mỗi tháng một lần, bạn sẽ thấy crawl budget không còn là khái niệm mơ hồ mà là con số có thể điều khiển được.
Đọc thêm
- Dịch vụ seo tổng thể — triển khai trọn gói, có cam kết đo lường bằng số.
- Dịch vụ geo — xem phạm vi công việc và mức đầu tư.
- Link Intersect: Tìm Site Đang Link Cho Đối Thủ Mà Không Link Cho Bạn
- Sitemap XML: Nên Chứa URL Nào Và Tuyệt Đối Không Chứa URL Nào
Cần làm thật phần "phân tích log seo" này trên site của bạn?
Gửi tên miền, chúng tôi chạy audit và trả về danh sách việc theo thứ tự tác động — kèm số đo hiện trạng, không phải nhận định cảm tính.