Home/ Corsi/ Montare i video con l'AI/ Preparazione guidata

Preparazione guidata

Sei passi da fare una volta sola. Alla fine mandi le clip dal telefono e ricevi il video montato. Non serve saper programmare: serve copiare, incollare e leggere due righe in italiano. Il terminale si apre due volte in tutto.

Circa mezz'ora Una volta sola Mac, Windows, Linux
I sei passi

1 I due codici di Telegram

Questo passo si fa nel browser e non serve nient'altro. Telegram dà a chiunque due codici per far parlare un programma col proprio account: sono gratis e ci vogliono tre minuti.

  1. Vai su my.telegram.org ed entra col tuo numero. Il codice di conferma arriva dentro Telegram, non per SMS: guarda nelle chat.
  2. Clicca API development tools.
  3. Riempi il modulo: come nome va bene qualsiasi cosa, per esempio montaggio, e come tipo scegli Desktop.
  4. Escono api_id (un numero) e api_hash (una fila lunga di lettere e numeri). Tienili aperti, servono fra un minuto.

Questi due codici sono tuoi

Non si mandano in chat, non si fotografano, non si mettono in una cartella condivisa. Valgono come le chiavi di casa.

2 Scarica i quattro file

Quattro file piccoli. Tre sono il programma che fa il lavoro, il quarto sono le tue preferenze di montaggio. Premi i bottoni: finiscono nella cartella Download, e al posto giusto ce li porta il passo 3.

Se il browser chiede se tenerli, rispondi di sì: sono file di testo e li puoi aprire e leggere con un doppio clic. Ognuno comincia con la spiegazione di quello che fa.

3 Un comando solo

Qui si apre il terminale. È l'unico momento del genere, e non devi capire quello che scrive: devi solo leggere le ultime righe, che sono in italiano.

Come si apre

Su Mac

Premi cmd + barra spaziatrice, scrivi Terminale e premi invio. Si apre una finestra bianca o nera con del testo e un cursore che lampeggia.

Su Windows

Premi il tasto Windows, scrivi PowerShell e premi invio. Si apre una finestra blu scuro con del testo e un cursore che lampeggia.

Su Linux

Premi ctrl + alt + T, oppure cerca Terminale fra le applicazioni.

Che cosa incollare

Copia il blocco qui sotto col bottone Copia, incollalo nella finestra che si è aperta (cmd + V su Mac, ctrl + V altrove) e premi invio. Ci mette da uno a dieci minuti, e intanto scrive quello che sta facendo.

Su Mac

# Prepara la postazione. Dice sempre che cosa sta per fare.
# Si puo' rilanciare quante volte si vuole: quello che c'e' gia' lo salta.
set -u
C="$HOME/video-ai"; V="$HOME/.venv-tg"
dire(){ printf '\n  %s\n' "$1"; }
sos(){ printf '\n  ATTENZIONE: %s\n\n' "$1"; exit 1; }

dire "1/5  Guardo che cosa c'e' gia'"
if command -v ffmpeg >/dev/null 2>&1; then
  printf '       ffmpeg: c%s\n' "'e'"
elif command -v brew >/dev/null 2>&1; then
  dire "       ffmpeg manca. Lo installo con Homebrew (qualche minuto)"
  brew install ffmpeg || sos "l'installazione di ffmpeg non e' riuscita"
elif command -v apt >/dev/null 2>&1; then
  sos "manca ffmpeg. Lancia:  sudo apt update && sudo apt install -y ffmpeg python3-venv"
else
  sos "manca ffmpeg e non trovo come installarlo. Su Mac installa prima Homebrew da brew.sh"
fi

command -v python3 >/dev/null 2>&1 || sos "manca python3. Su Mac:  brew install python"
printf '       python3: %s\n' "$(python3 -V 2>&1 | awk '{print $2}')"

