Vid.AI
Da un'idea o un copione a un video breve con voce, immagini e montaggio
Incasso mensile: 46.929 USD (fonte indicata nella scheda)
Cosa fa
Trasforma un'idea o un copione in un video breve per TikTok, Reels e Shorts: l'AI crea la voce, le immagini e il montaggio, senza saper usare un editor video.
Come guadagna
Abbonamenti da 39, 99 e 199 $ al mese, oltre 700 abbonati, 1,6 milioni di dollari incassati in totale. Cresciuta con pubblicità su Meta e influencer. Team di 2-5 persone senza investitori. Incassi verificati con Stripe.
Rendilo tuo
- Per chi vende online: video del prodotto in italiano da 3 foto.
- Ricette in 30 secondi per chi ha un blog di cucina.
- Video per agenti immobiliari dalle foto della casa.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Clip Pronta": un'app che trasforma un'idea o un copione in un video verticale di 30-60 secondi con voce AI, immagini, sottotitoli animati e musica. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con esempi e prezzi
2. Registrazione
3. Nuovo video: idea o copione, voce, stile delle immagini
4. Anteprima a scene con modifiche veloci
5. I miei video
Stile: giovane e dinamico: sfondo #0F0F14, giallo neon #FDE047, azzurro #38BDF8, carattere "Inter" in grassetto, anteprime verticali. Nessuna immagine generica di stock.
Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.
2. Database, account e sicurezza
Collega il progetto a Supabase e attiva la registrazione con email e password.
Crea queste tabelle:
- "video": idea, copione, voce, stile, stato, file finale
- "scene": video, ordine, frase, immagine, durata
- "crediti": saldo e movimenti dell'utente
Regole di sicurezza obbligatorie:
- ogni utente vede solo i suoi video
- i file sono privati con link temporanei
- i crediti si scalano solo dal server
Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.
3. Copione, voce, immagini e sottotitoli
Se l'utente scrive solo un'idea, Claude prepara il copione con un gancio forte all'inizio. Il copione si divide in frasi; ogni frase diventa una scena.
La voce si crea con ElevenLabs chiedendo anche i tempi di ogni parola: servono per i sottotitoli animati parola per parola, quelli gialli e grandi tipici dei video virali. Per ogni scena si genera un'immagine nello stile scelto. Il montaggio finale lo fa Remotion su un server: immagini con movimento, sottotitoli, musica libera da diritti.
Il credito si scala solo quando il video è pronto: se qualcosa va storto, non si paga.
4. Modifiche veloci prima dell'esportazione
Nell'anteprima si cambia una frase (si rigenerano solo la sua voce e i suoi sottotitoli), si rigenera un'immagine che non piace, si cambia la musica.
Esportazione in 9:16 a 1080p, con il testo per la descrizione e gli hashtag proposti.
5. Pagamenti con Stripe
Aggiungi pacchetti di crediti: 20 video a 15 €, 60 video a 39 €. Ogni nuovo utente riceve 2 crediti gratis. Ogni video fino a 60 secondi costa un credito. Mostra sempre in alto quanti crediti restano e, quando finiscono, un riquadro per comprarne altri.
A pagamento riuscito il webhook aggiunge i crediti del pacchetto con la funzione aggiungi_crediti.
Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.
6. Controlli specifici di questo progetto
Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Crediti: fai fallire apposta la creazione di un video (es. testo vuoto) e controlla che il credito non venga scalato.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Sottotitoli parola per parola
ElevenLabs restituisce i tempi di ogni carattere; da questi si ricavano i tempi di ogni parola, poi si raggruppano a 3 parole per riga.
type Allineamento = { characters: string[]; character_start_times_seconds: number[]; character_end_times_seconds: number[] };
type Parola = { testo: string; inizio: number; fine: number };
export function parole(a: Allineamento): Parola[] {
const out: Parola[] = [];
let attuale: Parola | null = null;
a.characters.forEach((c, i) => {
if (c.trim() === "") { if (attuale) out.push(attuale); attuale = null; return; }
if (!attuale) attuale = { testo: "", inizio: a.character_start_times_seconds[i], fine: 0 };
attuale.testo += c;
attuale.fine = a.character_end_times_seconds[i];
});
if (attuale) out.push(attuale);
return out;
}
export function righe(p: Parola[], perRiga = 3) {
const out: Parola[] = [];
for (let i = 0; i < p.length; i += perRiga) {
const gruppo = p.slice(i, i + perRiga);
out.push({ testo: gruppo.map((x) => x.testo).join(" ").toUpperCase(), inizio: gruppo[0].inizio, fine: gruppo.at(-1)!.fine });
}
return out;
}Scalare il credito solo a video pronto
Una funzione che toglie un credito e segna il video come pronto nello stesso momento: o tutte e due le cose, o nessuna.
create function video_pronto(p_video uuid, p_file text)
returns void language plpgsql security definer set search_path = public as $
declare v_utente uuid;
begin
update video set stato = 'pronto', file = p_file
where id = p_video and stato <> 'pronto'
returning utente_id into v_utente;
if v_utente is null then return; end if; -- già pronto: niente doppio addebito
update profili set crediti = crediti - 1 where id = v_utente and crediti > 0;
if not found then raise exception 'crediti finiti'; end if;
end $;
revoke execute on function video_pronto from public, anon, authenticated; -- solo dal server
Pezzi comuni a tutti i progetti
Glossario
- Storage
- Lo spazio di Supabase dove si salvano i file, come foto e audio, con le sue regole di accesso.
- Remotion
- Una libreria che crea video scrivendo componenti React: ogni fotogramma è una pagina web.
