レシピを Google のインデックスに登録する

構造化データを使用してレシピのコンテンツを Google に伝え、レシピをユーザーが見つけられるようにします。レビュー投稿者の評価、調理時間、準備時間、栄養成分などの情報を提供すると、Google がレシピを理解しやすくなり、ユーザーの興味を引く方法で表示できます。レシピは Google 検索結果と Google 画像検索に表示されます。

Google 検索と Google 画像検索でのレシピ

コンテンツのマークアップ方法に基づき、レシピは次の機能強化の対象となります。

レシピの機能強化
ガイド付きレシピ: Recipe 構造化データを追加することにより、Google Home やスマート ディスプレイで Google アシスタントを使用してユーザーにレシピを案内できるようになります。追加プロパティの中には、Google 検索では単なる推奨プロパティですが、ガイド付きレシピでは必須プロパティとなるものがいくつかあります。recipeIngredientrecipeInstructions は必ず追加してください。

Google アシスタントでのレシピの詳細については、ウェブ コンテンツからアクションを作成するをご覧ください。

アシスタントでのレシピ
レシピのホスト カルーセル: ItemList 構造化データを追加することで、ユーザーがレシピのギャラリー ページを探索できるようにします。 Google 検索でのレシピ カルーセル

構造化データを追加する方法

構造化データは、ページに関する情報を提供し、ページ コンテンツを分類するための標準化されたデータ形式です。構造化データを初めて使用する場合は、構造化データの仕組みについてをご覧ください。

構造化データの作成、テスト、リリースの概要は次のとおりです。ウェブページに構造化データを追加するための手順ガイドについては、構造化データの Codelab をご覧ください。

  1. 必須プロパティを追加します。ページ上の構造化データを配置する場所について詳しくは、JSON-LD 構造化データ: ページでの挿入場所をご覧ください。
  2. ガイドラインを遵守します。
  3. リッチリザルト テストでコードを検証します。
  4. 構造化データが含まれているページを数ページ導入し、URL 検査ツールを使用して、Google でページがどのように表示されるかをテストします。Google がページにアクセスでき、robots.txt ファイル、noindex タグ、またはログイン要件によってページがブロックされていないことを確認します。ページが正常に表示される場合は、Google に URL の再クロールを依頼できます。
  5. 今後の変更について Google への情報提供を続けるには、サイトマップを送信することをおすすめします。これは、Search Console Sitemap API で自動化できます。

JSON-LD コードを使用したレシピの例を示します。

ガイド付きレシピ

以下に、Google 検索に表示され、アシスタントでのガイド付きレシピに対応しているページの例を示します。

