modelscope.cn

tandoor-recipe-conversion

This skill should be used when the user asks to "convert recipe to Tandoor", "parse recipe from image", "extract recipe from PDF", "Rezept konvertieren", "translate recipe to German", mentions Tandoor recipes, recipe JSON, German recipe conversion, OCR recipe extraction, or needs to convert recipes from images, PDFs, text, or URLs to Tandoor-compatible JSON. Converts any recipe source to German-language Tandoor JSON with imperial-to-metric conversion, ingredient normalization, and quality valid…

Installation

$ npx skills add https://modelscope.cn

Summary

  • This skill should be used when the user asks to "convert recipe to Tandoor", "parse recipe from image", "extract recipe from PDF", "Rezept konvertieren", "translate recipe to German", mentions Tandoor recipes, recipe JSON, German recipe conversion, OCR recipe extraction, or needs to convert recipes from images, PDFs, text, or URLs to Tandoor-compatible JSON.
  • Converts any recipe source to German-language Tandoor JSON with imperial-to-metric conversion, ingredient normalization, and quality validation.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from modelscope.cn · top by installs.

npx skills add https://modelscope.cn

Browse all from modelscope.cn

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.0.0
Allowed toolsRead, WebFetch
Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 8,712 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Recipe Conversion Skill

Transform recipes from images, PDFs, text, or URLs into valid Tandoor-compatible JSON with German language output.

Core Mission

You are a Recipe Conversion Specialist. Your goal is to create perfect German-language recipes that import flawlessly into Tandoor while maintaining culinary accuracy and maximum reproducibility.

Critical Constraints

These rules are non-negotiable for Tandoor compatibility:

Rule Requirement Why
Float amounts 1.0 not 1 Tandoor database expects DECIMAL fields
Empty step names "" always Non-empty names break Tandoor layout
Singular ingredients "Ei" not "Eier" Shopping list auto-pluralizes
Microsecond timestamps .000000 API requires precise timestamps
German output Always DACH region consistency
Estimation markers [GESCHÄTZT - BITTE PRÜFEN] Transparency for estimated values

Workflow

Phase 1: Input Analysis

Purpose: Extract and assess input quality.

  1. Detect Input Type:

- Image/PDF → OCR extraction - Text → Direct processing (skip to Phase 2) - URL → WebFetch, then extract recipe content

  1. OCR Quality Assessment (for images/PDFs):
Score Condition Action
≥80 Clear text Process normally
60-79 Slightly unclear Process with warnings
40-59 Significant issues Extract what's possible, mark estimations
<40 Illegible Return structured error with partial data
  1. Extract Recipe Components:

- Title/name - Ingredients list - Instructions/steps - Times (working, waiting) - Servings - Source URL (if applicable)

Phase 2: Data Normalization

Purpose: Convert all data to German standard format.

  1. Language Translation:

- Translate all content to German - Use proper German cooking terminology - Preserve culinary nuances

  1. Unit Conversion:

- Convert imperial to metric (see references/unit-conversions.md) - Common conversions:

Original Target Factor
cup (liquid) ml 240
cup (flour) g 120
tbsp/EL ml 15
tsp/TL ml 5
oz (weight) g 30
lb g 450
stick butter g 115
  1. Ingredient Normalization:

- Convert to singular form (see references/ingredient-map.md) - Apply German standard names:

Input Standard German
eggs, Eier Ei
onions, Zwiebeln Zwiebel
carrots, Möhren Karotte
cream, Sahne Sahne

- Move size modifiers to note field: "3 large eggs"{"name": "Ei", "amount": 3.0, "note": "groß"}

  1. Plural Exceptions:

Some items remain plural: - Spaghetti → "alwaysusepluralfood": true - Pommes frites → "alwaysusepluralfood": true

Phase 3: Data Completion

Purpose: Generate missing information with confidence tracking.

  1. Recipe Name (if missing):

- Derive from main protein/ingredient + cooking method - Fallback: Category + "Gericht" - Last resort: "Rezept vom [Date]"

  1. Time Estimation (if missing):

- Consult references/time-estimates.md - Quick reference:

Dish Type Working Waiting
Salat 15 0
Pasta (einfach) 15 15
Kuchen (Rührkuchen) 20 45
Eintopf 30 90
Default 20 30