dire "2/5  Preparo lo spazio di lavoro"
if [ -x "$V/bin/python" ]; then printf '       %s: c%s gia\n' "$V" "'e'"
else python3 -m venv "$V" || sos "non riesco a creare $V"; printf '       creato %s\n' "$V"; fi

dire "3/5  Installo le due librerie (un minuto)"
"$V/bin/pip" install --quiet --upgrade pip
"$V/bin/pip" install --quiet telethon cryptg || sos "l'installazione delle librerie non e' riuscita"
"$V/bin/python" -c "import telethon, cryptg" || sos "le librerie non si caricano"
printf '       telethon e cryptg: a posto\n'

dire "4/5  Metto i file al loro posto"
mkdir -p "$C"
trovati=0
for f in tg.py monta.py sub.js regole.md; do
  if [ -f "$C/$f" ]; then trovati=$((trovati+1))
  elif [ -f "$HOME/Downloads/$f" ]; then mv "$HOME/Downloads/$f" "$C/$f"; trovati=$((trovati+1))
    printf '       spostato %s\n' "$f"
  else printf '       MANCA %s: scaricalo dalla guida (passo 2)\n' "$f"; fi
done

dire "5/5  Riepilogo"
printf '       cartella di lavoro: %s\n' "$C"
printf '       file pronti: %s su 4\n' "$trovati"
if [ -n "${TG_API_ID:-}" ]; then printf '       codici di Telegram: ci sono\n'
else printf '       codici di Telegram: ANCORA DA METTERE (passo 1 della guida)\n'; fi
if [ "$trovati" -eq 4 ] && [ -n "${TG_API_ID:-}" ]; then
  printf '\n  Tutto pronto. Il prossimo passo e collegare l%saccount.\n\n' "'"
else
  printf '\n  Finisci i passi segnati qui sopra, poi rilancia questo stesso comando.\n\n'
fi

Su Windows

# Prepara la postazione. Dice sempre che cosa sta per fare.
# Si puo' rilanciare quante volte si vuole: quello che c'e' gia' lo salta.
$C = "$HOME\video-ai"; $V = "$HOME\.venv-tg"

Write-Host "`n  1/5  Guardo che cosa c'e' gia'"
if (Get-Command ffmpeg -ErrorAction SilentlyContinue) { Write-Host "       ffmpeg: c'e'" }
elseif (Get-Command winget -ErrorAction SilentlyContinue) {
  Write-Host "       ffmpeg manca. Lo installo (qualche minuto)"
  winget install --id Gyan.FFmpeg -e --accept-source-agreements --accept-package-agreements
  Write-Host "       CHIUDI questa finestra, riaprila e rilancia questo comando."
  exit
} else { Write-Host "`n  ATTENZIONE: manca ffmpeg e non trovo winget. Installa ffmpeg da ffmpeg.org`n"; exit 1 }

$py = Get-Command py -ErrorAction SilentlyContinue
if (-not $py) { $py = Get-Command python -ErrorAction SilentlyContinue }
if (-not $py) {
  Write-Host "       python manca. Lo installo"
  winget install --id Python.Python.3.12 -e --accept-source-agreements --accept-package-agreements
  Write-Host "       CHIUDI questa finestra, riaprila e rilancia questo comando."
  exit
}
Write-Host "       python: c'e'"

Write-Host "`n  2/5  Preparo lo spazio di lavoro"
if (Test-Path "$V\Scripts\python.exe") { Write-Host "       $V : c'e' gia" }
else { & $py.Source -m venv $V; Write-Host "       creato $V" }

Write-Host "`n  3/5  Installo le due librerie (un minuto)"
& "$V\Scripts\python.exe" -m pip install --quiet --upgrade pip
& "$V\Scripts\python.exe" -m pip install --quiet telethon cryptg
& "$V\Scripts\python.exe" -c "import telethon, cryptg"
if ($LASTEXITCODE -ne 0) { Write-Host "`n  ATTENZIONE: le librerie non si caricano`n"; exit 1 }
Write-Host "       telethon e cryptg: a posto"