<html>
  <head>
    <title>Party Coffee Cake</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Recipe",
      "name": "Party Coffee Cake",
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
      ],
      "author": {
        "@type": "Person",
        "name": "Mary Stone"
      },
      "datePublished": "2018-03-10",
      "description": "This coffee cake is awesome and perfect for parties.",
      "prepTime": "PT20M",
      "cookTime": "PT30M",
      "totalTime": "PT50M",
      "keywords": "cake for a party, coffee",
      "recipeYield": "10",
      "recipeCategory": "Dessert",
      "recipeCuisine": "American",
      "nutrition": {
        "@type": "NutritionInformation",
        "calories": "270 calories"
      },
      "recipeIngredient": [
        "2 cups of flour",
        "3/4 cup white sugar",
        "2 teaspoons baking powder",
        "1/2 teaspoon salt",
        "1/2 cup butter",
        "2 eggs",
        "3/4 cup milk"
        ],
      "recipeInstructions": [
        {
          "@type": "HowToStep",
          "name": "Preheat",
          "text": "Preheat the oven to 350 degrees F. Grease and flour a 9x9 inch pan.",
          "url": "https://example.com/party-coffee-cake#step1",
          "image": "https://example.com/photos/party-coffee-cake/step1.jpg"
        },
        {
          "@type": "HowToStep",
          "name": "Mix dry ingredients",
          "text": "In a large bowl, combine flour, sugar, baking powder, and salt.",
          "url": "https://example.com/party-coffee-cake#step2",
          "image": "https://example.com/photos/party-coffee-cake/step2.jpg"
        },
        {
          "@type": "HowToStep",
          "name": "Add wet ingredients",
          "text": "Mix in the butter, eggs, and milk.",
          "url": "https://example.com/party-coffee-cake#step3",
          "image": "https://example.com/photos/party-coffee-cake/step3.jpg"
        },
        {
          "@type": "HowToStep",
          "name": "Spread into pan",
          "text": "Spread into the prepared pan.",
          "url": "https://example.com/party-coffee-cake#step4",
          "image": "https://example.com/photos/party-coffee-cake/step4.jpg"
        },
        {
          "@type": "HowToStep",
          "name": "Bake",
          "text": "Bake for 30 to 35 minutes, or until firm.",
          "url": "https://example.com/party-coffee-cake#step5",
          "image": "https://example.com/photos/party-coffee-cake/step5.jpg"
        },
        {
          "@type": "HowToStep",
          "name": "Enjoy",
          "text": "Allow to cool and enjoy.",
          "url": "https://example.com/party-coffee-cake#step6",
          "image": "https://example.com/photos/party-coffee-cake/step6.jpg"
        }
      ],
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "5",
        "ratingCount": "18"
      },
      "video": {
        "@type": "VideoObject",
        "name": "How to make a Party Coffee Cake",
        "description": "This is how you make a Party Coffee Cake.",
        "thumbnailUrl": [
          "https://example.com/photos/1x1/photo.jpg",
          "https://example.com/photos/4x3/photo.jpg",
          "https://example.com/photos/16x9/photo.jpg"
         ],
        "contentUrl": "http://www.example.com/video123.mp4",
        "embedUrl": "http://www.example.com/videoplayer?video=123",
        "uploadDate": "2018-02-05T08:00:00+08:00",
        "duration": "PT1M33S",
        "interactionStatistic": {
          "@type": "InteractionCounter",
          "interactionType": { "@type": "http://schema.org/WatchAction" },
          "userInteractionCount": 2347
        },
        "expires": "2019-02-05T08:00:00+08:00"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

検索にのみ表示されるレシピ

検索で表示されるページの例を示します。アシスタントでのガイド付きレシピには対応していません。

<html>
  <head>
    <title>Non-alcoholic Pina Colada</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Recipe",
      "name": "Non-alcoholic Pina Colada",
      "image": [
      "https://example.com/photos/1x1/photo.jpg",
      "https://example.com/photos/4x3/photo.jpg",
      "https://example.com/photos/16x9/photo.jpg"
      ],
      "author": {
        "@type": "Person",
        "name": "Mary Stone"
      },
      "datePublished": "2018-03-10",
      "description": "This non-alcoholic pina colada is everyone's favorite!",
      "recipeCuisine": "American",
      "prepTime": "PT1M",
      "cookTime": "PT2M",
      "totalTime": "PT3M",
      "keywords": "non-alcoholic",
      "recipeYield": "1 serving",
      "recipeCategory": "Drink",
      "nutrition": {
        "@type": "NutritionInformation",
        "calories": "120 calories"
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "5",
        "ratingCount": "18"
      },
      "recipeIngredient": [
        "2 cups of pineapple juice",
        "5/8 cup cream of coconut",
        "ice"
      ],
      "recipeInstructions": [
        {
          "@type": "HowToStep",
          "text": "Blend 2 cups of pineapple juice and 5/8 cup cream of coconut until smooth."
        },
        {
          "@type": "HowToStep",
          "text": "Fill a glass with ice."
        },
        {
          "@type": "HowToStep",
          "text": "Pour the pineapple juice and coconut mixture over ice."
        }
      ],
      "video": {
        "@type": "VideoObject",
        "name": "How to make a Party Coffee Cake",
        "description": "This is how you make a Party Coffee Cake.",
        "thumbnailUrl": [
          "https://example.com/photos/1x1/photo.jpg",
          "https://example.com/photos/4x3/photo.jpg",
          "https://example.com/photos/16x9/photo.jpg"
         ],
        "contentUrl": "http://www.example.com/video123.mp4",
        "embedUrl": "http://www.example.com/videoplayer?video=123",
        "uploadDate": "2018-02-05T08:00:00+08:00",
        "duration": "PT1M33S",
        "interactionStatistic": {
          "@type": "InteractionCounter",
          "interactionType": { "@type": "http://schema.org/WatchAction" },
          "userInteractionCount": 2347
        },
        "expires": "2019-02-05T08:00:00+08:00"
       }
    }
    </script>
  </head>
  <body>
  </body>
