Đang tải…
Đang tải…
Indexing API của Google trả về 200 cho mọi URL bạn gửi, kể cả những URL nó sẽ không bao giờ dùng. Đó là cái bẫy tốn thời gian nhất trong mảng lập chỉ mục.

Xuất bản xong một bài, bạn muốn máy tìm kiếm biết ngay. Câu hỏi đầu tiên ai cũng hỏi: gọi Indexing API của Google chứ gì?
Không. Và lý do đáng biết, vì cái sai ở đây không báo lỗi.
Tài liệu của Google ghi rõ endpoint đó chỉ phục vụ JobPosting và BroadcastEvent nhúng trong một VideoObject, tức là livestream. Site cá nhân hay blog kỹ thuật không thuộc loại nào cả.
Chỗ bẫy nằm ở chỗ bạn vẫn gửi được. Gửi một URL bài viết thường vào đó thì nhận về 200. Trông y như đã thành công. Thực tế lời gọi nằm ngoài phạm vi hỗ trợ, Google hạ mức ưu tiên cho nó, và đã từng thu hồi quota API của những site làm đúng kiểu này. John Mueller nói lại chuyện đó công khai năm 2025: có quá nhiều spammer lạm dụng Indexing API theo cách này, nên tốt nhất cứ bám vào các trường hợp đã ghi trong tài liệu.
Endpoint google.com/ping?sitemap= cũ thì cũng không còn: Google đã ngừng nó từ tháng 6 năm 2023.
Nên với Google, cách duy nhất là cách Google yêu cầu: một sitemap đúng, với giá trị lastmod trung thực.
File sitemap của site này dùng một hằng số STATIC_LASTMOD cố định cho các trang tĩnh, thay vì new Date().
Viết new Date() thì dễ hơn và trông có vẻ luôn cập nhật. Cái nó thực sự nói với crawler là: mọi trang trên site này đều vừa thay đổi, mỗi lần chúng tôi deploy. Sau vài lần, trường lastmod của bạn mất hết giá trị thông tin, và crawler học được cách bỏ qua nó. Bạn không bị phạt, bạn chỉ tự vứt đi một tín hiệu.
Bing, Yandex, Naver, Seznam và Yep đều nhận submission trực tiếp. Một lần POST tới api.indexnow.org là đủ, và nó phát tiếp cho các bên còn lại. Không OAuth, không đăng ký, không quota phải quản.
Phần thiết lập ngắn tới mức đáng ngờ. Bạn tự nghĩ ra khoá, dài 8 tới 128 ký tự gồm chữ, số và dấu gạch ngang:
openssl rand -hex 16
Đặt vào biến môi trường, deploy lại, xong. File chứng minh quyền sở hữu tự xuất hiện ở /indexnow-key.txt.
Chi tiết này làm mình dừng lại một lúc khi mới đọc giao thức. Khoá IndexNow bắt buộc phải công khai: engine phải tải được nó từ domain của bạn thì mới xác nhận là bạn có quyền với domain đó. Đó chính là cơ chế xác thực.
Vậy sao không đặt tên NEXT_PUBLIC_INDEXNOW_KEY cho tiện?
Vì tiền tố đó có một tác dụng phụ ít người để ý: giá trị bị nhúng thẳng vào bundle JavaScript gửi cho trình duyệt, lúc build. Nghĩa là muốn đổi khoá thì phải build lại và deploy lại toàn bộ phần client. Để nó ở phía server thì việc xoay khoá chỉ là sửa một biến môi trường. Không phải chuyện bảo mật, mà là chuyện vận hành.
Hai quy tắc mà mình phải học lại sau khi làm sai.
Thứ nhất, bản nháp thì không bao giờ gửi. Trang của một bài nháp trả về 404, và gửi một URL trả 404 là cách nhanh nhất để một domain mất uy tín với giao thức này.
Thứ hai, bài vừa xoá thì nên gửi. Nghe ngược, nhưng đó là cách chuẩn để một trang bị gỡ khỏi chỉ mục: engine bò lại, nhận 404, rồi bỏ nó ra. Không gửi thì URL đó nằm lại trong kết quả tìm kiếm cho tới lần crawl tự nhiên kế tiếp, có thể là vài tuần.
Và cuối cùng, đặt lời gọi này sau khi đã trả response cho người dùng. Một vòng gọi mạng tới máy tìm kiếm không có lý do gì nằm trong thời gian chờ của người vừa bấm nút Xuất bản.
Chưa có bình luận nào — hãy là người đầu tiên!