9 min czytania

Remotion z agentem AI: rolka z jednego promptu

Dziesięć klipów, jeden utwór i jeden prompt. Agent zmontował z tego w Remotion pionową rolkę z napisami i cięciami na bicie w 3 min 25 s.

Agentowi nie trzeba tłumaczyć, jak obsługiwać narzędzie. Trzeba mu powiedzieć, na czym oprzeć robotę i czym sprawdzić, że trafił. Reszta dzieje się bez ciebie.

Wrzuciłem do dwóch folderów dziesięć klipów i jeden utwór. Dałem prompt z bloku pod tekstem i nie dopowiedziałem już nic.

Materiał wejściowy: dziesięć pionowych kadrów leśnych — dłonie plotące wieniec, kora dębu, paprocie, postać w wieńcu, kobieta w bieli o zachodzie
Całe wejście: dziesięć klipów po 10 sekund, bez opisów, bez kolejności, bez montażu
Osiem kadrów z gotowej rolki, każdy z podświetlonym wersem; w trzecim obraz przechodzi z mroku w słońce
Wyjście po 3 minutach i 25 sekundach zegarowych, osiem klatek z gotowej rolki

Pionowa rolka 1080×1920, 29,5 s, napisy podświetlane słowo po słowie, polskie znaki bez błędu na wszystkich ośmiu klatkach, które obejrzałem.

Cięcie w trzecim kadrze siedzi na dropie refrenu i obraz przechodzi tam z mroku w słońce. Drop zmierzyłem skokiem głośności: −22,5 dB na −13,6 dB w ćwierć sekundy.

Co wrzucasz agentowi: klipy, utwór, prompt

  • Klipy. Dowolna liczba plików wideo w folderze klipy/. U mnie dziesięć, pionowych, po 10 sekund, wygenerowanych w AI.
  • Utwór. Jeden plik dźwiękowy w folderze muzyka/.
  • Prompt. 139 słów, w bloku pod tekstem.

Czego nie wrzucasz: scenariusza, listy ujęć, tekstu piosenki, tempa utworu. Agent wyciąga to sam z plików, które dostał.

Czy musisz umieć programować

Nie musisz rozumieć promptu ani umieć programować. Musisz zrobić trzy rzeczy.

Postawić pięć narzędzi z tabeli niżej; React dokłada się sam przy zakładaniu projektu. Zrobić obok siebie dwa foldery o dokładnie takich nazwach: klipy/ na wideo i muzyka/ na utwór. Otworzyć w tym miejscu agenta i wkleić prompt.

Narzędzia postaw sam. U mnie wszystkie już były, więc nie sprawdziłem, czy agent postawi je od zera, i tego nie obiecuję.

Jak agent montuje rolkę w Remotion, krok po kroku

  1. Ogląda materiał. Wycina po kilka klatek z każdego klipu, skleja w arkusz i opisuje, co na nich jest. Bez tego zostają mu nazwy plików.
  2. Mierzy utwór. Wylicza tempo i rozkłada je na równe odstępy, na których siedzi każde uderzenie. Osobno zaznacza te, które uderzają najmocniej.
  3. Wybiera okno na rolkę wokół dropu. Prompt nie mówi, jak długie ma być to okno — to agent rozstrzyga sam.
  4. Bierze czasy słów z Whispera, a słowa od ciebie. Jeśli masz swój tekst, agent wkleja go i używa transkrypcji wyłącznie jako zegara.
  5. Zakłada projekt i zapisuje montaż jako listę. Każde ujęcie to jeden wiersz: który plik, od którego beatu, do którego. Przesunięcie cięcia o takt to zmiana jednej liczby w tym wierszu.
  6. Renderuje osiem klatek i patrzy na nie. To jest ten arkusz wyżej.
  7. Sprawdza kod przed pełnym renderem. Zły typ albo literówka w nazwie pola wychodzi wtedy od razu, a nie po 92 s renderu. Dopiero potem idzie render całości i przepakowanie pliku pod platformę.
  8. Mierzy własny wynik. Wyciąga dźwięk z gotowego MP4 i sprawdza korelacją, czy cięcie leży tam, gdzie miało leżeć.

Krok 6 odróżnia to od generatora wideo: agent renderuje kadr i ogląda go, zanim pójdzie dalej. Krok 8 kończy się liczbą, czyli rozjazdem obrazu z dźwiękiem podanym w klatkach.

Dwa zastrzeżenia. Te same klipy montowałem wcześniej, więc w tym przebiegu nie oglądałem ich od nowa. Agent, który widzi je pierwszy raz, dołoży krok 1 i zegar będzie dłuższy.

I jedna poprawka po zegarze: w trzech miejscach wstawiłem myślnik zamiast półpauzy z tekstu autora. Wyłapałem to przy weryfikacji i wyrenderowałem rolkę jeszcze raz.

Ile to trwa

OperacjaWynik
całość, od wrzucenia plików do MP43 min 25 s
sam render 885 klatek w 1080×192090,09 s
jedna klatka przez remotion still, z narzutem startu2,8 s
plik z renderu przy --crf=1828,8 MB
ten sam materiał po transkodzie17,2 MB