</html>

itemList 構造化データを含むレシピの概要ページ(レシピのリストを含むページ)の例を示します。このコンテンツは、検索結果のグリッドに表示される可能性があります。

<html>
  <head>
    <title>Grandma's Best Pie Recipes</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "ItemList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "url": "https://example.com/apple-pie.html"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "url": "https://example.com/blueberry-pie.html"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "url": "https://example.com/cherry-pie.html"
        }]
    }
    </script>
  </head>
  <body>
  </body>
</html>

ガイドライン

レシピを検索結果に表示できるようにするには、構造化データに関する一般的なガイドラインを遵守する必要があります。レシピをアシスタントでのガイド付きレシピに対応させる場合は、コンテンツがアシスタントのコンテンツ制限に関するポリシーを遵守している必要があります。

Recipe 構造化データには以下のガイドラインが適用されます。

  • Recipe 構造化データは特定の料理の作り方に関するコンテンツに使用します。たとえば、「スクラブ洗顔料」や「パーティのアイデア」は有効な料理名ではありません。
  • レシピをカルーセルまたはグリッドに表示できるようにするには、以下のガイドラインに準拠する必要があります。
    • ItemList 構造化データを使用して、リスト用にレシピを要約します。ItemList 構造化データは、単独で使用することも、レシピの構造化データと組み合わせて使用することもできます。
    • コレクション内のすべてのレシピを一覧表示する概要ページをサイトに含める必要があります。たとえば、ユーザーが検索結果から概要のリンクをクリックすると、検索条件に関連するレシピが一覧表示されるページに移動するようにします。

構造化データタイプの定義

コンテンツが Google 検索でリッチリザルトとして表示されるようにするには、必須プロパティを含める必要があります。また、推奨プロパティを使用することでコンテンツに関する詳細情報を追加でき、ユーザー エクスペリエンスの向上につながります。

Recipe

schema.org の Recipe タイプの以下のプロパティでレシピ コンテンツをマークアップします。Recipe の定義の全文は schema.org/Recipe で確認できます。

必須プロパティ

image

URL または ImageObject

完成した料理の画像。

画像に関するその他のガイドライン:

  • すべてのページに画像を少なくとも 1 つ含める必要があります(マークアップを含めるかどうかは問わない)。Google は、アスペクト比と解像度に基づいて、検索結果に表示する最適な画像を選択します。
  • 画像の URL は、クロールやインデックス登録に対応できる必要があります。
  • 画像はマークアップされたコンテンツを表している必要があります。
  • 画像は、Google 画像検索でサポートされているファイル形式である必要があります。
  • 適切な画像が選択されるようにするために、アスペクト比が 16x9、4x3、1x1 の高解像度画像(幅と高さをかけて 50,000 ピクセル以上の画像)を複数指定してください。

次に例を示します。

"image": [
  "https://example.com/photos/1x1/photo.jpg",
  "https://example.com/photos/4x3/photo.jpg",
  "https://example.com/photos/16x9/photo.jpg"
]

name

Text

レシピの名前です。

推奨プロパティ

aggregateRating

AggregateRating

アイテムに割り当てられた平均レビュースコアの注釈。クチコミ抜粋のガイドラインと、必須および推奨の AggregateRating プロパティのリストに準拠します。

Recipe 構造化データに 1 つのレビューが含まれている場合、レビュー投稿者の名前は有効な個人または組織でなければなりません。たとえば、「材料 50% 減」は無効なレビュー投稿者名です。

author

Person または Organization

レシピを作成した個人または組織の名前。

cookTime

Duration

