> ## Documentation Index
> Fetch the complete documentation index at: https://docs.venice.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Venice Video Harness

> Guida Venice da Claude Code o Cursor con un harness ottimizzato per Venice per video character-consistent, storyboard, trailer e narrazioni long-form.

Il [Venice Video Harness](https://github.com/jordanurbs/venice-video-harness) è un toolkit community, agent-first, ottimizzato per Venice per la **creazione di video consistency-first di qualsiasi durata**. Trasforma un agente IDE (Claude Code, Cursor, Codex, ecc.) in un operatore di un sistema di produzione Venice riutilizzabile che copre oltre 50 modelli Venice per video, immagini, audio e musica.

<Card title="GitHub: venice-video-harness" icon="github" href="https://github.com/jordanurbs/venice-video-harness">
  Licenza MIT. Mantenuto dalla community.
</Card>

<CardGroup cols={3}>
  <Card title="Video character-consistent" icon="users">
    Blocca personaggi, voci ed estetiche in un'intera serie
  </Card>

  <Card title="Storyboard-to-video" icon="film">
    Generazione dei pannelli a due passaggi con raffinamento multi-edit Venice
  </Card>

  <Card title="Editing text-first" icon="scissors">
    Trascrivi in locale con whisper.cpp, taglia da un pack di 12KB, auto-valutazione a ogni transizione
  </Card>
</CardGroup>

## Cos'è

La maggior parte delle integrazioni Venice sono semplici wrapper intorno alle chiamate API. Il Venice Video Harness è il **livello di alto livello** che si colloca tra il tuo agente e l'API Venice:

* **Regole di orchestrazione** in `CLAUDE.md`
* **Playbook riutilizzabili** in `.claude/commands/` (19 comandi di workflow)
* **Agenti specializzati** in `.claude/agents/` (art-director, prompt-engineer, cut-qa e altri)
* **Skill di produzione Venice** in `.claude/skills/` (compatibili con il formato [Agent Skills](/guides/integrations/venice-skills))
* **Livello di esecuzione TypeScript** in `src/`
* **Registry completo dei modelli** che copre oltre 50 modelli Venice per video, immagini, audio e musica

Costruito per creator che producono:

* Progetti video character-consistent (qualsiasi genere, qualsiasi durata)
* Serie o campagne con stile visivo bloccato
* Workflow storyboard-to-video
* Contenuti narrativi short-form e long-form
* Sequenze cinematiche brandizzate, trailer e teaser
* Serie social con personaggi ricorrenti

## Per iniziare

### Requisiti

<CardGroup cols={3}>
  <Card title="Node.js 20+" icon="node-js" href="https://nodejs.org/">
    LTS più recente consigliato
  </Card>

  <Card title="ffmpeg + ffprobe" icon="terminal" href="https://ffmpeg.org/">
    Nel tuo PATH
  </Card>

  <Card title="Venice API key" icon="key" href="/guides/getting-started/generating-api-key">
    Da [venice.ai/settings/api](https://venice.ai/settings/api)
  </Card>
</CardGroup>

Opzionale, per la pipeline di editing: installa `whisper-cpp` per la trascrizione locale.

```bash theme={"system"}
brew install whisper-cpp
mkdir -p ~/.cache/whisper.cpp
curl -L -o ~/.cache/whisper.cpp/ggml-base.en.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin
```

### Setup

<Steps>
  <Step title="Clona l'harness">
    ```bash theme={"system"}
    git clone https://github.com/jordanurbs/venice-video-harness.git
    cd venice-video-harness
    ```
  </Step>

  <Step title="Configura la tua API key">
    ```bash theme={"system"}
    cp .env.example .env
    # Aggiungi VENICE_API_KEY a .env
    ```
  </Step>

  <Step title="Installa e compila">
    ```bash theme={"system"}
    npm install
    npm run build
    ```
  </Step>

  <Step title="Apri nel tuo agente">
    Apri il progetto in Cursor, Claude Code o qualsiasi IDE con chat agentica. L'agente legge `CLAUDE.md` e i playbook automaticamente.

    Prova uno di questi primi messaggi:

    * "Set up this Venice video harness for first use"
    * "Create a new character-consistent video series"
    * "Generate a 30-second branded video sequence"
    * "Build a multi-episode narrative with locked characters"
    * "Create a product launch trailer with consistent visual style"
  </Step>
</Steps>

## Cosa lo rende Venice-optimized

* **Prompt per immagini ottimizzati per i modelli di immagini Venice** come `seedream-v5-lite`, `nano-banana-pro`, `flux-2-pro/max` e altri
* **Generazione dei pannelli a due passaggi** con raffinamento multi-edit Venice per la correzione dei personaggi
* **Logica di routing dei modelli** per i tier di azione, atmosfera e character-consistency
* **Generazione video reference-aware** che usa `elements`, `reference_image_urls` e `scene_image_urls` correttamente per ogni modello
* **Adattamento del prompt environment-aware** per la gestione delle scene diurne vs notturne
* **Percorsi audio Venice-native** per TTS (Kokoro, Qwen3, ElevenLabs), SFX e musica
* **Stima dei costi** prima della generazione tramite `/video/quote` e `/audio/quote`
* **Costruzione dei parametri model-aware** che salta automaticamente i parametri non supportati dal modello target

## Default di routing dei modelli

I default dell'harness sono opinionated perché la consistenza è il punto chiave. Il routing attuale (aprile 2026):

**Seedance 2.0 R2V di default. Fallback su Kling O3 R2V per scene con 3+ personaggi. Seedance 2.0 i2v per gli establishing shot.**

| Ruolo                                        | Modello di default                     | Quando usato                                                                                  |
| -------------------------------------------- | -------------------------------------- | --------------------------------------------------------------------------------------------- |
| Inquadrature con personaggi (1-2 personaggi) | `seedance-2-0-reference-to-video`      | R2V di default con `reference_image_urls` flat, tag `@Image`, fino a 15s, audio stereo nativo |
| Inquadrature con personaggi (3+ personaggi)  | `kling-o3-standard-reference-to-video` | Fallback automatico con `elements` strutturati per identità multi-personaggio                 |
| Establishing / mood / action                 | `seedance-2-0-image-to-video`          | Nessun personaggio; qualità cinematica epica, fino a 15s                                      |

Questi sono sovrascrivibili per progetto tramite `series.json → videoDefaults`. Per puntare a una famiglia non Seedance (es. account che non hanno accesso a Seedance), imposta `videoDefaults` su `kling-o3-standard-reference-to-video` e `veo3.1-fast-image-to-video`.

<Note>
  **Regola del volto Seedance:** Seedance 2.0 blocca le immagini di input con volti che non sono state prodotte da `seedream-v5-lite` o `seedream-v5-lite-edit`. L'harness gestisce questo automaticamente instradando il lavoro sulle immagini contenenti personaggi tramite Seedream ed eseguendo un gate pre-flight prima di ogni chiamata Seedance.
</Note>

## Modelli Venice supportati

### Video (aprile 2026)

| Famiglia                  | i2v                        | t2v                   | Durata massima | Audio                           | Note                                                             |
| ------------------------- | -------------------------- | --------------------- | -------------- | ------------------------------- | ---------------------------------------------------------------- |
| **Seedance 2.0**          | i2v, R2V                   | t2v                   | 15s            | Sì (stereo, lip-sync 8+ lingue) | Classificato #1. R2V: `reference_image_urls` flat, tag `@Image`. |
| **Kling V3**              | Pro, Standard              | Pro, Standard         | 15s            | Sì                              | `end_image_url` per il targeting del frame                       |
| **Kling O3**              | Pro, Std, Pro R2V, Std R2V | Pro, Standard         | 15s            | Sì                              | R2V: `elements`, `reference_image_urls`, `scene_image_urls`      |
| **Kling 2.6 / 2.5 Turbo** | Pro                        | Pro                   | 10s            | 2.6: Sì / 2.5: No               | `end_image_url`                                                  |
| **Veo 3.1**               | Fast, Full                 | Fast, Full            | 8s             | Sì                              | Fino a risoluzione 4K                                            |
| **Sora 2**                | Standard, Pro              | Standard, Pro         | 12s            | Sì                              | Fino a 1080p                                                     |
| **Wan 2.6 / 2.5**         | Std, Flash / Sì            | Std / Sì              | 15s / 10s      | Sì                              | Input `audio_url`                                                |
| **LTX Video 2.0**         | Fast, Full, v2.3, 19B      | Fast, Full, v2.3, 19B | 20s            | Sì                              | Fino a 4K, il più lungo sincronizzato                            |
| **Longcat**               | Std, Distilled             | Std, Distilled        | **30s**        | No                              | Il più lungo single-shot                                         |
| **Vidu Q3**               | Sì                         | Sì                    | 16s            | Sì                              | `reference_image_urls`                                           |
| **PixVerse v5.6**         | Std, Transition            | Standard              | 8s             | Sì                              | Transition: `end_image_url`                                      |
| **Grok Imagine**          | Sì                         | Sì                    | 15s            | Sì                              | Supporto wide aspect ratio                                       |

### Immagine, audio e musica

* **Immagine (22+ modelli):** `nano-banana-pro/2`, `gpt-image-2`, `flux-2-pro/max`, `grok-imagine`, `qwen-image-2-pro`, `recraft-v4-pro`, `seedream-v4` / `v5-lite`, `lustify-sdxl/v7`, `wai-Illustrious` e altri
* **Multi-edit:** `qwen-edit`, `flux-2-max-edit`, `nano-banana-pro-edit`, `seedream-v5-lite-edit`, `gpt-image-2-edit` e altri
* **TTS:** `tts-kokoro` (50+ voci), `tts-qwen3-0-6b/1-7b`, `elevenlabs-tts-v3`, `elevenlabs-tts-multilingual-v2`
* **Musica:** `elevenlabs-music`, `minimax-music-v2`, `ace-step-15`, `stable-audio-25`
* **SFX:** `elevenlabs-sound-effects-v2`, `mmaudio-v2-text-to-audio`

## Pipeline di produzione

### Pipeline di generazione

Video narrativo end-to-end (script → storyboard → video → audio → montaggio):

```bash theme={"system"}
npm run dev -- produce-episode -p output/my-series -e 1
```

L'implementazione di riferimento in `src/mini-drama/` copre:

* Gestione di serie / personaggi / episodi
* Workshop di script con LLM
* Generazione dello storyboard a due passaggi (genera + raffina multi-edit)
* QA dei pannelli basato su vision
* Generazione video con frame chaining
* Post-produzione audio a strati
* Burn-in dei sottotitoli e montaggio finale

### Pipeline di editing

Taglia media già esistenti (riprese generate da Venice o filmati grezzi reali). **Text-first**: l'LLM legge un `takes_packed.md` compatto (\~12KB per 40 minuti di audio) anziché fare un frame-dump del video.

I cinque passi:

<Steps>
  <Step title="Trascrivi">
    whisper.cpp locale produce per ogni sorgente `*.words.json` + `takes_packed.md`.
  </Step>

  <Step title="Leggi il pack">
    L'LLM formula una strategia di taglio dal solo testo.
  </Step>

  <Step title="Conferma">
    Propone la strategia e attende "yes / revise / cancel".
  </Step>

  <Step title="Renderizza l'EDL">
    Cut list JSON → concat ffmpeg con fade audio di 30ms. Archive-first, quindi gli originali non vengono mai sovrascritti.
  </Step>

  <Step title="Auto-valutazione">
    L'agente `cut-qa` esegue 6 controlli programmatici a ogni transizione di taglio; massimo 3 iterazioni di fix.
  </Step>
</Steps>

I controlli `cut-qa` intercettano regressioni dell'aspect ratio, salti di frame-hash all'interno di una parola, troncamenti VO, discontinuità di illuminazione, picchi audio sopra -6 dBFS e sovrapposizioni di didascalie con testo in-frame.

<Tip>
  La pipeline di editing è ispirata da [browser-use/video-use](https://github.com/browser-use/video-use). La loro intuizione di base, *"l'LLM non guarda mai il video, lo legge"*, è ciò che fa funzionare l'editing guidato da agenti senza annegare nei token di frame-dump.
</Tip>

## Comandi, agenti e skill

L'harness espone 19 comandi di workflow, 10 agenti specializzati e 7 skill di produzione. Punti salienti:

| Comando di workflow                | Scopo                                              |
| ---------------------------------- | -------------------------------------------------- |
| `new-series`                       | Crea una nuova serie con estetiche bloccate        |
| `add-character` / `lock-character` | Lock di personaggio + voce                         |
| `workshop-episode`                 | Scripting collaborativo di un episodio             |
| `storyboard-episode`               | Crea lo storyboard di un episodio                  |
| `produce-episode`                  | Pipeline completa in un solo comando               |
| `generate-trailer`                 | Pipeline completa per il trailer                   |
| `edit-footage`                     | Pipeline di editing text-first per media esistenti |
| `ingest-screenplay`                | Importa una sceneggiatura Fountain o PDF           |

| Agente specializzato | Ruolo                                                               |
| -------------------- | ------------------------------------------------------------------- |
| `art-director`       | Decisioni su estetica, palette, illuminazione, composizione         |
| `prompt-engineer`    | Prompt per immagini Venice, consistenza dei personaggi              |
| `storyboard-qa`      | QA dei pannelli per controlli di continuity e personaggi            |
| `cut-qa`             | Quality gate post-render (6 controlli per taglio, max 3 iterazioni) |
| `overlay-designer`   | Motion graphics brandizzati, sub-agenti paralleli                   |
| `trailer-curator`    | Selezione delle inquadrature del trailer e regole anti-spoiler      |

| Skill di produzione          | Scopo                                                   |
| ---------------------------- | ------------------------------------------------------- |
| `venice-api`                 | Utilizzo dell'API REST Venice e default                 |
| `venice-video-model-routing` | Routing R2V-first, decision tree                        |
| `character-consistency`      | Linee guida per consistenza dei personaggi multi-shot   |
| `shot-composition`           | Linee guida su composizione delle inquadrature e camera |
| `screenplay-parsing`         | Workflow di parsing delle sceneggiature                 |
| `video-editing`              | Filosofia editing text-first, formato EDL, loop cut-qa  |

## Round-trip NLE

Dopo il rendering, esporta la timeline assemblata come XML per il fine-tuning nel tuo editor preferito. Ogni segmento video, clip di dialogo, clip SFX e cue musicale arriva sulla propria traccia.

```bash theme={"system"}
mini-drama export-timeline -p output/<project> -e 1 --format fcpxml      # Final Cut Pro X
mini-drama export-timeline -p output/<project> -e 1 --format premiere    # Premiere Pro
mini-drama export-timeline -p output/<project> -e 1 --format davinci     # DaVinci Resolve
```

## Utilizzo programmatico

Puoi anche richiamare i moduli dell'harness direttamente dal tuo TypeScript:

```typescript theme={"system"}
import { VeniceClient } from './src/venice/client.js';
import { generateVideo, quoteVideo } from './src/venice/video.js';
import { listVideoModels } from './src/venice/models.js';

const client = new VeniceClient();

const quote = await quoteVideo(client, {
  model: 'kling-v3-pro-image-to-video',
  duration: '8s',
  audio: true,
});
console.log(`Estimated cost: $${quote.quote}`);

const result = await generateVideo(client, {
  model: 'kling-v3-pro-image-to-video',
  prompt: 'A slow dolly shot pushes forward...',
  duration: '8s',
  imageUrl: 'data:image/png;base64,...',
  audio: true,
  outputPath: 'output/shot-001.mp4',
});

const longModels = listVideoModels({ minDurationSec: 20 });
```

## Risorse

<CardGroup cols={2}>
  <Card title="GitHub" icon="github" href="https://github.com/jordanurbs/venice-video-harness">
    Codice sorgente, issue e release
  </Card>

  <Card title="Generazione video Venice" icon="film" href="/guides/media/video-generation">
    L'API sottostante che l'harness pilota
  </Card>

  <Card title="Reference-to-Video" icon="image" href="/guides/media/reference-to-video">
    Guida R2V per la consistenza dei personaggi
  </Card>

  <Card title="Seedance 2.0" icon="bolt" href="/guides/media/seedance-2-0">
    La famiglia video di default dell'harness
  </Card>
</CardGroup>

<Note>
  Mantenuto dalla community e fornito as-is. Per problemi specifici dell'harness, segnalali sul [repository GitHub del progetto](https://github.com/jordanurbs/venice-video-harness/issues).
</Note>
