Hướng dẫn về schema Recipe
Cách triển khai đánh dấu schema.org/Recipe cho kết quả nhiều định dạng của Google, gồm các thuộc tính bắt buộc và khuyến nghị, ItemList cho băng chuyền, quy tắc có điều kiện về dinh dưỡng, thời gian, xếp hạng, video và yêu cầu chỉ dùng cho món ăn thực tế.
Ngôn ngữ
Schema Recipe (schema.org/Recipe) cho công cụ tìm kiếm biết tên món ăn, hình ảnh, thời gian nấu, điểm đánh giá, nguyên liệu và thông tin dinh dưỡng để trang có thể đủ điều kiện nhận kết quả công thức nhiều định dạng. Chỉ image và name là bắt buộc, nhưng thẻ đầy đủ còn dựa vào các thuộc tính được khuyến nghị như aggregateRating, author, cookTime, prepTime, totalTime, recipeYield, recipeIngredient, recipeInstructions, recipeCategory, recipeCuisine, keywords, datePublished, nutrition.calories và video. Băng chuyền nhiều công thức cần một trang ItemList ở cấp máy chủ; đánh dấu từng công thức riêng lẻ chỉ có thể tạo một thẻ đơn. Đánh dấu Recipe chỉ hợp lệ cho món ăn thực tế, không phải nội dung kiểu “facial scrub” hay “party ideas”. Mã hợp lệ chỉ giúp trang đủ điều kiện; Google vẫn quyết định có hiển thị kết quả hay không.
Evidence for this claim Schema.org Recipe describes a recipe and its ingredients, instructions, timing, nutrition, and related metadata. Scope: Schema.org Recipe vocabulary. Confidence: high · Verified: Schema.org: Recipe Evidence for this claim Google's Recipe feature requires name and image and documents additional recommended properties; complete valid markup earns eligibility, not guaranteed display or ranking. Scope: Current Google Recipe structured-data requirements. Confidence: high · Verified: Google Search Central: Recipe structured dataTL;DR — Schema Recipe là mã bạn thêm vào trang công thức để gắn nhãn các chi tiết nấu ăn cho công cụ tìm kiếm: “this is the dish name,” (bản dịch) «đây là tên món ăn», “this is the photo,” (bản dịch) «đây là hình ảnh», “it takes 20 minutes to cook,” (bản dịch) «món này cần 20 phút để nấu», “these are the ingredients,” (bản dịch) «đây là các nguyên liệu», “here are the steps,” (bản dịch) «đây là các bước» và “readers rated it 4.7 stars.” (bản dịch) «độc giả chấm món này 4,7 sao». Triển khai đúng giúp trang đủ điều kiện nhận kết quả công thức nhiều định dạng của Google — thẻ trực quan có ảnh, điểm đánh giá và thời gian nấu. Việc này không bảo đảm thẻ sẽ xuất hiện; băng chuyền nhiều công thức còn cần một trang
ItemListngoài phần đánh dấu của từng công thức.
Điều gì Recipe schema là
Khi bạn xem xét recipe trang, Bạn có thể tell dish name từ cook time từ
ingredient list chỉ by reading. công cụ tìm kiếm sees đơn giản text và có để
guess nơi recipe dừng và blog story begins. Recipe schema spells nó
out trong code, sử dụng shared schema.org vocabulary —
nó tags mỗi piece của trang với Điều gì nó thực ra là: name, image,
prepTime và cookTime, recipeIngredient list,
recipeInstructions steps, và bất kỳ star aggregateRating.
nó gần như luôn được viết as JSON-LD — nhỏ block của code đó sits trong trang không có thay đổi Cách trang looks.
Vì sao nó worth đang làm
payoff là recipe rich kết quả, và nó good một. On recipe searches Google hiển thị enhanced cards với photo, star rating, cook time, và đôi khi calorie count — và nó groups them vào carousel hoặc grid tại top của trang. Marked-lên recipes cũng nhận recipe badges trong Google Images. card như đó stands out nhiều hơn visually hơn đơn giản blue link, though Google không publish guaranteed nhấp-qua hoặc xếp hạng lift cho nó — payoff là visual thực estate itself, không được ghi lại traffic number.
Đây là một của hai structured-dữ liệu types (với VideoObject, mà nhiều recipe các trang sử dụng cho embedded cooking video) đó genuinely earns mainstream rich kết quả. nếu bạn chạy food trang web, Đây là worth đang làm properly.
hai điều bạn phải có
Google chỉ strictly requires hai properties:
- name — name của dish ( thực dish — nhiều hơn on đó dưới).
- image — photo của finished dish. Google own condition: crawlable, indexable, trong supported format, và representative của dish — nó khuyến nghị multiple images tại 16x9, 4x3, và 1x1 ratios, mỗi ít nhất 50 000 pixels. (Some các hướng dẫn claim cụ thể 1 200px-wide requirement; tài liệu củ Google không state một.)
nhưng hai properties nhận bạn bare-minimum hợp lệ recipe, không đầy đủ card. fuller card — một mọi người thực ra engage với — là populated từ được khuyến nghị properties, though có them không bảo đảm Google renders mỗi trường:
- tác giả, datePublished, mô tả
- prepTime, cookTime, totalTime — times shown on card.
- recipeYield — Cách nhiều servings.
- recipeIngredient — ingredient list.
- recipeInstructions — steps.
- aggregateRating — star rating (từ genuine reader ratings).
- nutrition với calories — feeds nutrition panel.
- recipeCategory, recipeCuisine, từ khóa — help Google understand và file recipe.
- video — nếu bạn có cooking video.
điều phần lớn mọi người nhận sai
Riêng lẻ recipe markup không, by itself, produce carousel. nice
multi-recipe carousel bạn see tại top của tìm kiếm là tách biệt feature đó
cần ItemList summary trang — trang listing several recipes đó mỗi link
out để của họ own recipe trang. Theo-recipe markup earns tại phần lớn single card. nhiều hơn
on đó trong Nâng cao tab.
Hai nhiều hơn Người mới bắt đầu traps:
- Hợp lệ markup ≠ guaranteed rich kết quả. Điều này làm bạn eligible; Google vẫn decides liệu để display đó card.
- Chỉ real dishes count. Recipe markup là cho food bạn thực ra prepare và eat. Google theo nghĩa đen says “facial scrub” (bản dịch) «facial scrub» hoặc “party ideas” là không hợp lệ recipe names. Marking lên non-food “recipes” là một nội dung-policy violation.
Muốn đầy đủ version — carousel/ItemList mechanics, nutrition panel,
ISO 8601 time format, và Vì sao validated recipes vẫn không hiển thị? Chuyển để
Nâng cao tab.
Evidence for this claim Schema.org Recipe describes a recipe and its ingredients, instructions, timing, nutrition, and related metadata. Scope: Schema.org Recipe vocabulary. Confidence: high · Verified: Schema.org: Recipe Evidence for this claim Google's Recipe feature requires name and image and documents additional recommended properties; complete valid markup earns eligibility, not guaranteed display or ranking. Scope: Current Google Recipe structured-data requirements. Confidence: high · Verified: Google Search Central: Recipe structured dataTL;DR — schema.org/Recipe markup (thường JSON-LD) làm một recipe trang eligible cho Google recipe rich kết quả — một visual card (photo, star rating, cook time, calories) đó có thể xuất hiện as một carousel/grid on đó SERP và với recipe badges trong Google Images. Chỉ
imagevànamelà strictly bắt buộc; đó card là thực sự được xây dựng từ đó được khuyến nghị set (aggregateRating,author,cookTime,prepTime,totalTime,recipeYield,recipeIngredient,recipeInstructions,recipeCategory,recipeCuisine,keywords,datePublished,nutrition.calories,video). Hai implementation facts hầu hết round-ups skip: đó multi-recipe carousel là một host-cấp độ feature đó requires anItemListtrang — either một summary trang linking để tách biệt recipe các trang, hoặc an all-trong-một trang linking để anchors on itself — theo-recipe markup alone earns một single card, không bao giờ một carousel — và Recipe markup là chỉ hợp lệ cho thực tế dishes (“facial scrub” (bản dịch) «facial scrub» và “party ideas” là Google own counterexamples). Times dùng ISO 8601 durations (PT20M), và đó hầu hết phổ biến reason một hợp lệ recipe không cho thấy là một nội dung-policy mismatch giữa markup và visible trang. Along với VideoObject, này là một of đó hai structured-dữ liệu types trong đó CreativeWork cluster đó produces một genuine, visible rich kết quả — không một được ghi lại xếp hạng, CTR, hoặc traffic factor, chỉ một real visual upgrade khi shown.
Điều gì recipe rich kết quả looks như — và Cách nó được xây dựng
Google renders Recipe markup as visual card: image thumbnail, name,
aggregateRating stars và count, và cook time (từ totalTime hoặc
cookTime). On nhiều recipe các truy vấn những điều đó cards là grouped vào carousel hoặc
grid tại top của kết quả, và marked-lên recipes cũng earn recipe badges trong
Google Images, mà là có ý nghĩa phát hiện surface cho food nội dung.
Google cách diễn đạt of đó toàn bộ point: “Help users find your recipe content by telling Google about your recipe with structured data.” (bản dịch) «Help người dùng tìm của bạn recipe nội dung by telling Google về của bạn recipe với dữ liệu có cấu trúc.» đó là đó mental model — bạn là không asking cho một xếp hạng boost, bạn là đang làm đó nội dung machine-readable đủ để qualify cho một cụ thể, visible feature.
Bắt buộc so với. được khuyến nghị — và Vì sao “bắt buộc” undersells nó
Đây là thuộc tính bảng đó matters. Google chỉ marks hai properties as
bắt buộc, mà là genuinely misleading nếu bạn dừng reading ở đó — recipe với
chỉ name và image validates nhưng produces thin, unattractive kết quả.
Bắt buộc
| Thuộc tính | Notes |
|---|---|
name | dish name. phải là thực dish (nội dung policy dưới). |
image | Photo của finished dish. phải là crawlable, indexable, trong supported format, và representative của dish. Google khuyến nghị multiple images tại 16x9, 4x3, và 1x1 ratios, mỗi ít nhất 50 000 pixels — có không tách biệt 1 200px-wide requirement some các hướng dẫn cite. |
Được khuyến nghị (Đây là Điều gì Google dùng để xây dựng fuller card, Khi nó decides để hiển thị một — populating them không force display)
| Thuộc tính | Điều gì điều này drives |
|---|---|
aggregateRating | Đó star rating + count on đó card. Follows Google review-snippet guidelines; nếu bạn cho thấy một single review thay vì an aggregate, đó reviewer phải được một named person hoặc organization. |
author | Attribution. |
datePublished | Freshness tín hiệu; ISO 8601 date. |
description | Summary text. |
keywords | Free-text tags (e.g., “winter, comfort food” (bản dịch) «winter, comfort food»). Không đó giống nhau as recipeCategory. |
nutrition.calories | Feeds đó calorie hình Google có thể cho thấy. Conditional: nếu bạn set nutrition.calories, recipeYield phải cũng là được định nghĩa. |
prepTime | Prep duration, ISO 8601 (PT15M). Google hướng dẫn: luôn pair điều này với cookTime. |
cookTime | Cook duration, ISO 8601 (PT1H). Pair điều này với prepTime. |
totalTime | Total duration. Dùng totalTime, hoặc đó prepTime + cookTime combination — Google accepts either. |
recipeCategory | Meal loại — “appetizer”, “dessert”, “main course”. |
recipeCuisine | Regional cuisine — “Mediterranean” (bản dịch) «Mediterranean», “Thai”. |
recipeIngredient | Một entry theo ingredient, including quantity (“2 cups flour” (bản dịch) «2 cups flour»). |
recipeInstructions | Đó steps — ideally HowToStep objects, tùy chọn grouped vào HowToSection. |
recipeYield | Servings hoặc amount produced. Bắt buộc nếu bạn supply bất kỳ theo-serving nutrition info. |
video | MỘT VideoObject cho an embedded cooking video — follow VideoObject own bắt buộc/được khuyến nghị các trường (see dưới). |
totalTime và prepTime/cookTime pair là cả hai acceptable để Google; supply
totalTime trực tiếp Khi Bạn có thể, since nó single duration phần lớn có khả năng để
render on card.
Times sử dụng ISO 8601 durations, không free text
recurring validation thất bại: cookTime: "20 minutes" là không hợp lệ. Durations sử dụng
ISO 8601 format — PT (period của time) plus giá trị — so 20 minutes là
PT20M, hour và half là PT1H30M. Dates như datePublished sử dụng ISO 8601
dates (2026-07-01). Getting những điều này formats sai là một của phần lớn phổ biến reasons
recipe fails Rich Kết quả Kiểm thử.
carousel cần ItemList — riêng lẻ markup không
Này là đó chi tiết triển khai generic “types of schema” (bản dịch) «types of schema» listicles gần như luôn skip. Có hai khác nhau điều ở đây:
- ** single recipe card** — earned by Recipe markup on riêng lẻ recipe trang.
- ** recipe carousel/grid** — host carousel, mà là tách biệt feature.
để là eligible cho multi-recipe carousel, bạn thêm ItemList trang — và
Google host-carousel tài liệu hỗ trợ hai khác trang models, không
chỉ một:
- Summary trang — một trang (một category hoặc roundup trang — “15 Weeknight Pastas” (bản dịch) «15 Weeknight Pastas»)
với một ngắn mô tả of mỗi item, nơi mỗi
ListItempoints, trong order, để đó URL of một tách biệt recipe detail trang đó itself có đầy đủ Recipe markup. Này là đó pattern hầu hết các hướng dẫn mô tả. - All-trong-một trang — một single trang đó contains đó đầy đủ markup cho mỗi item
itself và không link out để tách biệt detail các trang; mỗi
ListItemcarries anitemobject (vớinamevà mộturlđó là an anchor on đó giống nhau trang) rather hơn một link để elsewhere.
Either model supplies sequence Google cần cho carousel; mà một fits phụ thuộc vào liệu của bạn recipes đã trực tiếp on của họ own các URL (summary trang) hoặc bạn’re presenting them all on một dài trang (all-trong-một trang).
Đó practical consequence: bạn không thể nhận một carousel từ một ordinary recipe
trang. MỘT single recipe trang với excellent markup earns một single card. Nếu bạn muốn
đó carousel, bạn cần một of đó hai ItemList trang models trên, layered on top of
(hoặc containing) đầy đủ Recipe markup. Bị thiếu này là đó number-một reason mọi người chẳng hạn
“my markup is perfect but I’m not getting a carousel.” (bản dịch) «my markup là perfect nhưng I’m không getting một carousel.»
nutrition panel
nutrition là một NutritionInformation object, và nutrition.calories là đó trường
Google calls out by name — điều này feeds đó calorie hình Google có thể cho thấy trong đó rich
kết quả. đó là một dữ liệu requirement, không một promise of một distinct expandable nutrition
panel mỗi khi; Google tài liệu mô tả đó trường, không một guaranteed UI element.
có cũng một condition attached: nếu bạn set nutrition.calories, recipeYield
phải được định nghĩa cũng, since calories là stated theo serving và Google cần đó
serving count để làm hợp lý of đó number. Bạn có thể thêm fatContent, proteinContent,
carbohydrateContent, sodiumContent, và đó rest, nhưng calories (paired với
recipeYield) là đó combination đó hầu hết reliably surfaces. Các giá trị là strings
với units (“240 calories” (bản dịch) «240 calories», “9 g”). đây là một nhỏ block đó adds một visible,
differentiating detail để của bạn card, so đây là worth populating cho bất kỳ recipe nơi
bạn có thể compute điều này honestly.
Video: nơi Recipe đáp ứng VideoObject
nhiều recipe các trang embed cooking video, và video thuộc tính là nơi Recipe
và VideoObject — hai CreativeWork types đó produce genuine, visible rich
kết quả — intersect. Google hướng dẫn là rõ ràng: video takes đầy đủ
VideoObject và phải follow đó feature own bắt buộc và được khuyến nghị
properties (name, description, thumbnailUrl, uploadDate, và contentUrl
hoặc embedUrl) — supplying bare video URL không phải giống nhau as được ghi lại
subprofile. Đã xong right, recipe có thể qualify cho video treatment và recipe
card, và video becomes eligible cho của nó own surfaces. theo-trường
requirements cho video trực tiếp với VideoObject topic — giống nhau object
nests bên trong recipe, so nó worth getting đó markup right thay vì stubbing
trong bare video: {}.
nội dung policy: chỉ thực dishes, matching visible trang
Đây là lý do phổ biến nhất khiến mã đánh dấu hợp lệ nhưng không được hiển thị. Recipe chỉ dành cho món ăn thực tế. Google nêu rõ: “Use Recipe structured data for content about preparing a particular dish. For example, ‘facial scrub’ or ‘party ideas’ are not valid names for a dish.” (bản dịch) «Hãy dùng dữ liệu có cấu trúc Recipe cho nội dung hướng dẫn chuẩn bị một món ăn cụ thể. Chẳng hạn, “tẩy tế bào chết cho mặt” hoặc “ý tưởng cho bữa tiệc” không phải tên món ăn hợp lệ.» Một “công thức” chất tẩy rửa tự làm, bài viết dạng “công thức thành công” hoặc danh sách ý tưởng tiệc được khoác mã Recipe đều vi phạm chính sách nội dung. Mã đó có thể vượt qua trình kiểm tra cú pháp nhưng vẫn không bao giờ nhận được thẻ, thậm chí có thể bị xử lý thủ công.
thứ hai half của giống nhau principle: ** markup phải reflect visible trang.** nếu của bạn JSON-LD lists ingredients, times, và rating đó không phải thực ra on trang người dùng sees, đó mismatch Google xử lý as spam tín hiệu. Mark lên Điều gì genuinely ở đó.
Vì sao của bạn hợp lệ recipe vẫn hiển thị không rich kết quả
Eligibility không phải display. thông thường chain: trang có để là được lập chỉ mục,
markup có để là hợp lệ, nội dung có để là thực dish shown on trang,
và Google các hệ thống vẫn có để quyết định nó worth cho thấy — giống nhau
eligibility-không-bảo đảm rule đó governs mỗi structured-dữ liệu loại. nếu bạn’ve
cleared hợp lệ markup và nội dung policy và vẫn see không card, phổ biến culprits
là: times trong free text thay vì ISO 8601, aggregateRating với không count,
image đó không đáp ứng size/aspect hướng dẫn, hoặc expecting carousel không có
ItemList trang.
cho nơi Recipe sits trong wider structured-dữ liệu picture, see rộng hơn Schema Markup và Dữ liệu có cấu trúc hubs điều này bài viết nests dưới.
AI summary
condensed take on Nâng cao version:
- Điều gì điều này là:
schema.org/Recipemarkup (thường JSON-LD) đó labels một recipe trang dish name, photo, times, ingredients, steps, nutrition, video, và ratings so Google có thể produce đó recipe rich kết quả — một visual card (photo, stars, cook time, calories) đó có thể xuất hiện as một carousel/grid và với recipe badges trong Google Images. - Visible payoff, không một được ghi lại xếp hạng factor: với VideoObject, một of đó hai CreativeWork types đó produces một genuine, mainstream, visible rich kết quả. Google không publish xếp hạng, CTR, hoặc traffic numbers cho điều này.
- Bắt buộc so với. được khuyến nghị: chỉ
imagevànamelà bắt buộc, nhưng đó produces một thin kết quả. Đó fuller card là populated từ đó được khuyến nghị set khi Google chọn để cho thấy điều này:aggregateRating,author,cookTime,prepTime,totalTime,recipeYield,recipeIngredient,recipeInstructions,recipeCategory,recipeCuisine,keywords,datePublished,nutrition.calories,video. - Image condition: crawlable, indexable, supported format, representative of đó dish; Google khuyến nghị multiple images tại 16:9/4:3/1:1, mỗi ít nhất 50 000 pixels — không tách biệt 1 200px-wide rule as some các hướng dẫn claim.
- Conditional các trường:
nutrition.caloriesrequiresrecipeYield;prepTimepairs vớicookTime(hoặc dùngtotalTimethay vì đó pair); một single review (không an aggregate) cần một namedPerson/Organizationreviewer. - Carousel cần an
ItemListtrang — hai models: một summary trang whoseListItems link để tách biệt recipe detail các trang, hoặc an all-trong-một trang whoseListItems trỏ đến anchors on itself. Theo-recipe markup alone earns một single card, không bao giờ một carousel — đó hầu hết commonly missed step. - Times là ISO 8601 durations:
PT20M,PT1H30M— không “20 minutes”. Sai duration format là một top validation failure. - Video: đó
videothuộc tính takes một đầy đủVideoObjectsau đó feature own bắt buộc/được khuyến nghị các trường (name,description,thumbnailUrl,uploadDate,contentUrl/embedUrl) — một bare URL không satisfy điều này. - Nội dung policy (top reason hợp lệ markup không cho thấy): chỉ thực tế dishes qualify — Google own counterexamples là “facial scrub” (bản dịch) «facial scrub» và “party ideas”. Đó markup phải cũng reflect đó visible trang.
- Eligibility ≠ display: được lập chỉ mục trang + hợp lệ markup + real dish shown on đó trang + Google deciding đây là worth cho thấy. Hợp lệ markup chỉ làm bạn eligible.
Tài liệu chính thức
Chính-nguồn tài liệu từ các công cụ tìm kiếm.
Google — dữ liệu có cấu trúc
- Recipe (Recipe, HowTo) dữ liệu có cấu trúc — có thẩm quyền reference: bắt buộc (
image,name) so với. được khuyến nghị properties, nội dung-policy guidelines (chỉ thực dishes), và nutrition/time/rating các trường. - Recipe host carousel / summary các trang (tìm kiếm gallery) — nơi
ItemListsummary-trang pattern đó powers multi-recipe carousel là described. - VideoObject dữ liệu có cấu trúc — requirements cho
VideoObjectđó nests trong recipevideothuộc tính. - Rich Kết quả Kiểm thử — validate recipe markup và kiểm tra rich-kết quả eligibility.
Bing / Microsoft
- Marking lên của bạn trang web với dữ liệu có cấu trúc — Bing chung structured-dữ liệu hỗ trợ (schema.org, JSON-LD được khuyến nghị).
Quotes từ nguồn
On—record statements từ Google. nơi nguồn trang exposes text, link là deep link đó jumps để quoted passage.
Google tài liệu — point của Recipe markup
- “Help users find your recipe content by telling Google about your recipe with structured data.” (bản dịch) «Help người dùng tìm của bạn recipe nội dung by telling Google về của bạn recipe với dữ liệu có cấu trúc.» Nhảy đến trích dẫn
Google tài liệu — nội dung policy (chỉ thực dishes)
- “Use Recipe structured data for content about preparing a particular dish. For example, ‘facial scrub’ or ‘party ideas’ are not valid names for a dish.” (bản dịch) «Dữ liệu có cấu trúc Recipe chỉ dành cho nội dung chuẩn bị một món ăn cụ thể; “tẩy tế bào chết cho mặt” và “ý tưởng cho bữa tiệc” không phải tên món ăn hợp lệ.» Nhảy đến trích dẫn
Recipe schema bảng tra nhanh
Bắt buộc ( bare minimum để validate)
Recipe.name + Recipe.image. đó nó — nhưng nó produces thin card. thực
dishes chỉ.
Được khuyến nghị — Điều gì xây dựng fuller card, Khi Google hiển thị một
| Thuộc tính | Drives | Condition |
|---|---|---|
aggregateRating | Star rating + count | Follows review-snippet rules; single review cần named reviewer |
author | Attribution | — |
datePublished | Freshness (ISO 8601 date) | — |
description | Summary text | — |
keywords | Free-text tags | — |
nutrition.calories | Calorie hình | Requires recipeYield để cũng là đặt |
prepTime | Prep duration (PT15M) | Pair với cookTime |
cookTime | Cook duration (PT1H) | Pair với prepTime |
totalTime | Total duration | sử dụng điều này, hoặc prepTime+cookTime |
recipeCategory | Meal loại (dessert, main course) | — |
recipeCuisine | Cuisine (Thai, Italian) | — |
recipeIngredient | Ingredient list (một entry mỗi, w/ quantity) | — |
recipeInstructions | Steps (HowToStep) | — |
recipeYield | Servings | Bắt buộc nếu nutrition.calories là đặt |
video | Nested VideoObject (cooking video) | phải follow VideoObject own bắt buộc các trường |
Single card so với. carousel
| Single recipe card | Recipe carousel/grid | |
|---|---|---|
| nơi nó lives | Riêng lẻ recipe trang | ItemList trang (summary hoặc all-trong-một) |
| Markup | Recipe on trang | Summary: ItemList → ListItem → tách biệt recipe các URL. All-trong-một: ItemList → ListItem → anchors on giống nhau trang |
| Earned by theo-recipe markup alone? | Có | Không — cần một của hai ItemList trang models |
Formats đó break validation
- Times phải là ISO 8601 durations:
PT20M, không “20 minutes”. - Dates phải là ISO 8601:
2026-07-01. aggregateRatingcầnratingCount/reviewCount.imagephải là crawlable/indexable/supported format; Google khuyến nghị multiple images, 16x9 / 4x3 / 1x1, mỗi ít nhất 50 000 pixels (không 1 200px-wide rule).
Fast facts
- Format: JSON-LD (được khuyến nghị, hầu hết maintainable).
- Hợp lệ markup = eligible, không guaranteed để cho thấy — và không một được ghi lại xếp hạng/CTR factor.
- Chỉ real dishes — “facial scrub” (bản dịch) «facial scrub» / “party ideas” là Google không hợp lệ các ví dụ.
videotakes một đầy đủVideoObject, không một bare URL.- Markup phải match đó visible trang.
Làm I nhận card, carousel, hoặc không có gì?
Hoạt động xuống các câu hỏi:
1. Là đó trang về preparing an thực tế dish?
- Không — đây là một “recipe for success,” (bản dịch) «recipe cho success,» một DIY/craft “recipe,” một party-ideas roundup, một facial scrub → Recipe markup không phải hợp lệ. Google names “facial scrub” (bản dịch) «facial scrub» và “party ideas” as không hợp lệ dish names. không mark điều này lên as một Recipe.
- Có → continue.
2. Làm markup match Điều gì người dùng thực ra sees on trang?
- Không (times, ingredients, hoặc rating trong JSON-LD đó không phải on trang) → khắc phục đó đầu tiên; mismatch là nội dung-policy vấn đề đó có thể suppress kết quả ngay cả Khi syntax validates.
- Có → continue.
3. Làm bạn có name + image, plus được khuyến nghị đặt?
- chỉ
name+image→ nó validates, nhưng bạn’ll nhận thin card. ThêmaggregateRating, times (ISO 8601),recipeIngredient,recipeInstructions,recipeYield,nutrition.calories,recipeCategory/recipeCuisine. - đầy đủ được khuyến nghị đặt on single recipe trang → bạn’re eligible cho single recipe card.
4. Làm bạn muốn multi-recipe carousel/grid?
- Có, và của bạn recipes mỗi có của họ own trang → thêm
ItemListsummary trang ( roundup/category trang) whose JSON-LD lists, trong order, các URL của riêng lẻ recipe các trang đó mỗi carry đầy đủ Recipe markup. - Có, nhưng bạn present all recipes on một dài trang → sử dụng all-trong-một
ItemListtrang model thay vì: mỗiListItemcarries item own markup và points để anchor on đó giống nhau trang thay vì tách biệt URL. - Không → single recipe card từ step 3 là all bạn cần.
- Either way: theo-recipe markup alone sẽ không produce carousel — bạn cần một
của hai
ItemListtrang models.
5. Embedding cooking video?
- Thêm
videothuộc tính as đầy đủVideoObject(name,description,thumbnailUrl,uploadDate,contentUrl/embedUrl) — không bare URL — so nó có thể qualify cho video treatment alongside recipe card.
Rule của thumb: theo-recipe markup earns card; ItemList summary
trang earns carousel; và none của nó matters nếu trang không phải thực dish
matching visible nội dung.
Recipe schema myths và mistakes để tránh
Myth: “Adding Recipe schema guarantees a rich result.” (bản dịch) «Thêm Recipe schema bảo đảm một rich kết quả.» Không structured-dữ liệu loại bảo đảm display. Recipe markup làm đó trang eligible; đó trang vẫn có để là được lập chỉ mục, là một real dish, match đó visible nội dung, và có Google các hệ thống decide đó card là worth cho thấy. Hợp lệ ≠ displayed.
Lầm tưởng: “Any list-style content counts as a recipe.” (bản dịch) «Mọi nội dung dạng danh sách đều được coi là một công thức.» Sai. Đây là hành vi vi phạm chính sách nội dung vì mã Recipe chỉ dành cho món ăn thực tế. Google đưa ra phản ví dụ: “‘facial scrub’ or ‘party ideas’ are not valid names for a dish.” (bản dịch) «“Tẩy tế bào chết cho mặt” hay “ý tưởng cho bữa tiệc” không phải tên hợp lệ của một món ăn.» Một bài “công thức nâng cao năng suất”, hướng dẫn thủ công hoặc chất tẩy rửa tự làm không trở thành Recipe chỉ vì có danh sách các bước được đánh số.
Myth: “Individual recipe markup alone gets you a carousel.” (bản dịch) «Riêng lẻ recipe markup alone nhận bạn một carousel.»
Sai. Đó multi-recipe carousel/grid là một host-cấp độ feature đó requires an
ItemList trang — either một summary trang linking để tách biệt recipe các trang, hoặc an
all-trong-một trang linking để anchors on itself. Theo-recipe markup, không quan trọng cách
hoàn tất, earns nhiều nhất một single card. Này là đó hầu hết phổ biến “my markup is perfect
but no carousel” (bản dịch) «my markup là perfect nhưng không carousel» nguyên nhân.
Mistake: times as free text. cookTime: "20 minutes" fails. Durations là ISO
8601: PT20M, PT1H30M. Dates là ISO 8601 cũng: 2026-07-01. cũng pair prepTime
với cookTime (hoặc supply totalTime thay vì pair) thay vì mixing them
inconsistently.
Mistake: aggregateRating với không count. rating giá trị không có
ratingCount/reviewCount là không hợp lệ — và ratings phải là genuine reader
ratings thực ra shown on trang, không fabricated hoặc imported từ elsewhere. nếu bạn
hiển thị single review thay vì aggregate, nó cần named Person hoặc
Organization reviewer.
Mistake: nutrition.calories không có recipeYield. Google condition là
rõ ràng — nếu bạn đặt nutrition.calories, recipeYield phải là được định nghĩa cũng, since
calorie hình là theo serving.
Mistake: stopping tại hai bắt buộc properties. name + image validates nhưng
renders thin, unattractive kết quả. card mọi người nhấp là được xây dựng từ
được khuyến nghị đặt — times, ingredients, yield, rating, nutrition.
Mistake: bare video URL. video thuộc tính takes đầy đủ VideoObject
(name, description, thumbnailUrl, uploadDate, contentUrl/embedUrl), không
string. stubbed video object thường fails validation cho đó enhancement.
Mistake: markup đó không match trang. nếu ingredients, times, yield, hoặc rating trong của bạn JSON-LD disagree với Điều gì khách truy cập sees, Google xử lý nó as mismatch và có thể suppress kết quả ngay cả với hợp lệ syntax.
Minimal so với. rich Recipe JSON-LD
minimal hợp lệ recipe
chỉ hai bắt buộc properties. điều này validates — nhưng nó earns, tại best, thin card với không times, không rating, không ingredients:
{
"@context": "https://schema.org/",
"@type": "Recipe",
"name": "Weeknight Tomato Basil Pasta",
"image": "https://example.com/img/tomato-basil-pasta.jpg"
}giống nhau recipe, đã xong richly
đầy đủ được khuyến nghị đặt — times trong ISO 8601, ingredient và step lists, genuine
aggregate rating, nutrition paired với recipeYield, và nested VideoObject.
Đây là Điều gì xây dựng fuller card (images dưới đáp ứng Google 50 000-pixel,
16x9/4x3/1x1 hướng dẫn):
{
"@context": "https://schema.org/",
"@type": "Recipe",
"name": "Weeknight Tomato Basil Pasta",
"image": [
"https://example.com/img/pasta-1x1.jpg",
"https://example.com/img/pasta-4x3.jpg",
"https://example.com/img/pasta-16x9.jpg"
],
"author": { "@type": "Person", "name": "Patrick Stox" },
"datePublished": "2026-07-01",
"description": "A 25-minute tomato and basil pasta for busy weeknights.",
"recipeCategory": "main course",
"recipeCuisine": "Italian",
"keywords": "pasta, tomato, weeknight, vegetarian",
"prepTime": "PT10M",
"cookTime": "PT15M",
"totalTime": "PT25M",
"recipeYield": "4 servings",
"recipeIngredient": [
"1 lb spaghetti",
"2 cups cherry tomatoes, halved",
"1/2 cup fresh basil, torn",
"3 tbsp olive oil",
"2 cloves garlic, minced"
],
"recipeInstructions": [
{ "@type": "HowToStep", "text": "Boil the spaghetti until al dente." },
{ "@type": "HowToStep", "text": "Saute garlic and tomatoes in olive oil." },
{ "@type": "HowToStep", "text": "Toss with pasta and fresh basil; serve." }
],
"nutrition": {
"@type": "NutritionInformation",
"calories": "480 calories"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"ratingCount": "312"
},
"video": {
"@type": "VideoObject",
"name": "How to make Weeknight Tomato Basil Pasta",
"description": "A quick walkthrough of the 25-minute tomato basil pasta.",
"thumbnailUrl": "https://example.com/img/pasta-video-thumb.jpg",
"contentUrl": "https://example.com/video/tomato-basil-pasta.mp4",
"uploadDate": "2026-07-01"
}
}carousel cần ItemList trang — summary hoặc all-trong-một
để earn multi-recipe carousel, bạn thêm một của hai ItemList trang models.
Summary trang — một trang (chẳng hạn, “15 Weeknight Pastas” (bản dịch) «15 Weeknight Pastas») carries an ItemList đó
points, trong order, để tách biệt riêng lẻ recipe các trang — mỗi of mà có đầy đủ
Recipe markup như đó một trên:
{
"@context": "https://schema.org/",
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"url": "https://example.com/recipes/tomato-basil-pasta"
},
{
"@type": "ListItem",
"position": 2,
"url": "https://example.com/recipes/garlic-butter-linguine"
}
]
}All-trong-một trang — single trang holds mỗi recipe đầy đủ markup itself và
không link out; mỗi ListItem carries item với recipe own dữ liệu và
url đó anchor on đó giống nhau trang:
{
"@context": "https://schema.org/",
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "Recipe",
"name": "Weeknight Tomato Basil Pasta",
"url": "https://example.com/recipes/roundup#tomato-basil-pasta"
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "Recipe",
"name": "Garlic Butter Linguine",
"url": "https://example.com/recipes/roundup#garlic-butter-linguine"
}
}
]
}Either model supplies sequence Google cần; không có một của them, bạn nhận single cards, không bao giờ carousel.
phổ biến Rich Kết quả Kiểm thử failures → các cách sửa
| Symptom / lỗi | có khả năng nguyên nhân | khắc phục |
|---|---|---|
| Duration trường rejected | cookTime: "20 minutes" | sử dụng ISO 8601: "PT20M" |
| Không hợp lệ date | Free-text date | ISO 8601 date: "2026-07-01" |
aggregateRating không hợp lệ | Không count | Thêm ratingCount / reviewCount |
| Thin card, không times/rating | chỉ name + image | Thêm được khuyến nghị properties |
| không hợp lệ recipe | Non-dish nội dung (“party ideas”) | không sử dụng Recipe markup |
| Không carousel despite good markup | Không ItemList trang | Thêm summary trang hoặc all-trong-một trang |
video enhancement fails | Bare URL trong video | sử dụng đầy đủ VideoObject |
| Nutrition/calories trường đã bỏ qua | nutrition.calories đặt không có recipeYield | Thêm recipeYield alongside nutrition.calories |
Tự kiểm tra: Recipe Schema
Five nhanh các câu hỏi on schema.org/Recipe, bắt buộc so với. được khuyến nghị split, carousel mechanics, và nội dung policy. Pick câu trả lời cho mỗi, sau đó kiểm tra.
các tài nguyên worth của bạn time
My writing on điều này topic
I haven’t published standalone Recipe schema hướng dẫn của my own — so thay vì point bạn tại điều gì đó không exist, honest move là để gửi bạn để chính sources dưới và để related structured-dữ liệu hoạt động on điều này trang web. cho rộng hơn vocabulary và nơi Recipe fits, see Schema Markup và Dữ liệu có cấu trúc hubs; cho AI angle, Schema Markup cho AI.
từ khoảng ngành
- Recipe dữ liệu có cấu trúc (Google Search Central) — có thẩm quyền reference cho bắt buộc/được khuyến nghị properties, nội dung policy, và nutrition/time/rating các trường.
- Tìm kiếm gallery / recipe host carousel (Google) — nơi
ItemListsummary-trang pattern behind carousel là được ghi lại. - VideoObject dữ liệu có cấu trúc (Google) — requirements cho
VideoObjectđó nests trong recipevideothuộc tính. - Rich Kết quả Kiểm thử (Google) — validate markup và kiểm tra eligibility.
Yoast, Semrush, và AIOSEO mỗi cover Recipe reasonably accurately tại surface cấp độ
— họ’ll tell bạn nó earns stars, cook time, và image. nơi họ dừng ngắn là
implementation depth: ItemList carousel mechanics, nutrition properties,
ISO 8601 duration format, và phổ biến validation failures. Đây là một
CreativeWork subtype nơi đối thủ khoảng trống không phải độ chính xác — nó đó Recipe nhận
một paragraph among six khác types, với none của carousel-eligibility hoặc
khắc phục sự cố detail trên. đó differentiator ở đây.
Nhật ký thay đổi
Đã cập nhật 22 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 18 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.