実際に調理するのにかかる時間(ISO 8601 形式)。子要素として最小値と最大値を使用すると、時間の範囲を指定できます。

常に prepTime と組み合わせて使用します。

datePublished

Date

レシピが公開された日付(ISO 8601 形式)。

description

Text

レシピの要約文。

keywords

Text

季節(「夏」)、行事(「ハロウィーン」)、その他の説明(「時短」、「簡単」、「本格的」)などのレシピに関するその他のキーワード。

その他のガイドライン

  • 複数のキーワードを指定する場合は、カンマで区切ります。
  • recipeCategory または recipeCuisine で指定するタグは使用しないでください。

    非推奨

    
    "keywords": "dessert, American"
    

    推奨

    
    "keywords": "winter apple pie, nutmeg crust"
    

nutrition.calories

Energy

このレシピによる 1 人分のカロリー数。nutrition.calories が定義されている場合、recipeYield は対象人数で定義する必要があります。

prepTime

Duration

調理にかかる時間(ISO 8601 形式)。子要素として最小値と最大値を使用すると、時間の範囲を指定できます。

常に cookTime と組み合わせて使用します。

recipeCategory

Text

レシピの食事やコースの種類。たとえば、「夕食」、「メインコース」、「デザート、軽食」などです。

recipeCuisine

Text

レシピに関連付けられている地域。たとえば、「フランス」、「地中海」、「アメリカ」などです。

recipeIngredient

Text

レシピに必要な材料。

次に例を示します。


"recipeIngredient": [
  "1 (15 ounce) package double crust ready-to-use pie crust",
  "6 cups thinly sliced, peeled apples (6 medium)",
  "3/4 cup sugar",
  "2 tablespoons all-purpose flour",
  "3/4 teaspoon ground cinnamon",
  "1/4 teaspoon salt",
  "1/8 teaspoon ground nutmeg",
  "1 tablespoon lemon juice"
]

その他のガイドライン:

  • レシピに必要な材料のテキストのみを含めてください。
  • 不要な情報(材料の定義など)は含めないでください。

recipeInstructions

HowToStepHowToSection、または Text

料理を作る手順。

recipeInstructions の値を設定する方法は複数ありますが、HowToStep を使用することをおすすめします。HowToSection は、レシピに複数のセクションがある場合に HowToSteps をグループ化するためにも使用できます。

  • HowToStep: このレシピの手順を HowToStep で指定します。
  • HowToSection(レシピに複数のセクションがある場合のみ): 手順を複数のセクションにグループ化するために使用します。HowToSection の例をご覧ください。
  • テキストの単一のプロパティまたは繰り返しフィールド: 1 つ以上の手順を含むテキストのブロック。Google では、すべての手順が単一のセクション内にあるものとして扱います。繰り返しプロパティの値は、テキストの単一のブロックに連結されます。Google は次に、テキストの単一のブロックを個々の手順に自動的に分割しようとします。また、レシピの手順のテキストに誤って表示される可能性があるセクション名、手順番号、キーワードなどをすべて見つけて削除しようとします。最善の結果を得るために、手順は HowToStep を使用して明確に指定することをおすすめします。

その他のガイドライン

  • 他の場所に属しているメタデータは含めないでください。具体的には、author プロパティを使用して著者を指定し、料理には recipeCuisine を、カテゴリには recipeCategory を、キーワードには keywords を指定することなどは避けてください。
  • 料理方法のテキストのみを含め、それ以外のテキスト(「方法」、「動画を見る」、「手順 1」など)は含めないでください。このようなフレーズは構造化データ外で指定する必要があります。

    非推奨

    
    "recipeInstructions": [{
      "@type": "HowToStep",
      "text": "Step 1. Heat oven to 425°F."
    }]
    

    推奨

    
    "recipeInstructions": [{
      "@type": "HowToStep",
      "text": "Heat oven to 425°F."
    }]
    

recipeYield

Text

レシピで作る料理の分量。このレシピで出来上がる料理が何人分かを数字だけで指定します。別の単位(個数など)を使用する場合は、追加で分量情報を含めることもできます。これは、1 人分の栄養情報(nutrition.calories など)を指定する場合には必須です。


