A Rectangular Take on the Black Forest Cake

Structured Data in a Cooking Article: Black Forest Cake Recipe

Testing the Black Forest Cake Recipe

Let’s take the Black Forest cake recipe as an example. For Google to interpret this content correctly, the ingredients must be marked up using the appropriate structured data types. In this test, we’ll analyze the different implementation approaches and their respective limitations, and determine the most efficient method to implement.

First, let's go over the ingredients for the recipe, which you'll find on the page: Black Forest Dessert Recipe 

🧾 Ingredients

For the cookie

  • 6 eggs
  • 150 g of powdered sugar (or granulated sugar)
  • 55 g of flour
  • 55 g cornstarch
  • 3 tablespoons unsweetened cocoa powder
  • 1 packet of vanilla sugar

For the whipped cream

  • 65 cl of whole liquid cream (35% fat)
  • 1 jar of cherries in syrup
  • 30 g of powdered sugar
  • Chocolate shavings
"Rank Math, Yoast SEO—these are out-of-the-box solutions that can be very restrictive due to the limitations of their free versions."

Rank Math Features

In the screenshot below, you can see that Rank Math offers a configuration interface for structured data with explicit fields that directly correspond to the properties expected by Schema.org (e.g., duration, ingredients, instructions, etc.). This format makes implementation more intuitive, minimizes the risk of omissions, and ensures that the generated markup complies with Google's standards. :

 

  • Titlename
  • Description:  description
  • Prep timeprepTime
  • Cooking timecookTime
  • Total time : totalTime
  • TyperecipeCategory
  • KitchenrecipeCuisine
  • Keywordskeywords

But even though the interface is intuitive, it still lacks several features when compared to Schema.org and Google Recipes guidelines.

Required Properties (Google)

  1. image: URL of the dish image
  2. recipeIngredient: list of ingredients
  3. recipeInstructions: Preparation Steps

⚠️ Without these properties, Google cannot display a “rich snippet” for the recipe.


Properties Recommended by Google

  1. author : author's name (@type: Person or Organization)
  2. datePublished: publication date
  3. aggregateRating: average rating for the recipe
  4. nutrition :  @type: NutritionInformation (e.g., calories, fats, proteins)
  5. recipeYield: number of servings / portions
  6. video (if available): @type: VideoObject

Optional properties

  • review: individual reviews
  • suitableForDiet : e.g., LowFatDiet, VeganDiet
  • cookingMethod: example: “oven”, “grill”
  • tool : Equipment needed (@type: HowToTool)
  • supply: specific ingredients (detailed list)
  • estimatedCost: approximate cost

We've noticed that the free version of Rank Math only displays some of the fields.To be 100% compliant with Google Recipes, you must add at least the following to your recipe:

    • image
    • recipeIngredient
    • recipeInstructions

Next, if you want to maximize your visibility in the Google Recipes carousel, it’s a good idea to add:

  • author
  • datePublished
  • aggregateRating
  • nutrition
  • recipeYield

What options do we have to maximize the properties and ensure that our recipes are understood by Google and displayed correctly if Rank Math doesn't allow us to enter all these fields?

We'll come back to this issue later.

Other Points to Consider

Several types of structured data can be used in a single post, provided there is consistency in how that data is used. For example, “Localbusiness” and “recipe” can be used in the same post if it refers to a pastry shop or bakery that makes its own desserts and chooses to feature recipes. Unfortunately, plugins like Rank Math only allow you to choosea single schema type from the list they provide (see image of available schema types in Rank Math).

Where should they be placed?

Google recommande de les positionner dans le <head> ou dans le <body> de votre article mais lorsqu’on utilise les extensions comme Rank Math et Yoast SEO, la question ne se pose pas car ils sont implémentés directement dans la balise <head>.

Vu que Google donne la possibilité des les intégrer dans le <body> d’un article, vous pouvez rédiger votre article et ajouter facilement le script.
If you're wondering which types to choose, you should know that you can generate the JSON-LD code for the recipe using LLMs such as ChatGPT or Claude AI. They'll list all the properties you need for this article.
In my case, ChatGPT listed the types I needed, which I then copied into the body of the article for the purposes of the test. In another test, I edited it. the file directly header.php from my child theme and added the code inside the tag  <head>

JSON-LD Code Example (Recipe)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Forêt noire (biscuit cacao, chantilly et cerises)",
  "description": "Gâteau Forêt noire maison : biscuit cacao moelleux, chantilly et cerises au sirop, décoré de copeaux de chocolat.",
  "image": [
    "https://guycharles-ahondjo.com/wp-content/uploads/2025/09/gateau-foret-noire-2.png"
  ],
  "author": {
    "@type": "Person",
    "name": "Guy-Charles Ahondjo"
  },
  "datePublished": "2025-09-10",
  "dateModified": "2025-09-10",
  "prepTime": "PT50M",
  "cookTime": "PT35M",
  "totalTime": "PT1H35M",
  "recipeYield": "8 parts",
  "recipeCategory": "Dessert",
  "recipeCuisine": "Allemande",
  "keywords": "forêt noire, gateau chocolat, cerises, chantilly, recette",
  "recipeIngredient": [
    "6 œufs",
    "150 g de sucre en poudre (ou sucre semoule)",
    "1 sachet de sucre vanillé",
    "55 g de farine",
    "55 g de fécule de maïs (maïzena)",
    "3 c. à s. de cacao amer (non sucré)",
    "65 cl de crème liquide entière (35% MG)",
    "1 bocal de cerises au sirop (égouttées, jus réservé)",
    "30 g de sucre glace",
    "Copeaux de chocolat (pour la décoration)"
  ],
  "recipeInstructions": [
    {
      "@type": "HowToSection",
      "name": "Pour le biscuit",
      "itemListElement": [
        { "@type": "HowToStep", "text": "Préchauffer le four à 165 °C." },
        { "@type": "HowToStep", "text": "Battre les jaunes d’œufs, le sucre en poudre et le sucre vanillé jusqu’à ruban." },
        { "@type": "HowToStep", "text": "Ajouter la farine, la fécule de maïs et le cacao." },
        { "@type": "HowToStep", "text": "Monter les blancs en neige et incorporer délicatement." },
        { "@type": "HowToStep", "text": "Verser dans un moule à manqué beurré et cuire 30 minutes." },
        { "@type": "HowToStep", "text": "Démouler et laisser refroidir sur une grille." }
      ]
    },
    {
      "@type": "HowToSection",
      "name": "Pour la chantilly",
      "itemListElement": [
        { "@type": "HowToStep", "text": "Fouetter la crème liquide bien froide." },
        { "@type": "HowToStep", "text": "Incorporer le sucre glace en continuant de fouetter." }
      ]
    },
    {
      "@type": "HowToSection",
      "name": "Montage",
      "itemListElement": [
        { "@type": "HowToStep", "text": "Égoutter les cerises et réserver le jus." },
        { "@type": "HowToStep", "text": "Couper le biscuit en deux, imbiber de jus de cerises." },
        { "@type": "HowToStep", "text": "Étaler la chantilly, ajouter les cerises et refermer le gâteau." },
        { "@type": "HowToStep", "text": "Recouvrir de chantilly, décorer de copeaux et cerises." },
        { "@type": "HowToStep", "text": "Servir." }
      ]
    }
  ]
}
</script>
  

Once the code has been generated, you can test it using the tools provided by Google and Schema.org:

Back to top