Hem/Insikter/AI

Skapa video med AI i Claude Code, från manus till animerad film

Guiden visar hur du skapar video med AI i Claude Code genom att bygga en filmeditor där manus, röst, musik, storyboard, text i bild och animering samlas kring en datafil per film. Exemplen kommer från motorn jag själv gör annonsfilm med.

Filmeditorn i guiden är en mapp med en datafil per film, en motor som ritar scenerna och regler som Claude Code följer. Du drar inga klipp på en tidslinje. Claude Code arbetar med filerna i en mapp på din dator (Claude Code, översikt), och det räcker för att gå från manus till färdig film. Motorn är en skill i Claude Code, och med den gör jag annonsfilm i StoryLens.

Steg 1: Avgränsa filmen så att scenerna följer rösten

Bestäm först vad rösten ska säga, mening för mening, och låt varje scen visa just det. Mitt första försök var en annonsfilm till en Performance Max-grupp, byggd som ett bildspel av färdiga annonsbilder med zoom och skjutövergångar, och jag kallade den osammanhängande och pinsam. Filmen som godkändes hade scener byggda för det rösten säger, och storyboarden kommenterade jag innan något renderades.

Steg 2: Skriv filmen som data

Varje film är en JSON-fil: scenerna i ordning med mall, speaktext och text i bild, ett tema med färger, typsnitt och logga, och layouten per format. Min motor har nio scenmallar, och ingenting om en kund står i motorn. Nästa film får nya färger och texter i sin egen fil.

Låt texten i bild säga samma sak som rösten i samma stund, fast kortare. Skriv speaktexten i hela meningar, eftersom tidsättningen i steg 4 räknar meningar, och variera mallarna mellan filmerna i en kampanj.

Steg 3: Gör röst och musik i ElevenLabs

Koppla ElevenLabs som MCP-server i Claude Code, så kan Claude beställa röst och musik direkt från sessionen (Claude Code och MCP). Använd ElevenLabs officiella server på api.elevenlabs.io/v1/mcp, eftersom den lokala versionen på GitHub är arkiverad (elevenlabs-mcp på GitHub).

Godkänn texten innan något genereras, eftersom röst och musik kostar krediter och varje ändrad mening kräver en ny tagning. Rösten gör jag med Multilingual v2, som har svenska bland sina språk (ElevenLabs, modeller).

Musiken beställer jag med force_instrumental, som garanterar att den blir instrumental, och med music_length_ms nära filmens längd. API:t tar 3 000 till 600 000 millisekunder (ElevenLabs, Compose music).

Steg 4: Tidsätt scenerna efter rösten

ffmpegs filter silencedetect loggar när ljudnivån ligger på eller under en tröskel i minst en viss tid, som standard -60 dB i 2 sekunder (ffmpeg, silencedetect). Min motor letar efter tystnad på minst 0,12 sekunder under -30 dB. De längsta pauserna blir meningsgränser, och antalet ska stämma med manuset. Stämmer det inte justerar du trösklarna och mäter igen, och hjälper inte det är tagningen fel.

Scenbytet läggs 0,1 sekunder före nästa menings första ord, och slutskylten står kvar 0,7 sekunder efter sista ordet. Värdena kalibrerade jag mot pilotfilmen som godkändes.

Steg 5: Godkänn en storyboard innan något renderas

Storyboard för scen 1 i 9:16: rubriken Vårens cykelpaket från Exempelkund ovanför en orange cykel
Scen 1 · krok
"Vårens cykelpaket från Exempelkund."
Storyboard för scen 2 i 9:16: ett sökfält med Modell X2, texten Se delarna som passar och cykeln
Scen 2 · sök
"Sök på din cykelmodell, så ser du delarna som passar."
Storyboard för scen 3 i 9:16: adressen exempel.example och tre löften med gröna bockar
Scen 3 · löften
Tre löften, vart och ett med sitt villkor i bilden.
Storyboard för scen 4 i 9:16: grön slutskylt med texten Hela sortimentet och knappen Se alla produkter
Scen 4 · slutskylt
"Se hela sortimentet på exempel.example."
Exemplet är påhittat, och bilderna kommer ur motorn: en per scen i 9:16 med rösten under.

Motorn bygger en canvas i Claude Design med en artboard per scen och format. Där kommenterar jag direkt på elementen och ändrar färg, typsnitt och text med reglage som Claude lägger till (Anthropic om Claude Design), och ändringarna läses tillbaka in i filmens JSON-fil. Filmen i rörelse med ljud skrubbar jag i en förhandsvisning i Hyperframes, HeyGens öppna ramverk som gör HTML till video med headless Chrome och FFmpeg (Hyperframes på GitHub).

Bygg in en grind före renderingen. Min motor vägrar rendera innan storyboarden är godkänd för exakt det innehåll som ska renderas. Godkännandet sparas med ett fingeravtryck av filmens fil, bilderna och tiderna, och ändras något efteråt krävs ett nytt ok, som bara jag ger i chatten.

