Kiểm tra JSON-LD và dữ liệu có cấu trúc: công cụ soát được gì và bạn phải tự soát gì
Công cụ đọc dữ liệu có cấu trúc dạng JSON-LD theo hai đường: lấy từ một địa chỉ trang, hoặc nhận đoạn mã bạn dán vào. Sau đó nó phân tích cú pháp, liệt kê các loại thực thể tìm thấy, báo lỗi khi thiếu trường bắt buộc và cảnh báo khi thiếu trường nên có cho hai mươi loại lược đồ phổ biến.
Tính năng nổi bật
- Hai chế độ: nhập địa chỉ trang để công cụ tự lấy về, hoặc dán thẳng đoạn mã
- Chế độ dán nhận cả thẻ script đầy đủ lẫn phần JSON trần bên trong
- Báo lỗi cú pháp JSON kèm mô tả vị trí do bộ phân tích trả về
- Kiểm tra sự có mặt của @context và cảnh báo khi giá trị không phải địa chỉ schema.org
- Đọc được cấu trúc @graph, duyệt từng thực thể bên trong thay vì chỉ nhìn lớp ngoài
- Đối chiếu trường bắt buộc cho hai mươi loại lược đồ hay dùng và trường nên có cho sáu loại
- Kiểm tra riêng khối offers của Product và từng cặp câu hỏi trả lời của FAQPage
- Liệt kê các thuộc tính tìm thấy trong từng thực thể, kèm nút chép lại JSON đã định dạng
Dữ liệu có cấu trúc sai thì im lặng, không ai báo cho bạn
Khác với lỗi hiển thị hay lỗi máy chủ, một khối dữ liệu có cấu trúc viết sai không làm trang hỏng và không hiện thông báo nào. Trang vẫn chạy, khách vẫn xem được, chỉ có công cụ tìm kiếm là bỏ qua khối đó. Bạn chỉ phát hiện khi thấy kết quả nổi bật không xuất hiện, mà lúc ấy thường đã vài tuần trôi qua. Những lỗi hay gặp lại rất nhỏ: một dấu phẩy thừa cuối danh sách, một trường bắt buộc bị bỏ quên, địa chỉ trong khối lược đồ vẫn trỏ về trang mẫu vì mã được sao chép từ trang khác. Kiểm tra ngay khi vừa gắn xong là cách rẻ nhất. Công cụ này làm ba việc cơ bản đó trong vài giây và nói bằng tiếng Việt, phù hợp cho lần soát đầu tiên trước khi bạn đưa trang lên hoặc trước khi báo cáo cho khách hàng.
Lợi ích khi sử dụng
- Bắt được lỗi cú pháp và lỗi thiếu trường ngay trước khi đưa trang lên
- Thông báo bằng tiếng Việt, nêu rõ loại lược đồ nào thiếu trường nào
- Đọc được cả cấu trúc @graph nên hợp với các trang gộp nhiều thực thể vào một khối
- Chế độ dán mã dùng được khi trang còn ở môi trường thử chưa công khai
- Có sẵn đường dẫn sang công cụ chính thức của Google để đối chiếu bước cuối
Cách kiểm tra một khối JSON-LD
- 1Chọn thẻ nhập địa chỉ nếu trang đã lên mạng, hoặc thẻ dán mã nếu bạn còn đang làm ở môi trường thử.
- 2Với chế độ địa chỉ, dán đường dẫn đầy đủ gồm cả phần giao thức rồi bấm kiểm tra và chờ trong khoảng mười giây.
- 3Với chế độ dán mã, đưa vào cả thẻ script hoặc chỉ phần JSON bên trong đều được, công cụ tự bóc phần cần thiết.
- 4Đọc kết quả theo ba nhóm: danh sách loại lược đồ tìm thấy, các lỗi bắt buộc phải sửa, và các cảnh báo nên xem xét.
- 5Sửa xong thì chạy lại, sau đó đối chiếu thêm bằng công cụ kiểm tra kết quả nổi bật của Google qua nút mở sẵn trên trang.
Hai chế độ hoạt động khác nhau ở chỗ nào
Chế độ dán mã chạy hoàn toàn trong trình duyệt: đoạn mã bạn đưa vào được bóc khỏi thẻ script nếu có, đưa qua bộ phân tích JSON, rồi kiểm tra ngay tại chỗ, không có dữ liệu nào rời khỏi máy bạn. Chế độ nhập địa chỉ thì khác, yêu cầu được gửi tới một điểm cuối trên máy chủ của chính trang này, máy chủ đó tải mã HTML của trang đích với thời gian chờ tối đa mười giây rồi trích ra tất cả các khối script khai báo dữ liệu có cấu trúc. Có ba hệ quả cần biết. Một là trang đích nhìn thấy lượt truy cập đến từ máy chủ chứ không phải từ máy bạn, và có thể chặn nếu nó lọc theo tác nhân người dùng lạ. Hai là chỉ mã HTML thô được đọc, không có bước chạy JavaScript, nên khối dữ liệu do trình quản lý thẻ hay do mã phía trình duyệt chèn vào sau sẽ không được tìm thấy dù bạn nhìn thấy nó trong công cụ dành cho nhà phát triển. Ba là trang chậm quá mười giây sẽ trả về lỗi hết thời gian chờ, khi đó hãy chuyển sang dán mã.
Danh sách những gì công cụ thật sự đối chiếu
Trước hết là cú pháp: nếu JSON sai dấu ngoặc hoặc thừa dấu phẩy thì kết quả dừng ngay ở đó kèm thông báo lỗi của bộ phân tích. Tiếp theo là thuộc tính khai báo từ vựng, thiếu thì báo lỗi, còn nếu có nhưng không trỏ về địa chỉ của schema.org thì chỉ cảnh báo. Sau đó công cụ mở khối @graph nếu có và duyệt từng thực thể bên trong, mỗi thực thể phải khai báo loại; thiếu loại là lỗi. Với hai mươi loại phổ biến, công cụ có sẵn danh sách trường bắt buộc và sẽ báo lỗi nếu thiếu, chẳng hạn bài viết cần tiêu đề, tác giả và ngày xuất bản; sản phẩm cần tên và khối chào bán; doanh nghiệp địa phương cần tên và địa chỉ; sự kiện cần tên, thời điểm bắt đầu và địa điểm; công thức nấu ăn cần tên, danh sách nguyên liệu và các bước làm; tin tuyển dụng cần tiêu đề, ngày đăng, mô tả và đơn vị tuyển. Với sáu loại thì có thêm danh sách trường nên bổ sung, ví dụ sản phẩm nên có ảnh, mô tả, thương hiệu và mã hàng. Riêng khối chào bán được soi thêm giá và đơn vị tiền, còn trang câu hỏi thường gặp thì từng cặp được kiểm xem có đủ câu hỏi và khối trả lời hay không.
Những gì công cụ không kiểm, và bạn phải tự lo
Đây là phần quan trọng để không hiểu nhầm ý nghĩa của dòng báo hợp lệ. Thứ nhất, công cụ chỉ xét sự tồn tại của trường chứ không xét kiểu và định dạng giá trị. Một ngày xuất bản ghi theo kiểu ngày tháng năm của người Việt vẫn được coi là có, dù chuẩn yêu cầu định dạng ngày giờ quốc tế. Một địa chỉ ghi tương đối thay vì tuyệt đối cũng lọt qua. Thứ hai, việc kiểm tra chỉ chạy ở lớp thực thể ngoài cùng hoặc lớp ngay trong @graph, còn các thực thể lồng bên trong như khối tác giả, khối nhà xuất bản hay khối địa chỉ thì không được duyệt sâu, nên thiếu sót ở đó không bị phát hiện. Thứ ba, danh sách trường bắt buộc ở đây là bản rút gọn theo kinh nghiệm chứ không phải bản đầy đủ của schema.org, và cũng không phải điều kiện hiển thị kết quả nổi bật của công cụ tìm kiếm, vốn còn khắt khe hơn. Thứ tư, công cụ chỉ hiểu định dạng JSON-LD, không đọc được dữ liệu nhúng theo kiểu vi định dạng gắn thẳng vào thẻ HTML. Vì vậy bước cuối vẫn nên chạy qua công cụ kiểm tra chính thức của Google.
Năm lỗi thường gặp khi gắn dữ liệu có cấu trúc cho website tiếng Việt
Lỗi thứ nhất là sao chép khối lược đồ từ trang này sang trang khác mà quên đổi địa chỉ và mã định danh, khiến nhiều trang cùng khai báo một mã định danh và công cụ tìm kiếm không biết nên tin trang nào. Lỗi thứ hai là khai báo nội dung không có trên trang, phổ biến nhất là gắn khối câu hỏi thường gặp trong khi trang không hiển thị phần hỏi đáp nào cho người đọc, hoặc gắn đánh giá sao mà trang không có phần đánh giá thật; đây là vi phạm nguyên tắc dữ liệu có cấu trúc và có thể bị áp dụng biện pháp thủ công. Lỗi thứ ba là giá bán ghi kèm dấu chấm phân cách hàng nghìn theo thói quen tiếng Việt, trong khi trường giá phải là số thuần không định dạng, và phải đi kèm mã đơn vị tiền tệ. Lỗi thứ tư là ngày tháng ghi theo thứ tự ngày trước tháng sau thay vì theo chuẩn năm tháng ngày. Lỗi thứ năm là gắn nhiều khối rời rạc cho cùng một trang mà không nối chúng bằng mã định danh, khiến các thực thể đứng tách nhau thay vì tạo thành một mạng thông tin liên kết.
Hợp lệ không có nghĩa là sẽ hiển thị nổi bật
Nhiều người kiểm xong thấy báo hợp lệ rồi chờ kết quả nổi bật xuất hiện, và thất vọng. Cần phân biệt ba mức. Mức một là mã đúng cú pháp và đủ trường, đó là thứ công cụ này kiểm. Mức hai là đủ điều kiện để có thể hiển thị dạng nổi bật, điều này do công cụ tìm kiếm quy định riêng cho từng loại và các quy định đó thay đổi theo thời gian; ví dụ khối câu hỏi thường gặp và khối hướng dẫn từng bước từng hiển thị rộng rãi nhưng sau đó đã bị thu hẹp mạnh, nên gắn đúng cũng chưa chắc được hiển thị. Mức ba là thực tế được chọn hiển thị cho một truy vấn cụ thể, và đây hoàn toàn là quyết định của hệ thống xếp hạng, không ai bảo đảm được. Vì vậy hãy coi dữ liệu có cấu trúc là cách mô tả nội dung cho máy hiểu, giúp trang được hiểu đúng chủ đề và đúng thực thể, chứ đừng coi là công tắc bật kết quả nổi bật. Sau khi sửa, hãy theo dõi mục báo cáo cải tiến trong Search Console vì đó mới là nơi phản ánh cách công cụ tìm kiếm thật sự đọc trang của bạn.
Câu hỏi thường gặp (FAQ)
Vì sao nhập địa chỉ mà báo không tìm thấy JSON-LD dù trang có?
Vì công cụ chỉ đọc mã HTML thô do máy chủ trả về, không chạy JavaScript. Nếu khối dữ liệu được chèn bằng trình quản lý thẻ hoặc bằng mã chạy phía trình duyệt thì nó chưa tồn tại lúc đọc. Hãy xem mã nguồn trang bằng chức năng xem nguồn, và nếu không thấy khối script thì dùng chế độ dán mã.
Báo lỗi hết thời gian chờ nghĩa là sao?
Máy chủ chỉ chờ tối đa mười giây cho mỗi lượt lấy trang. Trang phản hồi chậm hơn mức đó sẽ bị cắt. Nguyên nhân có thể là máy chủ đích đang tải nặng, hoặc trang nằm sau lớp chống truy cập tự động. Cách xử lý nhanh nhất là mở trang, xem mã nguồn, chép khối script rồi dán vào chế độ thứ hai.
Đoạn mã tôi dán vào có bị gửi đi đâu không?
Ở chế độ dán mã thì không, toàn bộ việc bóc thẻ script, phân tích và đối chiếu chạy trong trình duyệt của bạn. Chỉ chế độ nhập địa chỉ mới gửi yêu cầu tới máy chủ, và khi đó thứ được gửi là địa chỉ trang chứ không phải nội dung mã của bạn.
Kết quả báo hợp lệ thì có chắc được hiển thị nổi bật không?
Không. Hợp lệ ở đây nghĩa là đúng cú pháp và không thiếu trường bắt buộc theo danh sách của công cụ. Việc đủ điều kiện hiển thị dạng nổi bật do công cụ tìm kiếm quy định riêng và khắt khe hơn, còn việc thực tế được chọn hiển thị cho một truy vấn lại là quyết định của hệ thống xếp hạng.
Công cụ có kiểm tra định dạng ngày tháng không?
Không, nó chỉ xét trường đó có tồn tại hay không. Một ngày ghi theo thói quen ngày trước tháng sau vẫn được coi là có. Chuẩn yêu cầu định dạng ngày giờ quốc tế với thứ tự năm, tháng, ngày, nên bạn phải tự kiểm tra phần này hoặc dùng công cụ kiểm tra chính thức.
Các thực thể lồng bên trong như tác giả có được kiểm không?
Không sâu. Công cụ duyệt lớp thực thể ngoài cùng và các thực thể nằm ngay trong @graph, còn khối tác giả, khối nhà xuất bản hay khối địa chỉ lồng bên trong thì chỉ được ghi nhận là trường có mặt chứ không kiểm tra bên trong chúng có đủ thuộc tính hay không.
Gắn khối câu hỏi thường gặp mà trang không có phần hỏi đáp có sao không?
Có, đó là vi phạm nguyên tắc dữ liệu có cấu trúc vì nội dung khai báo phải hiển thị được cho người đọc trên chính trang đó. Trường hợp này có thể bị áp dụng biện pháp thủ công làm mất toàn bộ kết quả nổi bật của cả website chứ không riêng một trang.
Nên dùng @graph hay khai báo nhiều khối script rời?
Cả hai đều hợp lệ. Dùng @graph gọn hơn và cho phép nối các thực thể với nhau bằng mã định danh, giúp công cụ tìm kiếm hiểu quan hệ giữa tổ chức, trang và bài viết. Nếu tách thành nhiều khối rời, hãy nhớ vẫn nối chúng bằng mã định danh thay vì để đứng độc lập.
Vì sao trường giá lại bị cảnh báo dù tôi đã điền?
Cảnh báo bật khi khối chào bán thiếu giá hoặc thiếu mã đơn vị tiền tệ. Một lỗi hay gặp nữa là ghi giá kèm dấu chấm phân cách hàng nghìn hoặc kèm chữ đồng, trong khi trường này phải là số thuần không định dạng, còn đơn vị tiền khai báo ở trường riêng.
Công cụ có đọc được dữ liệu gắn thẳng vào thẻ HTML không?
Không. Nó chỉ hiểu định dạng JSON-LD đặt trong thẻ script. Dữ liệu nhúng theo kiểu gắn thuộc tính vào từng thẻ HTML nằm ngoài phạm vi của công cụ. Nếu website của bạn dùng cách đó, hãy dùng công cụ kiểm tra của schema.org hoặc chuyển sang JSON-LD vốn được khuyến nghị hơn.
Vì sao báo cảnh báo về giá trị khai báo từ vựng?
Vì thuộc tính đó nên trỏ về địa chỉ của schema.org theo giao thức bảo mật. Nhiều mã cũ vẫn dùng giao thức không bảo mật hoặc dùng dạng đối tượng mở rộng, kỹ thuật vẫn hiểu được nên chỉ là cảnh báo, nhưng sửa lại cho thống nhất vẫn tốt hơn khi bàn giao.
Sau khi sửa xong thì bao lâu công cụ tìm kiếm ghi nhận?
Phụ thuộc vào tần suất thu thập dữ liệu của trang, thường vài ngày tới vài tuần. Bạn có thể rút ngắn bằng cách gửi kiểm tra địa chỉ trong Search Console rồi yêu cầu lập chỉ mục lại. Sau đó theo dõi mục báo cáo cải tiến để xem lỗi đã biến mất chưa.
Từ khóa liên quan
- kiểm tra json-ld online
- validate schema markup
- kiểm tra dữ liệu có cấu trúc
- structured data testing tool
- lỗi thiếu trường bắt buộc schema
- schema faqpage là gì
- gắn schema cho sản phẩm
- schema localbusiness cho doanh nghiệp
- schema article cho bài viết
- cách khai báo @graph
- rich results test
- kết quả nổi bật trên google
- schema breadcrumblist
- định dạng ngày iso 8601
- schema đánh giá sao aggregaterating
- báo cáo cải tiến trong search console
- json-ld là gì
- microdata và json-ld khác nhau
- kiểm tra schema từ url
- công cụ kiểm tra schema miễn phí
