Datos estructurados de receta (Recipe, HowTo, ItemList)

Ayuda a los usuarios a encontrar el contenido de tu receta; para ello, usa datos estructurados para brindarle información a Google. Cuando proporcionas datos, como calificaciones de usuarios, tiempos de preparación o cocción, o información nutricional, Google puede comprender mejor tu receta y presentarla a los usuarios de formas interesantes. Las recetas pueden aparecer en los resultados de la Búsqueda de Google y Google Imágenes.

Ilustración de cómo pueden aparecer los resultados enriquecidos de recetas en la Búsqueda de Google. Contiene 4 resultados enriquecidos de distintos sitios web, con detalles sobre cuánto tiempo se necesita para cocinar la receta y una imagen, además de opiniones. Ilustración de cómo pueden aparecer las recetas en Google Imágenes. Hay 6 imágenes en las que se muestran diferentes comidas, con 3 resultados que contienen una insignia de receta que le indica al usuario que es una receta.

Según el lenguaje de marcado que uses en tu contenido, podrás obtener las siguientes mejoras en tus recetas:

Mejoras en la receta
Carrusel de host de recetas: Agrega datos estructurados de ItemList para permitir que los usuarios exploren las páginas de tu galería de recetas. Ilustración de cómo puede aparecer el carrusel de un host de recetas en la Búsqueda de Google. Muestra 3 recetas diferentes del mismo sitio web en formato de carrusel, en el que los usuarios pueden explorar y seleccionar una receta específica.

Cómo agregar datos estructurados

Los datos estructurados son un formato estandarizado para proporcionar información sobre una página y clasificar su contenido. Si aún no estás familiarizado con los datos estructurados, obtén más información sobre su funcionamiento.

A continuación, presentamos una descripción general para aprender a compilar, probar y actualizar datos estructurados.

  1. Agrega las propiedades obligatorias. Según el formato que uses, obtén información sobre las ubicaciones donde puedes insertar datos estructurados en la página.
  2. Sigue los lineamientos.
  3. Valida tu código con la Prueba de resultados enriquecidos y corrige cualquier error crítico. Procura también corregir los problemas no críticos que puedan marcarse en la herramienta, ya que pueden ayudar a mejorar la calidad de los datos estructurados (sin embargo, esto no es necesario para que se muestren los resultados enriquecidos).
  4. Implementa algunas páginas que incluyan tus datos estructurados y utiliza la Herramienta de inspección de URLs para probar el modo en el que Google ve la página. Asegúrate de que Google pueda acceder a la página y que no esté bloqueada por un archivo robots.txt, una etiqueta noindex ni requisitos de acceso. Si la página se ve bien, puedes pedirle a Google que vuelva a rastrear tus URLs.
  5. Para mantener informado a Google sobre los cambios futuros, te recomendamos que envíes un mapa del sitio. Puedes automatizar este proceso con la API de Search Console Sitemap.

Ejemplos

Aquí tienes algunos ejemplos de recetas que usan código JSON-LD.

Receta en la Búsqueda

Aquí tienes un ejemplo de una página que puede aparecer en la Búsqueda.

