Domain 53 / 225
Recipe 構造化データはレシピ画像 + 評価 + 調理時間でリッチリザルトに乗る
Recipe schema の要点
Recipe 構造化データはレシピサイトでリッチリザルト + Google Images + Recipe Carousel に乗るための実装。必須プロパティは name / image / recipeIngredient / recipeInstructions など。ItemList と組み合わせると Recipe Host Carousel(同サイトの複数レシピ)が出る
なぜこれを学ぶか
Recipe 構造化データは レシピ系メディアで Google 検索 + 画像検索 + Discover 全方位の流入を取る必須施策。 リッチリザルトに調理時間・評価・栄養情報が表示され、CTR が他形式より大幅に高い。
レシピサイト・料理ブログ・食品メーカーのオウンドメディアで必須。
学ばないと起きること
| よくある事故 | 被害 |
|---|---|
| Recipe 構造化データなしで公開 | リッチリザルト・画像検索バッジに乗らない |
| ItemList を使わない | Recipe Host Carousel に出ない、関連レシピで流入を取り逃す |
| recipeInstructions を 1 つの長い文字列で書く | 番号付きステップに認識されない |
| nutrition を曖昧に書く | 栄養情報リッチリザルトに対応しない |
| 画像が低解像度 / 1 比率のみ | サムネイル選択肢が狭い |
学ぶメリット
- レシピリッチリザルトで CTR を大幅改善
- Recipe Host Carousel で同サイトの関連レシピへ流入
- Google Images の Recipe バッジ獲得
- 商談で「ItemList でカルーセル獲得」を即答できる
仕組み
必須プロパティ
| プロパティ | 内容 |
|---|---|
name | レシピ名 |
image | レシピ画像(複数比率推奨) |
recipeIngredient | 材料リスト |
recipeInstructions | 調理手順(HowToStep の配列推奨) |
推奨プロパティ
| プロパティ | 内容 |
|---|---|
author | 作者 |
datePublished | 公開日 |
description | 説明 |
prepTime / cookTime / totalTime | 準備 / 調理 / 合計時間(ISO 8601) |
recipeYield | 何人前 |
recipeCategory | カテゴリ(メイン / デザート 等) |
recipeCuisine | 料理ジャンル |
nutrition | 栄養情報(カロリーなど) |
aggregateRating | レビュー集計 |
video | レシピ動画 |
keywords | キーワード |
実装例
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Recipe",
"name": "ノンアルコール ピニャコラーダ",
"image": [
"https://example.com/recipe-1x1.jpg",
"https://example.com/recipe-4x3.jpg",
"https://example.com/recipe-16x9.jpg"
],
"author": {"@type": "Person", "name": "Mary Stone"},
"datePublished": "2024-03-10",
"description": "暑い日にぴったりのフレッシュなドリンク",
"recipeCuisine": "American",
"prepTime": "PT1M",
"cookTime": "PT2M",
"totalTime": "PT3M",
"recipeYield": "4 servings",
"recipeCategory": "Drink",
"nutrition": {
"@type": "NutritionInformation",
"calories": "120 calories"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 5,
"ratingCount": 18
},
"recipeIngredient": [
"パイナップルジュース 400ml",
"ココナッツクリーム 100ml",
"氷"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"name": "ブレンド",
"text": "パイナップルジュースとココナッツクリームをブレンダーでなめらかに",
"url": "https://example.com/recipe#step1",
"image": "https://example.com/step1.jpg"
},
{
"@type": "HowToStep",
"name": "氷を入れる",
"text": "グラスに氷を入れる",
"url": "https://example.com/recipe#step2"
},
{
"@type": "HowToStep",
"name": "注ぐ",
"text": "氷の上からブレンドした液体を注ぐ",
"url": "https://example.com/recipe#step3"
}
],
"video": {
"@type": "VideoObject",
"name": "ノンアルコール ピニャコラーダの作り方",
"thumbnailUrl": ["https://example.com/video-thumb.jpg"],
"contentUrl": "https://example.com/video.mp4",
"uploadDate": "2024-02-05T08:00:00+08:00",
"duration": "PT1M33S"
}
}
</script>
キー概念
時間プロパティ(ISO 8601 形式)
| 形式 | 例 |
|---|---|
PT15M | 15 分 |
PT1H30M | 1 時間 30 分 |
PT2H | 2 時間 |
ISO 8601 の Duration 形式。H = 時間、M = 分、S = 秒。
Recipe Host Carousel(複数レシピのカルーセル)
サイト内の関連レシピをカルーセル形式で表示する機能。 ItemList 構造化データを別途実装:
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"url": "https://example.com/recipe-1"
},
{
"@type": "ListItem",
"position": 2,
"url": "https://example.com/recipe-2"
}
]
}
各リスト URL に Recipe 構造化データが必要。
nutrition(栄養情報)
"nutrition": {
"@type": "NutritionInformation",
"calories": "270 calories",
"carbohydrateContent": "38 g",
"proteinContent": "5 g",
"fatContent": "12 g",
"saturatedFatContent": "3 g",
"fiberContent": "5 g"
}
主要栄養素を入れると栄養情報リッチリザルト対応。
aggregateRating の注意
Recipe でレビュー星を表示するには aggregateRating + 実レビュー(ページ内表示)両方が必要。 偽レビューは構造化データ手動対策。
よくある誤解
| よくある誤解 | 実際のところ | 出典 |
|---|---|---|
| recipeInstructions を 1 文字列で書ける | HowToStep の配列が推奨、番号付きステップに認識される | Recipe 構造化データ |
| Recipe Host Carousel は自動生成 | ItemList 構造化データを別途実装する必要 | 同上 |
| 時間は分単位の数字で書く | ISO 8601 Duration 形式(PT15M / PT1H30M)必須 | 同上 |
| 動画なしでもレシピ動画リッチリザルトに出る | video プロパティ必須、別途 VideoObject 構造化データも | 同上 |
| nutrition は無料テキストで OK | NutritionInformation オブジェクトで構造化、カロリーなど主要栄養素で | 同上 |
| 画像 1 枚で十分 | 複数比率(1:1 / 4:3 / 16:9)推奨、デバイス別最適化 | 同上 |
| HowTo 構造化データが必要 | Recipe 内に HowToStep を入れれば OK、HowTo は調理以外の手順用 | HowTo 構造化データ |
| aggregateRating の評価は自由に書ける | 実レビューがページ内に表示されている必要、偽は手動対策 | 構造化データ品質ガイドライン |
実務での適用
レシピサイト立ち上げ時のチェックリスト
- CMS テンプレートに Recipe 構造化データを組み込み
- 各レシピで必須プロパティ(name / image / recipeIngredient / recipeInstructions)を完備
- recipeInstructions は HowToStep 配列で実装
- 画像は複数比率で提供
- 時間は ISO 8601 Duration で
- 動画があれば video プロパティ + VideoObject 構造化データ
- カテゴリトップページに ItemList で関連レシピをカルーセル化
- Search Console「拡張」レポートで監視
Recipe Host Carousel 獲得の設計
- カテゴリページ(例:
/recipes/dessert/)に ItemList 構造化データ - 各レシピ URL に Recipe 構造化データ
- リッチリザルトテストでカルーセル プレビュー確認
トラブル別の対処
| 症状 | 確認すべきこと |
|---|---|
| Recipe リッチリザルトに調理時間が出ない | prepTime / cookTime / totalTime が ISO 8601 形式か |
| Recipe Host Carousel に出ない | ItemList 構造化データの実装、各レシピに Recipe 構造化データ |
| Search Console「拡張」で Recipe エラー多発 | recipeIngredient / recipeInstructions の必須欠落 |
| 動画が動画リッチリザルトと連動しない | video プロパティ + VideoObject 構造化データの整合 |
| 画像が小さく表示される | 複数比率(1:1 / 4:3 / 16:9)で再提供 |
公式ソース
自己テスト
Q1. Recipe 構造化データの必須プロパティは?
name / image / recipeIngredient / recipeInstructions
Q2. recipeInstructions の正しい実装方法は?
HowToStep の配列。各ステップに name / text / url / image を含める
Q3. 時間プロパティ(prepTime / cookTime)の形式は?
ISO 8601 Duration 形式。例: 15 分なら PT15M、1 時間 30 分なら PT1H30M
Q4. Recipe Host Carousel を獲得するには?
カテゴリページに ItemList 構造化データを実装し、各レシピ URL に Recipe 構造化データ
Q5. nutrition の正しい書き方は?
NutritionInformation オブジェクトで構造化。calories / carbohydrateContent / proteinContent などの主要栄養素を含める
Q6. レシピ動画リッチリザルトに必要な構造化データは?
Recipe の video プロパティ + 別途 VideoObject 構造化データ
Q7. 画像は何枚提供するのが推奨?
複数比率(1:1 / 4:3 / 16:9)。デバイス別に最適化される
Q8. aggregateRating を書く際のルール?
ページ内に対応する実レビューが表示されている必要。偽レビューは構造化データ手動対策
これらの内容を採点付きで挑戦したい場合は、本ドメインのプロ試験で 5 問形式で確認できる。