Write-Host "`n  4/5  Metto i file al loro posto"
New-Item -ItemType Directory -Force -Path $C | Out-Null
$trovati = 0
foreach ($f in @("tg.py","monta.py","sub.js","regole.md")) {
  if (Test-Path "$C\$f") { $trovati++ }
  elseif (Test-Path "$HOME\Downloads\$f") {
    Move-Item "$HOME\Downloads\$f" "$C\$f"; $trovati++; Write-Host "       spostato $f"
  } else { Write-Host "       MANCA $f : scaricalo dalla guida (passo 2)" }
}

Write-Host "`n  5/5  Riepilogo"
Write-Host "       cartella di lavoro: $C"
Write-Host "       file pronti: $trovati su 4"
if ($env:TG_API_ID) { Write-Host "       codici di Telegram: ci sono" }
else { Write-Host "       codici di Telegram: ANCORA DA METTERE (passo 1 della guida)" }
if ($trovati -eq 4 -and $env:TG_API_ID) { Write-Host "`n  Tutto pronto. Il prossimo passo e' collegare l'account.`n" }
else { Write-Host "`n  Finisci i passi segnati qui sopra, poi rilancia questo stesso comando.`n" }

Su Linux

# Prepara la postazione. Dice sempre che cosa sta per fare.
# Si puo' rilanciare quante volte si vuole: quello che c'e' gia' lo salta.
set -u
C="$HOME/video-ai"; V="$HOME/.venv-tg"
dire(){ printf '\n  %s\n' "$1"; }
sos(){ printf '\n  ATTENZIONE: %s\n\n' "$1"; exit 1; }

dire "1/5  Guardo che cosa c'e' gia'"
if command -v ffmpeg >/dev/null 2>&1; then
  printf '       ffmpeg: c%s\n' "'e'"
elif command -v brew >/dev/null 2>&1; then
  dire "       ffmpeg manca. Lo installo con Homebrew (qualche minuto)"
  brew install ffmpeg || sos "l'installazione di ffmpeg non e' riuscita"
elif command -v apt >/dev/null 2>&1; then
  sos "manca ffmpeg. Lancia:  sudo apt update && sudo apt install -y ffmpeg python3-venv"
else
  sos "manca ffmpeg e non trovo come installarlo. Su Mac installa prima Homebrew da brew.sh"
fi

command -v python3 >/dev/null 2>&1 || sos "manca python3. Su Mac:  brew install python"
printf '       python3: %s\n' "$(python3 -V 2>&1 | awk '{print $2}')"

dire "2/5  Preparo lo spazio di lavoro"
if [ -x "$V/bin/python" ]; then printf '       %s: c%s gia\n' "$V" "'e'"
else python3 -m venv "$V" || sos "non riesco a creare $V"; printf '       creato %s\n' "$V"; fi

dire "3/5  Installo le due librerie (un minuto)"
"$V/bin/pip" install --quiet --upgrade pip
"$V/bin/pip" install --quiet telethon cryptg || sos "l'installazione delle librerie non e' riuscita"
"$V/bin/python" -c "import telethon, cryptg" || sos "le librerie non si caricano"
printf '       telethon e cryptg: a posto\n'

dire "4/5  Metto i file al loro posto"
mkdir -p "$C"
trovati=0
for f in tg.py monta.py sub.js regole.md; do
  if [ -f "$C/$f" ]; then trovati=$((trovati+1))
  elif [ -f "$HOME/Downloads/$f" ]; then mv "$HOME/Downloads/$f" "$C/$f"; trovati=$((trovati+1))
    printf '       spostato %s\n' "$f"
  else printf '       MANCA %s: scaricalo dalla guida (passo 2)\n' "$f"; fi
done