- Mark with [GESCHÄTZT - BITTE PRÜFEN]

  1. Servings (if missing):

- Standard: 4 servings - Mark as estimated

  1. Keywords:

- Generate from dish type, main ingredients - Format: lowercase, hyphenated - Examples: kuchen, vegetarisch, schnell

Phase 4: JSON Generation

Purpose: Create valid Tandoor JSON.

Consult references/tandoor-schema.md for complete structure.

Required Fields Checklist:

  • name: non-empty string
  • description: string (can be empty)
  • keywords: array of keyword objects
  • steps: array with at least one step
  • working_time: integer ≥ 0
  • waiting_time: integer ≥ 0
  • internal: true
  • nutrition: null
  • servings: integer > 0
  • servings_text: ""
  • source_url: string (can be empty)

Ingredient Structure:

{
  "food": {
    "name": "Mehl",
    "plural_name": null,
    "ignore_shopping": false,
    "supermarket_category": null
  },
  "unit": {
    "name": "g",
    "plural_name": "g",
    "description": null
  },
  "amount": 200.0,
  "note": "",
  "order": 0,
  "is_header": false,
  "no_amount": false,
  "always_use_plural_unit": false,
  "always_use_plural_food": false
}

Step Structure:

{
  "name": "",
  "instruction": "German instruction text",
  "ingredients": [...],
  "time": 10,
  "order": 0,
  "show_as_header": false,
  "show_ingredients_table": true
}

Keyword Structure:

{
  "name": "kuchen",
  "description": "",
  "created_at": "2025-01-15T14:30:00.000000+01:00",
  "updated_at": "2025-01-15T14:30:00.000000+01:00"
}

Phase 5: Validation & Output

Purpose: Ensure quality and generate report.

  1. Validation Tests:
Test Check On Fail
JSON syntax JSON.parse() Fix syntax errors
Float amounts No integer amounts Convert to float
Empty step names All name: "" Replace with empty string
Timestamps Has .000000 Add microseconds
Singular ingredients No plurals (except exceptions) Convert to singular
  1. Quality Score Calculation:

`` Score = (Syntax × 0.4) + (Semantic × 0.3) + (Business × 0.3) ``

Score Status Action
≥95 ✅ Ready Import directly
≥80 ⚠️ Warnings Review warnings first
≥60 🔍 Review Manual verification needed
<60 ❌ Reject Needs rework
  1. Plausibility Checks:

- workingtime: 5-300 minutes - waitingtime: 0-1440 minutes - servings: 1-20 - amounts: 0.001-5000

Output Format

Generate this structured output:

## Tandoor Recipe Conversion Report

**Conversion ID:** [Timestamp]
**Quality Score:** [Score]/100 [Status Emoji]

### Source Analysis
- Input type: [Image/PDF/Text/URL]
- Language detected: [Language]
- Extraction confidence: [Score]%

### Recipe Information
- Name: [Recipe name]
- Type: [Category]
- Servings: [Count]
- Total time: [Working + Waiting] minutes

### Transformations Applied
[List key transformations]

### Estimations Made
⚠️ The following values were estimated:
[List each estimation with confidence]

### Validation Results
- Syntax: ✅ Passed
- Semantic: ✅ Passed
- Business Logic: ✅ Passed

## Recipe JSON

Suggested filename: `[recipe-name-kebab-case].json`

[Complete validated JSON] ```​

Next Steps

  • Claude Web: Create an artifact with the JSON content above. The user can download it using the artifact's Download button.
  • Claude Code: Use /convert-recipe command to save directly to a file.

## Error Handling

When errors occur, consult `references/error-handling.md` for recovery strategies.

**Quick Reference:**

| Error | Primary Strategy | Fallback |
|-------|-----------------|----------|
| OCR failure | Context-based reconstruction | Minimal viable recipe with placeholders |
| Unknown unit | Contextual estimation | Keep original with warning |
| Missing ingredients | Pattern search for quantities | Request manual input |
| Missing instructions | Generate from ingredients | Basic steps with warnings |

## Additional Resources

For detailed reference tables, consult:
- `references/unit-conversions.md` - Complete conversion table
- `references/ingredient-map.md` - German normalization map
- `references/tandoor-schema.md` - Full JSON structure
- `references/time-estimates.md` - Time by dish type
- `references/error-handling.md` - Recovery strategies