Extract structured data from the following HTML and return it as JSON.

HTML:
<div class="post-header__body oflow-x-hidden post-header__body--recipe" role="banner" style="outline: rgb(74, 144, 226) solid 3px; outline-offset: 2px;"><div class="headline post-header__title post-header__title--masthead-layout"><h1 class="heading-1">Slow cooker ratatouille</h1></div><div class="post-header__body__author"><div class="author-link d-inline pa-reset author-link__list" data-feature="Author"><ul class="d-inline pa-reset list-style-none"><li class="d-inline"><a class="link link--styled" data-component="Link" href="/author/libertymendez" rel="author">Liberty Mendez</a></li></ul></div></div><div class="pocket hidden-print mb-sm" data-placement="recipeActions"><div class="split-button" data-feature="save"><button class="button split-button__button split-button__main-button button--no-min-width" data-component="Button" data-component-variant="save" data-gtm-class="save-button" role="button" type="button"><div class="button__content"><div class="split-button__main-button-content d-flex justify-content-space-between align-items-center full-width"><i class="icon" style="width:14px;min-width:14px;height:14px;min-height:14px;animation-duration:1000ms"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color:inherit;fill:inherit"><use xlink:href="/static/icons/base/sprite-maps/core-1a005f7320611e9f728ab33e1967ce65.svg#plus"></use></svg></i><div class="pl-xs">Save recipe</div></div></div></button><button aria-label="Manage Collections" class="button split-button__button split-button__sub-button button--no-min-width button--no-padding button--secondary" data-component="Button" data-component-variant="add-to-collection-button" data-gtm-class="add-to-collection-button" role="button" tabindex="-1" type="button"><div class="button__content"><i class="icon" style="width:20px;min-width:20px;height:20px;min-height:20px;animation-duration:1000ms"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color:inherit;fill:inherit"><use xlink:href="/static/icons/base/sprite-maps/core-1a005f7320611e9f728ab33e1967ce65.svg#dot-menu"></use></svg></i></div></button></div></div><div class="recipe-cook-and-prep-details"><div class="recipe-cook-and-prep-details__section"><div class="recipe-cook-and-prep-details__item"><strong>Serves 6</strong></div><div class="recipe-cook-and-prep-details__item" style="outline-offset: 2px;"><strong>Easy</strong></div></div><div class="recipe-cook-and-prep-details__section"><div class="recipe-cook-and-prep-details__item">Prep:<!-- --> <strong><span><time datetime="PT0H10M">10 mins</time></span></strong></div><div class="recipe-cook-and-prep-details__item">Cook:<!-- --> <strong><span><time datetime="PT6H20M">6 hrs and 20 mins</time></span></strong></div></div></div><div class="pocket hidden-print post-header__row--center-aligned body-copy-small pocket--horizontal" data-placement="recipeMeta"><div class="mt-sm d-flex"><div class="rating__skiplinks" data-feature="Reactions" data-placement="Reactions Quick Links"><a class="link d-flex" data-component="Link" href="#rating"><div class="rating rating--inline"><div aria-label="rating" class="rating__values"><div class="rating__stars d-flex"><i class="rating__icon d-inline-flex icon" style="width: 15px; min-width: 15px; height: 15px; min-height: 15px; animation-duration: 1000ms;"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color: rgb(244, 191, 31); fill: rgb(244, 191, 31);"><use xlink:href="/static/icons/base/sprite-maps/stars-1a005f7320611e9f728ab33e1967ce65.svg#star-fill"></use></svg></i><i class="rating__icon d-inline-flex icon" style="width: 15px; min-width: 15px; height: 15px; min-height: 15px; animation-duration: 1000ms;"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color: rgb(244, 191, 31); fill: rgb(244, 191, 31);"><use xlink:href="/static/icons/base/sprite-maps/stars-1a005f7320611e9f728ab33e1967ce65.svg#star-fill"></use></svg></i><i class="rating__icon d-inline-flex icon" style="width: 15px; min-width: 15px; height: 15px; min-height: 15px; animation-duration: 1000ms;"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color: rgb(244, 191, 31); fill: rgb(244, 191, 31);"><use xlink:href="/static/icons/base/sprite-maps/stars-1a005f7320611e9f728ab33e1967ce65.svg#star-fill"></use></svg></i><i class="rating__icon d-inline-flex icon" style="width: 15px; min-width: 15px; height: 15px; min-height: 15px; animation-duration: 1000ms;"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color: rgb(244, 191, 31); fill: rgb(244, 191, 31);"><use xlink:href="/static/icons/base/sprite-maps/stars-1a005f7320611e9f728ab33e1967ce65.svg#star-fill"></use></svg></i><i class="rating__icon d-inline-flex icon" style="width: 15px; min-width: 15px; height: 15px; min-height: 15px; animation-duration: 1000ms;"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color: rgb(244, 191, 31); fill: rgb(244, 191, 31);"><use xlink:href="/static/icons/base/sprite-maps/stars-1a005f7320611e9f728ab33e1967ce65.svg#star-outline"></use></svg></i></div><span class="sr-only">A star rating of 4.3 out of 5.</span><span class="rating__count-text body-copy-small">40 ratings</span><span class="rating__rate-link ml-xs body-copy-small">Rate</span></div></div></a><script type="application/ld+json">{"@context":"https://schema.org/","@id":"https://www.bbcgoodfood.com/recipes/slow-cooker-ratatouille#Recipe","aggregateRating":{"@type":"AggregateRating","ratingValue":4,"reviewCount":40,"bestRating":5,"worstRating":1}}</script><a class="link d-inline-flex link--styled" data-component="Link" href="#commentsFeed">10 comments</a></div></div></div><div><div class="line-clamper recipe-masthead__description" id="recipe-masthead-description"><div class="region-clamper line-clamper__content" id="recipe-masthead-description-region" style="line-clamp:3;-webkit-line-clamp:3"><div class="editor-content" style="outline-offset: 2px;"><p style="outline-offset: 2px;">Make up a batch of this slow-cooked ratatouille and freeze for easy midweek meals when you’re busy. Packed with nutrients, it also delivers four of your 5-a-day</p></div></div></div></div><div class="post-header--masthead__tags"><div class="post-header--masthead__tags-item">Freezable</div><div class="post-header--masthead__tags-item">Dairy-free</div><div class="post-header--masthead__tags-item">Egg-free</div><div class="post-header--masthead__tags-item">Healthy</div><div class="post-header--masthead__tags-item">Nut-free</div><div class="post-header--masthead__tags-item">Vegan</div><div class="post-header--masthead__tags-item">Vegetarian</div></div><div class="ab_container"><button class="button hidden-for-sm-down button--icon button--no-min-width button--secondary" data-component="Button" data-component-variant="print-button" data-feature="print" data-gtm-class="print-button" role="button" type="button"><div class="button__content"><i class="mr-xs icon" style="width:20px;min-width:20px;height:20px;min-height:20px;animation-duration:nullms"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color:inherit;fill:inherit"><use xlink:href="/static/icons/base/sprite-maps/core-1a005f7320611e9f728ab33e1967ce65.svg#print"></use></svg></i>Print</div></button><a class="ab_download_button" href="https://immediate.onelink.me/OQap?af_xp=custom&amp;pid=website&amp;c=guide_link_may25_variant2&amp;is_retargeting=true&amp;af_reengagement_window=30d&amp;af_dp=bbcgoodfood%3A%2F%2F" target="_blank"><img class="ab_pinktick" src="https://media.immediate.co.uk/volatile/sites/30/2025/03/arrowoutward27dpBE2A77FILL0wght400GRAD0opsz24-d1f0d96.svg"/><img class="ab_hide ab_whitetick" src="https://media.immediate.co.uk/volatile/sites/30/2025/02/arrowoutward24dp5F6368FILL0wght400GRAD0opsz24-1-8008a4f.svg"/>Try our app</a><p></p></div><div class="hidden-for-md-up post-header--masthead__piano-button-wrapper masthead-piano-promo-button"></div></div>
<!-- FRAGMENT SEPARATOR -->
<div class="tabbed-list recipe__ingredients-nutrition" data-component="TabbedList" style="outline-offset: 2px; outline: rgb(74, 144, 226) solid 3px;"><div class="tabbed-list__header"><h2 class="tabbed-list__tab heading-3"><button class="tabbed-list__tab-button tabbed-list__tab-button--active" data-feature="TabbedListButton" data-feature-variant="Left" data-gtm-vis-first-on-screen39254740_288="157167" data-gtm-vis-has-fired39254740_288="1" data-gtm-vis-recent-on-screen39254740_288="157167" data-gtm-vis-total-visible-time39254740_288="100" data-index="1" type="button">Ingredients</button></h2><h2 class="tabbed-list__tab heading-3"><button class="tabbed-list__tab-button" data-feature="TabbedListButton" data-feature-variant="Right" data-gtm-vis-first-on-screen39254740_288="157175" data-gtm-vis-has-fired39254740_288="1" data-gtm-vis-recent-on-screen39254740_288="157175" data-gtm-vis-total-visible-time39254740_288="100" data-index="2" type="button">Nutrition</button></h2></div><div class="tabbed-list__content"><div class=""><section class="ingredients-list" data-component="IngredientsList" data-feature="Recipe Instructions" data-gtm-vis-first-on-screen39254740_288="157536" data-gtm-vis-has-fired39254740_288="1" data-gtm-vis-recent-on-screen39254740_288="157536" data-gtm-vis-total-visible-time39254740_288="100" data-stitcher-dai-container="ingredients-list" id="ingredients-list"><section><ul class="ingredients-list list"><li class="ingredients-list__item list-item" style="outline-offset: 2px;"><span class="ingredients-list__item-quantity">2 tbsp </span><a class="link link--styled" data-component="Link" href="/glossary/olive-oil-glossary"><span class="ingredients-list__item-ingredient">olive oil</span></a></li><li class="ingredients-list__item list-item list-item--separator-top" style="outline-offset: 2px;"><span class="ingredients-list__item-quantity">1 </span><a class="link link--styled" data-component="Link" href="/glossary/onion-glossary"><span class="ingredients-list__item-ingredient">red onion</span></a><div class="ingredients-list__item-note" style="outline-offset: 2px;"> sliced</div></li><li class="ingredients-list__item list-item list-item--separator-top" style="outline-offset: 2px;"><span class="ingredients-list__item-quantity">2 </span><a class="link link--styled" data-component="Link" href="/glossary/garlic-glossary"><span class="ingredients-list__item-ingredient">garlic cloves</span></a></li><li class="ingredients-list__item list-item list-item--separator-top" style="outline-offset: 2px;"><span class="ingredients-list__item-quantity">2 </span><a class="link link--styled" data-component="Link" href="/glossary/aubergine-glossary"><span class="ingredients-list__item-ingredient">large aubergines</span></a><div class="ingredients-list__item-note"> cut into 1.5cm pieces</div></li><li class="ingredients-list__item list-item list-item--separator-top"><span class="ingredients-list__item-quantity">3 </span><a class="link link--styled" data-component="Link" href="/glossary/courgette-glossary"><span class="ingredients-list__item-ingredient">courgettes</span></a><div class="ingredients-list__item-note"> halved and cut into 2cm pieces</div></li><li class="ingredients-list__item list-item list-item--separator-top"><span class="ingredients-list__item-quantity">3 </span><span class="ingredients-list__item-ingredient">mixed peppers</span><div class="ingredients-list__item-note"> cut into 2cm pieces</div></li><li class="ingredients-list__item list-item list-item--separator-top"><span class="ingredients-list__item-quantity">1 tbsp </span><span class="ingredients-list__item-ingredient">tomato purée</span></li><li class="ingredients-list__item list-item list-item--separator-top"><span class="ingredients-list__item-quantity">6 </span><a class="link link--styled" data-component="Link" href="/glossary/tomato-glossary"><span class="ingredients-list__item-ingredient">large ripe tomatoes</span></a><div class="ingredients-list__item-note"> roughly chopped</div></li><li class="ingredients-list__item list-item list-item--separator-top"><span class="ingredients-list__item-quantity">small bunch of </span><a class="link link--styled" data-component="Link" href="/glossary/basil-glossary"><span class="ingredients-list__item-ingredient">basil</span></a><div class="ingredients-list__item-note"> roughly chopped, plus a few extra leaves to serve</div></li><li class="ingredients-list__item list-item list-item--separator-top"><span class="ingredients-list__item-quantity">few </span><a class="link link--styled" data-component="Link" href="/glossary/thyme-glossary"><span class="ingredients-list__item-ingredient">thyme sprigs</span></a></li><li class="ingredients-list__item list-item list-item--separator-top"><span class="ingredients-list__item-quantity">400g can </span><a class="link link--styled" data-component="Link" href="/glossary/tomato-glossary"><span class="ingredients-list__item-ingredient">plum tomatoes</span></a></li><li class="ingredients-list__item list-item list-item--separator-top"><span class="ingredients-list__item-quantity">1 tbsp </span><span class="ingredients-list__item-ingredient">red wine vinegar</span></li><li class="ingredients-list__item list-item list-item--separator-top"><span class="ingredients-list__item-quantity">1 tsp </span><a class="link link--styled" data-component="Link" href="/glossary/sugar-glossary"><span class="ingredients-list__item-ingredient">brown sugar</span></a></li><li class="ingredients-list__item list-item list-item--separator-top"><a class="link link--styled" data-component="Link" href="/glossary/sourdough-glossary"><span class="ingredients-list__item-ingredient">sourdough</span></a><div class="ingredients-list__item-note"> to serve (optional)</div></li></ul></section><div class="pocket hidden-print ingredients-list__heading list-item--separator-top mt-xs pt-xs pocket--horizontal" data-placement="recipeBelowIngredients"><div class="d-flex"><div data-feature="promotionalWidget" data-feature-variant="promoLink"><div class="line-clamper"><div class="region-clamper line-clamper__content" style="line-clamp:3;-webkit-line-clamp:3">Keep the screen awake with cook mode on the<!-- --> <a class="link link--styled" data-component="Link" href="https://immediate.onelink.me/OQap?af_xp=custom&amp;pid=website&amp;c=ingredients_CTA&amp;is_retargeting=true&amp;af_reengagement_window=30d&amp;af_dp=bbcgoodfood%3A%2F%2F">Good Food app.</a></div></div></div></div></div></section></div><div class="d-none"><p class="recipe__nutritions-caption">Nutrition: Per serving</p><ul class="nutrition-list"><li class="nutrition-list__item"><span class="nutrition-list__label">kcal</span>162</li><li class="nutrition-list__item"><span class="nutrition-list__label">fat</span>5<!-- -->g<div class="nutrition-list__additional-text">low<div class="nutrition-list__additional-text-icon"><i class="icon" style="width:12px;min-width:12px;height:12px;min-height:12px;animation-duration:1000ms;transform:rotate(180deg)"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color:rgba(255, 255, 255, 1);fill:rgba(255, 255, 255, 1)"><use xlink:href="/static/icons/base/sprite-maps/arrows-1a005f7320611e9f728ab33e1967ce65.svg#arrow-light"></use></svg></i></div></div></li><li class="nutrition-list__item"><span class="nutrition-list__label">saturates</span>1<!-- -->g</li><li class="nutrition-list__item"><span class="nutrition-list__label">carbs</span>17<!-- -->g</li><li class="nutrition-list__item"><span class="nutrition-list__label">sugars</span>16<!-- -->g</li><li class="nutrition-list__item"><span class="nutrition-list__label">fibre</span>11<!-- -->g<div class="nutrition-list__additional-text">high<div class="nutrition-list__additional-text-icon"><i class="icon" style="width:12px;min-width:12px;height:12px;min-height:12px;animation-duration:1000ms"><svg aria-hidden="true" class="icon__svg" focusable="false" style="color:rgba(255, 255, 255, 1);fill:rgba(255, 255, 255, 1)"><use xlink:href="/static/icons/base/sprite-maps/arrows-1a005f7320611e9f728ab33e1967ce65.svg#arrow-light"></use></svg></i></div></div></li><li class="nutrition-list__item"><span class="nutrition-list__label">protein</span>6<!-- -->g</li><li class="nutrition-list__item"><span class="nutrition-list__label">salt</span>0.8<!-- -->g</li></ul></div></div></div>
<!-- FRAGMENT SEPARATOR -->
<section class="method-steps mb-lg" data-placement="MethodList" style="outline-offset: 2px; outline: rgb(74, 144, 226) solid 3px;"><h2 class="method-steps__heading heading-3" style="outline-offset: 2px;">Method</h2><ul class="method-steps__list"><li class="method-steps__list-item" style="outline-offset: 2px;"><h3 class="method-steps__item-heading heading-5">step 1</h3><div class="editor-content"><p style="outline-offset: 2px;">Heat the oil in a large <a href="https://www.bbcgoodfood.com/content/top-five-non-stick-frying-pans">frying pan</a> and fry the onion for 8 mins until translucent. Add the garlic and fry for 1 min. Turn the heat to medium-high, add the aubergines and fry for 5 mins until golden. Stir in the courgettes and peppers and fry for 5 mins more until slightly soft. Add the tomato purée, fresh tomatoes, herbs, canned tomatoes, vinegar, sugar and 1 tsp salt and bring to the boil.</p><div class="ad-placement" data-count="399"></div></div></li><li class="method-steps__list-item"><h3 class="method-steps__item-heading heading-5">step 2</h3><div class="editor-content"><p>Transfer to the <a href="https://www.bbcgoodfood.com/howto/guide/slow-cookers-and-how-use-them">slow cooker</a> and cook on low for 5-6 hours or until everything is soft and the sauce has thickened. Season, scatter over some extra basil, and serve with sourdough, if you like.</p><div class="ad-placement" data-count="597"></div></div></li></ul></section>