dire "5/5  Riepilogo"
printf '       cartella di lavoro: %s\n' "$C"
printf '       file pronti: %s su 4\n' "$trovati"
if [ -n "${TG_API_ID:-}" ]; then printf '       codici di Telegram: ci sono\n'
else printf '       codici di Telegram: ANCORA DA METTERE (passo 1 della guida)\n'; fi
if [ "$trovati" -eq 4 ] && [ -n "${TG_API_ID:-}" ]; then
  printf '\n  Tutto pronto. Il prossimo passo e collegare l%saccount.\n\n' "'"
else
  printf '\n  Finisci i passi segnati qui sopra, poi rilancia questo stesso comando.\n\n'
fi

Che cosa deve uscire

Cinque blocchi numerati da 1/5 a 5/5, e in fondo il riepilogo. Se dice file pronti: 4 su 4 sei a posto. Se ti dice di chiudere e riaprire la finestra, fallo e incolla di nuovo lo stesso comando: non si rompe niente, quello che ha già fatto lo salta.

Prima di incollare

Quel blocco è scritto qui per intero e si legge: controlla che cosa c'è, installa quello che manca, crea una cartella e ci sposta dentro i quattro file. Non tocca altro.

E vale in generale, non solo qui: non incollare mai nel terminale un comando che non riesci a leggere, da nessun sito, nemmeno da questo.

I due codici del passo 1

Adesso vanno scritti dove il computer li ritrova ogni volta. Metti i tuoi due valori al posto di quelli finti, poi incolla:

Su Mac

echo 'export TG_API_ID=1234567' >> ~/.zshrc
echo 'export TG_API_HASH=metti_qui_il_tuo_hash' >> ~/.zshrc
source ~/.zshrc
echo "id=$TG_API_ID"

Su Windows

setx TG_API_ID 1234567
setx TG_API_HASH metti_qui_il_tuo_hash

# Poi CHIUDI questa finestra e riaprila, sennò i due codici non si vedono.

Su Linux

echo 'export TG_API_ID=1234567' >> ~/.bashrc
echo 'export TG_API_HASH=metti_qui_il_tuo_hash' >> ~/.bashrc
source ~/.bashrc
echo "id=$TG_API_ID"

Che cosa deve uscire

Su Mac e Linux una riga id= col tuo numero. Se esce id= e basta, qualcosa non ha funzionato: riprova controllando le virgolette. Su Windows non esce niente ed è normale, ma devi chiudere la finestra e riaprirla.

4 Collega il tuo account

Una volta sola. Ti chiede il numero di telefono con il prefisso (+39...) e poi il codice che arriva dentro Telegram.

Su Mac

cd ~/video-ai
~/.venv-tg/bin/python tg.py login

Su Windows

cd $HOME\video-ai
& "$HOME\.venv-tg\Scripts\python.exe" tg.py login

Su Linux

cd ~/video-ai
~/.venv-tg/bin/python tg.py login

Che cosa deve uscire

Una riga Dentro come col tuo nome. Da qui in poi non te lo chiede più.

Adesso sul computer c'è una chiave del tuo Telegram

Si chiama sessione.session e sta in una cartella nascosta del tuo profilo. Chi se la porta via entra nel tuo Telegram senza bisogno di nessun codice, e non solo nei video: in tutte le tue conversazioni.

Quindi non si copia su chiavette o altri computer, e non si mette in cartelle sincronizzate con la nuvola. Il giorno che non ti serve più, o anche solo se hai un dubbio, apri Telegram → Impostazioni → Dispositivi e chiudi la sessione: dieci secondi e quella chiave non vale più niente.

5 Le tue regole di montaggio

Il file regole.md che hai scaricato è dove scrivi come vuoi i tuoi video. L'assistente lo legge prima di ogni lavoro, quindi queste cose non le devi più ripetere.

Aprilo con un doppio clic, oppure così:

Su Mac

open -e ~/video-ai/regole.md

Su Windows

notepad $HOME\video-ai\regole.md

Su Linux

xdg-open ~/video-ai/regole.md

