Am construit un motor care randează singur lecții video de engleză pentru preșcolari: scriu scriptul, apăs o comandă, și iese un episod de două minute cu personaje animate 3D, voce, muzică și sincronizare pe cuvânt. Randarea costă zero — rulează pe calculatorul meu. Singurii bani cheltuiți sunt pe voci. Dar partea care a durat cel mai mult n-a fost codul, ci ce am definit înainte să scriu prima linie de cod.
Pe scurt
– Conceptul s-a fixat înainte de orice generare: public, metodă, listă închisă de cuvinte. Fără acest pas, motorul ar fi produs repede episoade pe care nu le-ar fi înțeles niciun copil de patru ani. – Personajele sunt rotunde, nu cubice. Nu e o preferință estetică — stilul cubic pe care îl foloseam în alte proiecte citește „joc video”, nu „blând”, iar publicul are 3–6 ani. – Vocile au fost căutate, nu ghicite: 10 candidate ascultate, 2 alese, accent britanic, fixate într-un fișier de configurare ca să nu se schimbe de la un episod la altul. – Randarea e locală: 0 dolari per episod. Costul real e vocea. – Cea mai scumpă lecție: de două ori, agentul care verifica a raportat „arată bine”, iar cadrele extrase din video arătau altceva. Verifică pe cadre, nu pe raport.Ce înseamnă, de fapt, „motor de randare”?
Un motor de randare, în cazul acesta, e un set de fișiere de cod care primesc un script și produc un video complet, fără ca cineva să deschidă un program de montaj. Personajele sunt obiecte 3D descrise în cod — o sferă pentru cap, capsule pentru brațe, o formă moale pentru corp. Camera, lumina, mișcarea, gura care se deschide pe silabe: toate sunt calculate cadru cu cadru, de 30 de ori pe secundă.
Pentru episodul de care scriu, înseamnă 3.012 cadre randate unul câte unul, pentru 100 de secunde de conținut. Plus introul și cardul cu numărul lecției, totalul iese la 128 de secunde.
Diferența față de a genera un video cu un model de inteligență artificială e importantă: aici nimic nu e halucinat. Dacă mărul trebuie să fie roșu și în stânga lui Buzz, va fi roșu și în stânga, la fiecare randare, identic. Un model generativ îți dă altceva de fiecare dată. Pentru o serie unde același personaj trebuie să arate la fel în episodul 1 și în episodul 40, consecvența nu e un moft — e condiția de bază.
De ce am definit conceptul înainte să scriu cod?
Pentru că un motor produce repede. Iar dacă produce repede lucrul greșit, ai doar mai mult din ce nu-ți trebuie.
Publicul sunt copii de 3–6 ani care nu știu engleză. Metoda e imersie simplă: fără traducere, fără explicații în română, doar repetiție și joc. Ceea ce impune o constrângere dură — fiecare episod are o listă închisă de cuvinte, iar fiecare cuvânt trebuie să apară de minimum trei ori.
Episodul 1 are exact 15 cuvinte: hello, bye-bye, yes, no, red, blue, yellow, green, look, big, small, happy, one, two, three. Nu 16. Iar la final am verificat, cu un tabel, de câte ori apare fiecare.
| Cuvânt | Apariții | Unde |
|---|---|---|
| red | 8 | obiect + jocul de recunoaștere |
| bye-bye | 7 | închidere |
| blue, yellow, green | 6 fiecare | obiect + joc |
| hello | 5 | deschidere |
| yes, happy | 4 fiecare | reacții de încurajare |
| look, big, small | 3 fiecare | introducerea obiectelor, mărimea |
| one, two, three | 1–2 | numărătoare scurtă |
| no | 0 | nefolosit — rămâne pentru un episod cu alegere corect/greșit |
Cuvântul „no” a rămas la zero, intenționat. Într-un episod despre culori nu există nimic de refuzat, iar forțarea lui doar ca să bifez lista ar fi stricat metoda.
Promptul cu care se face partea aceasta, dacă vrei să-l refolosești:
Promptul de definire a conceptului, înainte de orice producție
Ajută-mă să definesc conceptul unei serii video educative, ÎNAINTE de a produce ceva. CONTEXT - Public: [vârsta exactă, ce știe și ce nu știe deja] - Limba conținutului: [limba] - Metoda: [ex. imersie fără traducere, repetiție, joc] - Durata țintă per episod: [minute] - Format: [16:9 clasic / 9:16 vertical] CE VREAU DE LA TINE, în ordinea aceasta: 1. LISTA ÎNCHISĂ DE CUVINTE pentru primul episod. Maximum [N] cuvinte. Argumentează fiecare alegere prin criteriul: îl poate folosi copilul mâine? Elimină orice cuvânt care are nevoie de explicație ca să fie înțeles. 2. REGULA DE REPETIȚIE. Câte apariții minime are nevoie un cuvânt ca să se fixeze, la vârsta aceasta? Dă sursa, dacă există una. 3. ÎNVELIȘUL FIX — deschiderea și închiderea care se repetă IDENTIC la fiecare episod. Copiii de vârsta aceasta se sprijină pe ritual. 4. CE NU INTRĂ în primul episod și de ce. Vreau lista lucrurilor pe care le amâni, nu doar pe cele pe care le incluzi. Nu-mi scrie încă scriptul. Vreau doar cadrul, ca să-l aprob.
De ce personaje rotunde și nu cubice?
În restul proiectelor mele de video foloseam un stil cubic, de tip joc cu blocuri. E rapid de randat și arată bine. Primul reflex a fost să-l refolosesc și aici.
A fost greșit, și se vede imediat când pui cele două variante una lângă alta: stilul cubic citește „joc video”, nu „blând”. Pentru un copil de patru ani, colțurile ascuțite și texturile de piatră spun altceva decât vrea o lecție de engleză.
Am rescris personajele din forme moi — sfere, capsule, suprafețe rotunjite. Am păstrat doar mecanismul motorului, nu geometria.

