# UGC Finish

> Take every clip of a UGC video at once and hand them on in order, ready to join. On a Hebrew video, lay the recorded speech back over the clips.

Source: https://nodaro.ai/docs/nodes/video/ugc-finish-clips

The **UGC Finish** node takes every clip of a UGC video at once and hands them on in order, ready to join. It sits between [UGC Clip](https://nodaro.ai/docs/nodes/video/ugc-clip) and the join, [Combine Videos](https://nodaro.ai/docs/nodes/video/combine-videos). It receives all the clips at once, in clip order, and hands them on in the same order.

- Found in: Video › UGC Video
- API type: `ugc-finish-clips`

On a Hebrew video, the clips are cut from one recorded speech. UGC Finish lays that speech back over each clip and trims the pauses between words, so the joined video sounds like one take. That is one job, at a flat price. On an English video, the clips pass through unchanged, at no cost.

UGC Finish runs on Nodaro Cloud only. On any other install, every UGC node fails before anything is reserved, with "UGC videos are a Nodaro Cloud feature and are not served on this deployment."

## When to use it
- You make a Hebrew UGC video. Its clips need UGC Finish before they are joined.
- You want one workflow for English and Hebrew videos. On an English video, UGC Finish passes the clips through at no cost.

## Quick start
### Add the node

Press Tab on the canvas and choose **Video › UGC Video › UGC Finish**.

### Connect the clips

Wire the **Video** output of UGC Clip into **Clips**, and set that connection to **Bundle** mode, so UGC Finish receives every clip at once.

### Connect the script

Wire the **Script (sized)** output of [UGC Clips](https://nodaro.ai/docs/nodes/video/ugc-clips) into **Script**.

### Join the clips

Wire the **Video** output into Combine Videos, and set that connection to **Bundle** mode too. Combine Videos then joins the finished clips in order.

Workflow: UGC Clip renders each clip. UGC Finish receives all of them through a Bundle connection, with the sized script, and hands them on in order. Combine Videos joins them.

- UGC Clips → UGC Clip (each)
- UGC Clip → UGC Finish (bundle)
- UGC Clips → UGC Finish (script (sized))
- UGC Finish → Combine Videos (bundle)

## Inputs
| Input | Required | What to connect |
| --- | --- | --- |
| **Clips** | Yes | The **Video** output of UGC Clip, in **Bundle** mode, so every clip arrives at once. Without it, the node fails with "Connect the Video output of UGC Clip." |
| **Script** | Yes | The **Script (sized)** output of UGC Clips. Without it, the node fails with "Connect the Script (sized) output of UGC Clips." |

## Outputs
| Output | What it carries |
| --- | --- |
| **Video** | The finished clips, in clip order. Into Combine Videos, use a **Bundle** connection, so Combine Videos joins every clip. Any other connection, such as one into Mix Audio, carries the one clip shown on the node. |

The node shows the finished clips, the first one by default. See [Connection modes](https://nodaro.ai/docs/concepts/nodes-and-connections#connection-modes).

## Settings
UGC Finish has no settings.

### English and Hebrew videos

- **An English video** passes through. The clips go on unchanged, in order. No job runs, and nothing is charged.
- **A Hebrew video** runs one finish job over all its clips. The job lays the recorded speech back over each clip and trims the pauses between words. The finished clips go on in order.

The language is the **Language** setting of [UGC Script](https://nodaro.ai/docs/nodes/video/ugc-script). A Hebrew video needs UGC Finish: without it, UGC Clips fails before anything is spent, with "Add a UGC Finish node after UGC Clip, and connect UGC Clips' Script (sized) output to it."

### All or nothing

If a clip does not follow its speech, UGC Finish fails as a whole, and hands on no clips. The joined video is therefore never made with a clip missing. Each clip checks itself when it renders, so this is rare.

### When it stops

On a Hebrew video, a clip with no sound stops the finish job, because the clip has no speech to lay back or check. The job fails with "Clip *n* has no sound, so the video cannot be finished. Re-render that clip from its UGC Clip node." The finish job's credits are refunded. Re-render that clip in [UGC Clip](https://nodaro.ai/docs/nodes/video/ugc-clip#re-render-a-clip), then run again.

## Credits
UGC Finish is free of its own.

- **On an English video**, it runs nothing and costs nothing.
- **On a Hebrew video**, it runs one finish job: **33 credits**, whatever the number of clips.

The price of the run, with this job, is shown before it starts. See [Prices in the editor](https://nodaro.ai/docs/nodes/video/ugc-clip#prices-in-the-editor).

## Tips
- **Keep UGC Finish in every UGC workflow.** It costs nothing on an English video, and the same workflow then also makes Hebrew videos.
- **Fix a clip at UGC Clip.** When UGC Finish says a clip did not follow its speech, press **Re-render** on that clip in UGC Clip, then run again.
- **Publishing ships no finished clips.** A template published with **Include this run's results** shows them as an example. See [Tutorials and templates](https://nodaro.ai/docs/get-started/tutorials-and-templates).

## Troubleshooting
| Message or problem | Cause and fix |
| --- | --- |
| "Connect the Video output of UGC Clip." | Nothing is wired into **Clips**. Wire the **Video** output of UGC Clip, in **Bundle** mode. |
| "Connect the Script (sized) output of UGC Clips." | Nothing is wired into **Script**. Wire the **Script (sized)** output of UGC Clips. |
| "Add a UGC Finish node after UGC Clip, and connect UGC Clips' Script (sized) output to it." | The script is in Hebrew, and no UGC Finish takes the Script (sized) output of UGC Clips. Add UGC Finish and wire it as in the quick start. Nothing was spent. |
| "A clip did not follow its speech. Re-render it from the UGC Clip node and run again." | One clip does not match its part of the recorded speech. Press **Re-render** on it in UGC Clip, then run again. |
| "Clip *n* has no sound, so the video cannot be finished. Re-render that clip from its UGC Clip node." | On a Hebrew video, that clip has no sound. The finish job's credits are refunded. Press **Re-render** on the clip in UGC Clip, then run again. |
| "This step needs a newer app version." | The clips and the script do not match what this version of the editor reads, for example when the number of clips differs from the script's. Run UGC Clips and UGC Clip again. If the message stays, reload the editor. |
| Combine Videos receives only one clip. | The connection from UGC Finish is in **Selected** mode. Set it to **Bundle** mode. |

## From the API
On a Hebrew video, UGC Finish calls `POST /v1/ugc/finish` when it runs, and the route answers with a job id. The request and answer shapes of the UGC routes belong to the nodes and may change between versions. To make a UGC video from code, run a workflow or a published app that holds the UGC nodes. See [Workflows](https://nodaro.ai/docs/developers/api/workflows#run-a-workflow-with-new-input-values).

Over MCP, the same step is the [`ugc_finish_clips`](https://nodaro.ai/docs/mcp/tools/utility#ugc_finish_clips) tool.

## Frequently asked questions

### What does the UGC Finish node do?

UGC Finish takes every clip of a UGC video at once, in clip order, and hands them on in the same order, ready for Combine Videos to join. It sits between UGC Clip and the join.

### Does UGC Finish cost credits?

On an English video, no. The clips pass through unchanged and no job runs. On a Hebrew video, it runs one finish job at a flat price.

### Why does a Hebrew UGC video need UGC Finish?

A Hebrew video's clips are cut from one recorded speech. UGC Finish lays that speech back over each clip and trims the pauses between words, so the joined video sounds like one take.

### How do I connect UGC Finish?

Wire the Video output of UGC Clip into Clips in Bundle mode, and the Script (sized) output of UGC Clips into Script. Then wire its Video output into Combine Videos, also in Bundle mode.