"recipeYield": [
  "6",
  "24 cookies"
]

totalTime

Duration

料理の準備と調理にかかる合計時間(ISO 8601 形式)。 子要素として最小値と最大値を使用すると、時間の範囲を指定できます。

totalTime を使用するか、cookTimeprepTime を組み合わせて使用します。

video

VideoObject

調理方法を表す動画。必須および推奨の動画プロパティのリストに準拠します。

  • Video without clips
  • Video with clips: 動画のセグメントに対応するクリップを含む動画。レシピの他の部分(手順など)は、video.hasPart で定義したこれらのクリップを参照できます。

video.hasPart

Clip

動画全体から一部を抽出した動画クリップ。

video.hasPart.endOffset

Number

動画の先頭からの秒数で表したクリップの終了時間。

video.hasPart.name

Text

クリップの名前。たとえば、パイ生地をパイプレートに配置して押しつける方法を示すクリップの名前を「パイ生地の配置方法」とします。

video.hasPart.startOffset

Number

動画の先頭からの秒数で表したクリップの開始時間。

video.hasPart.url

URL

クリップの開始時間へのリンク。クリップの開始時間は video.hasPart.startOffset に設定されている値と一致する必要があります。次に例を示します。


"startOffset": 20,
"endOffset": 29,
"url": "https://www.example.com/example?t=20"

HowToSection

HowToSection は、レシピの手順説明の一部を構成する一連のステップ(またはサブセクション)をグループ化するために使用します。HowToSectionrecipeInstructions プロパティの定義内で直接指定するか、別の HowToSectionitemListElement として指定します。

HowToSection タイプは、1 つのレシピのセクションを定義するもので、1 つ以上のステップを含みます。同じ料理をつくる別のレシピを定義するのに HowToSection を使用しないでください。HowToSection は、あくまでも 1 つのレシピの一部分を定義するものです。料理のレシピを複数挙げる場合は、複数の Recipe オブジェクトを使用してください。たとえば、アップルパイを作るための方法が複数ある場合は、HowToSection オブジェクトではなく、複数の Recipe オブジェクトとしてリストします。

HowToSection の定義の全文は schema.org/HowToSection で確認できます。

必須プロパティ

itemListElement

HowToStep

セクションやサブセクションに含まれる詳細なステップのリスト。たとえばピザのレシピでは、生地を作る手順、トッピングを準備する手順、混ぜ合わせて焼く手順がそれぞれあります。レシピにセクションがあり、HowToSections で定義されていない場合、アシスタントがセクション名を誤って別の手順として提示する可能性があります(「生地を作る」手順の次に「小麦粉とイーストを混ぜ合わせる」手順を提示するなど)。

例:


{
  "@type": "HowToSection",
  "name": "Assemble the pie",
  "itemListElement": [
    {
      "@type": "HowToStep",
      "text": "In large bowl, gently mix filling ingredients; spoon into crust-lined pie plate."
    }, {
      "@type": "HowToStep",
      "text": "Top with second crust. Cut slits or shapes in several places in top crust."
    }
  ]
}

name

Text

セクションの名前。

HowToStep

HowToStep は、レシピの一部を行う方法を説明する 1 つ以上の文章をグループ化するために使用します。text プロパティを文章で定義するか、itemListElement を文ごとに HowToDirection または HowToTip で定義します。

HowToStep タイプの次のプロパティで、レシピのステップをマークアップします。HowToSteprecipeInstructions プロパティの定義内で直接指定するか、HowToSectionitemListElement として指定します。

HowToStep の定義の全文は schema.org/HowToStep で確認できます。

必須プロパティ

itemListElement

HowToDirection または HowToTip

指示やヒントなど、詳細なサブステップのリスト。

text を使用する場合は省略可能です。

text

Text

このステップの手順を完全に説明するテキスト。

itemListElement を使用する場合は省略可能です。その他のガイドライン:

  • 手順を説明するテキストのみを含め、それ以外のテキスト(「方法」、「動画を見る」、「ステップ 1」など)は含めないでください。手順説明以外のテキストは、マークアップされたプロパティ外で指定してください。
