# Content recipes

> Content recipes are tested playbooks that walk an AI assistant through a full Nodaro flow, such as an animated explainer, loaded with get_recipe.

Source: https://nodaro.ai/docs/mcp/recipes

A **content recipe** is a tested playbook that walks an AI assistant through a complete Nodaro flow toward one outcome. The `video-explainer` recipe, for example, has the assistant lock a visual style, write the narration, render silent clips, voice them and finish with [`assemble_narrated_video`](https://nodaro.ai/docs/mcp/tools/video-editing#assemble_narrated_video). The assistant loads a recipe with [`get_recipe`](https://nodaro.ai/docs/mcp/tools/utility#get_recipe) and follows it, tool call by tool call.

## How recipes work

`get_recipe` only delivers text. It calls no other tool and changes nothing, like `start_workflow_editor` and `start_video_director`. The actions a recipe asks for, such as `generate_video`, `generate_speech` or `assemble_narrated_video`, are ordinary tool calls: each needs its own permission and costs its own credits.

The tool needs no permission and costs nothing, on every edition. It answers three kinds of call:

| Call | What it returns |
| --- | --- |
| `get_recipe` with no argument | The catalog: each recipe's name, description and trigger phrases |
| `get_recipe` with `recipe` | That recipe's full instructions, for example `recipe: "video-explainer"` |
| `get_recipe` with `recipe` and `file` | A reference file bundled with the recipe, for example `file: "references/prompts.md"` |

An unknown recipe or file returns an error that lists the valid recipe names.

## The catalog

| Recipe | What it produces | Example triggers |
| --- | --- | --- |
| `camera-coverage` | Ten cuttable camera angles of one scene from a single reference frame. An editable shot list is approved before anything is spent, and one image node fans out into every shot. | "camera coverage", "shot list", "different angles of the same scene" |
| `image-editing-levers` | Parallel edits of one high-resolution image: precise text instructions, looks set with pickers, background swaps with matched lighting, an optional critic and a contact sheet | "edit this image", "change the jacket color", "remove the background" |
| `infinite-zoom` | One unbroken push-in across several generated clips, each ending inside a detail that the next one opens on, joined frame by frame. Also a still-zoom version that spends no generation credits. | "infinite zoom", "endless zoom", "zoom into the detail" |
| `instagram-carousel` | A complete Instagram carousel from one idea: one 9:16 image per slide with its text in the image, an intro text and a caption | "instagram carousel", "carousel post", "turn this into a carousel" |
| `multi-reference-control` | One image composed from up to five references, each giving something different, such as a person, a garment or a place | "combine multiple references", "take the jacket from" |
| `one-character-any-scene` | The same person placed in any scene, outfit or background with reference tokens, without masks or model training | "same character different scene", "keep the background change the person" |
| `person-node-basics` | A designed character built from **Person** picker attributes, such as age, build, eyes and hair, instead of prose | "create a person", "design a character look", "specific face" |
| `podcast-editing` | A long recording tightened, or cut into a pack of short clips, from its transcript, through an edit list you can adjust before rendering with `apply_edl` | "edit my podcast", "clean up this recording", "clip pack" |
| `product-photoshoot` | A full ad campaign of nine ad styles from one product image, from your own product photo or from a look reference rewritten for your product | "product photoshoot", "ads for my product" |
| `scene-chain-reel` | A cinematic vertical reel from several scenes: stills first with a reference chain for continuity, one motion prompt for every frame, one music bed, then trim and format | "cinematic reel", "instagram reel", "multi-scene video" |
| `song-from-reference` | A song similar to an existing one. Someone else's track is analyzed and turned into an original song; a Suno cover is made only from audio you own. | "similar song", "cover this song", "make a song from this link" |
| `suno-music-basics` | Songs and instrumentals styled with stacks of music pickers, such as genre, mood, instrumentation and voice | "make a song", "instrumental track", "music for my video" |
| `video-explainer` | A narrated, non-photorealistic animated explainer: one locked visual style, several narration blocks rendered as silent clips, one voice, assembled with `assemble_narrated_video` | "explainer video", "animated explainer", "how-it-works video" |

On Nodaro Cloud, the catalog also includes a UGC website video: a creator talking to the camera about a website, with its screenshots shown as cards. That recipe uses the [UGC builder tools](https://nodaro.ai/docs/mcp/tools/utility#the-ugc-video-builders).

## Animated footage or motion graphics

Nodaro can make an explainer in two ways, and the `video-explainer` recipe asks you to choose before anything else:

| | `video-explainer` recipe | [Video Director](https://nodaro.ai/docs/mcp/video-director) |
| --- | --- | --- |
| **Picture** | Generated animated footage, illustrated scenes | Kinetic typography, shapes and images |
| **How** | The assistant runs every step and you can review each clip and voice take | One call to `create_explainer`, or the shot sequence pipeline step by step |
| **Cost** | The generations of each 10-second block, so it grows with the length | A fixed set of steps per video |

If you choose motion graphics, the recipe stops and hands over to `start_video_director`. If your request already names a style, the recipe skips the question.

## Add a recipe to your own instance

On a self-hosted install, and in contributions to the public repository, a recipe is a folder with a `RECIPE.md` file in the backend's `skills/recipes` directory, and an optional `references` folder for files the recipe loads with `file`. The server reads the catalog when it starts.

```text
skills/recipes/my-recipe/
RECIPE.md
references/
prompts.md
```

`RECIPE.md` starts with YAML frontmatter, then the instructions the assistant receives, written as a direct brief: rules first, then the phases, with exact tool names and parameters.

```markdown
---
name: my-recipe
description: One line shown in the catalog
triggers: ["phrase one", "phrase two"]
version: 1
---

# My recipe

You are producing ONE ...
```

| Field | Required | Notes |
| --- | --- | --- |
| `name` | Yes | Should match the folder name. The folder name is what `get_recipe` loads, and the two are not checked against each other. |
| `description` | Yes | One line for the catalog. |
| `triggers` | Yes | Phrases a user might say. Do not put commas inside a phrase: the list is split on commas. |
| `version` | No | A number to raise when the instructions change a lot. |

The folder name must be kebab case: lowercase letters, digits and hyphens. A recipe with missing fields is skipped from the catalog without affecting the others. A reference file can only be read from inside its own recipe folder. To test a recipe, call `get_recipe` with no argument, then with the recipe's name, then with each reference file.

## Frequently asked questions

### What is a content recipe in Nodaro?

A tested playbook that tells an AI assistant how to reach one outcome with several Nodaro tools, step by step, such as a narrated animated explainer or an Instagram carousel. The assistant loads it with get_recipe and follows it.

### Does loading a recipe cost credits?

No. get_recipe only returns instructions. The generations the recipe asks for are ordinary tool calls, each with its own price and permission.

### What is the difference between the video-explainer recipe and create_explainer?

The video-explainer recipe makes an explainer from generated animated footage, and the assistant controls every clip and voice take. create_explainer makes a motion-graphics explainer of text and shapes in one call. The recipe asks which one you want first.

### How does my assistant know which recipe to use?

get_recipe without an argument lists every recipe with its trigger phrases, such as "explainer video" or "product photoshoot". The assistant matches your request to a recipe before it builds anything.
