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 形式)

形式
PT15M15 分
PT1H30M1 時間 30 分
PT2H2 時間

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 は無料テキストで OKNutritionInformation オブジェクトで構造化、カロリーなど主要栄養素で同上
画像 1 枚で十分複数比率(1:1 / 4:3 / 16:9)推奨、デバイス別最適化同上
HowTo 構造化データが必要Recipe 内に HowToStep を入れれば OK、HowTo は調理以外の手順用HowTo 構造化データ
aggregateRating の評価は自由に書ける実レビューがページ内に表示されている必要、偽は手動対策構造化データ品質ガイドライン

実務での適用

レシピサイト立ち上げ時のチェックリスト

  1. CMS テンプレートに Recipe 構造化データを組み込み
  2. 各レシピで必須プロパティ(name / image / recipeIngredient / recipeInstructions)を完備
  3. recipeInstructions は HowToStep 配列で実装
  4. 画像は複数比率で提供
  5. 時間は ISO 8601 Duration で
  6. 動画があれば video プロパティ + VideoObject 構造化データ
  7. カテゴリトップページに ItemList で関連レシピをカルーセル化
  8. Search Console「拡張」レポートで監視
  1. カテゴリページ(例: /recipes/dessert/)に ItemList 構造化データ
  2. 各レシピ URL に Recipe 構造化データ
  3. リッチリザルトテストでカルーセル プレビュー確認

トラブル別の対処

症状確認すべきこと
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 問形式で確認できる。