推奨プロパティ

image

ImageObject または URL

ステップを説明するための画像。画像に関するその他のガイドライン:

  • 画像の URL は、クロールやインデックス登録に対応できる必要があります。
  • 画像はマークアップされたコンテンツを表している必要があります。
  • 画像の形式は、.jpg、.png、.gif のいずれかである必要があります。

name

Text

ステップを要約した単語または短いフレーズ(たとえば「パイ生地を配置する」など)。説明のないテキスト(「ステップ 1: [テキスト]」など)やその他の形式のステップ番号(「1. [テキスト]」など)は使用しないでください。

url

URL

ステップに直接リンクする URL(ある場合)。たとえば、アンカーリンク フラグメントなど。

video

VideoObject または Clip

このステップを説明するための動画または動画クリップ。

VideoObject については、動画またはクリップの必須プロパティと推奨プロパティのリストを使用してください。

HowToDirectionHowToTip

HowToDirectionHowToTip を使用して指示やヒントを記述します。どちらも同じ必須プロパティと推奨プロパティを持ちます。

HowToDirectionHowToTip の定義の全文は、それぞれ schema.org/HowToDirectionschema.org/HowToTip で確認できます。

必須プロパティ

text

Text

指示またはヒントのテキスト。

ItemList

Recipe プロパティに加え、以下のホスト固有のリスト用プロパティを追加します。ItemList は必須ではありませんが、レシピをホスト カルーセルで表示できるようにするには、以下のプロパティを追加する必要があります。ホスト カルーセルの詳細については、カルーセルをご覧ください。

ItemList の定義の全文は schema.org/ItemList で確認できます。

必須プロパティ

itemListElement

ListItem

1 つのアイテムページの注釈。

ListItem.position

Integer

リスト内でのアイテムページの順序位置。次に例を示します。


"itemListElement": [
  {
    "@type": "ListItem",
    "position": 1,
  }, {
    "@type": "ListItem",
    "position": 2,
  }
]

ListItem.url

URL

アイテムページの正規 URL。すべてのアイテムに固有の URL が必要です。

Search Console でリッチリザルトを監視する

Search Console は、Google 検索におけるページのパフォーマンスを監視できるツールです。Search Console に登録していなくても Google 検索結果に表示されますが、登録することにより、Google がサイトをどのように認識しているかを把握して改善できるようになります。次の場合は Search Console を確認することをおすすめします。

  1. 構造化データを初めてデプロイした後
  2. 新しいテンプレートをリリースした後やコードを更新した後
  3. トラフィックを定期的に分析する場合

構造化データを初めてデプロイした後

ページがインデックスに登録されたら、関連するリッチリザルトのステータス レポートを使用して、問題がないかどうかを確認します。有効なページが増え、エラーや警告が増えていない状態が理想的です。構造化データに問題が見つかった場合の手順は次のとおりです。

  1. エラーを修正します
  2. 公開 URL の検査を行い、問題が解決したかどうかを確認します。
  3. ステータス レポートを使用して検証をリクエストします。

新しいテンプレートをリリースした後やコードを更新した後

ウェブサイトに大幅な変更を加えた場合は、構造化データのエラーや警告が増加しないかどうか監視します。
  • エラーが増加した場合は、新しく公開したテンプレートが正常に機能していないか、既存のテンプレートの動作に問題が生じていることが原因と考えられます。
  • 有効な項目が減少している(エラーの増加と一致しない)場合は、ページに構造化データが埋め込まれていない可能性があります。URL 検査ツールを使用して問題の原因を特定します。

トラフィックを定期的に分析する場合

パフォーマンス レポートを使用して Google 検索のトラフィックを分析します。このデータから、検索でページがリッチリザルトとして表示される頻度、ユーザーがページをクリックする頻度、検索結果におけるページの平均掲載順位がわかります。Search Console API を使用して、このデータを自動的に取得することもできます。

トラブルシューティング

構造化データを実装する際に問題が発生した場合は、以下のリソースを確認してください。