# Video Analysis

> Break a video or YouTube link of up to 10 minutes into scenes of 8 seconds or less, with prompt-ready visuals, camera, audio and castable people and places.

Source: https://nodaro.ai/docs/nodes/video/video-analysis

The **Video Analysis** node breaks a video into a scene-by-scene description that an AI model can recreate. It cuts the video into scenes of 8 seconds or less, one generation each, and describes every scene's picture, framing, camera and sound. Recurring people, objects and places become reusable **entity slots**, so you can recast the video with your own characters, objects and locations.

- Found in: Video › Analyze
- Output: data
- API type: `video-analysis`

On a self-hosted install, the node shows a **NODARO** mark and runs through your [Nodaro Cloud connection](https://nodaro.ai/docs/self-hosting/cloud-connect), billed to the connected account. Without a connection, the node shows a **Connect nodaro.ai** button and does not run.

## When to use it
- You want to turn a reference video into a shot-by-shot plan to recreate it with AI.
- You want to extract the cast of a video, to shoot it again with your own characters, objects and locations.
- You want a prompt-ready description of each scene to feed image and video nodes.
- You want each scene's sound layers, the dialogue plus descriptions of the music and sound effects, for a matching soundtrack.

## Quick start
### Add the node

Press Tab on the canvas and choose **Video › Analyze › Video Analysis**.

### Give it a video

Connect a video node, such as [Upload Video](https://nodaro.ai/docs/nodes/video/upload-video), to the **Video** input, or paste a link under **YouTube URL** in the settings panel. For a link, the panel shows the video's length, which sets the price.

### Choose the quality

Choose an **Analysis quality**. **Pro** is the default. Optionally, write what matters most under **Analysis focus (optional)**.

### Run it and use the result

Click **Run**. Wire the **Text** output into a prompt, for example of [Generate Video Pro](https://nodaro.ai/docs/nodes/video/generate-video-pro), or the **Scenes JSON** output into a node that reads structured data.

Workflow: A reference video is analyzed, AI Audit re-checks the analysis against the footage, and the corrected text drives Generate Video Pro.

- Upload Video → Video Analysis (video)
- Upload Video → AI Audit (video)
- Video Analysis → AI Audit (analysis)
- AI Audit → Generate Video Pro (prompt)

## Inputs
| Input | Accepts | What it does |
| --- | --- | --- |
| **Video** | Video nodes, such as Upload Video, Video URL and Generate Video | The video to analyze. Optional when **YouTube URL** is set. A connected video always wins over the link. |

## Outputs
| Output | What it carries |
| --- | --- |
| **Scenes JSON** | The full analysis as structured data: `meta`, `look`, `slots` and `scenes`. See [What the analysis contains](#what-the-analysis-contains). |
| **Text** | The same analysis as plain text. Wire it into any prompt or text input without copying and pasting. |

## Settings
| Setting | What it does |
| --- | --- |
| **Analysis quality** | **Smart**, **Pro** (the default), **Fast**, **Mixed** or **Mixed (consistent)**. See [Which quality to choose](#which-quality-to-choose). |
| **Result selection** | **Choose** (the default) or **Combine**. The video is analyzed several times. Choose keeps the strongest pass as it is. Combine also adds details from the other passes after checking them against the footage. It is slightly slower and the most complete. Smart ignores this setting. |
| **Cast variations — detect alternate looks per entity** | Off by default. Also detects the different looks of each person or thing and the scenes where each look appears. See [Appearance looks](#appearance-looks). |
| **Translate to English** | Two checkboxes, both off by default: **Speech — what's said or sung** and **On-screen text — signs, captions, titles**. See [Output language](#output-language). |
| **YouTube URL** | A `youtube.com` or `youtu.be` link to analyze when no video is connected. |
| **Analysis focus (optional)** | Up to 2,000 characters on what the analysis should pay attention to, for example "product shots and on-screen text". |
| **Pre & post text** | Text added before and after the analysis focus at run time. See [Prompt pre and post text](https://nodaro.ai/docs/concepts/prompt-pre-post-text). |

**Analysis focus** steers attention, never the format. It does not change the structure of the result, the scene length or the list of fields. Leave it empty for a general breakdown.

![The Video Analysis settings panel with Analysis quality set to Pro, Result selection set to Combine, both translation checkboxes ticked, and a YouTube URL whose video is longer than the 10-minute limit.](https://nodaro.ai/docs-media/screens/en/nodes/video-analysis/settings.light.webp)

## Which quality to choose

You choose a quality tier, not a model. Nodaro chooses the analysis model behind each tier, so a tier can improve over time without any change to your workflow.

| Analysis quality | What it does | Use it when |
| --- | --- | --- |
| **Fast** | An economy analysis | You can trade some detail for price and speed. |
| **Pro** (the default) | A higher-fidelity analysis of scenes and entities | Most breakdowns. |
| **Mixed** | Several analysis passes combined for maximum completeness | Completeness matters most. |
| **Mixed (consistent)** | The same plan, tuned for the most consistent result from run to run | You run the same kind of video often and want steady output. |
| **Smart** | The highest accuracy: a detailed main pass blended with several economy passes, and always refined | The shot list will drive a regeneration. |

Every tier analyzes each part of the video several times and keeps or merges the best result: three passes on Fast and Pro, and six on the two Mixed tiers. Smart and both Mixed tiers also finish with a **continuity review**. It corrects claims that contradict each other across scenes. It also raises a continuity watch warning when a lasting state seems to be dropped, for example an object handcuffed to a character that disappears from later scenes. Every correction and watch is listed in the result's warnings.

## What the analysis contains

The result has four parts. Downstream nodes and your own code read the same structure.

### `meta` — facts about the file

| Field | What it holds |
| --- | --- |
| `durationSec` | The measured duration, in seconds |
| `width`, `height` | The frame size, in pixels |
| `aspectRatio` | The aspect ratio, snapped to `16:9`, `9:16`, `1:1`, `4:3`, `3:4` or `21:9` when within 3%, otherwise the reduced width-to-height ratio |
| `title` | The source title when known, such as the YouTube title |
| `language` | The main spoken language. It always describes the footage, whatever the translation settings. |

### `look` — the photography of the whole clip

Properties that belong to the whole piece rather than one shot, stated once so that every regenerated shot shares them. Every field is optional, and the whole part is left out when the analysis cannot read it.

| Field | What it holds |
| --- | --- |
| `style` | The medium, such as "live-action photoreal", "2D anime", "stop-motion claymation" or "3D render" |
| `styleId` | The matching entry of the [Style](https://nodaro.ai/docs/nodes/creative-controls/style) picker, when the medium fits one |
| `grade` | The color grade and palette |
| `format` | The camera or film format and stock, such as "16mm film grain" |
| `lens` | The lens character, such as "wide-angle, shallow depth of field throughout" |
| `lighting` | The overall lighting style. A scene that differs describes its own lighting. |
| `genre` | The kind of piece, such as "cinematic trailer" or "talking-head vlog" |
| `influence` | The visual influence the piece clearly evokes, like the [Photographer / Artist Style](https://nodaro.ai/docs/nodes/creative-controls/photographer) picker. It is left out unless the style is clearly recognizable. |

### `slots` — the castable people, objects and places

Each recurring entity is extracted once, so that you can replace it with your own.

| Field | What it holds |
| --- | --- |
| `slotId` | A stable id, used in a scene's `visual` text as a slot token, for example `{slot:hero}` |
| `label` | A readable name |
| `source` | The kind of asset to cast it from: a character, an object, a location or a creature |
| `role` | Its role in the video, such as "narrator" or "hero product" |
| `description` | A complete visual description, used when no asset is cast |
| `refImageUrl` | A frame from the video where the entity is clearly visible, picked automatically |
| `variations` | The entity's other looks, when **Cast variations** is on |

### `scenes` — one entry per shot

| Field | What it holds |
| --- | --- |
| `sceneNumber` | The scene's number, from 1, across the whole video |
| `startSec`, `endSec` | Where the scene starts and ends, in seconds |
| `label` | A short scene label |
| `shotType` | The framing size: Wide, Medium, Medium Close-Up, Close-Up, Extreme Close-Up, or Two-Shot, Insert or Aerial |
| `angle` | Where the camera sits. Absent means eye level. See the values below. |
| `camera` | The camera movement in free text, such as "slow push-in". Empty for a locked-off shot. |
| `speed` | `slow-motion`, `ramp-in`, `ramp-out`, `timelapse`, `freeze` or `reverse`. Absent means normal speed. |
| `effects` | Effects on the picture: `blur`, `pixelate`, `glitch`, `grain`, `vignette`, `flash`, `distortion` or `double-exposure`. Absent means a clean image. |
| `onScreenText` | Text burned into the picture, such as titles and captions, word for word in its original script |
| `visual` | The visual description with slot tokens, for recasting |
| `visualResolved` | The same description with every slot written out. **Render from this field.** |
| `audio` | The sound layers of the scene. See below. |
| `slotRefs` | The slots that appear in the scene |
| `slotVariations` | Which look each slot wears in this scene, when **Cast variations** is on |
| `oversized` | Present when the scene is longer than 8 seconds because it could not be cut shorter. It is still one generation. |

Each scene also notes a visible transition into the next shot, when there is one.

**Camera angles.** `angle` is one of `eye-level`, `low`, `high`, `overhead`, `worms-eye`, `dutch`, `over-the-shoulder`, `pov`, `profile` or `from-behind`. The three camera fields are independent: `shotType` says how much of the subject is in frame, `angle` where the camera sits, and `camera` what the camera does. An over-the-shoulder medium shot is `shotType` Medium with `angle` over-the-shoulder.

**Read `visualResolved`, not `visual`.** `visual` keeps the slot tokens so that you can recast the scene later. `visualResolved` is the complete, prompt-ready text that every downstream node should use.

### Audio layers

A scene's `audio` is a list of the sounds that play at the same time. A music bed under a line of dialogue over a splash is three layers. An empty list means real silence.

| Field | What it holds |
| --- | --- |
| `mode` | `speech`, `music` or `sfx` |
| `content` | For speech, the exact words. For music and sound effects, a description ready for generation. |
| `voice` | For speech, what the voice sounds like, such as "male, warm, conversational" |
| `speakerSlot` | For speech, the slot of the on-screen speaker, when the analysis can tell |

- **Each line appears once.** Reading the speech layers in scene order gives the soundtrack with nothing said twice. A line that crosses a cut is split at the cut, and a line over a montage belongs to the shot where it starts.
- **Soundtrack songs are music.** A song that nobody on screen performs is part of the music layer, with its vocals described there. Only words spoken or sung inside the story are speech.
- **The speaker is optional.** `speakerSlot` is left out when the analysis is not sure, when the speaker is an unseen narrator, and when the speaker is a one-off person with no slot.

## Appearance looks

With **Cast variations — detect alternate looks per entity** on, the analysis separates the different looks of the same subject instead of averaging them into one description. A plain change of clothes between scenes counts as much as a dream, a flashback, a disguise, a transformation or an era.

- **Up to 4 looks per slot.** Each look has an id, such as `dream`, `flashback`, `disguise`, `costume`, `transformation`, `era` or `alt-1`. It also has a short label, a full description of the subject in that look, and a frame that shows it.
- **Scenes say which look is active.** A scene without a look for a slot uses the slot's default look.
- **Two ways of finding looks.** One pass watches the footage for changes of clothes, hair and makeup. A second pass reads the finished analysis for looks the footage does not show, such as "twenty years later". Neither pass renames a slot or changes a scene's text.
- **Nothing disappears silently.** When a subject has more looks than the limit, the extra looks are folded into the default look, and the result records the fold.

[Generate Video Pro](https://nodaro.ai/docs/nodes/video/generate-video-pro) keeps each look consistent within its own scenes.

## Output language

With both **Translate to English** checkboxes off, the analysis keeps the video's original language. Speech is quoted word for word, and on-screen text stays in its original script. That is what you want to recreate a video as it is.

The two checkboxes change different things, so you can tick them independently:

| Checkbox | What it translates |
| --- | --- |
| **Speech — what's said or sung** | The spoken and sung words |
| **On-screen text — signs, captions, titles** | The text visible in the picture |

For example, you can have English narration over a street whose signs stay in Chinese. With either box ticked, the scene descriptions, camera notes, slot descriptions and voice notes are written in English too.

- **Names stay as they are.** Brand, product, person and place names are never translated.
- **The language field does not change.** `language` always names the language spoken in the footage.
- **This changes the recreation.** The scene descriptions are the prompts for regeneration, so a translated sign is rendered in English in the new shot.
- **The original words are not kept.** The translation replaces them. Run again with the boxes off if you need the original.

**Music videos.** By default, song lyrics that nobody on screen performs stay inside the music layer. For a music video, where the song is the piece, set `musicVideo: true` in the API request, or `music_video` in the MCP tool. Every sung lyric then comes back word for word as speech, scene by scene. This option is available through the API and MCP only.

## Long videos and limits

- **Maximum length:** 10 minutes (600 seconds) for any source. The limit is checked when you run the node, and again after the video is downloaded.
- **Windows:** a video up to 180 seconds is analyzed in one pass. A longer video is analyzed in overlapping windows of about 150 seconds, with 5 seconds of overlap, then merged into one continuous, renumbered result.
- **YouTube:** only `youtube.com` and `youtu.be` links are accepted. Live streams are refused; analyze the recording once the stream has ended.

## Credits
The price depends on the **Analysis quality** and on the length of the video. The length falls into the smallest step that fits it: up to 60, 180, 360 or 600 seconds.

| Analysis quality | Up to 60 s | Up to 180 s | Up to 360 s | Up to 600 s |
| --- | --- | --- | --- | --- |
| Fast | 181 | 186 | 516 | 849 |
| [Pro](https://nodaro.ai/docs/models/video/video-analysis-pro) | 217 | 233 | 642 | 1,059 |
| [Mixed](https://nodaro.ai/docs/models/video/video-analysis-mixed) and Mixed (consistent) | 270 | 292 | 731 | 1,181 |
| [Smart](https://nodaro.ai/docs/models/video/video-analysis-smart) | 414 | 504 | 1,270 | 2,081 |

- **A 3-second margin.** After download, the node measures the video again and allows 3 seconds of tolerance. A video of exactly 1, 3, 6 or 10 minutes therefore stays in its own step.
- **Unknown length.** If the length cannot be read when you run the node, the price of the 600-second step is reserved. In practice, a source whose length cannot be read is refused first.
- **Why the tiers differ.** Longer videos need more windows, and each tier analyzes every window several times. Those repeated passes are the main reason Mixed and Smart cost more.

## Tips
- **Start with Pro.** Drop to Fast for a cheaper pass when you can trade some detail.
- **Use Analysis focus.** Point the analysis at what matters for your recreation: product shots, on-screen text or one character.
- **Check the analysis before you spend.** Wire the result into [AI Audit](https://nodaro.ai/docs/nodes/video/ai-audit), which re-watches the video and corrects only what the footage confirms, before you generate every scene.
- **Render from `visualResolved`.** Use `visual` and `slotRefs` only if you build your own recasting step.

## From the API
The same analysis is available to code and to AI assistants. The full result is also stored in the job's output. The source is `videoUrl` or `youtubeUrl`, and the settings map to `llmModel` (the quality tier), `selectionMode`, `variations`, `translateSpeechToEnglish`, `translateOnScreenTextToEnglish` and `analysisFocus`. See [Run a single node](https://nodaro.ai/docs/developers/api/nodes) and the [MCP tools](https://nodaro.ai/docs/mcp/tools).

## Frequently asked questions

### Which Analysis quality should I choose?

Pro, the default, suits most breakdowns. Choose Fast for a cheaper, quicker pass, Smart for the highest accuracy when the shot list will drive a regeneration, and Mixed when you want the most complete analysis.

### How many credits does Video Analysis cost?

The price depends on the Analysis quality and the length of the video, in steps of up to 60, 180, 360 and 600 seconds. For example, a 45-second video costs 181 credits on Fast, 217 on Pro and 414 on Smart.

### Can I analyze a YouTube video?

Yes. Paste a youtube.com or youtu.be link in YouTube URL. Live streams are refused, so wait until the recording is available. A video connected to the node always takes priority over the link.

### How long can the video be?

Up to 10 minutes. Videos up to 3 minutes are analyzed in one pass, and longer videos in overlapping windows that are merged into one result.

### How do I recreate the analyzed video?

Wire the Text output into the prompt of Generate Video Pro. Its Auto-cast from analysis option uses the frames the analysis picked for each person and object, so the recreation keeps them looking like the original.
