

Automatize Apresentações de Relatórios de Marketing: Deck para Vídeo API (2026)
Para automatizar apresentações de relatórios de marketing, execute um cron na segunda-feira que puxe métricas de campanhas, peça a um LLM uma narrativa de 8 slides e chame três endpoints do 2Slides: create-pdf-slides para um deck de resumo em imagem no formato 16:9, generate-narration no modo multi para uma faixa com duas vozes, e download-slides-pages-voices para arquivos PNG e WAV por página que o ffmpeg junta em um MP4. Um deck de 8 páginas em 2K custa 810 créditos (cerca de $2), a narração adiciona 1.680 créditos (cerca de $4,20), então um resumo semanal narrado fica perto de $6 por cliente. Construído para operações de marketing, engenheiros de crescimento e agências.
Principais pontos
- Um trabalho agendado substitui o ritual de segunda-feira: exportação de métricas, deck de resumo de 8 slides, narração com duas vozes e um MP4 1920×1080.
- Três endpoints do 2Slides fazem o trabalho:
create-pdf-slides(10 + 100 créditos por página em 2K),generate-narration(210 créditos por página) edownload-slides-pages-voices(gratuito). - Um resumo narrado de 8 slides custa 2.490 créditos, cerca de $5 a $6,25 dependendo do pacote de créditos; só o deck custa 810 créditos.
- Cada endpoint de escrita é limitado a 6 requisições por minuto por chave, então uma execução para 50 clientes deve ser enfileirada, não disparada em paralelo.
- Fast PPT (
generate) não pode ser narrado; para vídeo, comece porcreate-pdf-slidesoucreate-like-this.
Para quem é este conteúdo
Líderes de operações de marketing que recriam o mesmo deck de resumo toda segunda-feira, engenheiros de crescimento que já têm as métricas em um data warehouse, e agências que devem uma atualização semanal para 20, 50 ou mais clientes. A dor é a mesma: os números estão prontos às 6h, o deck está pronto até o almoço, e metade dos stakeholders nunca abre.
Não use esta receita se os stakeholders precisarem editar os slides no PowerPoint depois; o pipeline de design em imagem produz um PDF finalizado mais imagens das páginas, não um PPTX nativo. Para decks semanais editáveis, o caminho Fast PPT em Automatize relatórios semanais com Zapier e 2Slides é mais adequado.
O fluxo de trabalho em resumo
| Passo | Ferramenta | O que acontece | Endpoint 2Slides / créditos |
|---|---|---|---|
| 1. Gatilho | Cron (GitHub Actions, Cloud Scheduler, cron em VM) | Dispara segunda-feira às 06:00 no fuso horário do cliente | nenhum |
| 2. Puxar métricas | Google Ads, Meta, exportação GA4 ou consulta SQL no warehouse | Um objeto JSON por cliente: gasto, plano, conversões, CPA, canais principais, criativos principais | nenhum |
| 3. Escrever a narrativa | Seu LLM preferido | Retorna 8 seções tituladas: resultado principal, gasto vs. plano, canais principais, criativos vencedores, notas de audiência, testes, riscos, plano da próxima semana | nenhum |
| 4. Gerar o deck | 2Slides | Deck em imagem 16:9 em 2K com seu designStyle de marca | POST /api/v1/slides/create-pdf-slides, 810 créditos para 8 páginas |
| 5. Adicionar narração | 2Slides | Dois locutores alternam no deck | POST /api/v1/slides/generate-narration, 1.680 créditos para 8 páginas |
| 6. Buscar ativos | 2Slides | ZIP com pages/page_01.png, voices/page_01.wav e transcript.txt | POST /api/v1/slides/download-slides-pages-voices, gratuito |
| 7. Montar e entregar | ffmpeg no seu worker, ou Workspace Export | MP4 H.264 postado no Slack, email ou portal do cliente | ffmpeg: gratuito; Workspace Generate Video: 20 créditos por página |
Cada chamada 2Slides usa o mesmo cabeçalho Authorization: Bearer $SLIDES_API_KEY, e cada trabalho assíncrono é consultado em GET /api/v1/jobs/{jobId}.
Passo 1: Obtenha uma chave API e configure o agendador
Crie uma chave em 2slides.com/api na aba API Keys. Contas novas recebem 500 créditos grátis sem assinatura, suficientes para rodar este pipeline uma vez completo antes de comprar um pacote. Armazene a chave como SLIDES_API_KEY no cofre de segredos do seu agendador, nunca em navegador ou notebook compartilhado, e confirme com o endpoint echo antes de agendar algo.
curl -s https://2slides.com/api/v1/echo \
-H "Authorization: Bearer $SLIDES_API_KEY"
Para o gatilho, um workflow GitHub Actions com on: schedule: - cron: "0 6 * * 1" é suficiente para poucos clientes. Para 50 ou mais, coloque os clientes em uma fila e deixe um worker processar sequencialmente, mantendo você abaixo do limite de 6 requisições por minuto com espaço para tentativas.
Passo 2: Puxe as métricas e deixe um LLM escrever a narrativa de 8 slides
A API 2Slides não sabe o que um bom resumo semanal diz; essa parte é sua, e ela decide a qualidade do deck. Puxe os números da semana passada das suas plataformas de anúncios ou warehouse em um objeto JSON plano por cliente, então peça ao seu LLM para retornar exatamente oito seções tituladas:
- Resultado principal: um número, uma frase ("CPA caiu 18% semana a semana com gasto estável").
- Gasto vs. plano: real, planejado, variação, ritmo para o mês.
- Canais principais: três canais com gasto, conversões, CPA e a mudança.
- Criativos vencedores: os dois ou três anúncios que mais converteram e por quê.
- Notas de audiência e geográficas: o que mudou.
- Testes em andamento: hipótese, status, data de leitura.
- Riscos e bloqueios: limites de orçamento, lacunas de rastreamento, sazonalidade.
- Plano da próxima semana: três tópicos com responsáveis.
Peça frases simples com números embutidos e menos de 60 palavras por seção. create-pdf-slides trata seu texto como fonte da verdade para cópia e layout, então uma narrativa limpa de 400 a 500 palavras produz um deck mais enxuto que um despejo de 3.000 palavras de todas as métricas.
// narrative.mjs: formata a saída do LLM antes de chegar ao 2Slides
export function toUserInput(client, sections) {
const header = `Resumo semanal de mídia paga para ${client.name}, semana de ${client.week}. ` +
`Audiência: ${client.stakeholders}. Tom: direto, números em primeiro lugar.`;
const body = sections
.map((s, i) => `Slide ${i + 1}: ${s.title}\n${s.body}`)
.join("\n\n");
return `${header}\n\n${body}`;
}Passo 3: Automação do deck do relatório de campanha com create-pdf-slides
Envie a narrativa para create-pdf-slides. Defina page: 8 para que o número de slides corresponda às suas oito seções, aspectRatio: "16:9" para telas, e resolution: "2K" para que os PNGs fiquem nítidos em 1920×1080 sem upscaling. designStyle é onde sua marca vive: cores, estilo tipográfico, regras de layout e o que evitar.
curl -s https://2slides.com/api/v1/slides/create-pdf-slides \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Resumo semanal de mídia paga para Northwind Outdoor, semana de 2026-09-01 a 2026-09-07. Audiência: CMO e líder de ecommerce. Tom: direto, números em primeiro lugar.\n\nSlide 1: Resultado principal\nCPA caiu 18% para $31,40 com gasto estável de $48.200; 1.535 compras contra 1.301 na semana anterior.\n\nSlide 2: Gasto vs. plano\nPlanejado $50.000, gasto $48.200 (-3,6%). Ritmo do mês em 97% do plano.\n\nSlide 3: Canais principais\nMeta $22.100 gasto, 812 compras, $27,20 CPA (-22%). Google Search $18.400, 571 compras, $32,20 CPA (-9%). YouTube $7.700, 152 compras, $50,66 CPA (+4%).\n\nSlide 4: Criativos vencedores\nVídeo UGC \"Pronto para trilha em 3 camadas\": 334 compras, CTR 3,1%. Estático \"Promoção de outono, devoluções grátis\": 218 compras.\n\nSlide 5: Notas de audiência e geográficas\nDMAs do Noroeste Pacífico com aumento de 31% nas compras; mulheres de 25-34 anos agora são 41% das conversões no Meta.\n\nSlide 6: Testes em andamento\nAlvo amplo vs. interesses no Meta, dia 9 de 14, leitura em 12 de setembro. Teste de exclusão de marca na busca pausado para correção de rastreamento.\n\nSlide 7: Riscos e bloqueios\nContagem de compras GA4 e Meta divergem 11%; CPA do YouTube em alta por duas semanas seguidas.\n\nSlide 8: Plano da próxima semana\nTransferir $3.000 do YouTube para Meta UGC (responsável: Priya). Lançar duas novas variantes UGC (responsável: Sam). Fechar lacuna de marcação GA4 até quarta (responsável: Dev).",
"designStyle": "Marca Northwind Outdoor: verde floresta profundo #1F3D2B, areia #E8DCC4, branco; títulos em sans-serif geométrica e negrito; um número grande por slide; cartões de dados limpos e comparações simples em barras; margens generosas; sem fotos de banco, sem gradientes",
"aspectRatio": "16:9",
"resolution": "2K",
"page": 8,
"contentDetail": "concise",
"imageModel": "gemini-3-pro-image",
"responseLanguage": "English",
"mode": "async"
}'A resposta é { "jobId": "..." }. Consulte GET https://2slides.com/api/v1/jobs/{jobId} a cada 5 a 10 segundos até que status seja success (o PDF está em downloadUrl) ou failed. Espere alguns minutos para oito páginas 2K. Custo: 10 créditos de planejamento mais 100 por página, totalizando 810 créditos para o deck de 8 páginas.

