Formato JSON per i video AI (II°)
La seconda parte del tutorial sul formato JSON come strumento per generare prompt che permettono un maggior controllo nella generazione dei video con l’AI.
Nella prima parte abbiamo esaminato i vantaggi del formato JSON rispetto ai prompt tradizionali: riduzione dell’ambiguità, maggiore controllo cinematografico, gestione efficace di elementi paralleli e migliore allineamento con l’addestramento dei modelli. Ora passiamo all’implementazione pratica.
Guida alla progettazione di prompt JSON
Usare coppie chiave-valore e mantenere una gerarchia chiara
JSON funziona come un modulo in cui ogni campo rappresenta un parametro specifico. L’uso di oggetti nidificati permette di isolare aspetti differenti. Occorre però definire un livello di dettaglio adeguato all’effetto desiderato: troppi campi possono produrre risultati rigidi, mentre troppo pochi generano ambiguità.
Essere espliciti
È necessario evitare descrizioni vaghe come “sfondo futuristico”. È preferibile specificare tono di luce, intensità, colore, ottica, movimento, durata e azione del soggetto. Gli elementi indesiderati vanno specificati tramite campi come negatives o prohibited_elements.
Iterare incrementando i parametri
Come metodo di lavoro, conviene partire da un template di base e aggiungere un parametro alla volta per capire come incide sull’output.
Utilizzare validatori e strumenti di generazione
JSON deve essere sintatticamente corretto, per cui è utile verificarlo con un validatore prima di inviare un prompt.
Adattare il prompt al modello
Ogni modello (Veo, Sora, Runway, Luma, …) può interpretare diversamente certi campi. Ad esempio parametri come lens_type possono funzionare solo in modelli che simulano elementi fotografici.
Quando non usare JSON
JSON è ideale per prompt dove conta la precisione. Quando si richiede creatività o si sta facendo un brainstorming, il linguaggio naturale può essere preferibile.
Esempi di template
Per rendere operativa la strutturazione di un prompt JSON, di seguito sono riportati due modelli utilizzabili. Entrambi possono essere copiati e modificati in funzione delle esigenze.
Template base
Questo schema è pensato per richieste semplici che si svolgono in un’unica scena. I campi obbligatori riguardano luogo, personaggi, tipologia di ripresa e stile visivo. È compatibile con modelli che supportano parametri tipici della cinematografia:
{
“scene”: {
“location”: “descrivi l’ambientazione principale”,
“time_of_day”: “momento della giornata”,
“atmosphere”: “tono emotivo della scena”
},
“character”: {
“description”: “descrizione breve del personaggio principale”,
“action”: “cosa fa il personaggio”
},
“camera”: {
“shot_type”: “tipo di inquadratura”,
“movement”: “movimento della camera”,
“lens”: “lunghezza focale o tipo di obiettivo”
},
“visual_style”: {
“color_grading”: “palette cromatica”,
“lighting”: “stile di illuminazione”
},
“technical”: {
“duration”: 8,
“fps”: 24,
“resolution”: “1080p”
}
}
Questo template deve essere visto come un punto di partenza essenziale. Le chiavi sono pensate per essere comprese dal modello e sufficientemente generiche da essere adattate con pochi cambiamenti.
Template con campi annidati
Nel caso di produzioni più complesse o di scene che richiedono un controllo più dettagliato, è utile annidare oggetti e includere elenchi. Il seguente schema prevede sezioni per movimento, audio sincronizzato e una lista di elementi vietati:
{
“project_title”: “titolo del progetto”,
“aspect_ratio”: “16:9”,
“visual_style”: “descrizione dello stile visivo”,
“scene”: {
“environment”: “descrizione dell’ambiente”,
“time_of_day”: “momento della giornata”,
“elements”: [“elemento 1”, “elemento 2”, “elemento 3”]
},
“character”: {
“description”: “descrizione del personaggio”,
“wardrobe”: {
“dress”: “capo indossato”,
“accessories”: “accessori rilevanti”
},
“actions”: [“azione principale”, “azione secondaria”]
},
“motion”: [
“descrivi i movimenti della scena in sequenza”,
“secondo movimento”
],
“camera”: {
“movement”: “tipo di movimento della camera”,
“focus”: “messa a fuoco”,
“lighting”: “descrizione della luce”
},
“audio”: {
“ambient”: “suoni di sottofondo”,
“events”: [
{“time”: 0.0, “type”: “dialogue”, “content”: “testo da pronunciare”},
{“time”: 3.0, “type”: “music”, “style”: “genere musicale”}
]
},
“negatives”: [
“elemento da evitare 1”,
“elemento da evitare 2”
]
}
Questo secondo template utilizza array (per esempio elements), oggetti annidati semplici (per esempio wardrobe) e oggetti annidati su più livelli (per esempio audio) per modellare scene più ricche. La sezione audio.events consente di definire clip o dialoghi con timestamp, mentre negatives specifica ciò che il modello non deve generare.
Dal JSON al linguaggio naturale
Benchè i modelli video rispondano bene a input strutturati, le stesse informazioni possono essere riconvertite in una descrizione in linguaggio naturale. L’idea è di usare il template JSON come traccia e concatenare i valori delle coppie chiave‑valore in un testo narrativo. Ad esempio, consideriamo questo schema semplice:
{
“scene”: {
“location”: “una strada di Tokyo”,
“time_of_day”: “al tramonto”,
“atmosphere”: “vibrante e caotica”
},
“character”: {
“description”: “una giovane donna con i capelli raccolti”,
“action”: “cammina tra la folla”
},
“camera”: {
“shot_type”: “medium tracking shot”,
“movement”: “dolly in avanti”,
“lens”: “50 mm”
}
}
Trasformandolo in linguaggio naturale si ottiene un prompt come:
“In una strada di Tokyo al tramonto, dall’atmosfera vibrante e caotica, una giovane donna con i capelli raccolti cammina tra la folla. La ripresa è un medium tracking shot con dolly in avanti realizzato con un obiettivo da 50 mm.”
Per eseguire questa conversione è utile definire schemi di frase per ogni sezione (scena, personaggio, camera) e concatenarli in modo logico. Se l’operazione di trasformazione non è condotta in modo corretto il prompt testuale rischia di introdurre ambiguità o di omettere parametri se non viene scritto con rigore.
Perché JSON e non Markdown?
Nel mondo AI la struttura più utile per la gestione dei documenti è quella Markdown, che tuttavia non è consigliabile nel caso dei prompt per i video.
Markdown è un linguaggio di marcatura creato per la formattazione di testi e non per rappresentare strutture dati gerarchiche. Non ha una sintassi riconosciuta universalmente per associare valori a chiavi per esprimere relazioni come:
camera → movement → time.
Sebbene sia possibile scrivere tabelle o elenchi puntati, mancano regole formali che garantiscano la validità dei dati e la loro interpretazione coerente da parte di un modello generativo. JSON inoltre è facilmente serializzabile e riutilizzabile in script o API, mentre Markdown richiede parsing più complessi e genera ambiguità quando si tenta di usarlo per definire parametri tecnici.
Un accenno a YAML
Oltre a JSON, esistono linguaggi di serializzazione dei dati come YAML (YAML Ain’t Markup Language).
Nel campo della generazione di video AI, tuttavia, YAML non è ancora largamente utilizzato. I modelli attuali accettano principalmente prompt in linguaggio naturale o JSON. YAML rimane confinato a casi di orchestrazione complessa o alla gestione dei prompt all’interno di framework specializzati. Sebbene offra una sintassi più leggibile per l’uomo e supporti commenti e riferimenti, la sua flessibilità (per esempio la possibilità di omettere virgolette o l’uso di alias) può introdurre ambiguità nella lettura automatica. I modelli non sono stati addestrati massicciamente su strutture YAML come su JSON. Di conseguenza, molti tutorial consigliano di utilizzare JSON come formato “universale” per i prompt, riservando YAML a contesti specifici in cui sia necessario orchestrare catene di modelli o definire flussi di lavoro complessi.
JSON e Google Veo
Negli ultimi mesi, soprattutto sui social, si stanno diffondendo esempi di video generati con Veo usando prompt in formato JSON. Non esiste però un formato JSON ufficiale rilasciato da Google per Veo: la comunità adotta JSON come modo pratico per organizzare le istruzioni.
Per quanto riguarda le versioni di Veo, non esistono differenze sostanziali nella forma del prompt, Veo 2 e Veo 3 accettano descrizioni in linguaggio naturale ma reagiscono meglio a istruzioni ben strutturate. La novità di Veo 3 è l’aggiunta dell’audio; di conseguenza, nei template JSON per Veo 3 è utile includere campi per dialoghi, effetti sonori o musica, mentre Veo 2 ignora queste informazioni. In entrambi i casi la struttura JSON rimane un hack non ufficiale, adottato come modo per organizzare il pensiero e garantire coerenza. Chi preferisce mantenere la flessibilità del testo libero può ottenere risultati simili con prompt articolati, purché le informazioni siano suddivise logicamente e in ordine cronologico, cosa non semplice.
Conclusione
L’uso del formato JSON nei prompt per la generazione di video AI rappresenta un passaggio verso un approccio ingegneristico della creatività. La strutturazione in JSON permette di ottenere risultati più coerenti, ripetibili e aderenti alla visione dell’autore. Questo approccio riduce i tempi di iterazione e gli artefatti e consente di costruire librerie riutilizzabili di scene, personaggi e stili.
Anche se si sta imponendo per questo uso, va ricordato tuttavia che si tratta di una tecnica nuova, ancora priva di standard ufficiali riconosciuti, che richiede sperimentazione per adattare i campi alle specifiche dei diversi modelli.
