Skip to content
\n

Question: While this is valid according to validator.schema.org, I don't know if it aligns with the intent behind the recipeInstructions property. Would it be reasonable to represent each part of my recipe as its own sub-recipe and place these under the recipeInstructions property? Are there other approaches that I should consider?

\n

Sidenote: I understand that Google has stricter requirements for recipe schemas for the purposes of making them accessible to their crawlers and that my proposal contravenes their requirements. I am not concerned by this as my intention isn't to use this for SEO. I am using the Recipe schema as a standardized representation of a recipe which I can use to populate a template for my personal static recipes catalog.

\n

Thank you in advance for your help!

","upvoteCount":1,"answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"

I think there's a happy middle ground to be found between what schema.org allows us to express vs what Google would like to see. Given the use case you described I'd probably write something along these lines:

\n
{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Recipe\",\n  \"author\": \"Alice\",\n  \"name\": \"Example Recipe\",\n  \"recipeInstructions\": [{\n    \"@type\": \"HowToStep\",\n    \"position\": 1,\n    \"name\": \"Make Shortcrust pastry\",\n    \"text\": \"Follow the recipe for Shortcrust pastry.\",\n    \"item\": {\n      \"@type\": \"Recipe\",\n      \"name\": \"Shortcrust pastry\",\n      \"recipeIngredient\": [\n        \"1 cup flour\",\n        \"1 cup butter\",\n        \"1 tbs water\"\n      ],\n      \"recipeInstructions\": [{\n        \"@type\": \"HowToStep\",\n        \"position\": 1,\n        \"name\": \"cut\",\n        \"text\": \"cut butter into flour\"\n      }, {\n        \"@type\": \"HowToStep\",\n        \"position\": 2,\n        \"name\": \"add\",\n        \"text\": \"add water and work into crust\"\n      }, {\n        \"@type\": \"HowToStep\",\n        \"position\": 3,\n        \"name\": \"form\",\n        \"text\": \"form into oval on pan\"\n      }]\n    }\n  }, {\n    \"@type\": \"HowToStep\",\n    \"position\": 2,\n    \"name\": \"Make Choux pastry\",\n    \"text\": \"Follow the recipe for Choux pastry.\",\n    \"item\": {\n      \"@type\": \"Recipe\",\n      \"name\": \"Choux pastry\",\n      \"recipeIngredient\": [\n        \"1 cup flour\",\n        \"1/4 cup butter\",\n        \"1 cup water\",\n        \"3 eggs\"\n      ],\n      \"recipeInstructions\": [{\n        \"@type\": \"HowToStep\",\n        \"position\": 1,\n        \"name\": \"follow\",\n        \"text\": \"follow the standard stove top process\"\n      }, {\n        \"@type\": \"HowToStep\",\n        \"position\": 2,\n        \"name\": \"place\",\n        \"text\": \"place pastry on top of shortcrust\"\n      }, {\n        \"@type\": \"HowToStep\",\n        \"position\": 3,\n        \"name\": \"bake\",\n        \"text\": \"bake together at 400 degrees for 40 minutes\"\n      }]\n    }\n  }]\n}
","upvoteCount":1,"url":"https://github.com/schemaorg/schemaorg/discussions/3554#discussioncomment-9876581"}}}

How should multi-part recipes be represented? #3554

Answered by jvandriel
jmpage asked this question in Q&A
Discussion options

You must be logged in to vote

I think there's a happy middle ground to be found between what schema.org allows us to express vs what Google would like to see. Given the use case you described I'd probably write something along these lines:

{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "author": "Alice",
  "name": "Example Recipe",
  "recipeInstructions": [{
    "@type": "HowToStep",
    "position": 1,
    "name": "Make Shortcrust pastry",
    "text": "Follow the recipe for Shortcrust pastry.",
    "item": {
      "@type": "Recipe",
      "name": "Shortcrust pastry",
      "recipeIngredient": [
        "1 cup flour",
        "1 cup butter",
        "1 tbs water"
      ],
      "recipeInstructions": [{
  …

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@jmpage
Comment options

Answer selected by jmpage
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants