Panduan Recipe Schema

cara implement schema.org/Recipe markup untuk Google's recipe rich hasil — dua diperlukan properties vs. recommended set itu membangun fuller card, mengapa carousel perlu sebuah ItemList summary atau semua-di-satu halaman, conditional nutrition/time/rating fields, video property, dan konten-policy aturan itu hanya nyata dishes qualify.

Pertama kali diterbitkan: 1 Jul 2026 · Terakhir diperbarui: 3 Agu 2026 · Lanjutan

Recipe schema (schema.org/Recipe) adalah data terstruktur itu tells mesin pencari sebuah halaman's dish name, photo, cook time, ratings, ingredients, dan nutrition, so halaman dapat earn Google's recipe rich hasil — sebuah visual card dengan sebuah star rating dan cook time itu dapat muncul sebagai sebuah carousel atau grid dan dengan recipe badges di Google Images. hanya dua properties adalah strictly diperlukan — image dan name — tetapi fuller card adalah populated dari recommended set: aggregateRating, author, cookTime, prepTime, totalTime, recipeYield, recipeIngredient, recipeInstructions, recipeCategory, recipeCuisine, keywords, datePublished, nutrition.calories, dan video. Dua hal trip orang up: multi-recipe carousel adalah sebuah host-tingkat fitur itu perlu sebuah ItemList halaman (either sebuah summary halaman linking untuk terpisah recipe halaman, atau sebuah semua-di-satu halaman linking untuk anchors pada itself) — individual recipe markup alone earns di sebagian besar sebuah single card, tidak sebuah carousel — dan Recipe markup adalah hanya valid untuk sebenarnya dishes, dengan Google's own counterexamples menjadi itu 'facial scrub' dan 'party ideas' adalah tidak valid recipe names. Along dengan VideoObject, ini adalah satu dari dua structured-data jenis di CreativeWork family itu produces sebuah genuine, terlihat rich hasil — Google tidak publish peringkat, CTR, atau traffic angka untuk ini, tetapi visual upgrade adalah nyata ketika ini menampilkan. Valid markup hanya membuat Anda eligible; Google masih decides apakah untuk tampilkan hasil.

TL;DR — schema.org/Recipe markup (biasanya JSON-LD) membuat sebuah recipe halaman eligible untuk Google’s recipe rich hasil — sebuah visual card (photo, star rating, cook time, calories) itu dapat muncul sebagai sebuah carousel/grid pada SERP dan dengan recipe badges di Google Images. hanya image dan name adalah strictly diperlukan; card adalah benar-benar dibangun dari recommended set (aggregateRating, author, cookTime, prepTime, totalTime, recipeYield, recipeIngredient, recipeInstructions, recipeCategory, recipeCuisine, keywords, datePublished, nutrition.calories, video). Dua implementation facts sebagian besar round-ups skip: multi-recipe carousel adalah sebuah host-tingkat fitur itu memerlukan sebuah ItemList halaman — either sebuah summary halaman linking untuk terpisah recipe halaman, atau sebuah semua-di-satu halaman linking untuk anchors pada itself — per-recipe markup alone earns sebuah single card, tidak pernah sebuah carousel — dan Recipe markup adalah hanya valid untuk sebenarnya dishes (“facial scrub” (terjemahan) “facial scrub” dan “party ideas” (terjemahan) “party ideas” adalah Google’s own counterexamples). Times gunakan ISO 8601 durations (PT20M), dan paling umum alasan sebuah valid recipe tidak tampilkan adalah sebuah konten-policy mismatch antara markup dan terlihat halaman. Along dengan VideoObject, ini adalah satu dari dua structured-data jenis di CreativeWork cluster itu produces sebuah genuine, terlihat rich hasil — tidak sebuah terdokumentasi peringkat, CTR, atau traffic factor, hanya sebuah nyata visual upgrade ketika ditampilkan.

Bukti untuk klaim ini Schema.org Recipe describes a recipe and its ingredients, instructions, timing, nutrition, and related metadata. Cakupan: Schema.org Recipe vocabulary. Tingkat keyakinan: tinggi · Diverifikasi: Schema.org: Recipe Bukti untuk klaim ini Google's Recipe feature requires name and image and documents additional recommended properties; complete valid markup earns eligibility, not guaranteed display or ranking. Cakupan: Current Google Recipe structured-data requirements. Tingkat keyakinan: tinggi · Diverifikasi: Google Search Central: Recipe structured data

Apa recipe rich hasil looks like — dan bagaimana ini adalah dibangun

Google renders Recipe markup sebagai sebuah visual card: image thumbnail, name, aggregateRating stars dan count, dan cook time (dari totalTime atau cookTime). pada banyak recipe kueri itu cards adalah grouped ke sebuah carousel atau grid di top dari hasil, dan marked-up recipes juga earn recipe badges di Google Images, yang adalah sebuah bermakna penemuan surface untuk food konten.