Ile z tego promptu naprawdę trzeba

Pierwszą rolkę do tego utworu zrobiłem z promptu na 35 słów. Napisałem w nim tylko, gdzie leżą pliki, że ma być Remotion i TikTok, że bazą ma być refren i że mają być napisy. Wyszła i działa.

Potem napisałem prompt na pięćset słów, rozpisany na dziesięć punktów, z FFT i oknem Hanninga. Rolka wyszła, ale gdy policzyłem, ile z tych punktów było potrzebnych, wyszło sześć zbędnych na dziesięć.

Remotion wydaje dla agenta własny zestaw skills: dwanaście plików z zasadami pisania kompozycji, renderu i napisów. Transkrypcja Whisperem, remotion still, zakładanie projektu i pisanie kompozycji już tam są, opisane dokładniej, niż zrobiłem to w prompcie.

Zostały trzy rzeczy, których w skillach nie ma, i z nich powstał prompt pod tekstem.

Czego potrzebujesz: Node, Remotion, ffmpeg, Python, Whisper

Wersje wypisuję po to, żeby dało się odtworzyć ten przebieg za pół roku. Sam musisz mieć te narzędzia, nie te konkretne numery.

SkładnikWersja, na której to działało
Node24.13.0
Remotion4.0.526
React19.2.3
ffmpeg7.1.5
Python 3 z numpydo pomiaru dźwięku
faster-whisperlarge-v3, int8, na procesorze

Skille wchodzą przez wtyczkę Remotion do Claude Code, a dokumentacja podaje też instalację komendą npx skills add remotion-dev/skills. Nie sprawdziłem, jak agent radzi sobie bez nich — miałem je włączone od pierwszej komendy.

Instalator wypisuje wprost „Remotion is free for teams of up to 3”. Przy większym zespole licencja jest płatna, a jej warunki stoją w licencji producenta.

Librosa nie jest potrzebna. Nie miałem jej zainstalowanej i cały pomiar poszedł na numpy.

Materiału nie nagrywałem kamerą. Klipy wyszły z generatora wideo, utwór z generatora muzyki. Ile taka muzyka zarabia i gdzie wolno ją wydać, liczyłem osobno.

Wniosek

Sześć rolek, prompty od 35 do 500 słów, wszystkie działają. O wyniku nie zdecydowała żadna z tych długości, tylko dwa zdania: na czym oprzeć montaż i czym sprawdzić, że trafił.

Nie pisz agentowi instrukcji obsługi narzędzia, bo ją już ma. Każ mu zmierzyć własny wynik i podać rozjazd w klatkach. Bez tej liczby masz plik, o którym nikt nic nie wie.

Co poszło nie tak po drodze

Pięć rzeczy, każda kosztowała mnie jeden przebieg. Zostawiam je tu, bo trafisz na nie w tej samej kolejności.

Kotwica bez wzmianki o śpiewie trafia w instrumentalkę

W prompcie pod tekstem stoi zdanie o tym, że rolka ma się opierać na fragmencie ze śpiewem. Uruchomiłem wcześniej wersję bez niego i wyszło to:

Osiem kadrów z innego przebiegu; sześć pierwszych bez żadnego napisu
Ten sam materiał, prompt bez zdania o śpiewie

Agent postawił kotwicę na najgłośniejszym uderzeniu w całym utworze i wybrał okno 28–58 s. Whisper znalazł tam pierwsze słowo dopiero na 47,70 sekundzie.

Przez pierwsze 19,7 sekundy nikt nie śpiewa, więc sześć z ośmiu kadrów jest bez napisów. Jedno zdanie w prompcie to naprawia.

Tempo z autokorelacji nie zawsze trafia w akcenty

Sprawdziłem na trzech oknach tego samego utworu i wyszło różnie.

OknoAutokorelacjaPo dostrojeniu do akcentów
78–108 s103,50 BPM, 3,03 klatki od siatki102,93 BPM, 1,09 klatki
28–58 s103,70 BPM, 0,48 klatki od siatki103,65 BPM, 0,31 klatki
133–163 s, ta rolka103,30 BPM, 0,32 klatki od siatki103,45 BPM, 0,01 klatki

W pierwszym oknie dostrojenie zdjęło 2 klatki błędu. W dwóch pozostałych autokorelacja trafiła od razu i dostrojenie schodziło z ułamka klatki na mniejszy ułamek. Nie wiem z góry, które okno jest które — dlatego ten krok zostaje w prompcie na stałe.

Whisper na śpiewie po polsku zmyśla

Na fragmencie, z którego zrobiona jest ta rolka, nie przekręcił słów. Zamiast nich wypisał zdanie, którego w utworze nie ma: „Wielkie dzięki i do zobaczenia!”. Trzydzieści sekund refrenu, zero prawdziwego tekstu.

W innych oknach tego samego utworu mylił pojedyncze słowa: „suchy czas” zamiast „suchy trzask”, „Wędzno” zamiast „Tętno”, „Marżanna” zamiast „Marzanna”. Jedno słowo zostało nierozpoznane do końca.