<html>
  <head>
    <title>Non-Alcoholic Piña Colada</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Recipe",
      "name": "Non-Alcoholic Piña 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": "4 servings",
      "recipeCategory": "Drink",
      "nutrition": {
        "@type": "NutritionInformation",
        "calories": "120 calories"
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "5",
        "ratingCount": "18"
      },
      "recipeIngredient": [
        "400ml of pineapple juice",
        "100ml cream of coconut",
        "ice"
      ],
      "recipeInstructions": [
        {
          "@type": "HowToStep",
          "name": "Blend",
          "text": "Blend 400ml of pineapple juice and 100ml cream of coconut until smooth.",
          "url": "https://example.com/non-alcoholic-pina-colada#step1",
          "image": "https://example.com/photos/non-alcoholic-pina-colada/step1.jpg"
        },
        {
          "@type": "HowToStep",
          "name": "Fill",
          "text": "Fill a glass with ice.",
          "url": "https://example.com/non-alcoholic-pina-colada#step2",
          "image": "https://example.com/photos/non-alcoholic-pina-colada/step2.jpg"
        },
        {
          "@type": "HowToStep",
          "name": "Pour",
          "text": "Pour the pineapple juice and coconut mixture over ice.",
          "url": "https://example.com/non-alcoholic-pina-colada#step3",
          "image": "https://example.com/photos/non-alcoholic-pina-colada/step3.jpg"
        }
      ],
      "video": {
        "@type": "VideoObject",
        "name": "How to Make a Non-Alcoholic Piña Colada",
        "description": "This is how you make a non-alcoholic piña colada.",
        "thumbnailUrl": [
          "https://example.com/photos/1x1/photo.jpg",
          "https://example.com/photos/4x3/photo.jpg",
          "https://example.com/photos/16x9/photo.jpg"
         ],
        "contentUrl": "https://www.example.com/video123.mp4",
        "embedUrl": "https://www.example.com/videoplayer?video=123",
        "uploadDate": "2018-02-05T08:00:00+08:00",
        "duration": "PT1M33S",
        "interactionStatistic": {
          "@type": "InteractionCounter",
          "interactionType": { "@type": "WatchAction" },
          "userInteractionCount": 2347
        },
        "expires": "2019-02-05T08:00:00+08:00"
       }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Aquí tienes un ejemplo de una página de resumen de recetas (incluye una lista de recetas) con datos estructurados de itemList. Es posible que este contenido sea apto para mostrarse en una cuadrícula en los resultados de la Búsqueda.

<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>

Lineamientos

Debes seguir los lineamientos generales de datos estructurados para que tu marca pueda aparecer en los resultados de la búsqueda.

Los siguientes lineamientos se aplican a los datos estructurados de Recipe.

  • Usa datos estructurados de Recipe para el contenido relacionado con la preparación de un plato en particular. Por ejemplo, "exfoliación facial" o "ideas para fiestas" no son nombres válidos para un plato.
  • Para que tus recetas aparezcan en un carrusel o una cuadrícula, debes seguir estos lineamientos:
    • Proporciona datos estructurados del tipo ItemList para resumir las recetas de tu lista. Puedes proporcionar los datos de ItemList por separado o junto con datos estructurados de receta.
    • Tu sitio debe tener una página de resumen en la que se indiquen todas las recetas de la colección. Por ejemplo, cuando un usuario haga clic en el vínculo del resumen que aparezca en los resultados de la Búsqueda, se lo deberá redireccionar a una página de tu sitio en la que se muestren todas las recetas relacionadas con su búsqueda.

Definiciones de tipos de datos estructurados

Debes incluir las propiedades obligatorias si quieres que tu contenido pueda mostrarse como resultado enriquecido en la Búsqueda de Google. También puedes incluir las propiedades recomendadas para agregar más información al respecto y así brindar una mejor experiencia al usuario.

Recipe

Marca el contenido de las recetas con las siguientes propiedades del tipo Recipe de schema.org. La definición completa de Recipe está disponible en schema.org/Recipe. Las propiedades compatibles con Google son las siguientes:

Propiedades obligatorias
image

URL o ImageObject

Corresponde a la imagen del plato terminado.

Lineamientos de imagen adicionales:

  • Las URLs de las imágenes se deben poder indexar y rastrear. Para comprobar si Google puede acceder a tus URL, usa la Herramienta de inspección de URL.
  • Deben representar el contenido con lenguaje de marcado.
  • Las imágenes deben estar en un formato de archivo compatible con Google Imágenes.
  • Para obtener mejores resultados, recomendamos proporcionar varias imágenes de alta resolución (mínimo de 50,000 píxeles al multiplicar el ancho por la altura) con la siguiente relación de aspecto: 16x9, 4x3 y 1x1.

Por ejemplo:

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

Text

Corresponde al nombre del plato.

Propiedades recomendadas
aggregateRating

AggregateRating

Corresponde a la anotación del promedio de calificaciones asignadas al elemento. Sigue los lineamientos para los fragmentos de opiniones, así como la lista de propiedades de AggregateRating obligatorias y recomendadas.

Si los datos estructurados de Recipe contienen una sola opinión, el nombre del usuario que deja esa opinión debe ser de una organización o persona válida. Por ejemplo, "50% de descuento en ingredientes" no es un nombre válido para un usuario que deja una opinión.

author

Person o Organization