È un file di testo normale. Questo è il punto di partenza, e copre verticale e orizzontale:

# Come monto i miei video

## Il formato, se non dico altro
- Verticale 9:16, 1080x1920, 30 fotogrammi al secondo.
- Se scrivo "orizzontale" o "YouTube": 16:9, 1920x1080, sempre 30.
- Le clip che non stanno nella cornice si tagliano al centro.
  Se dentro c'e' uno schermo, una lavagna o del testo, sfondo sfocato
  invece di tagliare.

## Sempre
- Via il silenzio all'inizio e alla fine.
- Musica a 0.13, che sfuma negli ultimi 2 secondi.
- Le voci pareggiate fra una clip e l'altra.
- Sottotitoli impressi, bianchi con bordo nero.
  In verticale: in basso, a 260 px dal fondo, corpo 62.
  In orizzontale: in basso, a 90 px dal fondo, corpo 44.

## Quanto lunghi
- Verticale: sotto i 60 secondi. Se viene piu' lungo, dimmelo.
- Orizzontale: nessun limite, ma dimmi quanto e' venuto.

## Cosa non fare mai
- Non accelerare il parlato.
- Niente effetti di transizione. Tagli netti.
- Non inventare sottotitoli: se una parola non si capisce,
  scrivila come si sente e segnalamela.

## Quando fermarti e chiedere
- Se una clip e' girata storta.
- Se in una clip si sente una voce che non e' la mia.
- Se il video finito supererebbe il doppio della lunghezza solita.

Non riscriverlo tutto adesso

Verrebbe pieno di regole per casi che non ti capitano e vuoto sui casi veri. Cambia i numeri che già conosci (il formato, dove vuoi i sottotitoli, quanto lungo) e lascia stare il resto. Poi aggiungi una riga ogni volta che un video esce diverso da come lo volevi: dopo un mese quel file è il tuo modo di montare, scritto.

La sezione che conta di più è l'ultima, quando fermarti e chiedere. Senza quella l'assistente tira dritto anche quando ha capito male.

6 Il primo video

Ci sei. Il giro di tutti i giorni è questo, e da qui in avanti sono due minuti.

Dal telefono

Apri Telegram e vai nei Messaggi salvati (in cima all'elenco delle chat, con l'icona del segnalibro). Manda le clip nell'ordine in cui le vuoi, poi scrivi un messaggio che comincia con /monta e di' che cosa vuoi, come lo diresti a un montatore:

/monta verticale 9:16, la prima parte mossa quindi taglia i primi 2 secondi, musica sotto piano, sottotitoli
/monta orizzontale 16:9, unisci tutto, musica sotto, sottotitoli

Dal computer

Questo comando scarica le clip e ti dice che cosa sono: quanto durano, che formato hanno, se hanno l'audio.

Su Mac

cd ~/video-ai
~/.venv-tg/bin/python tg.py prendi

Su Windows

cd $HOME\video-ai
& "$HOME\.venv-tg\Scripts\python.exe" tg.py prendi

Su Linux

cd ~/video-ai
~/.venv-tg/bin/python tg.py prendi

Poi apri l'assistente nella cartella video-ai e digli, con parole tue: leggi regole.md, prendi il lavoro da Telegram e montalo. Quando il video è pronto te lo rimanda nella stessa chat.

Guardalo prima di pubblicarlo, e guardane la fine

Un montaggio sbagliato quasi mai dà un errore: il file esce, si apre, dura il tempo giusto. I guasti si vedono nella seconda metà, di solito come audio che sparisce o come immagine che cambia formato. Trenta secondi di controllo, ogni volta. È l'unica parte che non si delega.

Se qualcosa non torna

Incolla questo nel terminale: fa l'elenco di quello che c'è e di quello che manca, e le righe [manca] ti dicono a quale passo tornare.

Su Mac