Dlatego prompt mówi wprost, że słowa mają być twoje. Whisper jest tu zegarem, nie źródłem tekstu.

Czas też bywa nie ten. W jednym oknie postawił refren na 85,640 s, a najmocniejsze uderzenie siedzi na 85,695 s — 55 ms, czyli 1,65 klatki. Kotwicę stawiaj na akcencie z pomiaru, nie na słowie z transkrypcji.

Render przesuwa dźwięk o 42,7 ms

Plik audio.wav, który dostał Remotion, zgadza się z oryginałem co do próbki. Ten sam dźwięk wyjęty z gotowego MP4 jest przesunięty o 42,7 ms, czyli 1,28 klatki.

EtapPrzesunięcie
WAV przed Remotion0 ms
po remotion render−42,7 ms
po transkodzie ffmpegiem−42,7 ms

Transkod nic nie dokłada, to dzieje się przy renderze. Zmierzyłem to samo w sześciu niezależnych rolkach. Przyczyny nie ustaliłem i jej nie zmyślam — liczba jest stała, więc da się ją odjąć przy kotwiczeniu cięcia.

Napisy mają dwie własne pułapki

Pierwsza: linijki nachodzą na siebie. Linia wchodzi trzy klatki przed swoim pierwszym słowem, a poprzednia schodzi jedną klatkę przed nim, więc przez dwie klatki obie są na ekranie naraz. Zobaczyłem to na arkuszu, zanim cokolwiek wyrenderowałem.

Poprawka to jedna liczba: poprzednia linia musi zejść o tyle klatek wcześniej, ile wynosi wyprzedzenie następnej.

Druga: napis zjada własną spację. W innej rolce ostatnia linijka czytała się „PŁONIEWRZOS,” zamiast „PŁONIE WRZOS,”.

Trzy warianty tej samej linijki napisu, na środkowym brakuje spacji między słowami
29,20 s, 29,50 s i 30,10 s z jednego renderu — spacja znika tylko na środkowej

Przyczyna jest w CSS. Aktywne słowo dostaje na moment podświetlenia scale(1.16), a scale nie zmienia układu. Powiększona litera wchodzi więc w odstęp, którego nikt nie odsunął.

Odstęp wynosił 0.3em przy stopniu 92 px, czyli 27,6 px. Przyrostu samego słowa nie zmierzyłem. Podniosłem odstęp do 0.5em, wyrenderowałem tę samą klatkę jeszcze raz i spacja wróciła.

Tej usterki arkusz stykowy nie złapał, bo akurat tej klatki w arkuszu nie było. Pętla oglądania działa tylko na klatkach, które ktoś wybrał.

gotowy prompt

W `klipy/` są pliki wideo, w `muzyka/` jeden utwór. Zrób z tego pionową rolkę 1080×1920 na TikToka w Remotion, z napisami z tekstu utworu. Rolkę oprzyj na fragmencie, w którym ktoś śpiewa, a nie na samej instrumentalce.

Trzy rzeczy zrób inaczej, niż zrobiłbyś domyślnie:

1. Tempa nie zgaduj. Zmierz je z pliku i postaw cięcia na beatach. Kotwicę ustaw tam, gdzie utwór wchodzi najmocniej — szukaj skoku głośności, nie pojedynczego transjentu, i nie stawiaj jej na słowie z transkrypcji.

2. Zanim wyrenderujesz całość, wyrenderuj osiem pojedynczych klatek, sklej je w jeden obraz i obejrzyj go.

3. Na koniec sprawdź pomiarem, czy trafiłeś: wyciągnij dźwięk z gotowego MP4, porównaj z oryginałem i podaj rozjazd obrazu z dźwiękiem w klatkach.

Napisy mają poprawnie pokazywać polskie znaki. Jeśli masz tekst utworu od autora, użyj jego słów, a z transkrypcji weź tylko czasy.

Pytania i odpowiedzi

Co trzeba przygotować, żeby agent zmontował rolkę?

Trzy rzeczy: folder `klipy/` z plikami wideo, folder `muzyka/` z jednym utworem i prompt. Scenariusza, listy ujęć, tekstu piosenki ani tempa utworu nie podajesz — agent wyciąga je z plików, które dostał.

Ile trwa montaż rolki przez agenta AI?

U mnie 3 minuty i 25 sekund zegarowych, od wrzucenia plików do gotowego MP4. Sam render 885 klatek w 1080×1920 zajął 90,09 s. Reszty czasu nie rozbijałem na etapy.

Czy Remotion jest darmowy?

Instalator wypisuje „Remotion is free for teams of up to 3”. Przy większym zespole licencja jest płatna, a jej warunki stoją na stronie producenta.

Robię to dla firm

Zbuduję to dla twojej firmy

Jedna rzecz, którą ktoś u was dziś klika ręcznie, przestaje być klikana. Kod zostaje u was.

Opisz mi swój proces

Wyprodukuję wam materiały

Grafika, wideo i treści w stałym stylu i o stałej porze. Obrazy na tej stronie generuje model.

Pokaż mi swój kalendarz