create-pdf-slides expõe via API.
Para combinar com um slide de marca existente em vez de uma descrição textual, troque para create-like-this com referenceImageUrl apontando para uma imagem pública de um slide da marca. Corpo, custo e limites são idênticos.
Passo 4: Dois locutores com a API de apresentação em vídeo narrado
Quando o job do deck reportar success, chame generate-narration no mesmo jobId. Use mode: "multi" com dois locutores nomeados e duas das 30 vozes disponíveis; Kore e Puck são suficientemente distintas para que ouvintes acompanhem quem fala sem pista visual. includeIntro: true adiciona uma breve introdução nomeando o cliente e a semana.
curl -s https://2slides.com/api/v1/slides/generate-narration \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jobId": "<jobId do deck do passo 3>",
"mode": "multi",
"speaker1Name": "Maya",
"speaker2Name": "Theo",
"speaker1Voice": "Kore",
"speaker2Voice": "Puck",
"contentMode": "standard",
"includeIntro": true
}'O endpoint responde 202 e o job volta para processing. Consulte o mesmo jobId até retornar success novamente. A narração custa 210 créditos por página (10 para o script, 200 para o áudio), totalizando 1.680 créditos para oito slides. Para orientações sobre comprimento e ritmo do script, veja Slides narration and video best practices.
Uma comparação, pois perguntam: o site de desenvolvedores da Gamma (https://developers.gamma.app) documenta uma receita de vídeo narrado que encadeia n8n, Synthesia, ElevenLabs e sua própria API Generate, e suas chaves API exigem plano Pro. A rota 2Slides acima usa um único fornecedor e uma chave que funciona em qualquer conta, com ffmpeg do seu lado para montagem; não produz um apresentador avatar como a camada Synthesia. Divulgação: 2Slides é nosso produto.
Passo 5: Transforme o relatório semanal de marketing em vídeo com ffmpeg
Chame download-slides-pages-voices com o mesmo jobId. Ele retorna um ZIP gratuito contendo pages/page_01.png até page_08.png, voices/page_01.wav até page_08.wav, e transcript.txt com o script falado para legendas ou resumo por email.
curl -s https://2slides.com/api/v1/slides/download-slides-pages-voices \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "jobId": "<jobId do deck>" }' \
-o recap.zip && unzip -q -o recap.zip -d recapDepois, una cada PNG com seu WAV e concatene. Este comando gera um MP4 H.264 1920×1080 onde cada slide fica na tela exatamente pelo tempo da narração:
cd recap && for i in $(seq -w 1 8); do ffmpeg -y -loop 1 -i pages/page_$i.png -i voices/page_$i.wav -c:v libx264 -tune stillimage -pix_fmt yuv420p -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" -c:a aac -b:a 192k -shortest clip_$i.mp4; done && printf "file 'clip_%s.mp4'\n" $(seq -w 1 8) > list.txt && ffmpeg -y -f concat -safe 0 -i list.txt -c copy weekly-recap.mp4O concat demuxer no final está documentado na referência de formatos do ffmpeg. Para corte vertical, troque ambos os valores 1920:1080 para 1080:1920 e regenere o deck com aspectRatio: "9:16".
Sem worker com ffmpeg? Abra o mesmo job no 2Slides Workspace e use Exportar, depois Gerar Vídeo. Ele renderiza o MP4 H.264 em 1920×1080 ou 1080×1920 no navegador por 20 créditos por página (160 para um resumo de 8 slides). Isso serve para uso único; ffmpeg serve para 50 clientes toda segunda.
Passo 6: Pipeline Node.js para automatizar apresentações de relatórios de marketing
Tudo junto em um script Node 20 sem dependências além de fetch. Substitua loadMetrics e writeNarrative pela sua consulta ao warehouse e chamada ao LLM.
// weekly-recap.mjs: Node 20+, rodar no cron de segunda-feira
import { writeFile } from "node:fs/promises";
import { execFile } from "node:child_process";
import { promisify } from "node:util";
import { toUserInput } from "./narrative.mjs";
import { loadMetrics, writeNarrative } from "./your-data-layer.mjs";
const BASE = "https://2slides.com";
const headers = {
Authorization: `Bearer ${process.env.SLIDES_API_KEY}`, // só servidor
"Content-Type": "application/json",
};
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const run = promisify(execFile);
async function post(path, body) {
const res = await fetch(`${BASE}${path}`, { method: "POST", headers, body: JSON.stringify(body) });
if (!res.ok) throw new Error(`${path} -> ${res.status}: ${await res.text()}`);
return res.json();
}
async function waitForJob(jobId, everyMs = 8000) {
for (;;) {
const res = await fetch(`${BASE}/api/v1/jobs/${jobId}`, { headers });
const job = await res.json();
console.log(` job ${jobId}: ${job.status} ${job.progress ?? ""}`);
if (job.status === "success") return job;
if (job.status === "failed") throw new Error(`job ${jobId} falhou: ${job.message ?? ""}`);
await sleep(everyMs); // consulta a cada 5–10 s; jobs/{id} permite 10 req/min
}
}
export async function buildRecap(client) {
// 1) métricas -> narrativa de 8 seções
const metrics = await loadMetrics(client);
const sections = await writeNarrative(client, metrics);
// 2) deck em imagem: 10 + 100 créditos/página em 2K
const { jobId } = await post("/api/v1/slides/create-pdf-slides", {
userInput: toUserInput(client, sections),
designStyle: client.designStyle,
aspectRatio: "16:9",
resolution: "2K",
page: 8,
contentDetail: "concise",
responseLanguage: client.language ?? "English",
mode: "async",
});
const deck = await waitForJob(jobId);
console.log("deck PDF:", deck.downloadUrl);
// 3) narração com dois locutores: 210 créditos/página
await post("/api/v1/slides/generate-narration", {
jobId,
mode: "multi",
speaker1Name: "Maya",
speaker2Name: "Theo",
speaker1Voice: "Kore",
speaker2Voice: "Puck",
contentMode: "standard",
includeIntro: true,
});
await waitForJob(jobId);
// 4) PNG + WAV por página (gratuito) -> MP4 via ffmpeg
const zipRes = await fetch(`${BASE}/api/v1/slides/download-slides-pages-voices`, {
method: "POST", headers, body: JSON.stringify({ jobId }),
});
if (!zipRes.ok) throw new Error(`download falhou: ${zipRes.status}`);
const zipPath = `out/${client.slug}.zip`;
await writeFile(zipPath, Buffer.from(await zipRes.arrayBuffer()));
await run("bash", ["./stitch.sh", zipPath, `out/${client.slug}-recap.mp4`]); // o loop ffmpeg do passo 5
return { jobId, pdf: deck.downloadUrl, video: `out/${client.slug}-recap.mp4` };
}
// Processa clientes um a um: 3 POSTs por cliente mantém você abaixo de 6 req/min
const clients = JSON.parse(process.env.CLIENTS_JSON ?? "[]");
for (const client of clients) {
try {
const out = await buildRecap(client);
console.log(`feito ${client.name}`, out);
} catch (err) {
console.error(`FALHOU ${client.name}:`, err.message); // alerta, não tente repetir cegamente
}
}Cada cliente consome três requisições de escrita (deck, narração, download) mais leituras de polling em uma cota separada de 10 requisições por minuto.
Escolhendo um estilo de referência
Se descrever sua marca em designStyle não funcionar, use uma imagem de referência. A Galeria 2Slides hospeda decks reais que você pode navegar para direção ou passar para create-like-this como referenceImageUrl. São decks de referência, não saída da API: os slides abaixo vêm de um deck Adobe Creative Trends 2026 na Galeria e mostram o estilo contido e focado em dados que funciona bem em resumos semanais.


referenceImageUrl e create-like-this extrai cores, tipografia e layout dele.

Para agências, armazene uma URL de slide de referência por cliente junto à configuração de métricas, e todo deck semanal fica no sistema visual daquele cliente.
Quanto custa
Por resumo de 8 slides: 810 créditos para o deck 2K, 1.680 para narração, nada para o ZIP ou para o ffmpeg no seu worker. Pacotes de créditos vão de $5 por 2.000 créditos ($0,0025 cada) a $80 por 40.000 créditos ($0,002 cada).
| Volume | Créditos do deck | Créditos da narração | Créditos totais | USD a $0,0025 | USD a $0,002 (pacotes $80) |
|---|---|---|---|---|---|
| 1 resumo narrado | 810 | 1.680 | 2.490 | $6,23 | $4,98 |
| 20 resumos/mês (5 campanhas semanais) | 16.200 | 33.600 | 49.800 | $124,50 | $99,60 |
| 500 resumos/mês (125 clientes semanais) | 405.000 | 840.000 | 1.245.000 | n/a | $2.490 |
| 20 decks/mês, sem narração | 16.200 | 0 | 16.200 | $40,50 | $32,40 |
Duas observações. Reduzir para resolution: "1K" não economiza (100 créditos por página valem para 512px, 1K e 2K; só 4K dobra), então fique em 2K. Renderizar o MP4 no Workspace em vez de ffmpeg adiciona 160 créditos ($0,32 a $0,40) por resumo.
Fast PPT ou slides em imagem para este caso?
| Necessidade | Fast PPT generate | create-pdf-slides / create-like-this |
|---|---|---|
| Stakeholders editam o deck no PowerPoint | Sim, PPTX nativo de 1.500+ templates | Não, saída é PDF mais imagens das páginas |
| Vídeo para assistir com narração | Não, narração não disponível | Sim, generate-narration e depois MP4 |
| Custo para 8 páginas | 80 créditos (cerca de $0,20) | 810 créditos deck, 2.490 com narração |
| Tempo de resposta | Cerca de 30 segundos, sincronizado por padrão | Alguns minutos, assíncrono por padrão |
| Controle de marca | Escolha um themeId de GET /api/v1/themes/search | Texto livre em designStyle ou referenceImageUrl |
Muitas equipes usam ambos: um deck Fast PPT para o gerente de conta anotar, e o vídeo narrado para o cliente assistir no celular. Como equipes de marketing geram decks de apresentação AI em escala cobre o lado editável em profundidade.
Armadilhas comuns
- Disparar 50 clientes em paralelo. Cada endpoint de escrita permite 6 requisições por minuto por chave. Enfileire clientes e processe sequencialmente, ou distribua envios ao longo da hora.
- Chamar
generate-narrationem um job Fast PPT. Narração só aceita jobs decreate-pdf-slidesoucreate-like-this; um jobgenerateé rejeitado e não pode ser convertido. - Colocar a chave API no dashboard do navegador. Mantenha
SLIDES_API_KEYno servidor ou no cofre de segredos do agendador. Se uma página para o cliente precisar do vídeo, sirva o MP4 que você já gerou. - Usar
page: 0quando quer exatamente oito slides.0significa detectar o número de páginas automaticamente. Usepage: 8para que o vídeo semanal tenha sempre a mesma forma e duração. - Passar um código de idioma.
responseLanguagerecebe um nome como"Spanish", não"es". Armazene o nome na configuração de cada cliente. - Enviar a exportação bruta de métricas. Um CSV de 3.000 linhas colado em
userInputgera um deck confuso. Resuma primeiro, entregue uma narrativa de 400 a 500 palavras e mantenha o CSV como anexo.
Perguntas Frequentes
Quanto custa automatizar um relatório semanal de marketing como vídeo narrado?
Um resumo narrado de 8 slides custa 2.490 créditos, entre $4,98 e $6,23 dependendo do pacote de créditos. Isso se divide em 810 créditos para o deck 2K em imagem (10 de planejamento mais 100 por página) e 1.680 créditos para narração com dois locutores (210 por página). O download dos PNG e WAV por página é gratuito, e a montagem com ffmpeg na sua máquina não adiciona custo.
Uma API de narração por voz AI pode usar duas vozes diferentes em um deck?
Sim. generate-narration com mode: "multi" recebe speaker1Name, speaker2Name, speaker1Voice e speaker2Voice, alternando os dois locutores pelos slides. São 30 vozes disponíveis, incluindo Kore, Puck, Zephyr, Charon, Aoede e Leda. Use mode: "single" com speakerName e voice quando um narrador for suficiente, pelo mesmo custo de 210 créditos por página.
Quais endpoints uma pipeline de apresentação em vídeo narrado precisa?
Três, na ordem: POST /api/v1/slides/create-pdf-slides (ou create-like-this com referenceImageUrl) para criar o deck, POST /api/v1/slides/generate-narration no jobId resultante para adicionar áudio, e POST /api/v1/slides/download-slides-pages-voices para baixar os pares PNG e WAV. Consulte GET /api/v1/jobs/{jobId} a cada 5 a 10 segundos entre etapas. O generate do Fast PPT não faz parte dessa cadeia porque não pode ser narrado.
Posso entregar o mesmo relatório semanal em vários idiomas?
Sim. Defina responseLanguage em create-pdf-slides para um nome de idioma como "Spanish" ou "Japanese" e o texto dos slides será escrito nesse idioma; a narração segue o conteúdo do slide. Mais de 20 idiomas são suportados. Cada idioma é um job de deck separado, então um cliente que quer vídeos em inglês e espanhol paga por duas execuções de 2.490 créditos.
Quanto tempo o pipeline de segunda-feira leva por cliente?
Conte alguns minutos por cliente: um deck 2K de 8 páginas leva alguns minutos para renderizar, a narração adiciona mais alguns, e a montagem com ffmpeg geralmente fica abaixo de um minuto para oito clipes. Consultas a cada 5 a 10 segundos e processamento sequencial respeitam o limite de 6 requisições por minuto, e uma execução para 50 clientes iniciada às 06:00 normalmente termina antes da primeira reunião.
Próximos passos
- Obtenha uma chave API em 2slides.com/api. Os 500 créditos grátis cobrem um resumo narrado completo para validar o pipeline antes de comprar um pacote, e então automatize apresentações de relatórios de marketing para todos os clientes no mesmo cronograma.
- Explore as outras receitas por equipe no post central, Casos de uso da API de apresentação AI por equipe.
- A versão financeira deste fluxo, com demonstrações de fim de mês em vez de métricas de anúncios, está em Automatize apresentações de relatórios financeiros com narração por voz AI; para regras de script e ritmo, leia Slides narration and video best practices.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free