printf '\n  CONTROLLO\n  ---------\n'
command -v ffmpeg  >/dev/null 2>&1 && echo "  [ok]    ffmpeg" || echo "  [manca] ffmpeg"
command -v python3 >/dev/null 2>&1 && echo "  [ok]    python3" || echo "  [manca] python3"
[ -x "$HOME/.venv-tg/bin/python" ] && echo "  [ok]    spazio di lavoro" || echo "  [manca] spazio di lavoro"
"$HOME/.venv-tg/bin/python" -c "import telethon,cryptg" 2>/dev/null && echo "  [ok]    librerie" || echo "  [manca] librerie"
[ -n "${TG_API_ID:-}" ] && echo "  [ok]    TG_API_ID" || echo "  [manca] TG_API_ID"
[ -n "${TG_API_HASH:-}" ] && echo "  [ok]    TG_API_HASH" || echo "  [manca] TG_API_HASH"
[ -f "$HOME/.tg-video/sessione.session" ] && echo "  [ok]    account collegato" || echo "  [manca] account collegato"
for f in tg.py monta.py sub.js regole.md; do
  [ -f "$HOME/video-ai/$f" ] && echo "  [ok]    $f" || echo "  [manca] $f"
done
printf '  ---------\n  Rifai i passi delle righe [manca].\n\n' 

Su Windows

Write-Host "`n  CONTROLLO`n  ---------"
function v($c,$n){ if($c){Write-Host "  [ok]    $n"}else{Write-Host "  [manca] $n"} }
v ([bool](Get-Command ffmpeg -ErrorAction SilentlyContinue)) "ffmpeg"
v (Test-Path "$HOME\.venv-tg\Scripts\python.exe") "spazio di lavoro"
& "$HOME\.venv-tg\Scripts\python.exe" -c "import telethon,cryptg" 2>$null; v ($LASTEXITCODE -eq 0) "librerie"
v ([bool]$env:TG_API_ID) "TG_API_ID"
v ([bool]$env:TG_API_HASH) "TG_API_HASH"
v (Test-Path "$HOME\.tg-video\sessione.session") "account collegato"
foreach ($f in @("tg.py","monta.py","sub.js","regole.md")) { v (Test-Path "$HOME\video-ai\$f") $f }
Write-Host "  ---------`n  Rifai i passi delle righe [manca].`n"

Su Linux

printf '\n  CONTROLLO\n  ---------\n'
command -v ffmpeg  >/dev/null 2>&1 && echo "  [ok]    ffmpeg" || echo "  [manca] ffmpeg"
command -v python3 >/dev/null 2>&1 && echo "  [ok]    python3" || echo "  [manca] python3"
[ -x "$HOME/.venv-tg/bin/python" ] && echo "  [ok]    spazio di lavoro" || echo "  [manca] spazio di lavoro"
"$HOME/.venv-tg/bin/python" -c "import telethon,cryptg" 2>/dev/null && echo "  [ok]    librerie" || echo "  [manca] librerie"
[ -n "${TG_API_ID:-}" ] && echo "  [ok]    TG_API_ID" || echo "  [manca] TG_API_ID"
[ -n "${TG_API_HASH:-}" ] && echo "  [ok]    TG_API_HASH" || echo "  [manca] TG_API_HASH"
[ -f "$HOME/.tg-video/sessione.session" ] && echo "  [ok]    account collegato" || echo "  [manca] account collegato"
for f in tg.py monta.py sub.js regole.md; do
  [ -f "$HOME/video-ai/$f" ] && echo "  [ok]    $f" || echo "  [manca] $f"
done
printf '  ---------\n  Rifai i passi delle righe [manca].\n\n' 

Se resti bloccato, scrivimi: dimmi a quale passo sei e copiami quello che ti ha risposto il terminale. Con quelle due cose si capisce quasi sempre al primo colpo.

Federico BoggiaRispondo io, in giornata

Ciao! Dimmi che ti serve: un corso online, un workshop di AI in aula a Livorno o la formazione per la tua azienda.

Scrivimi su WhatsApp