Sunt Pip, copilul curios care aproape nu vorbește, și Buzz, creatura care vorbește engleză și repetă fiecare cuvânt. Împărțirea are un rost: copilul care se uită se identifică cu Pip — și el ascultă, și el nu știe încă cuvintele — iar Buzz e cel care predă. Nimeni nu-i cere lui Pip să știe.
Cum alegi vocea unui personaj, fără să ghicești?
Metoda vine din Marea Britanie, deci accentul trebuia să fie britanic. Atât știam.
Tentația e să alegi după nume, din lista platformei de voci. E cel mai rapid mod de a greși: numele unei voci nu-ți spune cum sună la o propoziție de trei cuvinte, rostită vesel, pentru un copil.
Am căutat în biblioteca publică de voci după criterii — gen, vârstă, accent, descriptor — și am generat aceeași replică de test cu 10 candidate: șase pentru Buzz, patru pentru Pip. Le-am ascultat pe toate și am ales două.
Alegerea nu se mai renegociază la fiecare episod. E scrisă într-un fișier de configurare, împreună cu identificatorul exact al vocii. La episodul 40, Buzz va suna la fel ca în episodul 1.
Cum arată scriptul unui episod?
Text simplu, cu regie scrisă între paranteze, împărțit în trei: învelișul de deschidere (identic mereu), mijlocul cu tema zilei, învelișul de închidere (identic mereu).
Regula pe care am ținut-o: scriptul se aprobă ca text, înainte de orice discuție despre voce, animație sau stil. E partea cea mai ieftin de schimbat. O propoziție rescrisă costă zece secunde; aceeași propoziție rescrisă după randare costă o oră de calculator.
Promptul de scriere a scriptului, cu buget de cuvinte
Scrie scriptul episodului [N] dintr-o serie video pentru copii de [vârsta]. CONSTRÂNGERI DURE (nu le încălca, nici măcar „ca să sune mai bine"): - Vocabular permis: DOAR cuvintele din lista de mai jos. Niciun cuvânt în afara ei. [lista completă] - Fiecare cuvânt din listă apare de minimum 3 ori. Excepțiile le semnalezi tu, cu motivul, nu le strecori. - Fără traducere, fără explicații în limba maternă a copilului. - Durata țintă: [minute]. Estimează-o pe baza a ~2 cuvinte rostite pe secundă, cu pauze de joc între replici. STRUCTURA: 1. Deschidere — învelișul fix, identic la fiecare episod: [descrie-l] 2. Mijloc — tema episodului: [tema]. Introdu obiectele unul câte unul, fiecare cu repetiție apăsată. Apoi un joc de recunoaștere unde personajul-copil ARATĂ obiectul, nu îl numește. 3. Închidere — învelișul fix: [descrie-l] FORMAT: replici + regie scrisă între paranteze (ce face fiecare personaj, ce obiect apare, unde). Regia trebuie să fie suficient de precisă cât să poată fi transformată în animație de altcineva decât tine. LA FINAL, OBLIGATORIU: un tabel cu fiecare cuvânt din listă și de câte ori apare efectiv în scriptul pe care tocmai l-ai scris. Numără în text, nu estima. Dacă un cuvânt e sub 3 apariții, spune-mi înainte să continui.
Ce s-a stricat, de fapt, la prima randare
Aici e partea utilă a articolului.
Prima variantă a episodului a ieșit tehnic corect: 100 de secunde, sunet sincronizat, personaje care se mișcă. Agentul care verifica a raportat că totul e în regulă.
Am extras cadre din video și m-am uitat la ele. Iată ce arăta cadrul de la secunda 37, în jocul de recunoaștere:

Mărul roșu stă peste fața lui Buzz. Frunza verde e lipită peste corpul lui Pip. Obiectele plutesc într-un șir care trece prin personaje, nu în fața lor. Niciun copil n-ar înțelege ce arată cine.
Au urmat trei runde de corecții, fiecare pornită de la un cadru, nu de la un raport:
- Obiectele suprapuse peste personaje — recalculate pozițiile în adâncime, ca obiectele să stea în fața personajelor, nu prin ele. Tot atunci, Pip apărea uriașă la cuvântul „big” și tăiată de marginea cadrului la închidere.
- Postura — Pip stătea cu spatele pe toată durata naratiunii, iar gestul de recunoaștere nu indica vizibil culoarea. A primit o postură atentă implicită și o secvență reală de mers către obiect.
- Corpul care ascunde obiectul — la mers, Pip ajungea să stea peste obiectul pe care tocmai trebuia să-l arate. Distanțele au fost recalculate per obiect, cu o scalare mică animată, ca brațul să facă puntea spre obiect, nu corpul.
Așa arată același moment, după:

Lecția care contează, dincolo de proiectul acesta: de două ori, verdictul agentului a fost mai optimist decât realitatea de pe ecran. Nu pentru că ar fi mințit — pentru că verifica altceva decât ce vedeam eu. Un raport care spune „randarea s-a terminat fără erori” e adevărat și inutil în același timp.
Promptul de verificare pe cadre, nu pe raport
Am randat un video. Vreau să-l verifici pe CADRE EXTRASE, nu pe log-ul randării. CE FACI: 1. Extrage cadre din video la momentele-cheie pe care ți le dau mai jos. [listă de momente, în secunde, cu ce ar trebui să se întâmple la fiecare] 2. Deschide fiecare cadru și DESCRIE ce vezi efectiv — nu ce ar trebui să fie acolo conform scriptului. Dacă un obiect lipsește, spune că lipsește. 3. Pentru fiecare cadru, răspunde explicit la: - Se suprapun elemente care n-ar trebui să se suprapună? - Personajul e întreg în cadru, sau tăiat de margine? - Se vede clar CINE face acțiunea și CU CE obiect? - Un om care nu știe scriptul ar înțelege ce se întâmplă? REGULI: - Nu raporta „arată bine" fără să numești ce ai văzut în cadru. - Dacă un cadru e ambiguu, spune că e ambiguu. Nu completa din script ce nu se vede în imagine. - La final: lista problemelor, ordonată după cât de tare încurcă înțelegerea, nu după cât de greu sunt de reparat.
Cât costă un episod?
| Componentă | Cost |
|---|---|
| Randarea video (3.012 cadre, 3D) | 0 $ — rulează local |
| Introul animat | 0 $ — același motor |
| Cardul cu numărul lecției | 0 $ |
| Sunetul de clopoțel | 0 $ — din biblioteca deja plătită |
| Naratiunea (100 de secunde de voce) | costul platformei de voci |
| Muzica de intro | o singură dată, refolosită la toate episoadele |
Partea grea nu e costul, e timpul de calcul: o randare de 3.000 de cadre ține calculatorul ocupat. Dar e timp de mașină, nu de om — pornesc randarea și fac altceva.
Ce NU face motorul acesta
- Nu scrie scriptul în locul meu. Vocabularul, ritmul, ce se amână pentru episodul următor — toate rămân decizii de om. Modelul ajută la formulare, nu la ce e pedagogic corect.
- Nu garantează că lecția funcționează. Am construit un instrument de producție, nu o metodă validată. Dacă un copil chiar învață cele 15 cuvinte se măsoară cu copilul, nu cu motorul.
- Nu se verifică singur. Fiecare episod trece prin cadre extrase și privite de un om. Am încercat varianta cealaltă, de două ori, și de două ori raportul a fost mai frumos decât realitatea.
- Nu e potrivit pentru orice serie. Merită construit doar când ai zeci de episoade cu aceleași personaje și același înveliș. Pentru trei clipuri, e mai ieftin să le montezi manual.
Cum arată rezultatul
Primul episod, cap-coadă — intro, cardul unității, lecția despre culori:
Ce am dus mai departe în munca pentru firme
Motorul acesta e pentru copii, dar tiparul e același cu cel din automatizările pe care le construiesc pentru firme: definești regula strict înainte, lași mașina să execute repetitiv, și verifici rezultatul pe dovada concretă, nu pe raportul procesului.
Un flux care mută facturi dintr-un loc în altul are aceeași structură ca un motor care randează episoade. Diferența e doar ce iese la capăt. Iar partea în care cineva se uită la ce a ieșit — și nu doar la mesajul „s-a terminat cu succes” — rămâne, în ambele cazuri, la om.
Dacă vrei să înveți să construiești lucruri de tipul acesta, exact acest lucru predau în cursul de AI pentru firme: patru ședințe, grupe de maximum opt oameni, cu garanție bani înapoi după a doua ședință.
Întrebări frecvente
Ce e un motor de randare și prin ce diferă de un generator video cu AI?
Un motor de randare calculează fiecare cadru din cod: aceleași instrucțiuni produc mereu exact același rezultat. Un generator video cu inteligență artificială produce altceva la fiecare rulare. Pentru o serie unde personajele trebuie să arate identic în zeci de episoade, consecvența e obligatorie — de aceea am ales varianta calculată, nu cea generată.
Cât durează să produci un episod, după ce motorul e gata?
Scrierea și aprobarea scriptului sunt partea de om — câteva ore. Randarea propriu-zisă e timp de mașină, în care nu trebuie să faci nimic. Corecțiile de animație depind de câte probleme apar la verificarea pe cadre; la primul episod au fost trei runde, tocmai pentru că se construia și motorul în același timp.
De ce lista de cuvinte e închisă și de ce fiecare cuvânt se repetă de minimum trei ori?
Pentru că metoda e imersie fără traducere: copilul nu are cârjă. Un cuvânt care apare o singură dată trece pe lângă el. Lista închisă previne tentația de a strecura cuvinte „ca să sune mai natural” — exact lucrul care face un episod de neînțeles pentru un copil de patru ani.
Pot folosi prompturile din articol pentru altă limbă sau alt subiect?
Da. Sunt scrise cu variabile între paranteze drepte — vârsta, limba, metoda, lista de cuvinte. Structura rămâne aceeași pentru orice serie educativă cu personaje recurente și vocabular controlat. Nu se potrivesc însă la conținut fără vocabular limitat, unde constrângerea de repetiție n-are sens.
De ce ai renunțat la stilul vizual pe care îl foloseai deja?
Pentru că era construit pentru alt public. Formele cubice se citesc ca joc video, iar publicul aici are între trei și șase ani. Am păstrat mecanismul motorului și am rescris doar geometria personajelor, în forme rotunjite — costul a fost o zi de lucru, nu reconstruirea de la zero.
Ce s-ar întâmpla dacă aș sări peste verificarea pe cadre?
Ai publica un episod în care un obiect stă peste fața personajului care vorbește, fără să afli vreodată. Randarea se termină „fără erori” în ambele cazuri — sistemul nu are cum să știe că un măr acoperă o față. Diferența o face un om care se uită.
Surse
- Motorul de randare: Remotion — video programat în React, randat cadru cu cadru, local
- Geometria 3D: Three.js, prin integrarea oficială cu Remotion
- Vocile: ElevenLabs, biblioteca publică de voci, căutare după accent și descriptor