Steg 6: Ge varje element sin egen rörelse

Rubrikerna i min motor reser sig rad för rad bakom en mask, bockarna kommer in från vänster, produktbilden lägger sig från lätt förstorad och en bild över hela rutan öppnas som en slutare, och ingenting studsar. Scenbytet väljer du per scen bland glid, klipp, mask och tona. Högst en scen per film får en signaturrörelse, en större och längre variant av scenens huvudelement.

Skriv reglerna som en kontroll som Claude kan köra. Anthropic råder dig att ge Claude ett sätt att kontrollera sitt eget arbete (Anthropics tips för Claude Code). Min kontroll varnar när fyra eller fler elementtyper har samma rörelse, tid och kurva, när alla scenbyten är av samma typ och när fler än en scen har signatur. En kurva som slår över ger stopp.

Steg 7: Rendera i tre format och kontrollera

Google tar emot Performance Max-video i 16:9, 1:1 och 9:16, med 1920x1080, 1080x1080 och 1080x1920 som rekommenderad storlek, och rekommenderar en längd på 10 sekunder eller mer. Upp till 15 videor får ligga i en tillgångsgrupp, och ljudfiler godtas inte (Google Ads hjälp om videotillgångar i Performance Max).

Storyboard för scen 3 i 16:9, liggande, med de tre löftena och gröna bockar
16:9
Storyboard för scen 3 i 1:1, kvadratisk, med de tre löftena och gröna bockar
1:1
Storyboard för scen 3 i 9:16, stående, med de tre löftena och gröna bockar
9:16
Scen 3 ur samma påhittade exempel i de tre formaten.

Min motor renderar alla tre formaten. Varje ruta fotas i headless Chrome med animationerna pausade på rätt tid, ffmpeg kodar mp4-filen och ljudet masteras till -14 LUFS, som är mitt eget mål. Före renderingen stoppar layoutkontrollen text på bakgrundsbandet eller närmare det än 1 procent av bildens kortsida, text som krockar och färgpar med för låg kontrast. Efteråt tas kontrollrutor ut ur mp4-filen, och en faktagranskare läser text, siffror och ljud före leverans. Motorn har 180 tester i version 1.6.1 och laddar inte upp något åt dig.

Steg 8: Börja med prompten

Prompten nedan är en startpunkt för en första version av motorn. Den börjar i kontrollerna, eftersom flera av felen i min egen motor syntes först när något mättes eller när jag tittade på en bild. Med ffmpegs standardkodning fick färgerna upp till 19 nivåers fel när filmen visades i Chrome, och loudnorm i ett pass lade ljudet 1 LU för lågt. Text som låg på bakgrundsbandet ringade jag in på storyboarden, och sedan dess stoppar layoutkontrollen den. Därför bygger prompten en scen hela vägen först, medan ett fel bara finns på ett ställe.

Bygg en filmeditor i den här mappen. Intervjua mig först och
skriv en kort SPEC.md: format, längd, färger, typsnitt, logga,
röst och vad filmen får lova. Vänta på mitt ok.

Skriv kontrollerna före funktionerna och kör dem efter varje
ändring: ffprobe för storlek och längd, ebur128 för ljudnivån
efter kodningen, en kontaktkarta med en ruta var 0,1 sekund
runt varje scenbyte och en layoutkontroll som stoppar text på
bakgrundsbandet eller under läsbar storlek.

Bygg sedan en enda scen hela vägen innan något annat: tre
sekunder i 9:16, från film.json till mp4. film.json har scener
(mall, speaktext, text i bild), tema och layout per format. En
Python-motor ritar varje scen som HTML och CSS, fotar rutorna
i headless Chrome med pausade animationer och kodar mp4 med
ffmpeg och BT.709-taggar.

Röst och musik kommer från ElevenLabs, och jag lägger dem i
mappen. Mät meningarna med ffmpeg silencedetect, kontrollera
att antalet stämmer med manuset och lägg scenbytena strax före
varje menings första ord. Transkribera rösten och jämför med
manuset.

Bygg en storyboard med en bild per scen och format och vänta
på mitt ok före rendering. Ge varje elementtyp en egen
rörelse, låt inget studsa och låt högst en scen ha en
signaturrörelse. Läs plattformens formatsida live innan du
bestämmer format och längd. Visa utskrifterna och rutorna som
bevis när du rapporterar att något är klart.

Det tar flera varv innan motorn ritar det du vill ha. Min egen gick från version 1.0 till 1.6.1 mellan 15 och 17 oktober.

Mejla mig så skickar jag skillen

Claude skriver utkastet ur det jag arbetat med under veckan, och jag läser och godkänner varje inlägg innan det publiceras.

Står du själv i samma situation?

Vill du ha filmeditorn?

Mejla mig, så skickar jag skillen med motorn och exempelfilmerna. Vill du hellre bygga själv börjar du med prompten i guiden.

Boka tid i kalendern → Första samtalet är kostnadsfritt · info@tropse.com