Recipe Schema
Schema dành riêng cho công thức nấu ăn, bao gồm ingredients, cookTime, prepTime, rating và nutrition information.
Recipe Schema là gì?
Recipe Schema là một loại markup cấu trúc (structured data) thuộc chuẩn Schema.org, được thiết kế riêng để mô tả chi tiết công thức nấu ăn trên trang web. Nó giúp công cụ tìm kiếm như Google hiểu rõ nội dung bài viết — từ nguyên liệu, thời gian chuẩn bị và nấu, đến đánh giá, calo, thành phần dinh dưỡng và cả hướng dẫn từng bước.
Schema này sử dụng định dạng JSON-LD (được Google ưu tiên) hoặc Microdata để gắn thẻ dữ liệu vào mã nguồn HTML. Khi triển khai đúng, nó có thể kích hoạt rich result trên kết quả tìm kiếm — ví dụ: hiển thị hình ảnh, sao đánh giá, thời gian nấu, lượng calo ngay trong SERP.
Tại sao quan trọng trong SEO?
Recipe Schema không trực tiếp nâng thứ hạng trang, nhưng ảnh hưởng mạnh đến hiệu suất SEO gián tiếp qua ba yếu tố chính:
- Tăng tỷ lệ nhấp (CTR): Rich result với hình ảnh, sao 5 sao và thông tin tóm tắt nổi bật giúp trang web thu hút hơn — CTR tăng trung bình 15–30% so với kết quả chuẩn (theo báo cáo của Search Engine Journal, 2023).
- Cải thiện độ tin cậy với máy tìm kiếm: Khi Google hiểu rõ nội dung là một công thức thực tế (không phải bài viết tổng hợp hay quảng cáo), khả năng hiển thị trong các tính năng như Featured Snippet hoặc Google Recipe Carousel cao hơn.
- Hỗ trợ trải nghiệm người dùng đa nền tảng: Dữ liệu cấu trúc giúp tích hợp với Google Assistant, thiết bị nhà thông minh (ví dụ: "Hey Google, đọc cách làm bánh flan"), hoặc ứng dụng lưu công thức (như Pinterest Lens).
Lưu ý: Không triển khai Recipe Schema không khiến trang bị phạt — nhưng bỏ lỡ cơ hội hiển thị nổi bật trong phân khúc nội dung ẩm thực cạnh tranh cao.
Cách hoạt động
Recipe Schema hoạt động bằng cách thêm khối dữ liệu có cấu trúc vào HTML — thường ở cuối phần <head> hoặc đầu phần <body>. Google thu thập, phân tích và so sánh dữ liệu này với nội dung hiển thị trên trang (text, hình ảnh, tiêu đề). Nếu khớp đủ điều kiện, Google sẽ tạo rich result.
Quy trình gồm ba bước chính:
- Mã hóa thông tin công thức theo chuẩn Schema.org/Recipe (ví dụ:
@type: "Recipe",recipeIngredient,cookTime). - Đảm bảo dữ liệu khớp với nội dung người xem thấy — không mâu thuẫn về thời gian, số lượng nguyên liệu hay đơn vị đo.
- Google xác thực qua Rich Results Test hoặc URL Inspection Tool.
Hướng dẫn thực hiện
Dưới đây là 5 bước triển khai Recipe Schema chuẩn xác cho website tiếng Việt:
- Chuẩn bị đầy đủ thông tin bắt buộc: Tên món (
name), danh sách nguyên liệu (recipeIngredient), thời gian nấu (cookTime), thời gian chuẩn bị (prepTime), hướng dẫn (recipeInstructions). Các thuộc tính nhưimage,author,datePublishednên có để tăng độ tin cậy. - Định dạng thời gian đúng chuẩn ISO 8601: Dùng định dạng
PT30M(30 phút),PT1H30M(1 giờ 30 phút),PT2H(2 giờ). Không dùng “30 phút”, “1h30” hay “1,5 giờ”. - Sử dụng JSON-LD trong thẻ <script>: Đặt khối script ngay sau thẻ mở
<head>hoặc trước</body>. Tránh dùng Microdata nếu không cần hỗ trợ hệ thống quản lý nội dung cũ. - Kiểm tra tính nhất quán: Hình ảnh trong
imagephải là URL trực tiếp tới file JPG/PNG (không phải URL thư viện CMS), và phải xuất hiện rõ trên trang. - Xác thực và gửi lại chỉ mục: Dùng Rich Results Test để kiểm tra lỗi. Sau khi sửa, gửi URL qua URL Inspection Tool để yêu cầu lập chỉ mục lại.
Lỗi thường gặp
Dưới đây là những lỗi phổ biến khi triển khai Recipe Schema và cách khắc phục:
| Lỗi | Nguồn gốc | Cách khắc phục |
|---|---|---|
Thiếu thuộc tính bắt buộc (name, recipeIngredient, recipeInstructions) |
Bỏ sót khi viết markup hoặc CMS tự sinh thiếu trường | Thêm đầy đủ ba thuộc tính. Kiểm tra bằng Rich Results Test — lỗi “Missing field” sẽ hiện rõ tên trường thiếu. |
| Thời gian sai định dạng (ví dụ: “45 phút” thay vì “PT45M”) | Nhập thủ công không tuân chuẩn ISO 8601 | Dùng công cụ chuyển đổi thời gian (ví dụ: SchemaApp Duration Calculator) hoặc tra bảng quy đổi. |
| Hình ảnh không hiển thị hoặc trả về 404 | URL hình ảnh là đường dẫn tương đối, hoặc ảnh bị chặn bởi robots.txt / .htaccess | Dùng URL tuyệt đối (bắt đầu bằng https://), kiểm tra ảnh mở được trực tiếp trong trình duyệt, và đảm bảo không bị chặn bởi noindex hoặc X-Robots-Tag. |
| Dữ liệu không khớp nội dung trang (ví dụ: markup ghi “500 calo”, nhưng bài viết ghi “480 calo”) | Chỉnh sửa bài viết nhưng quên cập nhật schema | Tự động hóa bằng plugin (WordPress: WP Recipe Maker, Schema Pro) hoặc viết script đồng bộ giữa nội dung và JSON-LD. |
Ví dụ thực tế
Dưới đây là khối JSON-LD mẫu cho công thức “Bánh mì chảo trứng” — đã tối ưu cho thị trường Việt Nam:
{
"@context": "https://schema.org/",
"@type": "Recipe",
"name": "Bánh mì chảo trứng",
"image": ["https://example.com/images/banh-mi-chao-trung.jpg"],
"author": {
"@type": "Person",
"name": "Nguyễn Văn A"
},
"datePublished": "2024-04-10",
"description": "Món ăn sáng nhanh, giàu đạm và dễ làm tại nhà.",
"prepTime": "PT10M",
"cookTime": "PT8M",
"totalTime": "PT18M",
"recipeYield": "2 phần",
"nutrition": {
"@type": "NutritionInformation",
"calories": "420 kcal",
"proteinContent": "22 g",
"carbohydrateContent": "38 g",
"fatContent": "18 g"
},
"recipeIngredient": [
"2 quả trứng gà",
"2 lát bánh mì gối",
"1 muỗng canh dầu ăn",
"1/4 muỗng cà phê muối",
"Ít tiêu xay"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"text": "Đập trứng vào bát, thêm muối và tiêu, đánh đều."
},
{
"@type": "HowToStep",
"text": "Làm nóng chảo, cho dầu ăn, đổ trứng vào chiên lửa vừa."
},
{
"@type": "HowToStep",
"text": "Nướng bánh mì trong lò vi sóng hoặc chảo khô 1 phút."
},
{
"@type": "HowToStep",
"text": "Cho trứng chín lên bánh mì, dùng nóng."
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "124"
}
}
Lưu ý: Các giá trị như calories, proteinContent… phải đi kèm đơn vị rõ ràng (kcal, g), và chỉ được khai báo nếu có nguồn đáng tin cậy (bảng thành phần thực phẩm Bộ Y tế, USDA FoodData Central hoặc phần mềm tính dinh dưỡng đã kiểm định).
Câu hỏi thường gặp
Recipe Schema có bắt buộc phải có đánh giá (rating) không?
Không. Thuộc tính aggregateRating là tùy chọn. Tuy nhiên, nếu có đánh giá thật từ người dùng và đạt ít nhất 3 sao, việc thêm rating giúp tăng độ tin cậy và khả năng hiển thị rich result — đặc biệt trên thiết bị di động.
Có thể dùng Recipe Schema cho video công thức không?
Có thể, nhưng cần kết hợp với @type: "VideoObject" hoặc dùng video như một thuộc tính con trong Recipe Schema. Thời lượng video phải khai báo riêng theo chuẩn ISO 8601, và không thay thế cho cookTime hay prepTime.
Website tiếng Việt có cần khai báo ngôn ngữ trong schema không?
Không bắt buộc, nhưng nên thêm thuộc tính inLanguage: "vi" để giúp Google phân loại chính xác. Giá trị này không ảnh hưởng đến xếp hạng, nhưng hỗ trợ tốt hơn cho tìm kiếm theo ngôn ngữ và tính năng dịch thuật tự động.