Content Recipe
Find out why a social post worked: the hook, format, beats, call to action, sound and pace, as a reusable recipe in structured data and readable text.
Available on Nodaro Cloud
The Content Recipe node explains why a social post worked, as a recipe you can reuse. It reads the post's material with a language model and returns the hook, the format, the beats, why the post works, the call to action, the sound and the pace. You get the recipe as structured data and as readable text, ready for Content Ideas.
Content Recipe runs on Nodaro Cloud only. It is not available on self-hosted installs.
When to use it
- You want to know why a competitor's video, a viral post or an ad holds attention.
- You want to reuse the structure of a post that worked, for your own brand, with Content Ideas.
- You want fixed labels for each post, such as its format and its hook type, to sort or route posts in a workflow.
- You want to compare several posts. Make one recipe per post and give them all to Content Ideas.
Quick start
Add the node
Press Tab on the canvas and choose Video › Analyze › Content Recipe.
Give it the post
Analyze the post with Video Analysis, and connect its Scenes JSON output to the Source material input. A scraped post, a caption or a transcript in a Text node also works.
Keep the post's link
Connect the Video URL node that holds the post to the Source post input. The recipe then cites the post, and every idea made from it links back to the post.
Run it
Click Run. When the run ends, the app says "Content recipe ready". The node shows the topic, the format with its confidence, the length, the pace, the hook, the beats and the reasons the post works. Point at the recipe to open its full text or to copy it.
Inputs
| Input | Accepts | What it does |
|---|---|---|
| Source material | A Video Analysis result, or any node that gives text, JSON or a list, such as a Text node with a caption or a transcript | The material the recipe is read from. Required. |
| Source post | The Video URL node, or any text node that holds a link | The post's own link. The recipe cites it. A connected link wins over Post link (optional). |
The page link, not the file. Most nodes connected to Video URL receive the downloaded video. Source post receives the link of the post's page instead, so the recipe can point back to the post.
One post per run. When Source material receives a list of several posts, the node reads the first one and says so on the node. To get one recipe per post, set the connection to Each. See connection modes.
Which material gives the best recipe
A Video Analysis result gives the best recipe. It carries the timings, the spoken words, the on-screen text and the sound, so the hook and the beats come from what the post really does. A scraped post or plain text, such as a caption or a transcript, also works. Without timings, the node estimates the beats from a natural speaking pace.
Outputs
| Output | What it carries |
|---|---|
| Recipe JSON | The recipe as structured data. See What the recipe contains. |
| Recipe text | The same recipe as readable text. It is what a person reads, and what Content Ideas reads when the recipe arrives as text. |
Content Ideas accepts either output.
Settings
| Setting | What it does |
|---|---|
| AI Model | The language model that writes the recipe. The default is Gemini 3.6 Flash. The list offers the models that can return structured data. The model's tier sets the price. See Credits. |
| Focus (optional) | What the recipe should pay special attention to, for example "the hook and the editing rhythm". Up to 2,000 characters. |
| Post link (optional) | The post's link, used when nothing is connected to Source post. The recipe cites the link, and the node never opens it. While a node is connected to Source post, the panel shows "Taken from the wired node" and the name of that node instead of the field. |
What the recipe contains
| Field | What it holds |
|---|---|
version | 1 |
source | Where the recipe came from: kind (video-analysis, post or text) and, when known, the post's url, platform, account handle, title and language. These are read from the input, never invented. |
hook | About the first 3 seconds: spoken (word for word, in the original language), onScreenText (word for word), visual, types (1 or 2 hook mechanics, the main one first) and whyItStops. |
format | label, one format from the list below, and confidence, from 0 to 1. |
beats | The post's structure, in order. Each beat has a start and an end in seconds, a purpose and a one-line description. |
whyItWorks | 2 to 4 reasons. Each has a reason and a detail tied to a moment of the post. |
cta | The call to action: its kind, and its text word for word. The text is empty when the kind is none. |
sound | The kind of sound and a short detail. |
durationSec, pace, aspect | The length in seconds, measured from the analysis when there is one. The pace, fast, medium or slow. The aspect ratio, when known. |
topic, summary | The subject in a few words, and the reusable pattern in 2 or 3 sentences. |
The labels and the descriptions are in English. Quoted words, such as the spoken hook, stay in the language of the post.
Label lists
Every label comes from a fixed list of English ids. Filters, routers and later nodes can rely on them. Every list except Sound kinds has other, for a post that fits none of the others.
- Formats:
talking-head,pov,skit,storytime,tutorial,listicle,before-after,transformation,demo,unboxing,reaction,comparison,myth-vs-fact,day-in-the-life,challenge,hot-take,trend-remix,testimonial,behind-the-scenes,other. - Hook types, the mechanic of the hook:
question,bold-claim,result-first,problem-callout,tease,story-open,direct-address,relatable-moment,pattern-interrupt,visual-shock,text-overlay,sound-hook,other. - Beat purposes:
hook,setup,problem,build,demo,proof,reveal,payoff,twist,cta,other. - Reasons it works, the driver of each reason:
curiosity,emotion,humor,relatability,social-proof,novelty,utility,aspiration,controversy,satisfaction,urgency,authority,other. - Call to action kinds:
none,follow,comment,share,save,link-in-bio,buy,sign-up,watch-next,dm,other. - Sound kinds:
voiceover,on-camera-speech,trending-sound,music,ambient,silent,mixed.
Credits
A run costs one flat price, set by the tier of the AI model:
| Model tier | Credits per run |
|---|---|
| Economy, such as Gemini 3.6 Flash (the default) | 6 |
| Standard, such as Claude Sonnet 4.6 | 22 |
| Premium, such as Claude Opus 5 | 39 |
- Reasoning effort. From the API, a
reasoningEffortofxhighormaxmoves the run one tier up, capped at Premium. The settings panel has no reasoning-effort control on this node. - Failed runs. A run that fails is refunded. See Credits.
- The analysis is priced apart. The Video Analysis that usually feeds the node is priced by the length of the video. On Pro, a post of up to 60 seconds costs 238 credits.
For the price of the whole flow, from the post to the scripts, see Content Ideas.
Tips
- Analyze the post first. The hook and the beats are only as good as the material, and Video Analysis gives the most complete material.
- Keep the link. Connect the Video URL node to Source post, so every idea made from the recipe links back to its post.
- Use the focus. Fill Focus (optional) when one part matters most, such as the hook or the editing rhythm.
- Mix several posts. Make a recipe for each post and connect them all to Content Ideas. The ideas spread across the posts.
Troubleshooting
The run stops with "connect a Video Analysis, a post or some text first". Nothing usable is connected to Source material. Connect a Video Analysis, a post or a text node, and run again. The run stops before anything is charged.
The run ends with "Content recipe failed". The model did not finish the recipe. The credits are refunded. Run the node again.
The node says it read only the first post. Source material received a list of several posts. Set the connection to Each to make one recipe per post.
The recipe has no link to the post. Nothing was connected to Source post, and Post link (optional) was empty. Connect the Video URL node to Source post, or paste the link into Post link (optional).
From the API
POST /v1/content-recipe makes a recipe on Nodaro Cloud. The body takes source, the post's material as text, and the optional sourceUrl, focus, llmModel and reasoningEffort. The material can be a Video Analysis result as a JSON string, a post, a caption or a transcript.
curl -s https://app.nodaro.ai/v1/content-recipe \
-H "Authorization: Bearer $NODARO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "Caption: three mornings, one mug. Which one is you?",
"sourceUrl": "https://www.tiktok.com/@example/video/7300000000000000000",
"focus": "the hook and the editing rhythm"
}'The answer is { "jobId": "…" }. Poll the job with GET /v1/jobs/:id/status until its status is completed. Its output_data holds the recipe as json and as text. See Jobs.
A request that cannot run is refused with 400 before any job exists, so nothing is charged. That happens with an empty source or one over 300,000 characters, a focus over 2,000 characters, a model that cannot return structured data, or a sourceUrl that is not an http or https link.
There is no dedicated MCP tool or SDK method. In a workflow, the node's type is content-recipe. AI assistants and code can add it with the workflow tools or the Workflows API.
Frequently asked questions
Related
Content Ideas
Video Analysis
Video URL
Generate Script
Credits
Last updated on
AI Audit
Re-watch a video against its Video Analysis, apply only the fixes the footage confirms, and get a report of every fix, declined change and watch item.
Audio nodes
Every audio node in Nodaro, from text to speech, voice changing and dubbing to Suno music, sound effects, stem separation, editing, sync and transcription.