Tutorial completo de automação no n8n para geração de vídeos com…
INEMA
Aqui vão dicas e hacks diretos para essa automação com IA:
- Use dados de planilha (Google Sheets) para controlar tudo sem editar o fluxo.
- Clone sua voz com Fish Audio – é 10x mais barato que ElevenLabs e com boa qualidade.
- Use Whisper só para gerar timestamps, não para criar o texto.
- Pin os dados no n8n para evitar gastar tokens toda vez que testar.
- Use vídeos humanos reais como base para lip-sync, melhora o realismo do avatar.
- Use Supabase como armazenamento gratuito e com API fácil.
- Rode o n8n localmente com Docker para mais controle e evitar limites de hospedagem.
- Use Claude ou outro modelo via OpenRouter – mais barato que ChatGPT-4.
- Evite rodar o fluxo inteiro várias vezes – teste por etapas com dados fixos.
- Ajuste volume da música de fundo no FFMPEG para não cobrir a fala do avatar.
Aqui está o passo a passo simplificado para montar um Sistema de Vídeo com Avatar de IA sem código, conforme apresentado no vídeo:
Objetivo Final⌗
Criar vídeos com avatares que falam com sua voz clonada e sincronizam os lábios, usando n8n e IA, sem programar.
🛠️ Etapa 1 – Preparar o ambiente⌗
-
Instale o Docker - Acesse: https://www.docker.com/products/docker-desktop - Instale o Docker Desktop na sua máquina.
-
Instale o n8n localmente via Docker - No terminal, execute:
docker pull n8nio/n8n docker run -it --rm \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n- Acesse o n8n em:http://localhost:5678
📄 Etapa 2 – Configurar planilha Google Sheets⌗
- Crie uma planilha no Google com os seguintes campos:
-
language,voice_id,human_video_template,topic,video_reference_id,music_id,starting_second,speed,status,result_url - Habilite a API do Google Sheets no Google Cloud Console.
- Crie uma credencial OAuth 2.0 e conecte ao n8n.
- No n8n, adicione um nó Google Sheets para "Get Rows" e leia os dados da planilha.
📜 Etapa 3 – Gerar transcrição resumida com Claude⌗
- Pegue a transcrição de um vídeo usando a YouTube Transcript API (exige instalação dentro do container do Docker).
- Use o Claude ou outro modelo via OpenRouter para criar um roteiro de até 100 palavras com estrutura de impacto: - Introdução forte - Corpo curto - Conclusão com chamada
🗣️ Etapa 4 – Clonar a voz e gerar áudio com IA⌗
- Use Fish Audio para clonar sua voz (envie 1-2 minutos de áudio).
- Gere o áudio com base no roteiro usando a voz clonada.
- Salve esse áudio no Supabase.
🕐 Etapa 5 – Transcrever o áudio com timestamps (Whisper)⌗
- Use o modelo Whisper da OpenAI para gerar a transcrição com timestamps.
- Isso será necessário para a sincronização labial precisa.
👄 Etapa 6 – Fazer sincronização labial (lip-sync)⌗
- Use Fell.AI e o modelo Sync LipSync v1.9.
- Envie o áudio e o vídeo base (template humano).
- Aguarde a geração do vídeo com sincronização labial (leva até 7 minutos).
🎬 Etapa 7 – Montar o vídeo final com FFMPEG⌗
- Use FFMPEG para: - Juntar vídeo com áudio sincronizado - Adicionar música de fundo (ID do YouTube) - Adicionar legendas (opcional) - Ajustar resolução e duração
- Defina volumes e qualidade final.
💾 Etapa 8 – Salvar e publicar⌗
- Faça upload do vídeo final para o Supabase.
- Atualize a planilha Google Sheets com a URL do vídeo gerado.
- Automatize todo o fluxo para rodar diariamente ou por hora.
🧠 Dica Extra⌗
- Use pinagem de dados no n8n para economizar ao testar etapas que envolvem IA paga.
- Pode clonar a voz direto no Fish Audio e reutilizá-la em múltiplos projetos.
Resumo do vídeo:
“Sistema de Vídeo com Avatar de IA Sem Código – Clone Sua Voz e Sincronize os Lábios com IA (Tudo no Automático)”
Link do vídeo:
youtube.com/watch ↗
O criador do vídeo apresenta um sistema completo e automatizado para gerar vídeos com avatares de IA, usando ferramentas gratuitas e sem necessidade de programação, através do n8n e outros serviços como Fish Audio, Claude, Whisper, Supabase e FFMPEG.
Resumo Geral⌗
O sistema permite: - Criar avatares de vídeo com voz clonada e sincronização labial. - Usar comandos simples (drag and drop) via n8n. - Automatizar todo o fluxo: script, voz, lip-sync e renderização do vídeo. - Rodar localmente ou em servidores gratuitos (via Docker). - Reduzir custos significativamente em comparação com outras soluções.
Etapas principais do sistema⌗
-
Geração do Roteiro com IA (Claude) - Utiliza YouTube Transcript API para pegar a transcrição de um vídeo. - Usa modelos de linguagem (via OpenRouter e Claude) para gerar um novo roteiro em até 100 palavras com estrutura envolvente.
-
Clonagem de Voz com Fish Audio - A voz do criador é clonada. - O roteiro gerado é transformado em áudio usando essa voz clonada. - Fish Audio é 10x mais barato que ElevenLabs.
-
Armazenamento em Supabase - O áudio gerado é salvo e acessado via Supabase.
-
Transcrição com Whisper (OpenAI) - Gera uma transcrição com timestamps, necessária para o lip-sync.
-
Sincronização Labial com Sync LipSync (via Fell.AI) - Aplica o áudio à base de um vídeo humano modelo. - O resultado é um vídeo com fala sincronizada (lábios se mexendo com a fala).
-
Renderização e Montagem com FFMPEG - Junta vídeo, áudio e música de fundo. - Define volume, duração e resolução. - Adiciona legendas com fontes customizadas (ex: Rubik).
-
Publicação e Atualização - Vídeo final é salvo no Supabase. - O status da planilha no Google Sheets é atualizado com o link do resultado.
Recursos Usados⌗
- n8n (automação)
- Claude (roteiro IA)
- Fish Audio (voz clonada)
- OpenAI Whisper (transcrição com timestamp)
- Supabase (armazenamento)
- FFMPEG (edição de vídeo)
- Sync LipSync (Fell.AI) (sincronização de lábios)
- Google Sheets + Docker + Terminal
Exemplos e Custo⌗
- Custo estimado por minuto: $0,7315
- Fish Audio: $0,0255
- Lip Sync: $0,7/min
- Whisper: $0,006
Destaques⌗
- O projeto é ideal para solopreneurs e criadores de conteúdo que querem escalar vídeos sem depender de gravações manuais.
- O criador oferece templates prontos e acesso à comunidade para suporte.
- Todos os scripts e modelos estão disponíveis gratuitamente para quem quiser testar.
File ****blpxittjdrbenzczlmaa.supabase.co ↗ $json.Key }} Combine Transcript const all = $input.all();
return all.map(item => { const words = item.json.words;
const result = []; for (let i = 0; i < words.length; i += 3) { const chunk = words.slice(i, i + 3); result.push({ words: chunk.map(word => word.word.charAt(0).toUpperCase() + word.word.slice(1)).join(' '), start: chunk[0].start, end: chunk[chunk.length - 1].end, }); }
return { chunks: result, }; })
Download Music yt-dlp -x --audio-format mp3 -o "./youtube/bgm" "youtube.com/watch ↗ $('Get Configuration').item.json['music id'] }}" Download Youtube Video yt-dlp -o "./youtube/temp" "youtube.com/watch ↗ $('Get Configuration').item.json['video reference id'] }}" -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" Compile Video ffmpeg \ -ss {{ $('Get Configuration').item.json['starting seconds'] }} -i ./youtube/temp.mp4 \ -i ./youtube/lower.mp4 \ -i ./youtube/bgm.mp3 \ -filter_complex "\ [0:v]scale=1080:760:force_original_aspect_ratio=increase,crop=1080:760[top];\ [1:v]scale=1080:1160:force_original_aspect_ratio=increase,crop=1080:1160[bottom];\ [top][bottom]vstack[stacked];\ [1:a]volume=1.0[lower_audio];\ [2:a]volume=0.03[bgm];\ [lower_audio][bgm]amix=inputs=2:duration=first[aout]\ " \ -map "[stacked]" \ -map "[aout]" \ -c:v libx264 \ -c:a aac \ -r 25 \ -t $(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 ./youtube/lower.mp4) \ ./youtube/concate.mp4 \ -y Change to FFmpeg Code const transcript = $("Combine Transcript").first().json.chunks;
// Parameters const maxWidth = 1080 * 0.8; // 80% of 1080px const baseFontSize = 70; // Default size for short text const avgCharWidth = 0.6; // Estimated average character width in px per fontsize point
const commands = ****transcript.map((item) => { const start = parseFloat(item.start).toFixed(2); const end = parseFloat(item.end).toFixed(2);
const text = item.words.replaceAll("'", ""); // Escape single quotes if needed
// Estimate the required font size to fit within maxWidth const estimatedFontSize = Math.min( baseFontSize, Math.floor(maxWidth / (text.length * avgCharWidth)) );
return drawtext=text=' ${text} ':enable='between(t,${start},${end})':x=(w-text_w)/2:y=(h-text_h)/2-120:fontsize=${estimatedFontSize}:fontfile='Rubik-Black.ttf':fontcolor=black:box=1:boxcolor=yellow@1:boxborderw=5;
}).join(",");
return [{ json: { drawtextCommands: commands } }];
Add Transcript
ffmpeg -i ./youtube/concate.mp4 -vf "{{ $('Change to FFMPEG Code').item.json.drawtextCommands }}" -c:a copy ./youtube/output.mp4 -y
Resources
Template
al11 - AI Avatar
How to install Docker and n8n in local Download Docker from https://www.docker.com/
Install it > Open the Docker App on Desktop
Docker Hub > Search for n8n
Choose n8nio/n8n > Click "Pull"
Images > Click the "Run" button to start > Expand the dropdown menu of the Optional Setting
Ports: you can input whatever port you like, e.g. 5678, under the host port field > Run
How to install FFmpeg in your Docker (For Rendering Videos Without andynocode API) Docker > Container > Copy the Container ID (under the container name), and paste it to the following command code by replacing the {{container id}} part.
Example: e2b38713d607627c6aa25a4ef61ddfee1630256e0a6c58ca75e2f23d7e2998aa
Replace the {{container id}} in the following command with the correct container id above
docker exec -it -u root {{container id}} apk add --update python3 py3-pip gcc python3-dev musl-dev curl ffmpeg
Example: docker exec -it -u root e2b38713d607627c6aa25a4ef61ddfee1630256e0a6c58ca75e2f23d7e2998aa apk add --update python3 py3-pip gcc python3-dev musl-dev curl ffmpeg
Apple computer: Command+Space > Search for Terminal > Paste and execute the command with the correct container id
How to install yt-dlp in your Docker (For Downloading YouTube Videos) Docker > Container > Copy the Container ID (under the container name), and paste it to the following command code by replacing the {{container id}} part.
Example: e2b38713d607627c6aa25a4ef61ddfee1630256e0a6c58ca75e2f23d7e2998aa
Replace the {{container id}} in the following command with the correct container id above
docker exec -it -u root {{container id}} apk add yt-dlp
Example: docker exec -it -u root e2b38713d607627c6aa25a4ef61ddfee1630256e0a6c58ca75e2f23d7e2998aa apk add yt-dlp
Apple computer: Command+Space > Search for Terminal > Paste and execute the following command with the correct container id
How to install youtube-transcript-api in your Docker (For Downloading YouTube Transcript) Docker > Container > Copy the Container ID (under the container name), and paste it to the following command code by replacing the {{container id}} part.
Example: e2b38713d607627c6aa25a4ef61ddfee1630256e0a6c58ca75e2f23d7e2998aa
Replace the {{container id}} in the following command with the correct container id above
docker exec -it -u root {{container id}} pip install youtube-transcript-api --break-system-packages
Example: docker exec -it -u root e2b38713d607627c6aa25a4ef61ddfee1630256e0a6c58ca75e2f23d7e2998aa pip install youtube-transcript-api --break-system-packages
Apple computer: Command+Space > Search for Terminal > Paste and execute the following command with the correct container id
Get Transcript
youtube_transcript_api {{ $json['video reference id'] }} --languages en
Claude Prepare Transcript
`Create a concise engaging video transcript for a 30 seconds summarize video (~100 words) video related to the transcript in {{ $('Get Configuration').item.json.language }} language. The transcript is related to {{ $('Get Configuration').item.json.topic }}.
- Hook viewers immediately with a bold question surprising fact or relatable story
- Structure clearly: opening (0–10 seconds) spark curiosity body (10–20 seconds) present 2-3 key points using storytelling stats or examples closing (20-30 seconds) end with a strong CTA or thought-provoking question
- Use conversational energetic tone (short sentences active voice no jargon)
- Tailor language to [insert audience eg busy professionals]
- Add urgency or emotion (eg Imagine Don’t miss)
- Output Requirements: - No emojis symbols or bracketed visual descriptions (eg [woman crying]) - No line breaks or formatting write as single continuous text - Dont add any style or implies emphasis to the text (eg you know what), don't wrap text with an asterisk "*"
- Avoid fluff keep dynamic and scannable
Upload Audioblpxittjdrbenzczlmaa.supabase.co ↗ $now.format('yyyy-MM-dd_hhmmss')}}_17_3_lipsync_audio.{{ $binary.data.fileExtension }} ` Re-download
al11
O vídeo mostra como criar uma automação completa no n8n que gera vídeos com avatar de IA, clonando sua voz, fazendo sincronização labial e montando tudo automaticamente, sem precisar programar.
Usa ferramentas como Claude, Fish Audio, Whisper, Fell.AI, Supabase e FFMPEG, com dados vindo de uma planilha do Google Sheets. Tudo roda sozinho, podendo publicar vídeos prontos em minutos.
al11- AI Avatar - Sincronioza Voz Videos Automatico
1