IndexNow: báo Bing, Yandex có URL mới ngay lập tức; Google thì không
IndexNow là giao thức mở để báo ngay cho Bing, Yandex, Naver, Seznam và Yep khi có trang mới, sửa hoặc xoá; Google không tham gia. Cần một khoá 8–128 ký tự, tệp <khoá>.txt ở gốc site, rồi gửi URL tới api.indexnow.org; mã 200 hoặc 202 là đã nhận.
IndexNow là một giao thức mở cho phép site báo ngay cho công cụ tìm kiếm khi có trang mới, trang vừa sửa hoặc trang vừa xoá, thay vì chờ bot tự ghé lại. Bing, Yandex, Naver, Seznam và Yep tham gia; gửi cho một bên là các bên khác cùng nhận. Google không tham gia: với Google, việc báo trang mới vẫn là sitemap, liên kết nội bộ và Search Console. Vì vậy IndexNow đáng làm (cài một lần, gần như không tốn gì), nhưng không phải lời giải cho chuyện "Google chậm lập chỉ mục".
Vì sao vẫn đáng làm dù Google không dùng
- Bing không chỉ là Bing. Chỉ mục của Bing là nền cho Microsoft Copilot và một số dịch vụ tìm kiếm khác. Trang vào chỉ mục Bing sớm thì sớm có mặt ở những nơi đó.
- Trang xoá và trang sửa giá được cập nhật nhanh. Với cửa hàng, việc công cụ tìm kiếm còn hiện giá cũ hoặc sản phẩm đã hết là thiệt hại thật. IndexNow báo được cả trường hợp xoá.
- Giảm lượt thu thập thừa. Khi công cụ tìm kiếm được báo đúng trang thay đổi, bot của họ ít phải đi dò cả site để tìm cái mới.
Cách hoạt động trong ba bước
Bước 1: tạo khoá
Khoá là một chuỗi dài 8–128 ký tự, chỉ gồm chữ cái a–z, A–Z, chữ số và dấu gạch ngang. Dùng chuỗi ngẫu nhiên, ví dụ 32 ký tự thập lục phân. Trên Linux:
openssl rand -hex 16
# ví dụ ra: 3f9c2b7e41d8a05c6e1f9b2d7a4c8e10
Bước 2: đặt tệp khoá ở gốc site
Tạo tệp tên <khoá>.txt ở gốc host, nội dung đúng bằng chuỗi khoá (không thêm gì khác):
https://example.com/3f9c2b7e41d8a05c6e1f9b2d7a4c8e10.txt
→ nội dung: 3f9c2b7e41d8a05c6e1f9b2d7a4c8e10
Tệp chứng minh bạn là người kiểm soát host. Có thể đặt tệp ở chỗ khác và khai tham số keyLocation, nhưng khi đó chỉ gửi được các URL nằm trong cùng thư mục với tệp khoá. Đặt ở gốc là đơn giản nhất.
Bước 3: gửi URL
Một URL thì dùng GET:
curl "https://api.indexnow.org/indexnow?url=https://example.com/bai/moi&key=3f9c2b7e41d8a05c6e1f9b2d7a4c8e10"
Nhiều URL một lúc (tối đa 10.000 URL mỗi lần) thì dùng POST với JSON:
curl -X POST "https://api.indexnow.org/indexnow" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"host": "example.com",
"key": "3f9c2b7e41d8a05c6e1f9b2d7a4c8e10",
"keyLocation": "https://example.com/3f9c2b7e41d8a05c6e1f9b2d7a4c8e10.txt",
"urlList": [
"https://example.com/bai/moi",
"https://example.com/san-pham/binh-gom-men-lam"
]
}'
Tài liệu giao thức: indexnow.org/documentation.
Đọc mã trả về
| Mã | Nghĩa | Làm gì |
|---|---|---|
| 200 | Đã nhận | Xong. |
| 202 | Đã nhận, khoá đang chờ xác thực | Bình thường ở lần gửi đầu. Đảm bảo tệp khoá truy cập được. |
| 400 | Yêu cầu sai định dạng | Kiểm JSON, tiêu đề Content-Type, mã hoá URL. |
| 403 | Khoá không hợp lệ | Tệp khoá không tìm thấy hoặc nội dung không khớp khoá. |
| 422 | URL không thuộc host, hoặc khoá không khớp với host | Thường do gửi URL www cho host không www hoặc ngược lại. |
| 429 | Gửi quá nhiều | Giảm tần suất, gom URL vào một lần POST. |
Mã 200 hay 202 chỉ có nghĩa là đã nhận thông báo. Nó không bảo đảm trang sẽ được thu thập ngay hay được lập chỉ mục; công cụ tìm kiếm vẫn tự quyết dựa trên chất lượng trang.
Nên gửi khi nào
- Khi đăng trang mới.
- Khi sửa nội dung đáng kể: đổi giá, đổi thông tin, viết lại phần lớn bài.
- Khi xoá trang (trang phải thực sự trả 404 hoặc 410) hoặc chuyển hướng 301 sang địa chỉ mới.
Không nên gửi khi chỉ đổi một dấu phẩy, khi trang không đổi gì, hay gửi lại toàn bộ site mỗi ngày. Gửi thừa không làm trang lên nhanh hơn; nó chỉ làm thông báo của bạn kém giá trị.
Cài nhanh theo nền tảng
| Nền tảng | Cách làm |
|---|---|
| WordPress | Plugin IndexNow chính thức của Microsoft Bing, hoặc tính năng IndexNow có sẵn trong một số plugin SEO phổ biến. Chỉ bật ở một plugin. |
| Cloudflare | Tính năng Crawler Hints dùng IndexNow để báo thay đổi, bật trong phần cài đặt bộ nhớ đệm. |
| Site tự viết | Gọi API ở chỗ lưu bài (sau khi ghi CSDL thành công). Nên đưa vào hàng đợi chạy nền để lỗi mạng không làm chậm thao tác lưu bài. |
Sau khi cài, vào Bing Webmaster Tools: mục IndexNow cho biết số URL đã nhận và lỗi nếu có. Bing Webmaster Tools còn nhập được site trực tiếp từ Google Search Console, mất vài phút.
Đo xem có tác dụng thật không
Cách đo đơn giản nhất là so thời gian từ lúc đăng tới lúc bot Bing ghé lần đầu, trước và sau khi bật IndexNow. Nhật ký truy cập máy chủ ghi đủ thông tin: lọc dòng có User-Agent bingbot và đường dẫn bài mới, lấy thời điểm sớm nhất trừ thời điểm đăng. Với site nhỏ ít liên kết từ bên ngoài, khoảng cách này trước đây có thể là nhiều ngày; sau khi bật, bot thường ghé trong ít phút tới vài giờ. Nếu không thấy thay đổi, gần như chắc chắn thông báo chưa đi: kiểm mã trả về trong nhật ký của plugin hoặc của mã gửi.
Bước thứ hai là xem trang có thật sự xuất hiện trên Bing không, bằng cách tìm chính xác tiêu đề bài trong ngoặc kép. Bot ghé mà trang không lên thì vấn đề nằm ở trang (nội dung mỏng, trùng lặp, noindex), không nằm ở IndexNow. Đừng nhầm hai chuyện này: IndexNow chỉ rút ngắn đường tới cửa, không quyết định có được vào nhà hay không.
Với site nhiều tên miền dùng chung một mã nguồn, mỗi tên miền cần khoá và tệp khoá riêng hoặc ít nhất tệp khoá phải phục vụ được trên từng host. Mã gửi phải lấy đúng host của từng bài, không lấy host mặc định của máy chủ; đây là chỗ hay sinh lỗi 422 hàng loạt khi một khuôn được nhân ra nhiều site.
Lỗi hay gặp
- Tệp khoá bị quy tắc chuyển hướng nuốt mất. Site có quy tắc "mọi đường dẫn không tồn tại về
index.php" hoặc dựng bằng khung giao diện một trang trả HTML trang chủ cho/<khoá>.txt. Nhìn mã 200 tưởng đúng, nhưng nội dung không khớp khoá nên bị trả 403. Kiểm bằngcurlxem nội dung trả về đúng một dòng khoá. - Tệp khoá có ký tự thừa. Dấu xuống dòng thường được chấp nhận, nhưng thêm khoảng trắng, chữ ký BOM do trình soạn thảo trên Windows chèn vào, hoặc lưu dạng HTML là đủ để không khớp.
- Lệch host. Site chạy
www.example.commà gửi URLexample.com, hoặc đặt tệp khoá trên một host rồi gửi URL của host kia. Mỗi host là một thực thể riêng với IndexNow. - Hai plugin cùng gửi. Cài cả plugin IndexNow riêng lẫn bật IndexNow trong plugin SEO, mỗi lần lưu bài gửi hai lần với hai khoá khác nhau. Không hỏng gì nghiêm trọng nhưng dễ dính 429 và khó dò lỗi.
- Gửi URL của bản nháp hoặc trang có noindex. Công cụ tìm kiếm ghé vào, thấy noindex hoặc lỗi, và bạn tự tạo ra lỗi trong báo cáo của mình. Chỉ gửi URL công khai, trả 200, đúng canonical.
- Quên báo trang xoá. Phần lớn cài đặt chỉ gửi khi đăng bài. Trang sản phẩm đã gỡ vẫn nằm trong chỉ mục Bing nhiều tuần.
- Kỳ vọng Google nhận. Không có cách nào để IndexNow đưa trang lên Google. Với Google: sitemap có
lastmodchính xác, liên kết nội bộ từ trang đã được lập chỉ mục, và công cụ Kiểm tra URL trong Search Console cho trang quan trọng. Xem sitemap XML và Google Search Console.
Danh sách kiểm
- Khoá 8–128 ký tự, chỉ chữ, số, gạch ngang.
https://<host>/<khoá>.txttrả 200, kiểu nội dung văn bản, nội dung đúng bằng khoá.- Tệp khoá không bị chặn trong robots.txt.
- Gửi thử một URL, nhận 200 hoặc 202.
- Site tự động gửi khi đăng, sửa, xoá; chỉ một nơi gửi.
- Bing Webmaster Tools hiện số URL nhận qua IndexNow.
Kiểm bằng SEO Gốc
Thang 20 tiêu chí của SEO Gốc có mục IndexNow (3 điểm), chỉ tính khi biết khoá của site: khi đó công cụ tải /<khoá>.txt và báo lỗi indexnow_thieu nếu tệp không trả đúng khoá. Với site lạ, mục này được loại khỏi mẫu số để không phạt oan. Các mục quan trọng hơn cho việc được lập chỉ mục nhanh (sitemap, robots.txt, canonical, noindex) thì chấm điểm SEO kiểm cho mọi site. Đọc thêm vì sao trang không được lập chỉ mục nếu trang mới mãi chưa lên.
Hỏi đáp
IndexNow có giúp Google lập chỉ mục nhanh hơn không?
Không. Google không tham gia IndexNow. Với Google, hãy dùng sitemap có lastmod chính xác, liên kết nội bộ và công cụ Kiểm tra URL trong Search Console.
Gửi cho Bing rồi có cần gửi riêng cho Yandex không?
Không cần. Các công cụ tìm kiếm tham gia IndexNow chia sẻ thông báo cho nhau, gửi tới api.indexnow.org hoặc tới một bên là đủ.
Mã 202 có phải lỗi không?
Không. 202 nghĩa là đã nhận thông báo và khoá đang chờ xác thực, thường gặp ở lần gửi đầu. Chỉ cần bảo đảm tệp khoá ở gốc site truy cập được và nội dung đúng bằng khoá.
Mỗi lần gửi được bao nhiêu URL?
Tối đa 10.000 URL trong một yêu cầu POST dạng JSON. Chỉ nên gửi URL thật sự mới, vừa sửa đáng kể hoặc vừa xoá; gửi lại cả site mỗi ngày không làm trang lên nhanh hơn.
Đọc tiếp
Sitemap XML: cấu trúc, giới hạn 50.000 địa chỉ, lastmod và những thứ không nên đưa vào
Sitemap XML liệt kê những địa chỉ bạn muốn Google biết tới. Sitemap tốt chỉ chứa trang trả 200, đúng bản chính tắc, có lastmod trung thực v…
Google Search Console: các báo cáo cần xem hằng tuần và cách đọc ra việc cần làm
Search Console là số liệu thật duy nhất Google cung cấp về site trên Google Tìm kiếm. Mỗi tuần xem năm báo cáo: Hiệu suất (giữ 16 tháng), L…
Vì sao trang không được lập chỉ mục: đọc đúng trạng thái trong Search Console và cách kiểm từng nguyên nhân
Trang không vào chỉ mục vì Google bị chặn (noindex, robots.txt, lỗi máy chủ, 404) hoặc vì Google chọn không lưu (trùng lặp, nội dung mỏng).…
Ngân sách thu thập (crawl budget): khi nào site nhỏ cần quan tâm, khi nào không
Ngân sách thu thập là số địa chỉ Googlebot sẵn lòng và có thể tải trên site trong một khoảng thời gian. Site vài trăm đến vài chục nghìn tr…