AI Audit
Re-watch a finished analysis against the actual footage, apply only the corrections the video itself confirms, and disclose every change — and every declined change — in a report.
Overview
Availability. Native on Nodaro Cloud. On a self-hosted install the node
appears with a NODARO mark and runs through your
nodaro.ai connection — OAuth Connect or a
pasted API key — billed to the connected nodaro.ai account. Without a
connection the node card shows a Connect nodaro.ai CTA and a run refuses
with 503 nodaro_connection_required.
The AI Audit node (video-audit) is a fix-and-disclose quality pass for a
Video Analysis result. It re-watches the clip and
cross-checks every claim in the analysis against what is actually in the
footage. Corrections are applied only when the video itself confirms them,
under conservative guards — the audit is never allowed to silently rewrite the
analysis. Every outcome of that re-watch is disclosed in a report: what was
fixed, what was proposed but declined, and what was merely flagged for a human
to look at.
- Fix-and-disclose, not silent rewrite. Nothing in the corrected analysis changes without a matching entry in the report explaining why.
- Reuses the Video Analysis contract. The corrected analysis it returns is
the exact same shape as Video Analysis’s output
—
meta+slots+scenes[]— so every node that already consumes a Video Analysis result (for example Generate Video Pro’s auto-cast) consumes an audited one identically. No adapter, no re-wiring. - Knob-free. There is no quality tier or option to configure — the audit follows the footage. The only lever is whether you wire in a finished analysis.
Inputs & Outputs
Inputs:
| Handle | Required | Description |
|---|---|---|
| Video | Yes | A wired upstream video. The audit re-watches this footage, so it cannot run without one. Unlike Video Analysis, there is no YouTube URL alternative on this node — wire an actual video producer or an Upload Video / Video URL input ahead of it. |
| Analysis | No | The JSON result from a Video Analysis node — or another AI Audit node’s corrected output — passed through verbatim. Wiring this tells the audit to re-verify that specific analysis against the footage. Leave it unwired and the node runs its own fast analysis first, then audits that. |
Outputs:
| Handle | Description |
|---|---|
json |
The corrected analysis, in the exact same shape as Video Analysis’s output (meta + slots + scenes[]). Wire it anywhere a Video Analysis result is accepted. |
text |
The same corrected analysis as a plain string — wire directly into a prompt/text input (for example Generate Video Pro’s prompt) the same way you would Video Analysis’s text output. |
The disclosure report (below) is not a graph output — it rides alongside the
job’s result, rendered on the node itself, and available as
output_data.report through the API and MCP (get_job after a video_audit
call).
Wired but not yet run. If an analysis is wired into the Analysis handle but that upstream node hasn’t produced a result yet, the run is refused rather than silently falling back to auto-running its own analysis at the higher price. Run the upstream analysis first, or disconnect the handle to let AI Audit analyze the clip itself.
Configuration
AI Audit has no configuration fields — no quality tier, no options to pick. The single fact that changes its behavior and its price is structural, not a setting: whether an analysis is wired into the Analysis handle. The node (and its config panel) state this plainly on canvas rather than exposing a knob for it.
Output
The Disclosure Report
Every re-watch verdict lands in the report as exactly one of three kinds — the audit’s fix-and-disclose contract means nothing in the corrected analysis changes without one of these being recorded:
| Kind | Meaning |
|---|---|
| Corrected | The footage contradicted the analysis and the audit fixed it. Applied under conservative guards, so this only fires when the video itself confirms the change. |
| Refused | The audit considered a change but its guards declined to apply it — not enough evidence in the footage to safely act on it. The analysis is left as-is; the concern is disclosed here so you can judge it yourself. |
| Watch | Something worth a human look, with no proposed change at all — for example, a state that might have silently dropped between scenes. Purely informational. |
Each finding names the scene number it concerns (matching the corrected analysis’s own scene numbering), optionally the specific field it’s about, and a plain-language reason. The report also carries a one-line summary — the audit’s overall verdict, shown first — and a flag for whether the run had to analyze the clip itself before auditing it (matching the credit family the run actually billed — see Credit Cost).
A clean audit — nothing to correct, refuse, or watch — is a valid, common result: it means the wired analysis held up against the footage.
Credit Cost
AI Audit is dynamically priced by duration bucket, on the same bucket
ladder as Video Analysis — the bucket is
the smallest of 60s / 180s / 360s / 600s that fits the video’s probed
duration — but split into two families selected by whether an analysis
was wired in, not by a quality tier. The table below is published as
VIDEO_AUDIT_BUCKET_CREDITS in packages/shared/src/video-analysis-pricing.ts
(the credit prices users are charged) — generated and drift-guarded
internally, never hand-written.
| Family | ≤60s | ≤180s | ≤360s | ≤600s |
|---|---|---|---|---|
Analysis wired (video-audit) |
215 | 290 | 663 | 1073 |
No analysis wired (video-audit:auto) |
396 | 475 | 1178 | 1921 |
Worked example. A 72-second clip falls in the ≤180s bucket. Wire a finished analysis into the Analysis handle and the audit — a re-check only — costs 290 credits. Leave that handle unwired and the node must run its own fast analysis before it can audit anything, so the same 72-second clip costs 475 credits instead.
Wiring an analysis whenever you already have one is always the cheaper path —
the video-audit:auto family’s extra cost is the fast analysis pass it runs
on your behalf before auditing, on top of the audit itself.
Limits
- Maximum duration: 600 seconds (10 minutes), same cap as Video Analysis.
- No YouTube source. Unlike Video Analysis, AI Audit takes a video URL
only — there is no
youtubeUrlconfig field. Wire a video producer or an Upload Video / Video URL input node ahead of it. - Video is mandatory. A run with nothing wired into the Video handle is refused before any credits are reserved.
Best Practices
- Wire the analysis whenever you have one. It’s both cheaper and more targeted — the audit re-checks a specific analysis rather than having to produce and then immediately re-verify its own.
- Chaining is supported. An AI Audit node’s own corrected output is a valid Analysis input to another AI Audit node — useful for a second, independent re-watch pass.
- Read the report even on a “clean” result. A summary of “nothing changed”
alongside
watchfindings still means something is worth a human look, even though the audit didn’t touch the analysis itself.
Common Use Cases
- Sanity-check a Video Analysis result before spending downstream generation credits recreating scenes from it.
- Catch analysis mistakes a single pass can miss — a misread camera movement, an unattributed line of dialogue, a slot description that drifts from what’s actually on screen.
- Re-verify a saved analysis against the source footage after re-editing or re-uploading the clip.
See Also
- Video Analysis — produces the analysis this node audits; also the node whose output shape AI Audit’s corrected result matches exactly.