Skip to content
CookDex docs
You're reading the docs for CookDex v2026.9.1, an earlier release. See this page in the latest docs.

Taxonomy tasks

Tags, categories, labels, tools and cookbooks. You draft, validate and publish taxonomy changes in Recipe Organization; taxonomy-refresh and cookbook-sync then sync them to Mealie, and tag-categorize assigns them to recipes. Duplicate tags and categories are merged by cleanup-duplicates.

Option Type Default Description
dry_run boolean true Preview changes without writing anything.
backup_first boolean false Create a Mealie backup before a live run. Hidden while dry_run=true.
method string both both runs rules first then AI, rules uses rules only, ai skips rules.
recat boolean false Re-process every recipe, including recipes that already have organization data. Hidden for rules.
provider string configured default Override AI provider for this run. Hidden for rules.
use_db boolean false Enable Direct DB matching for rules, including ingredient and tool matching. Hidden for ai.
missing_targets string skip skip missing taxonomy targets or create them automatically. Hidden for ai.
Option Type Default Description
dry_run boolean true Preview changes without writing anything.
sync_labels boolean true Sync labels along with categories and tags.
sync_tools boolean true Sync tools and merge duplicates from taxonomy config.
mode string merge merge keeps existing entries; replace preserves entries still named in the source and removes unwanted entries after successful creation.
cleanup_apply boolean false Dangerous. Permanently delete unused categories/tags. Hidden while dry_run=true.
Option Type Default Description
dry_run boolean true Preview changes without writing anything.

Each cookbook’s queryFilterString is a list of clauses joined with AND. CookDex accepts these clauses:

Filter Fields Operators Example
Categories recipeCategory.name, recipe_category.id IN, NOT IN, CONTAINS ALL recipeCategory.name IN ["Dinner"]
Tags tags.name, tags.id IN, NOT IN, CONTAINS ALL tags.name NOT IN ["Dessert"]
Tools tools.name, tools.id IN, NOT IN, CONTAINS ALL tools.name IN ["Air Fryer"]
Foods recipeIngredient.food.name, recipeIngredient.food.id IN, NOT IN, CONTAINS ALL recipeIngredient.food.name IN ["Chicken"]
Food labels recipeIngredient.food.label.name, recipe_ingredient.food.label_id IN, NOT IN, CONTAINS ALL recipeIngredient.food.label.name IN ["Seafood"]
Rating rating =, <>, >, >=, <, <= rating >= 4
  • Cookbook sync resolves category, tag, tool, and food-label names to Mealie ids before writing. If a name can’t be found, the filter is sent unchanged.
  • rating is the recipe’s average rating across all users, from 0 to 5. Unrated recipes never match a rating clause, including rating < 3.
  • Rating filters need Mealie v3.25 or later, and food-label filters need v3.28 or later. When an older Mealie rejects one of these filters, the sync log says which version the filter needs.

Example: rating >= 4 AND recipeIngredient.food.label.name IN ["Seafood"].