schemaorg-validate 0.3.0

Parse and validate Schema.org structured data (JSON-LD, Microdata, RDFa) against the official vocabulary and Google Rich Results profiles.
Documentation
# Recipe Profile

**Source:** [Google Recipe structured data](https://developers.google.com/search/docs/appearance/structured-data/recipe)

## Supported Types

- `Recipe`

## Required Fields

| Field | Description |
|-------|-------------|
| `name` | Recipe name |
| `image` | Recipe photo URL |

## Recommended Fields

| Field | Description |
|-------|-------------|
| `author` | Recipe author |
| `description` | Recipe description |
| `prepTime` | Preparation time (ISO 8601 duration) |
| `cookTime` | Cooking time (ISO 8601 duration) |
| `totalTime` | Total time (ISO 8601 duration) |
| `recipeIngredient` | List of ingredients |
| `recipeInstructions` | Cooking instructions |
| `nutrition.calories` | Calorie information |

## Nested Requirements: HowToStep (instructions)

When `recipeInstructions` contains `HowToStep` entities:

| Field | Level | Description |
|-------|-------|-------------|
| `text` | Required | Step description |

## Eligible Example

```json
{
  "@type": "Recipe",
  "name": "Widget Soup",
  "image": "https://example.com/soup.jpg",
  "author": { "@type": "Person", "name": "Chef Widget" },
  "description": "A delicious widget-based soup",
  "prepTime": "PT15M",
  "cookTime": "PT30M",
  "recipeIngredient": ["2 cups widgets", "1 tbsp oil"],
  "recipeInstructions": [
    {
      "@type": "HowToStep",
      "text": "Heat oil in a large pot"
    },
    {
      "@type": "HowToStep",
      "text": "Add widgets and cook for 30 minutes"
    }
  ],
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "250 calories"
  }
}
```