Es el nombre de la persona o la organización que escribió la receta. Para ayudar a Google a comprender mejor a los autores en varias funciones, considera seguir las prácticas recomendadas de lenguaje de marcado de autor.

cookTime

Duration

Corresponde al tiempo de cocción del plato, en formato ISO 8601, si corresponde.

Se debe usar siempre junto con prepTime.

datePublished

Date

Es la fecha en la que se publicó la receta en formato ISO 8601, si corresponde.

description

Text

Corresponde a una breve descripción del plato.

keywords

Text

Corresponde a otros términos de la receta, como la estación ("verano"), el día festivo ("Halloween") y otras palabras que la describen ("rápida", "fácil", "original").

Lineamientos adicionales

  • Separa con comas varias entradas en una lista de palabras clave.
  • No uses una etiqueta que sea en realidad recipeCategory o recipeCuisine.

    No se recomienda:

    "keywords": "dessert, American"
    

    Se recomienda:

    "keywords": "winter apple pie, nutmeg crust"
    
nutrition.calories

Energy

Corresponde a la cantidad de calorías de cada porción que rinde la receta. Si se define nutrition.calories, recipeYield se debe definir con la cantidad de porciones.

prepTime

Duration

Corresponde al tiempo de preparación de los ingredientes y el lugar de trabajo para el plato, en formato ISO 8601, si corresponde.

Se debe usar siempre junto con cookTime.

recipeCategory

Text

Corresponde al tipo de comida o plato de la receta. Por ejemplo: "cena", "plato principal" o "postre, bocadillo".

recipeCuisine

Text

Corresponde a la región asociada con la receta. Por ejemplo, "francesa" "mediterránea" o "americana".

recipeIngredient

Text

Corresponde a un ingrediente que se usa en la receta.

Por ejemplo:

"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"
]

Lineamientos adicionales:

  • Incluye solo el texto de los ingredientes que sean necesarios para preparar la receta.
  • No incluyas información innecesaria, como la definición de un ingrediente.
recipeInstructions

HowToStep, HowToSection o Text

Corresponde a los pasos para preparar el plato.

Existen varias opciones para configurar el valor de recipeInstructions. Se recomienda usar HowToStep. También se puede usar HowToSection para agrupar pasos HowToSteps cuando la receta tiene secciones.

  • HowToStep: Especifica los pasos de la receta con HowToStep.
    "recipeInstructions": [
      {
        "@type": "HowToStep",
        "name": "Preheat",
        "text": "Heat oven to 425°F.",
        "url": "https://example.com/recipe#step1",
        "image": "https://example.com/photos/recipe/step1.jpg"
      }, {
        "@type": "HowToStep",
        "name": "Prepare crust",
        "text": "Place 1 pie crust in ungreased 9-inch glass pie plate, pressing firmly against side and bottom.",
        "url": "https://example.com/recipe#step2",
        "image": "https://example.com/photos/recipe/step2.jpg"
      }, {
        "@type": "HowToStep",
        "name": "Make filling",
        "text": "In large bowl, gently mix filling ingredients; spoon into crust-lined pie plate.",
        "url": "https://example.com/recipe#step3",
        "image": "https://example.com/photos/recipe/step3.jpg"
      }, {
        "@type": "HowToStep",
        "name": "Cover",
        "text": "Top with second crust. Cut slits or shapes in several places in top crust.",
        "url": "https://example.com/recipe#step4",
        "image": "https://example.com/photos/recipe/step4.jpg"
      }, {
        "@type": "HowToStep",
        "name": "Bake",
        "text": "Bake 40 to 45 minutes. The pie is ready when the apples are tender and the crust is golden brown.",
        "url": "https://example.com/recipe#step5",
        "image": "https://example.com/photos/recipe/step5.jpg"
      }, {
        "@type": "HowToStep",
        "name": "Cool",
        "text": "Cool on cooling rack at least 2 hours before serving.",
        "url": "https://example.com/recipe#step6",
        "image": "https://example.com/photos/recipe/step6.jpg"
      }
    ]
    
  • HowToSection (solo si una receta tiene varias secciones): Úsala para agrupar los pasos en varias secciones. Consulta HowToSection para ver un ejemplo.
  • Propiedad de texto única o repetida: Es un bloque de texto que incluye un paso o varios. Google considera que todos los pasos son parte de una misma sección. Los valores de propiedades repetidas se concatenan en un solo bloque de texto. Google intenta dividir automáticamente el bloque de texto único en pasos individuales. Luego, trata de buscar y quitar nombres de secciones, números de pasos, palabras clave y cualquier otro elemento que pueda aparecer de manera incorrecta en el texto de los pasos de la receta. Para obtener mejores resultados, se recomienda que uses HowToStep para especificar los pasos con claridad.
    "recipeInstructions": [
      "In large bowl, gently mix filling ingredients; spoon into crust-lined pie
    plate. Top with second crust. Cut slits or shapes in several places in top
    crust. Bake 40 to 45 minutes. The pie is ready when the or until apples are
    tender and the crust is golden brown. Cool on cooling rack at least 2 hours
    before serving."
    ]
    

Lineamientos adicionales

  • No incluyas metadatos que correspondan a otro elemento. En particular, usa la propiedad author para especificar el autor, recipeCuisine para el tipo de cocina, recipeCategory para la categoría y keywords para otras palabras clave.
  • Incluye solo el texto para preparar el plato y no de otra índole, como "Instrucciones", "Mira el video" o "Paso 1". Esas frases se deben especificar fuera de los datos estructurados.

    No se recomienda:

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

    Se recomienda:

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

Text o Integer

Es la cantidad producida por la receta, si corresponde. Especifica la cantidad de porciones que rinde la receta con un valor numérico. Si deseas usar una unidad diferente (por ejemplo, la cantidad de ingredientes), puedes incluir rendimientos adicionales. Este es un requisito si especificas información nutricional por porción (por ejemplo, nutrition.calories).

Ejemplo

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

Duration

Corresponde al tiempo total que lleva preparar y cocinar el plato, en formato ISO 8601, si corresponde.

Usa totalTime o una combinación de cookTime y prepTime.

video VideoObject

El video muestra los pasos para preparar el plato. Sigue la lista de propiedades de video obligatorias y recomendadas.

HowToSection

Usa HowToSection para agrupar una secuencia de pasos (o subsecciones) que forman parte de las instrucciones de una receta. Especifica HowToSection directamente dentro de la definición de la propiedad recipeInstructions, o bien como un itemListElement de otra HowToSection.

El tipo HowToSection define una sección de una sola receta y contiene un solo paso o varios. No uses HowToSection para definir diferentes recetas del mismo plato; en su lugar, usa HowToSection como parte de una sola receta. Para enumerar varias recetas de un mismo plato, usa varios objetos Recipe. Por ejemplo, para hacer una tarta de manzana de diferentes maneras, enuméralas como varios objetos Recipe, no como objetos HowToSection.

La definición completa de HowToSection está disponible en schema.org/HowToSection.

Propiedades obligatorias
itemListElement HowToStep

Corresponde a una lista de los pasos detallados para la sección o subsecciones. Por ejemplo, es posible que una receta de pizza tenga una sección de pasos para preparar la masa, una para los ingredientes y otra para la combinación y la cocción.

Ejemplo:

