AI videos with Claude Code for beginners: 11 prompts, $0.62
I start in an empty folder with a fresh Claude Code and teach it to make images, voices and music, and to edit them with FFmpeg. At the end it makes a 101-second narrated space story. Every prompt I used is here, ready to copy. The way of the Jedi A few months ago I started making AI videos. I didn

Veröffentlicht am 23. Oktober • Zuerst veröffentlicht auf azelianouski.dev
Ich starte in einem leeren Ordner mit einem frischen Claude Code und bringe ihm bei, Bilder, Stimmen und Musik zu erstellen und diese mit FFmpeg zu bearbeiten. Am Ende produziert es eine 101 Sekunden lange vertonte Weltraumgeschichte. Alle Prompts, die ich verwendet habe, findest du hier, bereit zum Kopieren.
Vor ein paar Monaten habe ich angefangen, KI-Videos zu erstellen. Das war nicht geplant. Ich hatte mich nie als KI-Video-Creator gesehen. Ich wollte nur versuchen, einige Videomaterialien für mein Textspiel zu erstellen. Und oh Junge... ich habe mich darin verloren.
Ich hatte auch nie geplant, Musikvideos zu machen. Und trotzdem, hier bin ich:
Und weißt du was? So viele Menschen machen das falsch. Die Welt der KI-Videos ist der wilde Westen, ohne Standards, ohne Best Practices, ohne Regeln. Und viele Menschen versuchen ständig, dir ihre Tools zu verkaufen. Oder die Idee, dass du irgendein Tool brauchst. Brauchst du nicht. Wirklich nicht.
Mein Weg ist ein anderer. Wie ein Jedi, der sein eigenes Lichtschwert bauen musste, sollte ein wahrer Video-Creator seine eigenen Tools bauen. Einzigartig und persönlich, mit einem Funken deines eigenen Geschmacks. Nur dann bist du frei, alles zu erschaffen, was du willst. Ich habe mit einigen Promo-Videos angefangen, dann bin ich zu lustigen Shorts übergegangen, dann zu meinem eigenen Anime, dann zu Musikvideos. Wer weiß, was ich morgen mache? Ich glaube nicht an die Tools anderer Leute.
Ich zeige dir, wie du dein eigenes KI-Video-Tool baust, deine eigene Pipeline, deinen eigenen Workflow, deine eigene Engine, dein eigenes Harness, wie auch immer der Name ist.
Dieser Artikel ist die Textversion dieses Videos:
Ich bin ein KI-Minimalist, ich glaube an ein einfaches Setup und einfache Worte. Ich verwende Claude Code mit einer Reihe von Skills, das ist alles. Und es kann tatsächlich jeder aktuelle Coding-Assistent (ein Harness) mit jedem Frontier-Modell sein. Claude Code mit Opus 5.5 ist eine großartige Wahl, wenn du bereit bist, 100 Dollar pro Monat plus die Kosten für die generierten Assets zu zahlen, aber du kannst das Budget auch senken und kommst trotzdem gut zurecht.
Hier ist, was ich für verschiedene Preisklassen wählen würde, pro Monat:
Wähle eines in deiner Preisklasse und gewöhne dich daran. Alles Folgende funktioniert genauso in Codex oder jedem anderen Harness.
Skills-Support ist die einzige Voraussetzung. Skills sind unsere Plugins, Addons, Erweiterungen, die gesamte neue Funktionalität und Erfahrung, die wir dem Basisharness hinzufügen werden. Welche Funktionalität brauchen wir? Im Grunde zwei Dinge:
Sie sind nur Textdateien. Sie funktionieren als verzögert geladene Prompts. Jeder Skill hat eine kurze Beschreibung und einen Hauptteil, nur die Beschreibungen werden in den Kontext geladen. Das Modell entscheidet anhand dieser Beschreibungen, wann der Rest eines Skills geladen wird. Du kannst viele davon haben, und nichts wird in den Kontext geladen, es sei denn, es wird benötigt. Deshalb mag ich sie mehr als MCP-Server, die deutlich mehr in den Kontext packen.
Stell dir vor, du möchtest deinem brandneuen Claude Code beibringen, Bilder über die OpenAI API zu generieren. Du erklärst ihm, wo er den API-Key bekommt, übergibst die Dokumentation zur Bildgenerierung, lässt ihn einige Aufrufe machen und ein paar wiederverwendbare Skripte bauen... Du lässt ihn den erfolgreichen Weg finden und bittest ihn dann, daraus einen Skill zu erstellen. Dieser Skill enthält den erfolgreichen Weg, die genauen Schritte und den Speicherort der Skripte, Verwendungsbeispiele, alle nützlichen Einstellungen und die Beschreibung, wann dieser Skill zu verwenden ist.
Und du schreibst die Skills nicht selbst. Du sagst nur "merke dir den erfolgreichen Weg, erstelle dafür einen Skill". Beim nächsten Mal sucht es nicht, sondern lädt den Skill und macht alles beim ersten Versuch. Ich habe mehr darüber geschrieben, wie meine Skills gewachsen sind, in How to start creating AI videos from scratch. Hier bauen wir sie einfach, einen nach dem anderen. Wir brauchen vier Gruppen:
Es hat etwa eine Stunde Arbeit gekostet. Keine Bibliotheken, die man von Hand installieren muss, keine Plattformen, kein Video-Editor.
Wir bauen eine Diashow. Eine kurze Geschichte, eine Stimme, die sie vorliest, und Bilder, die sich wechseln, während die Geschichte fortschreitet.
Eine Diashow??? Das ist lächerlich, so viel Zeit mit dem Lesen verschwendet! Ich gehe!
Ja, eine Diashow. So fängst du an. Ein Video ist ein Haufen animierter Folien (Überraschung). Zuerst lernst du, die Folien zu erstellen und dein Harness so einzurichten, dass es schnell und einfach geht, erst dann denkst du über die Animation nach. Animation ist Stufe zwei, ein Ziel, das du erreichen musst.
Du musst ein Bildmodell auswählen. Ein Modell ist der Weg, den Stil konsistent zu halten. Obwohl ich manchmal ein Bild mit einem Modell generiere und dann einige Details mit einem anderen korrigiere. Das bedeutet, mehr als eines zu haben, ist eine gute Idee.
Ich denke, das beste derzeit ist OpenAI GPT Image 2.5 (gpt-image-2.5-sunburst). In unserer Demo kostete ein Bild mit 1536x1024 0,04 Dollar. Ein 4K-Bild kostet etwa 0,12 Dollar.
Ich nutze es gerne über die offizielle OpenAI API. Das gibt mir die neueste Version, alle Funktionen wie Editing, gute Dokumentation mit Beispielen und Best Practices, die ich an die KI weitergeben kann. Das ist vielleicht nicht die günstigste Option, aber wir werden weniger als 1 Dollar für 10 Bilder zahlen.
Um unserem Harness die Nutzung von GPT Image 2.5 beizubringen, tun wir Folgendes:
Speichere es irgendwo. Frage deine KI, wie man es richtig macht. Zum Beispiel bewahre ich meine Keys im macOS Keychain auf. Claude Code hat ein Skript geschrieben, das den Key abruft und den API-Aufruf macht; es sieht den Key selbst nie.
Kopiere es, füge es in den Harness ein und frage:
Hi! Ich möchte in diesem Ordner KI-Videos erstellen, komplett von Null. Schritt eins: Bringe dir selbst bei, Bilder mit OpenAI GPT Image 2.5 (gpt-image-2.5-sunburst) zu generieren. Mein API-Key liegt im macOS Keychain, Account ai-video-demo, Service vid-oai. Gib ihn niemals aus. Hier ist die Dokumentation: [docs] Erstelle ein Testbild: eine einsame Forschungsstation auf einem zugefrorenen Mond, Saturn riesig am Himmel, cineastisch, 1536x1024.
Das ist die Magie moderner Harnesses. Es liest die Doku, schreibt ein kleines Skript, führt es aus, behebt seine eigenen Fehler und liefert dir ein Bild. Unseres brauchte 32 Sekunden und kostete 0,04 Dollar.
Schön. Erstelle jetzt einen Skill dafür, damit du dir den erfolgreichen Weg beim nächsten Mal merkst. Nenne ihn gpt-image und beschreibe ihn als unseren Haupt-Skill für Bilder.
Es ist gut, mehr als ein Modell zu haben. Mein zweiter Favorit ist Nano Banana 2.1. Die Dokumentation findest du hier:
Super. Fügen wir ein zweites Bildmodell als Alternative hinzu: Nano Banana 2.1 (Gemini image, gemini-nano-banana-2.1). Der Gemini-Key liegt im Keychain, Account ai-video-demo, Service vid-gem. Doku: [docs] Generiere damit dieselbe Szene mit dem zugefrorenen Mond, damit wir die beiden Modelle direkt vergleichen können. Erstelle dann einen Skill dafür namens nano-banana.
Wir werden hier Midjourney nicht verwenden, obwohl die meisten KI-Content-Creator dieses Modell allem anderen vorziehen. Es liefert bessere Realitätsnähe und wirklich einzigartige Optik. Aber es hat keine offizielle API, und es ist schwieriger, out-of-the-box großartige Ergebnisse zu erzielen. Erkunde dieses Modell gerne selbst. Ich nutze es über die EvoLink-Plattform: Midjourney 8.2 Seite.
Bevor wir weitermachen, lege ich einige Regeln für das Projekt fest. Sie kommen in CLAUDE.md, eine Datei, die der Harness zu Beginn jeder Sitzung liest:
Bevor wir weitermachen, legen wir einige Grundregeln für dieses Projekt fest und schreiben sie in CLAUDE.md. 1) Kostenverfolgung: Jeder kostenpflichtige API-Aufruf bekommt eine Zeile in costs.csv (Datum, Service, Modell, was, Kosten in USD). Verlass dich bei Preisen nicht auf dein Gedächtnis, nutze diese offiziellen Preisseiten.
Gemini: [Preisseite] OpenAI: [Preisseite] Füge Zeilen für die beiden bereits erstellten Bilder hinzu. 2) Arbeitsprotokoll: Hänge nach jedem Schritt, der eine Datei erzeugt, einen kurzen Eintrag an WORKLOG.md an: was, welches Tool und Modell, der vollständige Prompt, die Ausgabedatei, die Kosten. 3) Projektstruktur: Jedes Video bekommt einen eigenen Ordner, projects/NAME/, mit images/, voices/, music/, cuts/ und final/ darin.
Verschiebe die beiden Testbilder nach projects/tests/images/.
Kostenverfolgung ist alles. Habe ich erwähnt, dass echte Animation sehr teuer ist? Ich gebe etwa 100 Dollar für meine 4-Minuten-Musikvideos aus. Leute sagen mir ständig, dass es günstiger gehen kann, aber das ist meist nur Theorie. Ich habe es noch nie von Leuten gehört, die tatsächlich Videos machen. In jedem Fall hast du mit Kostenverfolgung die Kontrolle. Wenn es zu teuer wird, wechselst du zu günstigeren Modellen und änderst die Technik.
Und genau deshalb ist es wichtig, Diashows zu beherrschen. Manchmal kommst du sogar in einem hochwertigen cineastischen Video mit einem Standbild aus. Das kann dir eine Menge Geld sparen.
Da gibt es ElevenLabs, und es ist die beste Voice-Plattform. Großartige Stimmen, viele Einstellungen. Es ist auch die teuerste und etwas schwer zu bedienen. Ich würde stattdessen mit den Gemini-Voice-Modellen anfangen. Sie sind sehr günstig, und du kannst in Worten beschreiben, welche Stimme du willst. Oder du kannst deine Präferenzen einfach bei Claude Code loswerden, und es macht daraus die Gemini-Voice-Anweisung für dich.
Bilder sind fertig. Jetzt Stimmen. Bringe dir selbst Gemini text-to-speech bei (gemini-3.8-flash-tts), derselbe Gemini-Key. Doku: [docs] Testsatz: "Die Station war dreihundert Tage lang still. Dann, um Mitternacht, erwachte das Radio." Ruhige, tiefe weibliche Erzählerin, ein wenig geheimnisvoll. Speichere es in projects/tests/voices/. Wenn es funktioniert, erstelle einen Skill namens gemini-voice.
Es wählt die Stimme anhand ihrer Beschreibung aus. Die gewählte wird als "tief, samtig und unbeeilt" beschrieben.
Ein Bonus-Modell: Kokoro. Es läuft komplett auf deinem Computer, auf der CPU, kostenlos.
Gut. Jetzt ein kostenloses: Können wir das Kokoro-Voice-Modell (Kokoro-82M) lokal auf meiner CPU laufen lassen? Lade es herunter, schreibe ein Skript, lies denselben Satz mit einer weiblichen Stimme und erstelle einen Skill namens kokoro-voice. Dieser Mac hat 16 GB RAM, halte es also leichtgewichtig.
Er lädt das Modell herunter, schreibt ein Skript, um es auszuführen, und erstellt ein Skill. Simona, meine KI-Assistentin, nutzt Kokoro jeden Tag, um mir ihre Antworten vorzulesen. Dafür haben wir einen Claude Code Hook eingerichtet, aber das ist ein eigenes Thema.
Kokoro ist nicht sehr konfigurierbar, aber es ist kostenlos und leichtgewichtig, also füge es hinzu. Nutze es für Entwürfe oder lange Texte, es kann dir Bücher oder Artikel vorlesen.
Die letzte Stimme, die Premium-Variante: ElevenLabs. Der Key liegt im Keychain, Konto ai-video-demo, Dienst vid-el. Dokumentation: [docs] Lies dieselbe Zeile einmal mit einer ruhigen weiblichen Erzählerstimme, Modell eleven_multilingual_v2. Erstelle einen Skill namens elevenlabs-voice. Lege dann die beste Gemini-Version, die Kokoro-Version und diese Version nebeneinander in projects/tests/voices/, damit ich sie vergleichen kann.
Alle drei kann man im Video bei 10:30 hören.
Es gibt Musikdienste. Suno ist der bekannteste. Für dieses Video verwenden wir etwas Einfacheres, Kostenloses und sehr Magisches: Python.
Die Stimmen sind fertig. Jetzt Musik, komplett kostenlos: kannst du mit Python einige elektronische Musik für ein Video erzeugen? Ein ruhiger, leicht unheimlicher Ambient-Track, etwa 60 Sekunden, für eine Science-Fiction-Geschichte über eine einsame Station auf einem zugefrorenen Mond. Keine Samples, nur Code. Speichere ihn in projects/tests/music/ und erstelle einen Skill namens python-music.
Rockmusik oder Gesang wird man so nicht bekommen. Aber man erhält ordentliche elektronische Hintergrundmusik für ein einfaches Video. Da das Modell seinen eigenen Track nicht anhören kann, hat es ihn über das Spektrogramm geprüft.
Den Track kann man im Video bei 11:14 hören.
Es ist schwierig, Feedback zu dieser Art von Musik zu geben. Meine KI und ich haben noch keine gemeinsamen Begriffe für Drones, Ambient Pads und Geräusche. Aber es ist spannend, mit der Zeit können wir diese Begriffe aufbauen und einander besser verstehen. Mach das höher, reduziere das Brummen, fügen wir ein paar zufällige Noten hinzu...
Das ist der einzige Musik-Skill, den ich habe. Wenn ich mehr brauche, gehe ich von Hand zu Suno. Er hat keine API.
Zwei weitere Skills. Der wichtigste ist FFmpeg. Es ist ein Terminal-Tool ohne Benutzeroberfläche, und KI arbeitet damit sehr gut. Es kann aus Bildern ein Video erstellen, ein Video in Teile schneiden, diese austauschen, Frames herausziehen, Ton hinzufügen und die Lautstärke ändern. Ein vollwertiger Videoeditor im Terminal. Das Modell kennt es bereits, und das Tool bringt seine eigene Dokumentation mit.
Jetzt das erste echte Video, aus einem einzigen Prompt:
Jetzt unser erstes richtiges Video. Schreibe eine kurze Geschichte über den Weltraum, 8 bis 10 Sätze, über diese einsame Station auf dem zugefrorenen Mond, deren Radio aufwacht. Teile sie in Abschnitte und erstelle 6 Illustrationen dazu mit gpt-image, 16:9, im selben Stil in jedem Frame. Vertone die Geschichte mit Gemini. Erstelle einen Musiktrack dazu mit python-music und halte ihn leise unter der Stimme. Nutze dann FFmpeg, um alles zu einem Slideshow-Video in 1920x1080 zusammenzusetzen, bei dem die Bilder der Geschichte folgen. Lege einen neuen Projektordner dafür an. Wenn es funktioniert, erstelle einen ffmpeg-Skill mit dem erfolgreichen Ablauf.
Es hat funktioniert. Aber jedes Bild blieb 17 Sekunden auf dem Bildschirm, was viel zu lange ist.
Um die Bilder im richtigen Moment zu wechseln, braucht man Timings: wann genau jedes Wort gesprochen wird. Dafür gibt es ein kleines lokales Modell, faster-whisper. Du musst seinen Namen nicht kennen. Sag dem Harness einfach, dass du das genaue Timing jedes Wortes brauchst.
Es funktioniert, schön! Zwei Dinge zu verbessern. Erstens bleibt jedes Bild 17 Sekunden auf dem Bildschirm, das ist zu lange.
Machen wir ein Bild pro Satz (behalte die 6 vorhandenen, ergänze die fehlenden im selben Stil). Um die Bilder genau im richtigen Moment zu wechseln, brauchen wir Wort-Timings: richte ein kleines lokales Transkriptionsmodell (faster-whisper) ein, das uns sagt, wann jedes Wort gesprochen wird, und erstelle dafür einen Skill namens transcript. Zweitens, welche Effekte kann FFmpeg neben Zoom noch auf Standbilder anwenden?
Nutze ein paar davon in v2, wo sie zur Geschichte passen, zum Beispiel einen langsamen Schwenk über ein breites Bild, ein leichtes Kamerawackeln, wenn das Radio aufwacht, einen sanften Lichtpuls, wenn das Licht der Station angeht. Rendere es als v2 und behalte v1.
Zu den Effekten. Wenn die Folien zusammengesetzt sind, siehst du, dass sie sich ein wenig bewegen: ein langsamer Zoom hinein oder heraus. Frag, was FFmpeg sonst noch kann. Es kann in jede Richtung zoomen. Es kann über ein breites Bild durch ein schmales Fenster scrollen. Es kann das Bild wackeln lassen. Es kann mit der Helligkeit spielen, etwa mit einem Lichtpuls. Das wird später wichtig: Man braucht nicht immer teure Animation. Oft reicht ein Standbild mit einem guten Effekt.
Es gibt einen unerwünschten Effekt: das Wackeln. Beim Zoomen wird die Bildgröße über die Zeit neu berechnet, und das Runden auf ganze Pixel erzeugt kleine Fehler. Das führt zu Zittern, und ein Modell kann es nicht sehen. Ich schon, deshalb habe ich gebeten, das Zittern zu beseitigen und die Lösung im Skill zu speichern. Manchmal kann Wackeln allerdings auch nützlich sein.
Die Station war dreihundert Tage lang still. Sie stand allein auf den zugefrorenen Ebenen eines namenlosen Mondes, wo Saturn die halbe Himmelskugel ausfüllte. Dann beugte sie sich zum Mikrofon und sagte: Hier ist Kepler Station. Wir sind noch da.
Und wenn dir ein Teil nicht gefällt, frag einfach nach. Der Harness hat alle Quelldateien und alle Timings. Ändere eine Zeile, rendere erneut.
Der letzte Prompt ist eine kurze Tour durch das, was wir gebaut haben:
Sieht großartig aus. Letztes Ding für heute, eine kurze Tour, damit ich sehe, was wir gebaut haben: liste unsere Skills mit ihren Einzeilern-Beschreibungen auf, zeig mir, wie viel wir insgesamt laut costs.csv ausgegeben haben, die letzten Einträge von WORKLOG.md und die Ordnerstruktur des Projekts. Nur anzeigen, keine Änderungen.
Wo im Prompt [docs] steht, habe ich die ganze Seite mit Copy page eingefügt:
Das reicht völlig, um anzufangen. So habe ich angefangen. Mein allererstes Video, Sleeper AI Episode 1, gehört immer noch zu meinen Favoriten. Die Hälfte davon besteht aus statischen Bildern und HTML. Mit statischen Bildern kann man viel erreichen.
In der nächsten Episode animieren wir einige dieser Folien. Oder wir bauen gemeinsam eine Episode meiner Shorts-Serie.
Wenn du nicht weiterkommst oder zeigen willst, was du gebaut hast, komm zu uns auf den Discord: https://discord.gg/PVY9dpU8X5
Automatisch übersetzt. Das Original auf Englisch ist unten aufklappbar.
Original (Englisch) anzeigen
Posted on Oct 23 • Originally published at azelianouski.dev
I start in an empty folder with a fresh Claude Code and teach it to make images, voices and music, and to edit them with FFmpeg. At the end it makes a 101-second narrated space story. Every prompt I used is here, ready to copy.
A few months ago I started making AI videos. I didn't plan that. I had never seen myself as an AI video creator. I just wanted to try to create some video materials for my text game. And oh boy... I got lost in this.
I never planned to make music videos either. And yet, here I am:
And you know what? So many people are doing this wrong. The AI video world is the wild west - no standards, no best practices, no rules. And a lot of people constantly trying to sell you their tools. Or the idea that you need some tool. You don't. Really.
My path is different. Like a Jedi who had to build their own lightsaber, a true video creator should build their own tools. Unique and personal, with a sparkle of your taste. Only then will you be free to create whatever you want. I started with some promo videos, then jumped into funny shorts, then into my own anime, then into music videos. Who knows what I'll be doing tomorrow? I don't believe in other people's tools.
I'll show you how to build your own AI video tool, pipeline, workflow, engine, harness - whatever the name is.
This article is a text version of this video:
I'm an AI minimalist - I believe in a simple setup and simple words. I'm using Claude Code with a bunch of skills - that's it. And it can actually be any up-to-date coding assistant (a harness) with any frontier model. Claude Code with Opus 5.5 is a great choice if you are ready to pay $100/month + the cost of generated assets, but you can lower the budget and be all right.
Here's what I would pick for different price ranges, per month:
Pick one in your price range and get used to it. Everything below works the same in Codex or any other harness.
Skills support is the only requirement. Skills are our plugins, addons, extensions - all the new functionality and experience we are going to add to the base harness. What functionality do we need? Two things really:
They are just text files. They work as lazily loaded prompts. Each skill has a short description and a body - only the descriptions are loaded into the context. The model decides from these descriptions when to load the rest of a skill. You can have a lot of them and nothing is loaded into the context unless it is needed. That's why I like them more than MCP servers - those put a lot more into the context.
Imagine that you want to teach your brand new Claude Code to generate images using OpenAI API. You explain where to get the API key, you pass the image gen documentation, you let it make some calls and build a few reusable scripts... You let it find the successful path, then ask it to create a skill with it. This skill will contain the successful path, the exact steps and scripts location, usage examples, all the useful settings, and the description when to use this skill.
And you don't write skills yourself. You only say "remember the successful path, create a skill for this". Next time it doesn't search - it loads the skill and does everything from the first attempt. I wrote more about how my skills grew in How to start creating AI videos from scratch. Here we just build them, one by one. We need four groups:
It took about an hour of work. No libraries to install by hand, no platforms, no video editor.
We build a slideshow. A short story, a voice reading it, and images that change as the story goes.
A slideshow??? This is ridiculous, so much time has been wasted reading this! I'm leaving!
Yes, a slideshow. This is how you start. A video is a bunch of animated slides (surprise). First you learn to make the slides, set up your harness to do it fast and easy - only then do you think of animating them. Animation is stage two - a place you need to get to.
You need to pick an image model. One model is how you keep the style consistent. Although, sometimes I generate an image with one model and then fix some details with another one. Which means having more than one is a good idea.
I think the best one right now is OpenAI GPT Image 2.5 ( gpt-image-2.5-sunburst ). In our demo one image cost $0.04 at 1536x1024. A 4K image costs about $0.12.
I like using it through the official OpenAI API. This gives me the latest version, all the features like editing, good docs with examples and best practices I can pass to the AI. This might not be the cheapest option, but we are going to pay less than $1 for 10 images.
To teach our harness to use GPT Image 2.5 we do the following:
Store it somewhere. Ask your AI how to do it properly. For example, I keep my keys in the macOS Keychain. Claude Code wrote a script that gets the key and makes the API call - it never sees the key itself.
Copy it, paste it into the harness, and ask:
Hi! I want to make AI videos in this folder, starting from zero. Step one: teach yourself to generate images with OpenAI GPT Image 2.5 (gpt-image-2.5-sunburst). My API key is in macOS Keychain, account ai-video-demo, service vid-oai. Never print it. Here is the documentation: [docs] Make one test image: a lonely research station on a frozen moon, Saturn huge in the sky, cinematic, 1536x1024.
That's the magic of modern harnesses. It reads the doc, writes a small script, runs it, fixes its own errors, and gives you an image. Ours took 32 seconds and $0.04.
Nice. Now create a skill for this, so you remember the successful path next time. Name it gpt-image, and describe it as our main skill for images.
It's good to have more than one model. My second favorite is Nano Banana 2.1. The docs are here:
Great. Let's add a second image model as an alternative: Nano Banana 2.1 (Gemini image, gemini-nano-banana-2.1). Gemini key is in Keychain, account ai-video-demo, service vid-gem. Docs: [docs] Generate the same frozen moon scene with it so we can compare the two models side by side. Then make a skill for it called nano-banana.
We won't be using Midjourney here, although most AI content creators prefer this model over anything else. It gives better realism and really unique visuals. But it doesn't have an official API and it's harder to get great results out of the box. Feel free to explore this model yourself. I use it via the EvoLink platform: Midjourney 8.2 page.
Before going further, I set some rules for the project. They go into CLAUDE.md, a file the harness reads at the start of every session:
Before we go further, let's set some house rules for this project and write them into CLAUDE.md. 1) Cost tracking: every paid API call gets a row in costs.csv (date, service, model, what, cost in USD). Don't trust your memory for prices, use these official pricing pages. Gemini: [pricing page] OpenAI: [pricing page] Add rows for the two images we already made. 2) Work log: after every step that creates a file, append a short entry to WORKLOG.md: what, which tool and model, the full prompt, the output file, the cost. 3) Project structure: every video gets its own folder, projects/NAME/, with images/, voices/, music/, cuts/ and final/ inside. Move the two test images to projects/tests/images/.
Cost tracking is everything. Did I mention that real animation is very expensive? I spend around $100 on my 4 min music videos. People keep telling me that it can be cheaper, but it's usually theory. I haven't heard it from people who actually make videos. In any case, if you track costs you are in control. If it's getting too expensive, you switch to cheaper models and change the technique.
And this is why it's important to master slideshows - sometimes you can get away with a still image even in a high quality cinematic video. It can save you tons of money.
There is ElevenLabs, and it's the best voice platform. Great voices, lots of settings. It's also the most expensive and a bit hard to use. I'd start with Gemini voice models instead. They're very cheap, and you can describe in words what voice you want. Or you can just ramble your preferences to Claude Code, and it turns them into the Gemini voice instruction for you.
Images done. Now voices. Teach yourself Gemini text-to-speech (gemini-3.8-flash-tts), same Gemini key. Docs: [docs] Test line: "The station had been silent for three hundred days. Then, at midnight, the radio woke up." Calm, low female narrator, a little mysterious. Save it in projects/tests/voices/. When it works, create a skill called gemini-voice.
It picks the voice by its description. The one it chose is described as "deep, velvety, and unhurried".
A bonus model: Kokoro. It runs fully on your computer, on the CPU, for free.
Good. Now a free one: can we have the Kokoro voice model (Kokoro-82M) running locally on my CPU? Download it, write a script, read the same line with a female voice, and make a skill called kokoro-voice. This Mac has 16 GB of RAM, so keep it light.
It downloads the model, writes a script to run it, and makes a skill. Simona, my AI assistant, uses Kokoro to read her replies to me out loud every day. We created a Claude Code hook for this - but it's a separate topic.
Kokoro is not very configurable, but it's free and lightweight, so add it. Use it for drafts or long texts - it can read books or articles to you.
Last voice, the premium one: ElevenLabs. Key is in Keychain, account ai-video-demo, service vid-el. Docs: [docs] Read the same line once with a calm female narrator voice, model eleven_multilingual_v2. Make a skill called elevenlabs-voice. Then put the best Gemini take, the Kokoro take and this one side by side in projects/tests/voices/ so I can compare them.
You can hear all three in the video at 10:30.
There are music services. Suno is the most famous one. For this video we use something simpler, free, and very magical: Python.
Voices done. Now music, completely free: using Python, can you generate some electronic music for a video? A calm, slightly eerie ambient track, about 60 seconds, for a sci-fi story about a lonely station on a frozen moon. No samples, just code. Save it to projects/tests/music/ and make a skill called python-music.
You won't get rock music or vocals. But you get decent electronic background music for a simple video. It can't listen to its own track, so it checked it by looking at the spectrogram.
You can hear the track in the video at 11:14.
It's hard to give feedback on this kind of music. My AI and I don't have shared words for drones, ambient pads and noises yet. But it's interesting - over time we can build those words and understand each other better. Make this higher, reduce the humming, let's add some random notes...
That's the only music skill I have. When I need more, I go to Suno by hand. It has no API.
Two more skills. The main one is FFmpeg. It's a terminal tool with no UI, and AI is very good with it. It can make a video from images, cut a video into pieces, swap them, pull out frames, add sound, change volume. A full video editor in the terminal. The model already knows it, and the tool has its own docs built in.
Now the first real video, from one prompt:
Now our first real video. Write a short story about space, 8 to 10 sentences, about that lonely station on the frozen moon whose radio wakes up. Split it into parts and make 6 illustrations for it with gpt-image, 16:9, same style in every frame. Voice the story with Gemini. Make a music track for it with python-music and keep it quiet under the voice. Then use FFmpeg to put it all together into a 1920x1080 slideshow video where the images follow the story. New project folder for it. When it works, create an ffmpeg skill with the successful path.
It worked. But each image stayed on screen for 17 seconds, which is way too long.
To switch images at the right moment, you need timings: when exactly each word is spoken. There is a small local model for that, faster-whisper. You don't need to know its name. Just tell the harness you need the exact timing of each word.
It works, nice! Two things to improve. First, each image stays on screen for 17 seconds, that's too long. Let's do one image per sentence (keep the 6 we have, add the missing ones in the same style). To switch images at exactly the right moment, we need word timings: set up a small local transcription model (faster-whisper) that tells us when each word is spoken, and make a skill for it called transcript. Second, what other effects can FFmpeg do on still images besides zoom? Use a few of them in v2 where they fit the story, for example a slow pan across a wide image, a little camera shake when the radio wakes up, a light pulse when the station lights come on. Render it as v2, keep v1.
About the effects. Once the slides are together, you'll see they move a little: a slow zoom in or out. Ask what else FFmpeg can do. It can zoom in any direction. It can scroll across a wide image through a narrow window. It can shake the frame. It can play with brightness, like a light pulse. This matters later: you don't always need expensive animation. Often a still image with a good effect is enough.
There is one unwanted effect: the shaking. Zooming recalculates the frame size over time, and rounding to whole pixels creates tiny mistakes. This creates jitter, and a model cannot see it. I can, so I asked it to get rid of the jitter and remember the fix in the skill. Although sometimes shaking might be useful.
The station had been silent for three hundred days. It sat alone on the frozen plains of a nameless moon, where Saturn filled half the sky. Then she leaned toward the microphone and said, "This is Kepler Station. We are still here."
And if you don't like some part of it, just ask. The harness has all the source files and all the timings. Change one line, render again.
The last prompt is a quick tour of what we built:
Looks great. Last thing for today, a quick tour so I can see what we built: list our skills with their one-line descriptions, show me how much we spent in total from costs.csv, the last few entries of WORKLOG.md, and the folder structure of the project. Just show them, no changes.
Where a prompt says [docs], I pasted the whole page with "Copy page":
This is more than enough to start. It's how I started. My very first video, Sleeper AI episode 1, is still one of my favorites. Half of it is static images and HTML. You can do a lot with static images.
In the next episode we animate some of these slides. Or build an episode of my shorts series together.
If you get stuck, or want to show what you made, come to our Discord: https://discord.gg/PVY9dpU8X5