Return a JSON object with these fields: type, name, description, author, prep_time, cook_time, total_time, servings, ingredients (array), instructions (array)
user
{
  "type": "recipe",
  "name": "Slow cooker ratatouille",
  "description": "Make up a batch of this slow-cooked ratatouille and freeze for easy midweek meals when you’re busy. Packed with nutrients, it also delivers four of your 5-a-day",
  "author": "Liberty Mendez",
  "prep_time": "10 mins",
  "cook_time": "6 hrs and 20 mins",
  "total_time": "6 hrs and 30 mins",
  "servings": "6",
  "ingredients": [
    "2 tbsp olive oil",
    "1 red onion sliced",
    "2 garlic cloves",
    "2 large aubergines cut into 1.5cm pieces",
    "3 courgettes halved and cut into 2cm pieces",
    "3 mixed peppers cut into 2cm pieces",
    "1 tbsp tomato purée",
    "6 large ripe tomatoes roughly chopped",
    "small bunch of basil roughly chopped, plus a few extra leaves to serve",
    "few thyme sprigs",
    "400g can plum tomatoes",
    "1 tbsp red wine vinegar",
    "1 tsp brown sugar"
  ],
  "instructions": [
    "step 1Heat the oil in a large frying pan and fry the onion for 8 mins until translucent. Add the garlic and fry for 1 min. Turn the heat to medium-high, add the aubergines and fry for 5 mins until golden. Stir in the courgettes and peppers and fry for 5 mins more until slightly soft. Add the tomato purée, fresh tomatoes, herbs, canned tomatoes, vinegar, sugar and 1 tsp salt and bring to the boil.",
    "step 2Transfer to the slow cooker and cook on low for 5-6 hours or until everything is soft and the sauce has thickened. Season, scatter over some extra basil, and serve with sourdough, if you like."
  ],
  "image_url": "https://media.immediate.co.uk/volatile/sites/30/2025/03/arrowoutward27dpBE2A77FILL0wght400GRAD0opsz24-d1f0d96.svg"
}
assistant