diff --git a/out/json/Franzbrötchen.json b/out/json/Franzbrötchen.json
new file mode 100644
index 0000000..bc278d0
--- /dev/null
+++ b/out/json/Franzbrötchen.json
@@ -0,0 +1,828 @@
+{
+ "created_at": "2025-06-18T18:26:29.219156+02:00",
+ "created_by": 5,
+ "description": null,
+ "file_path": "",
+ "id": 71,
+ "image": null,
+ "internal": true,
+ "keywords": [
+ {
+ "created_at": "2024-08-11T22:29:36.599408+02:00",
+ "description": "",
+ "full_name": "Fr\u00fchst\u00fcck",
+ "id": 6,
+ "label": "Fr\u00fchst\u00fcck",
+ "name": "Fr\u00fchst\u00fcck",
+ "numchild": 0,
+ "parent": null
+ },
+ {
+ "created_at": "2024-08-12T00:12:55.162950+02:00",
+ "description": "",
+ "full_name": "GPN",
+ "id": 10,
+ "label": "GPN",
+ "name": "GPN",
+ "numchild": 0,
+ "parent": null
+ },
+ {
+ "created_at": "2025-05-01T17:04:38.215340+02:00",
+ "description": "",
+ "full_name": "gpn23",
+ "id": 32,
+ "label": "gpn23",
+ "name": "gpn23",
+ "numchild": 0,
+ "parent": null
+ }
+ ],
+ "last_cooked": null,
+ "name": "Franzbr\u00f6tchen",
+ "nutrition": null,
+ "private": false,
+ "properties": [],
+ "rating": null,
+ "servings": 25,
+ "servings_text": "",
+ "shared": [],
+ "show_ingredient_overview": true,
+ "source_url": null,
+ "steps": [
+ {
+ "file": null,
+ "id": 258,
+ "ingredients": [
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 846.0,
+ "conversions": [
+ {
+ "amount": 846.0,
+ "food": "Weizenmehl (Type 550)",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.846,
+ "food": "Weizenmehl (Type 550)",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: Gluten",
+ "fdc_id": null,
+ "food_onhand": false,
+ "full_name": "Weizenmehl (Type 550)",
+ "id": 431,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "Weizenmehl (Type 550)",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": "Weizenmehl (Type 550)",
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": {
+ "description": null,
+ "id": 39,
+ "name": "Backen"
+ },
+ "url": ""
+ },
+ "id": 1011,
+ "is_header": false,
+ "no_amount": false,
+ "note": "",
+ "order": 0,
+ "original_text": "846\u202fg \tWeizenmehl 550 \t85\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 100.0,
+ "conversions": [
+ {
+ "amount": 100.0,
+ "food": "Weizenvollkornmehl",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.1,
+ "food": "Weizenvollkornmehl",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: Gluten",
+ "fdc_id": null,
+ "food_onhand": false,
+ "full_name": "Weizenvollkornmehl",
+ "id": 482,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "Weizenvollkornmehl",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": null,
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": null,
+ "url": ""
+ },
+ "id": 1012,
+ "is_header": false,
+ "no_amount": false,
+ "note": "",
+ "order": 1,
+ "original_text": "100\u202fg \tWeizenvollkornmehl \t10\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 498.0,
+ "conversions": [
+ {
+ "amount": 498.0,
+ "food": "Margarine",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.498,
+ "food": "Margarine",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: \u2049\ufe0f verwendetes Produkt pr\u00fcfen",
+ "fdc_id": 1,
+ "food_onhand": false,
+ "full_name": "Margarine",
+ "id": 450,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "Margarine",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": null,
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": null,
+ "url": ""
+ },
+ "id": 1013,
+ "is_header": false,
+ "no_amount": false,
+ "note": "",
+ "order": 2,
+ "original_text": "498\u202fg \tButter \t50\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 448.0,
+ "conversions": [
+ {
+ "amount": 448.0,
+ "food": "Wasser",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.448,
+ "food": "Wasser",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: (keine)",
+ "fdc_id": null,
+ "food_onhand": false,
+ "full_name": "Wasser",
+ "id": 238,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "Wasser",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": null,
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": null,
+ "url": ""
+ },
+ "id": 1014,
+ "is_header": false,
+ "no_amount": false,
+ "note": "",
+ "order": 3,
+ "original_text": "448\u202fg \tWasser \t45\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 149.0,
+ "conversions": [
+ {
+ "amount": 149.0,
+ "food": "Zimtzucker",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.149,
+ "food": "Zimtzucker",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: (keine)",
+ "fdc_id": null,
+ "food_onhand": false,
+ "full_name": "Zimtzucker",
+ "id": 483,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "Zimtzucker",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": null,
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": null,
+ "url": ""
+ },
+ "id": 1015,
+ "is_header": false,
+ "no_amount": false,
+ "note": "",
+ "order": 4,
+ "original_text": "149\u202fg \tZimtzucker \t15\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 100.0,
+ "conversions": [
+ {
+ "amount": 100.0,
+ "food": "Zucker",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.1,
+ "food": "Zucker",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: (keine)",
+ "fdc_id": null,
+ "food_onhand": false,
+ "full_name": "Zucker",
+ "id": 37,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "Zucker",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": "",
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": {
+ "description": "",
+ "id": 6,
+ "name": "Gew\u00fcrze"
+ },
+ "url": ""
+ },
+ "id": 1016,
+ "is_header": false,
+ "no_amount": false,
+ "note": "",
+ "order": 5,
+ "original_text": "100\u202fg \tZucker \t10\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 100.0,
+ "conversions": [
+ {
+ "amount": 100.0,
+ "food": "altes Weizenanstellgut TA 200",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.1,
+ "food": "altes Weizenanstellgut TA 200",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: Gluten",
+ "fdc_id": null,
+ "food_onhand": false,
+ "full_name": "altes Weizenanstellgut TA 200",
+ "id": 486,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "altes Weizenanstellgut TA 200",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": null,
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": null,
+ "url": ""
+ },
+ "id": 1017,
+ "is_header": false,
+ "no_amount": false,
+ "note": "(weich)",
+ "order": 6,
+ "original_text": "100\u202fg \taltes Weizenanstellgut TA 200 (weich) \t10\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 100.0,
+ "conversions": [
+ {
+ "amount": 100.0,
+ "food": "Margarine",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.1,
+ "food": "Margarine",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: \u2049\ufe0f verwendetes Produkt pr\u00fcfen",
+ "fdc_id": 1,
+ "food_onhand": false,
+ "full_name": "Margarine",
+ "id": 450,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "Margarine",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": null,
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": null,
+ "url": ""
+ },
+ "id": 1018,
+ "is_header": false,
+ "no_amount": false,
+ "note": "(geschmolzen)",
+ "order": 7,
+ "original_text": "100\u202fg \tButter (geschmolzen) \t10\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 20.0,
+ "conversions": [
+ {
+ "amount": 20.0,
+ "food": "Frischhefe",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.02,
+ "food": "Frischhefe",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: (keine)",
+ "fdc_id": null,
+ "food_onhand": false,
+ "full_name": "Frischhefe",
+ "id": 432,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "Frischhefe",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": null,
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": {
+ "description": null,
+ "id": 41,
+ "name": "K\u00fchltheke"
+ },
+ "url": ""
+ },
+ "id": 1019,
+ "is_header": false,
+ "no_amount": false,
+ "note": "",
+ "order": 8,
+ "original_text": "20\u202fg \tFrischhefe (konventionell) \t2\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 16.0,
+ "conversions": [
+ {
+ "amount": 0.9411764705882353,
+ "food": "Salz",
+ "unit": "EL"
+ },
+ {
+ "amount": 2.2857142857142856,
+ "food": "Salz",
+ "unit": "TL"
+ },
+ {
+ "amount": 16.0,
+ "food": "Salz",
+ "unit": "g / Gramm"
+ },
+ {
+ "amount": 0.016,
+ "food": "Salz",
+ "unit": "kg / Kilogramm"
+ }
+ ],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: (keine)",
+ "fdc_id": null,
+ "food_onhand": false,
+ "full_name": "Salz",
+ "id": 225,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "Salz",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": null,
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": {
+ "description": "",
+ "id": 6,
+ "name": "Gew\u00fcrze"
+ },
+ "url": ""
+ },
+ "id": 1020,
+ "is_header": false,
+ "no_amount": false,
+ "note": "",
+ "order": 9,
+ "original_text": "16\u202fg \tSalz \t1,6\u202f%",
+ "unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ },
+ {
+ "always_use_plural_food": false,
+ "always_use_plural_unit": false,
+ "amount": 0.0,
+ "conversions": [],
+ "food": {
+ "child_inherit_fields": [],
+ "description": "Allergene: (keine)",
+ "fdc_id": null,
+ "food_onhand": false,
+ "full_name": "L\u00e4uterzucker",
+ "id": 485,
+ "ignore_shopping": false,
+ "inherit_fields": [],
+ "name": "L\u00e4uterzucker",
+ "numchild": 0,
+ "open_data_slug": null,
+ "parent": null,
+ "plural_name": null,
+ "properties_food_amount": 100.0,
+ "properties_food_unit": {
+ "base_unit": "g",
+ "description": "",
+ "id": 5,
+ "name": "g / Gramm",
+ "open_data_slug": null,
+ "plural_name": "g"
+ },
+ "recipe": null,
+ "substitute": [],
+ "substitute_children": false,
+ "substitute_onhand": false,
+ "substitute_siblings": false,
+ "supermarket_category": null,
+ "url": ""
+ },
+ "id": 1021,
+ "is_header": false,
+ "no_amount": true,
+ "note": "",
+ "order": 10,
+ "original_text": "L\u00e4uterzucker",
+ "unit": null,
+ "used_in_recipes": [
+ {
+ "id": 71,
+ "name": "Franzbr\u00f6tchen"
+ }
+ ]
+ }
+ ],
+ "instruction": "",
+ "instructions_markdown": "",
+ "name": "",
+ "order": 0,
+ "show_as_header": false,
+ "show_ingredients_table": true,
+ "step_recipe": null,
+ "step_recipe_data": null,
+ "time": 0
+ }
+ ],
+ "updated_at": "2025-06-18T19:25:49.397776+02:00",
+ "waiting_time": 0,
+ "working_time": 0
+}
\ No newline at end of file
diff --git a/out/markdown/Franzbrötchen.md b/out/markdown/Franzbrötchen.md
new file mode 100644
index 0000000..53c2b66
--- /dev/null
+++ b/out/markdown/Franzbrötchen.md
@@ -0,0 +1,30 @@
+* Portionen: 25
+
+
+## Zutaten (gesamt)
+- 846 g Weizenmehl (Type 550)
+- 100 g Weizenvollkornmehl
+- 498 g Margarine
+- 448 g Wasser
+- 149 g Zimtzucker
+- 100 g Zucker
+- 100 g altes Weizenanstellgut TA 200
+- 100 g Margarine
+- 20 g Frischhefe
+- 16 g Salz
+- Läuterzucker
+
+## Zubereitung
+1.
+- 846 g Weizenmehl (Type 550)
+- 100 g Weizenvollkornmehl
+- 498 g Margarine
+- 448 g Wasser
+- 149 g Zimtzucker
+- 100 g Zucker
+- 100 g altes Weizenanstellgut TA 200
+- 100 g Margarine
+- 20 g Frischhefe
+- 16 g Salz
+- Läuterzucker
+
diff --git a/out/mediawiki/Franzbrötchen.mediawiki b/out/mediawiki/Franzbrötchen.mediawiki
new file mode 100644
index 0000000..20d9a1f
--- /dev/null
+++ b/out/mediawiki/Franzbrötchen.mediawiki
@@ -0,0 +1,33 @@
+* Portionen: 25
+
+
+== Zutaten (gesamt) ==
+
+* 846 g Weizenmehl (Type 550)
+* 100 g Weizenvollkornmehl
+* 498 g Margarine
+* 448 g Wasser
+* 149 g Zimtzucker
+* 100 g Zucker
+* 100 g altes Weizenanstellgut TA 200
+* 100 g Margarine
+* 20 g Frischhefe
+* 16 g Salz
+* Läuterzucker
+
+
+== Zubereitung ==
+
+#
+
+* 846 g Weizenmehl (Type 550)
+* 100 g Weizenvollkornmehl
+* 498 g Margarine
+* 448 g Wasser
+* 149 g Zimtzucker
+* 100 g Zucker
+* 100 g altes Weizenanstellgut TA 200
+* 100 g Margarine
+* 20 g Frischhefe
+* 16 g Salz
+* Läuterzucker