Google’s framing dari seluruh poin: “Help users temukan Anda recipe konten oleh telling Google tentang Anda recipe dengan structured data.” (terjemahan) “Help pengguna temukan Anda recipe konten oleh telling Google tentang Anda recipe dengan data terstruktur.” itu’s mental model — Anda’re tidak asking untuk sebuah peringkat boost, Anda’re membuat konten machine-readable cukup untuk qualify untuk sebuah spesifik, terlihat fitur.

ini adalah property table itu penting. Google hanya marks dua properties sebagai diperlukan, yang adalah genuinely misleading jika Anda berhenti reading di sana — sebuah recipe dengan hanya name dan image validates tetapi produces sebuah thin, unattractive hasil.

diperlukan

PropertyNotes
namedish name. harus menjadi sebuah nyata dish (konten policy di bawah).
imagePhoto dari finished dish. harus menjadi dapat di-crawl, dapat diindeks, di sebuah didukung format, dan representative dari dish. Google recommends multiple images di 16x9, 4x3, dan 1x1 ratios, setiap setidaknya 50 000 pixels — ada Tidak terpisah 1,200px-wide requirement beberapa guides cite.

Recommended (ini adalah apa Google menggunakan untuk bangun fuller card, ketika ini decides untuk tampilkan satu — populating them tidak force display)

«| Property | What it drives | | --- | --- | | aggregateRating | The star rating + count on the card. Follows Google’s review-snippet guidelines; if you show a single review rather than an aggregate, the reviewer must be a named person or organization. | | author | Attribution. | | datePublished | Freshness signal; ISO 8601 date. | | description | Summary text. | | keywords | Free-text tags (e.g., “winter, comfort food”). Not the same as recipeCategory. | | nutrition.calories | Feeds the calorie figure Google may show. Conditional: if you set nutrition.calories, recipeYield must also be defined. | | prepTime | Prep duration, ISO 8601 (PT15M). Google’s guidance: always pair it with cookTime. | | cookTime | Cook duration, ISO 8601 (PT1H). Pair it with prepTime. | | totalTime | Total duration. Use totalTime, or the prepTime + cookTime combination — Google accepts either. | | recipeCategory | Meal type — “appetizer”, “dessert”, “main course”. | | recipeCuisine | Regional cuisine — “Mediterranean”, “Thai”. | | recipeIngredient | One entry per ingredient, including quantity (“2 cups flour”). | | recipeInstructions | The steps — ideally HowToStep objects, optionally grouped into HowToSection. | | recipeYield | Servings or amount produced. Required if you supply any per-serving nutrition info. | | video | A VideoObject for an embedded cooking video — follow VideoObject’s own required/recommended fields (see below). | » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian tiga puluh dua, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

totalTime dan prepTime/cookTime pair adalah keduanya acceptable untuk Google; supply totalTime secara langsung ketika Anda dapat, since ini adalah single duration sebagian besar mungkin untuk render pada card.

Times gunakan ISO 8601 durations, tidak free text

sebuah recurring validation failure: cookTime: "20 minutes" adalah tidak valid. Durations gunakan ISO 8601 format — PT (period dari time) plus nilai — so 20 minutes adalah PT20M, sebuah hour dan sebuah half adalah PT1H30M. Dates like datePublished gunakan ISO 8601 dates (2026-07-01). Getting ini formats wrong adalah satu dari paling umum alasan sebuah recipe fails Rich hasil Test.

ini adalah implementation detail generic “types dari schema” (terjemahan) “jenis dari schema” listicles hampir selalu skip. ada dua berbeda hal di sini:

  • ** single recipe card** — earned oleh Recipe markup pada individual recipe halaman.
  • ** recipe carousel/grid** — sebuah host carousel, yang adalah sebuah terpisah fitur.

untuk menjadi eligible untuk multi-recipe carousel, Anda tambahkan sebuah ItemList halaman — dan Google’s host-carousel documentation mendukung dua berbeda halaman models, tidak hanya satu:

  • Summary halaman — sebuah halaman (sebuah category atau roundup halaman — “15 Weeknight Pastas” (terjemahan) “15 Weeknight Pastas”) dengan sebuah pendek deskripsi dari setiap item, di mana setiap ListItem poin, di order, untuk URL dari sebuah terpisah recipe detail halaman itu itself memiliki penuh Recipe markup. ini adalah pattern sebagian besar guides deskripsikan.
  • semua-di-satu halaman — sebuah single halaman itu berisi penuh markup untuk setiap item itself dan tidak tautan out untuk terpisah detail halaman; setiap ListItem carries sebuah item object (dengan name dan sebuah url itu’s sebuah anchor pada sama halaman) rather daripada sebuah tautan untuk elsewhere.

Either model supplies sequence Google perlu untuk carousel; yang satu fits bergantung pada apakah Anda recipes sudah langsung pada mereka own URLs (summary halaman) atau Anda’re presenting them semua pada satu panjang halaman (semua-di-satu halaman).

