# Videoproductie automatiseren met AI [[TOC]] ## Wanneer automatisering zinvol is Handmatige videoproductie loont als je af en toe een video maakt. Automatisering loont zodra je regelmatig video's maakt met dezelfde structuur maar wisselende inhoud. Voorbeelden waarbij automatisering de doorlooptijd van uren naar minuten terugbrengt: - Wekelijkse productupdate-video's op basis van een changelog - Maandelijkse rapportagevideo's op basis van spreadsheet-data - Gepersonaliseerde salesvideo's per prospect (naam, bedrijf, use case) - Eventteasers per deelnemende spreker - Productdemo's per variant in een catalogus :::warn title="Voor wie is dit bedoeld" Videoproductieautomatisering vereist technische kennis: scripting (Python of Node.js), API-integraties en videorenderpijplijnen. Dit artikel is geschreven voor ontwikkelaars en technisch ingestelde marketeers. ::: ## De automatiseringspijplijn Een pijplijn voor geautomatiseerde videoproductie bestaat uit vier lagen. ### Laag 1: Datainname De variabele data bepaalt de inhoud van elke video. Bronnen: - Google Sheets (via de Sheets API) - JSON-bestand of REST API-respons - Database (PostgreSQL, BigQuery) - CRM-export (HubSpot, Salesforce) Elke rij of record staat voor één video. De kolommen zijn de variabelen: productnaam, beschrijving, prijs, beeldprompt. ### Laag 2: Scriptgeneratie Gebruik de Gemini API (of de Claude API) om per record een videoscript te genereren. Gebruik een actueel model: `gemini-2.0-flash` is per 1 juni 2026 uitgefaseerd, dus kies `gemini-2.5-flash` voor nieuwe projecten, of een nieuwer Flash-model als dat beschikbaar is. ```python from google import genai client = genai.Client(api_key="YOUR_API_KEY") def genereer_script(product_naam, voordelen): prompt = f"""Schrijf een videoscript van 60 seconden voor het product {product_naam}. Voordelen: {voordelen}. Structuur: opening (10s), drie voordelen (30s), call to action (20s). Schrijf de voice-over tekst per scene, gescheiden door [SCENE].""" response = client.models.generate_content( model="gemini-2.5-flash", contents=prompt, ) return response.text ``` ### Laag 3: Beeld- of videogeneratie Voor een data-gedreven pipeline met deterministische output genereer je per scene een achtergrondafbeelding via de Imagen-API op Vertex AI. Imagen 4 is het actuele model (`imagen-4.0-generate-001`). ```python import vertexai from vertexai.preview.vision_models import ImageGenerationModel vertexai.init(project="JOUW_PROJECT", location="us-central1") model = ImageGenerationModel.from_pretrained("imagen-4.0-generate-001") def genereer_scene_afbeelding(scene_beschrijving): images = model.generate_images( prompt=f"{scene_beschrijving}, professionele zakelijke stijl, blauw kleurenpalet", number_of_images=1, aspect_ratio="16:9", ) return images[0] ``` :::info title="Endpoints verlopen, plan je migratie" Google faseert de losse Imagen 3- en Imagen 4-endpoints uit en raadt aan om vóór 30 juni 2026 over te stappen op `gemini-2.5-flash-image` voor beeldgeneratie. Controleer de actuele Vertex AI-modelpagina voordat je in productie gaat, want modelnamen veranderen sneller dan de rest van de pipeline. ::: Wil je echte bewegende video in plaats van stilstaande beelden met overlay, dan kun je de Veo-API gebruiken via de Gemini API. Veo 3.1 genereert clips van circa 8 seconden met natief gegenereerd geluid, in 720p, 1080p of 4k. Dat geeft levendiger resultaat, maar is duurder en minder voorspelbaar per render dan de aanpak met Imagen plus Text-to-Speech. ### Laag 4: Video-assemblage Combineer de gegenereerde beelden, de voice-over (via de Text-to-Speech API) en eventuele tekstoverlays tot één video. Drie veelgebruikte opties: **Optie A: ffmpeg met Python** ```bash ffmpeg -loop 1 -i scene1.jpg -i voice_scene1.mp3 \ -c:v libx264 -tune stillimage -c:a aac \ -shortest scene1.mp4 ``` Concateneer daarna alle scenes: ```bash ffmpeg -f concat -safe 0 -i scenes_list.txt -c copy output.mp4 ``` **Optie B: Remotion (React-gebaseerd)** Remotion is een React-library die videocomposities rendert als MP4. Ideaal voor video's met complexe tekstoverlays en animaties, omdat je de layout in JSX opbouwt. **Optie C: Creatomate API** Creatomate is een commerciële template-engine met API. Je definieert een JSON-template en Creatomate rendert de video met jouw variabelen. Eenvoudiger dan ffmpeg, maar met kosten per render. ## Voice-over met Google Text-to-Speech De Google Cloud Text-to-Speech API zet je scripttekst om in een voice-over. De `Standard`-stemmen zijn het goedkoopst; voor een natuurlijker resultaat gebruik je de Chirp 3 HD-stemmen (ongeveer $30 per miljoen tekens, met een gratis maandtegoed van 1 miljoen tekens). ```python from google.cloud import texttospeech client = texttospeech.TextToSpeechClient() def genereer_voice_over(tekst, taal="nl-NL", stem="nl-NL-Standard-A"): input_text = texttospeech.SynthesisInput(text=tekst) voice = texttospeech.VoiceSelectionParams( language_code=taal, name=stem, ) audio_config = texttospeech.AudioConfig( audio_encoding=texttospeech.AudioEncoding.MP3 ) response = client.synthesize_speech( input=input_text, voice=voice, audio_config=audio_config, ) return response.audio_content ``` :::tip title="Kies de juiste stem per taal" Controleer met `client.list_voices(language_code="nl-NL")` welke stemmen voor jouw taal beschikbaar zijn. De namen verschillen per stemfamilie: een Chirp 3 HD-stem heet bijvoorbeeld anders dan een `Standard`-stem, dus hardcode geen stemnaam zonder te valideren. ::: ## Pipeline-orchestratie Gebruik een workflow-orchestrator om de stappen te coördineren: - **Google Cloud Workflows**: serverless, integreert native met Google-diensten - **Apache Airflow**: krachtig, self-hosted of via Cloud Composer - **n8n**: visuele workflow-builder, geschikt voor minder technische gebruikers - **Python-script**: voor eenvoudige pijplijnen volstaat een script met sequentiële stappen ## Kwaliteitscontrole in de pipeline Bouw automatische controles in zodat foute output niet ongezien live gaat: - Controleer de videoduur: te kort of te lang triggert een handmatige review - Valideer dat alle scenes zijn gegenereerd (geen lege scene) - Sla per video een preview-thumbnail op voor steekproefsgewijze controle - Log alle API-responsstatussen voor foutopsporing - Verwerk SynthID-watermerken op gegenereerd beeld correct en wees transparant dat de video AI-gegenereerd is :::howto title="Zo zet je een minimale pipeline op" 1. Definieer je dataschema: één rij per video, met kolommen als `product_naam`, `voordelen` en `beeldprompt`. 2. Genereer per rij een script met `gemini-2.5-flash` en split het op `[SCENE]`. 3. Genereer per scene een beeld met Imagen 4 (of `gemini-2.5-flash-image`) en een voice-over met Text-to-Speech. 4. Assembleer de scenes met ffmpeg of Remotion tot één MP4. 5. Voer de kwaliteitscontroles uit en publiceer alleen video's die slagen. ::: :::faq ### Hoe hoog zijn de kosten van een geautomatiseerde videopijplijn? Reken globaal per video: Imagen ongeveer $0,02 tot $0,08 voor vijf scenes, Text-to-Speech vanaf circa $0,004 per 1000 tekens voor `Standard`-stemmen (Chirp 3 HD ligt hoger, rond $30 per miljoen tekens), plus wat compute voor de orchestratie. Schat ruwweg $0,10 tot $0,50 per video. Bij honderd video's per maand kom je dan op tien tot vijftig euro. Veo-video kost duidelijk meer per render. Controleer altijd de actuele prijslijst, want tarieven wijzigen regelmatig. ### Kan ik de pipeline hosten op Google Cloud? Ja. Cloud Run (containerized) of Cloud Functions (serverless) zijn geschikte hosts. Je triggert de pipeline via Pub/Sub, Cloud Scheduler of een webhook. ### Hoe voeg ik achtergrondmuziek toe aan de gegenereerde video? Voeg een royalty-free muziektrack toe via ffmpeg. Mix de muziek op laag volume (rond -20dB) met de voice-overtrack en voeg beide samen toe tijdens de assemblage. ### Is er een no-code alternatief voor deze pijplijn? Ja. Combineer n8n of Make.com met Creatomate en een TTS-dienst zoals ElevenLabs voor een grotendeels no-code pipeline. Dat is minder flexibel, maar vereist nauwelijks code. ### Wat als Google een model uitfaseert dat ik gebruik? Hardcode geen modelnaam diep in je pipeline. Zet de modelnaam in configuratie of een omgevingsvariabele, zodat je bij een uitfasering (zoals `gemini-2.0-flash` per 1 juni 2026) snel kunt overstappen zonder code te herschrijven. ### Kan ik in plaats van stilstaande beelden echte bewegende video genereren? Ja, via de Veo-API op de Gemini API. Veo 3.1 maakt korte clips met natief geluid in tot 4k. Houd er rekening mee dat dit duurder en minder deterministisch is dan de combinatie van Imagen-beeld met een Text-to-Speech-voice-over. :::