{
  "@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

Corresponde al nombre de la sección.

HowToStep

Usa HowToStep para agrupar una o más oraciones que expliquen cómo hacer parte de la receta, si esto tiene sentido para tu contenido. Define la propiedad text con las oraciones, o bien define itemListElement con un objeto HowToDirection o HowToTip para cada oración.

Usa lenguaje de marcado en los pasos de la receta con las siguientes propiedades del tipo HowToStep. Especifica un HowToStep directamente dentro de la definición de la propiedad recipeInstructions o como un itemListElement de una HowToSection.

La definición completa de HowToStep está disponible en schema.org/HowToStep.

Propiedades obligatorias
itemListElement HowToDirection o HowToTip

Corresponde a una lista de pasos secundarios detallados, que incluye instrucciones o sugerencias.

Es opcional si se usa text.

text Text

Corresponde al texto con todas las instrucciones de este paso.

Es opcional si se usa itemListElement. Lineamientos adicionales:

  • Incluye solo texto instructivo y no de otra índole, como "Instrucciones", "Mira el video" o "Paso 1". Esas frases se deben especificar afuera de la propiedad de lenguaje de marcado.

    No se recomienda:

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

    Se recomienda:

    {
      "@type": "HowToStep",
      "text": "Heat oven to 425°F."
    }
    
Propiedades recomendadas
image ImageObject o URL

Corresponde a una imagen del paso. Lineamientos de imagen adicionales:

  • Las URL de las imágenes se deben poder rastrear e indexar.
  • Las imágenes deben representar el contenido que incluya lenguaje de marcado.
  • Deben estar en formato .jpg, .png o .gif.
name Text

Es la palabra o frase corta que resume un paso (por ejemplo, "Montar base del pastel"). No uses texto que no sea descriptivo (por ejemplo "Paso 1: [texto]") ni números de pasos con otro formato (por ejemplo, "1. [texto]").

url URL

Corresponde a una URL que vincula directamente a un paso (si hay uno disponible). Por ejemplo, un fragmento de vínculo de anclaje.

video VideoObject o Clip

Corresponde a un video para este paso o un clip del video.

Para VideoObject, sigue la lista de propiedades obligatorias y recomendadas de Video o Clip.

HowToDirection y HowToTip

Usa HowToDirection y HowToTip para describir instrucciones o sugerencias, si corresponde. Ambos elementos tienen las mismas propiedades obligatorias y recomendadas.

Las definiciones completas de HowToDirection y HowToTip están disponibles en schema.org/HowToDirection y schema.org/HowToTip.

Propiedades obligatorias
text Text

Corresponde al texto del paso o la sugerencia.

ItemList

Además de las propiedades de recetas, agrega los siguientes elementos a las listas específicas de hosts. Si bien no es obligatorio incluir ItemList, debes agregar las siguientes propiedades si quieres que la receta aparezca en el carrusel de un host. Para obtener más información sobre el carrusel de host, consulta Carrusel.

La definición completa de ItemList está disponible en schema.org/ItemList.

Propiedades obligatorias
itemListElement

ListItem

Corresponde a la anotación para una página de un solo elemento.

ListItem.position

Integer

Corresponde a la posición ordinal de la página del elemento en la lista. Por ejemplo:

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

URL

Es la URL canónica de la página del elemento. Cada elemento debe tener una URL única.

Cómo supervisar resultados enriquecidos con Search Console

Search Console es una herramienta que te ayuda a supervisar el rendimiento de tus páginas en la Búsqueda de Google. Si bien no es necesario que te registres en Search Console para que se incluya tu contenido en los resultados de la Búsqueda de Google, puede ayudarte a comprender y mejorar la forma en que Google ve tu sitio. Te recomendamos que revises Search Console en los siguientes casos:

  1. Después de implementar datos estructurados por primera vez
  2. Después de lanzar plantillas nuevas o actualizar código
  3. Para analizar tráfico periódicamente

Después de implementar datos estructurados por primera vez

Después de que Google haya indexado tus páginas, busca problemas con el informe de estado de resultados enriquecidos relevante. Lo ideal es que haya un aumento de los elementos válidos y no de los elementos no válidos. Si encuentras problemas en los datos estructurados, haz lo siguiente:

  1. Corrige los elementos no válidos.
  2. Inspecciona una URL publicada para verificar si persiste el problema.
  3. Solicita una validación desde el informe de estado.

Después de lanzar plantillas nuevas o actualizar código

Cuando realices cambios significativos en tu sitio web, supervisa los aumentos en los elementos no válidos de datos estructurados.
  • Si notas un aumento en la cantidad de elementos no válidos, tal vez se deba a que implementaste una plantilla que no funciona o a que tu sitio interactúa con la plantilla actual de una forma diferente e incorrecta.
  • Si notas una disminución de los elementos válidos (que no coincide con un aumento en la cantidad de elementos no válidos), es posible que ya no estés incorporando datos estructurados en tus páginas. Usa la Herramienta de inspección de URLs para saber cuál es la causa del problema.

Cómo analizar el tráfico periódicamente

Analiza el tráfico de la Búsqueda de Google con el Informe de rendimiento. Los datos te mostrarán con qué frecuencia tu página aparece como resultado enriquecido en la Búsqueda, con qué frecuencia los usuarios hacen clic en ella y cuál es la posición promedio en la que apareces en los resultados de la búsqueda. También puedes extraer esos resultados automáticamente con la API de Search Console.

Solución de problemas

Si tienes problemas para implementar o depurar datos estructurados, te brindamos algunos recursos que podrían resultarte útiles.