practical consequence: Anda cannot mendapatkan sebuah carousel dari satu ordinary recipe halaman. sebuah single recipe halaman dengan excellent markup earns sebuah single card. jika Anda ingin carousel, Anda perlu satu dari dua ItemList halaman models di atas, layered pada top dari (atau containing) penuh Recipe markup. Missing ini adalah angka-satu alasan orang say “my markup adalah perfect tetapi I’m tidak getting a carousel.” (terjemahan) “my markup adalah perfect tetapi I’m tidak getting sebuah carousel.”

nutrition panel

«nutrition is a NutritionInformation object, and nutrition.calories is the field Google calls out by name — it feeds the calorie figure Google may show in the rich result. That’s a data requirement, not a promise of a distinct expandable nutrition panel every time; Google’s docs describe the field, not a guaranteed UI element. There’s also a condition attached: if you set nutrition.calories, recipeYield must be defined too, since calories are stated per serving and Google needs the serving count to make sense of the number. You can add fatContent, proteinContent, carbohydrateContent, sodiumContent, and the rest, but calories (paired with recipeYield) is the combination that most reliably surfaces. Values are strings with units (“240 calories”, “9 g”). It’s a small block that adds a visible, differentiating detail to your card, so it’s worth populating for any recipe where you can compute it honestly.

Bukti untuk klaim ini If nutrition.calories is supplied, Google requires recipeYield to identify the number of servings. Current documentation describes a data condition; it does not promise a distinct expandable nutrition panel in every result. Cakupan: web Tingkat keyakinan: tinggi · Diverifikasi: Recipe structured data

» (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian empat puluh empat, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

Video: di mana Recipe memenuhi VideoObject

banyak recipe halaman embed sebuah cooking video, dan video property adalah di mana Recipe dan VideoObject — dua CreativeWork jenis itu produce genuine, terlihat rich hasil — intersect. Google’s guidance adalah jelas: video takes sebuah penuh VideoObject dan harus ikuti itu fitur’s own diperlukan dan recommended properties (name, description, thumbnailUrl, uploadDate, dan sebuah contentUrl atau embedUrl) — supplying sebuah bare video URL adalah tidak yang sama sebagai terdokumentasi subprofile. Selesai right, recipe dapat qualify untuk video treatment dan recipe card, dan video becomes eligible untuk -nya own surfaces. per-field requirements untuk video langsung dengan VideoObject topic — yang sama object nests di dalam sebuah recipe, so ini adalah worth getting itu markup right alih-alih stubbing di sebuah bare video: {}.

konten policy: hanya nyata dishes, matching terlihat halaman

ini adalah paling umum alasan jika tidak-valid markup tidak display. Recipe markup adalah scoped untuk sebenarnya food. Google adalah blunt tentang ini: “Gunakan Recipe structured data untuk konten tentang preparing a particular dish. Misalnya, ‘facial scrub’ atau ‘party ideas’ adalah tidak valid names untuk a dish.” (terjemahan) “gunakan Recipe data terstruktur untuk konten tentang preparing sebuah particular dish. misalnya, ‘facial scrub’ atau ‘party ideas’ adalah tidak valid names untuk sebuah dish.” sebuah DIY cleaning “recipe,” (terjemahan) “recipe,” sebuah “recipe for success” (terjemahan) “recipe untuk success” listicle, atau sebuah roundup dari party ideas dressed up sebagai Recipe markup adalah sebuah policy violation — markup dapat lulus syntactic validator dan masih tidak pernah earn sebuah card, atau mendapatkan manually actioned.

kedua half dari yang sama principle: ** markup harus reflect terlihat halaman.** jika Anda JSON-LD lists ingredients, times, dan sebuah rating itu tidak sebenarnya pada halaman sebuah pengguna sees, itu’s sebuah mismatch Google memperlakukan sebagai sebuah spam sinyal. Mark up apa genuinely di sana.

Mengapa Anda valid recipe masih menampilkan Tidak rich hasil

Eligibility adalah tidak display. biasa chain: halaman memiliki untuk menjadi terindeks, markup memiliki untuk menjadi valid, konten memiliki untuk menjadi sebuah nyata dish ditampilkan pada halaman, dan Google’s sistem masih memiliki untuk decide ini adalah worth menunjukkan — yang sama eligibility-tidak-jaminan aturan itu governs setiap structured-data jenis. jika Anda’ve cleared valid markup dan konten policy dan masih see Tidak card, umum culprits adalah: times di free text alih-alih ISO 8601, sebuah aggregateRating dengan Tidak count, sebuah image itu tidak memenuhi size/aspect guidance, atau expecting sebuah carousel tanpa sebuah ItemList halaman.

untuk di mana Recipe sits di wider structured-data picture, see lebih luas Schema Markup dan data terstruktur hubs ini artikel nests di bawah.

Tambahkan catatan pakar

Sematkan kutipan pakar

Orang baru? Buat profilnya yang belum diklaim di /admin/experts/ → Sematkan kutipan pakar terlebih dahulu.