Table of contents
When users ask AI 'how to make pho bo at home' or 'authentic bun bo Hue recipe', AI looks for sources with Recipe schema to provide structured answers. Without schema — AI guesses. With a complete Recipe schema — AI cites exact ingredients, cooking time, and steps.
Why Recipe schema matters for F&B
| Without Recipe Schema | With Complete Recipe Schema |
|---|---|
| Just a regular text post | Appears in Google Recipe Carousel |
| AI must parse ingredients from prose | AI knows exact ingredients and quantities |
| No rich snippet (image + rating + time) | Rich results with large image on SERP |
| Not aggregated in meal planning tools | Can be indexed into AI cooking assistants |
| Competes evenly with all other posts | Filtered into the trusted recipe sources group |
Complete JSON-LD Recipe
{
"@context": "https://schema.org",
"@type": "Recipe",
"@id": "https://example.vn/vi/blog/pho-bo-truyen-thong#recipe",
"name": "Phở Bò Truyền Thống Nam Định",
"description": "Công thức phở bò truyền thống với nước dùng trong, ngọt tự nhiên từ xương ống bò hầm 6-8 tiếng cùng các loại gia vị đặc trưng. Phù hợp nấu cho 4-6 người.",
"image": [
"https://example.vn/images/pho-bo-truyen-thong-4x3.jpg",
"https://example.vn/images/pho-bo-truyen-thong-16x9.jpg"
],
"author": {
"@type": "Person",
"@id": "https://example.vn/tac-gia/nguyen-thi-mai",
"name": "Nguyễn Thị Mai"
},
"datePublished": "2026-08-11",
"dateModified": "2026-08-11",
"prepTime": "PT30M",
"cookTime": "PT7H",
"totalTime": "PT7H30M",
"recipeYield": "4-6 bát",
"recipeCategory": "Món chính",
"recipeCuisine": "Việt Nam",
"keywords": "phở bò, phở bò truyền thống, phở nam định, cách nấu phở",
"recipeIngredient": [
"1.5 kg xương ống bò",
"500g thịt bò bắp",
"300g thịt bò tái",
"200g bánh phở tươi (mỗi phần)",
"2 củ hành tím lớn (nướng)",
"1 củ gừng lớn (nướng)",
"5g hoa hồi",
"3g quế",
"3g đinh hương",
"2g thảo quả",
"2 muỗng canh nước mắm",
"1 muỗng canh muối",
"1 muỗng canh đường phèn",
"Hành lá, ngò gai, rau giá, chanh để ăn kèm"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"name": "Sơ chế xương",
"text": "Rửa xương bò sạch với nước muối. Luộc xương trong nước sôi 5 phút, đổ nước đi để loại bỏ tạp chất và mùi hôi. Rửa lại xương với nước lạnh.",
"url": "https://example.vn/vi/blog/pho-bo-truyen-thong#buoc-1"
},
{
"@type": "HowToStep",
"name": "Nướng hành gừng",
"text": "Nướng hành tím và gừng trực tiếp trên bếp gas hoặc trong lò ở 220°C khoảng 15 phút cho đến khi cháy xém vỏ ngoài. Cạo bỏ phần cháy, rửa sạch. Bước này tạo màu vàng đẹp và mùi thơm đặc trưng của nước dùng phở.",
"url": "https://example.vn/vi/blog/pho-bo-truyen-thong#buoc-2"
},
{
"@type": "HowToStep",
"name": "Rang gia vị",
"text": "Rang khô hoa hồi, quế, đinh hương, thảo quả trong chảo không dầu ở lửa nhỏ 3-5 phút đến khi tỏa mùi thơm. Không để cháy. Gói vào túi lọc hoặc miếng vải thưa.",
"url": "https://example.vn/vi/blog/pho-bo-truyen-thong#buoc-3"
},
{
"@type": "HowToStep",
"name": "Hầm nước dùng",
"text": "Cho xương vào nồi lớn cùng 3-4 lít nước lạnh. Đun lửa lớn đến khi sôi, hớt bọt. Thêm hành gừng nướng và gói gia vị. Hạ lửa nhỏ, hầm 6-8 tiếng. Lọc qua rây mịn để được nước dùng trong. Nêm nước mắm, muối, đường phèn cho vừa vị.",
"url": "https://example.vn/vi/blog/pho-bo-truyen-thong#buoc-4"
},
{
"@type": "HowToStep",
"name": "Trình bày và phục vụ",
"text": "Trụng bánh phở trong nước sôi 30 giây, cho vào bát. Xếp thịt bò bắp thái mỏng và thịt tái lên trên. Chan nước dùng sôi. Ăn kèm hành lá, ngò gai, rau giá, chanh và tương ớt.",
"url": "https://example.vn/vi/blog/pho-bo-truyen-thong#buoc-5"
}
],
"nutrition": {
"@type": "NutritionInformation",
"calories": "450 kcal",
"proteinContent": "35g",
"fatContent": "12g",
"carbohydrateContent": "48g",
"sodiumContent": "1200mg",
"servingSize": "1 bát"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5",
"worstRating": "1"
},
"video": {
"@type": "VideoObject",
"name": "Cách nấu phở bò truyền thống",
"description": "Hướng dẫn nấu phở bò chuẩn vị miền Bắc từng bước chi tiết",
"thumbnailUrl": "https://example.vn/images/video-pho-thumb.jpg",
"uploadDate": "2026-08-11",
"duration": "PT15M30S",
"embedUrl": "https://www.youtube.com/embed/EXAMPLE_ID"
}
}
Recipe schema for restaurants
Restaurants declare Recipe for signature dishes, combined with Restaurant/FoodEstablishment schema:
[
{
"@context": "https://schema.org",
"@type": "Restaurant",
"@id": "https://example-restaurant.vn",
"name": "Phở Gia Truyền Bà Năm",
"servesCuisine": ["Việt Nam", "Phở"],
"hasMenu": "https://example-restaurant.vn/menu",
"menu": "https://example-restaurant.vn/menu",
"address": {
"@type": "PostalAddress",
"streetAddress": "25 Lý Quốc Sư",
"addressLocality": "Hoàn Kiếm",
"addressRegion": "Hà Nội",
"addressCountry": "VN"
}
},
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "Phở Bò Tái Lăn — Công Thức Gia Truyền",
"description": "Món phở đặc trưng của nhà hàng với thịt bò tái lăn thơm mềm, nước dùng hầm 10 tiếng.",
"image": "https://example-restaurant.vn/images/pho-bo-tai-lan.jpg",
"author": {
"@type": "Organization",
"@id": "https://example-restaurant.vn",
"name": "Phở Gia Truyền Bà Năm"
},
"recipeCuisine": "Việt Nam",
"recipeCategory": "Phở",
"keywords": "phở bò tái lăn, phở hà nội, phở bà năm"
}
]
Common Recipe schema errors
| Error | Consequence | Fix |
|---|---|---|
| Image too small or wrong ratio | Doesn't appear in Recipe Carousel | Minimum 1200x900px, provide both 4:3 and 16:9 |
| recipeInstructions as plain text | Google can't parse the steps | Use HowToStep array instead of a string |
| Wrong time format | Rich results test reports error | Use ISO 8601: PT1H30M not "1h30" |
| Self-rating 5 stars | Risk of Google penalty | Only use AggregateRating when real user ratings exist |
| Missing author | Doesn't qualify for rich results | Add Person or Organization author |
| recipeYield is a number, not text | Context unclear | Use "4–6 servings" instead of the number 4 |
Recipe schema checklist
-
name— clear dish name with natural keywords -
image— 1200x900px and/or 1200x675px, stable URL -
author— Person or Organization (required) -
recipeIngredient— string array, one element per ingredient with specific quantities -
recipeInstructions— HowToStep array with name, text, url for each step -
totalTimein ISO 8601 duration format -
recipeYield— "4–6 people" or "12 pieces" -
aggregateRating— only add when real user ratings exist -
nutrition— calories and macros if accurate data is available -
video— include VideoObject if a how-to video exists
Recipe schema is one of the few schemas that directly creates beautiful rich results on Google SERP — large images, star ratings, cooking time, and serving size right on the results page. For AI search, Recipe schema helps AI cite your recipe instead of guessing from prose.
Frequently asked questions
Is Recipe schema only for food blogs, or do restaurants need it too?
Both — but for different purposes. Food blogs: Recipe schema helps appear in Google Recipe Carousel (showing image + name + time + rating directly on SERP) and gets cited by AI when users ask for recipes. Restaurants: Recipe schema for signature dishes helps AI understand what the restaurant specializes in — supporting queries like 'good beef lúc lắc restaurant in HCM'. Restaurants should combine Recipe schema + Restaurant/FoodEstablishment schema + hasMenu.
Which fields are required in Recipe schema?
Google requires a minimum of 3 fields to qualify for Recipe rich results: (1) name — dish name, (2) image — high-quality photo (at least 1200x900px, 4:3 or 16:9 ratio), (3) author — who wrote or shared the recipe. Recommended additional fields: recipeIngredient (ingredient list), recipeInstructions (steps), totalTime or cookTime, recipeYield (number of servings), aggregateRating. Missing high-quality images is the number one reason Recipes don't get rich results.
Can a single post have multiple Recipe schemas?
Yes — if the post covers multiple recipes. Example: 'A trio of traditional dipping sauces' → 3 separate Recipe schemas on the same page. Place each Recipe in a separate JSON-LD script block or in an array. Google displays all of them in the Recipe Carousel. AI can cite each recipe individually when asked about a specific dish.
What image standards must Recipe photos meet?
Google is strict: (1) Minimum 1200x900px (4:3 ratio) OR 1200x675px (16:9 ratio) — providing both in the image array is recommended, (2) The image must show the actual dish (not a placeholder or icon), (3) Image URL must be stable — don't change it after indexing, (4) Googlebot must be able to crawl it (not blocked by robots.txt or auth). Beautiful images with natural lighting help CTR in Recipe Carousel.
Is NutritionInformation necessary?
Not required, but very valuable. NutritionInformation (calories, protein, fat, carbohydrate) appears in rich results and gets cited by AI when users ask about nutritional value. Especially important if the blog focuses on healthy eating, dieting, or fitness. For calculating nutrition, use USDA FoodData Central or apps like Cronometer. Doesn't need to be 100% accurate, but shouldn't be significantly off.
AEO Saigon
An Answer Engine Optimization agency in Ho Chi Minh City — helping business websites get cited by AI. About AEO Saigon →
Want your website to be cited by AI like this?
Free Audit