2Slides Logo
Automatizza le Presentazioni dei Report di Marketing: Deck to Video API (2026)
2Slides Team
18 min read

Automatizza le Presentazioni dei Report di Marketing: Deck to Video API (2026)

Per automatizzare le presentazioni dei report di marketing, esegui un cron del lunedì che estrae le metriche delle campagne, chiede a un LLM un racconto di 8 slide e chiama tre endpoint 2Slides: create-pdf-slides per un deck di riepilogo in formato immagine 16:9, generate-narration in modalità multi per una traccia a due voci, e download-slides-pages-voices per file PNG e WAV per pagina che ffmpeg unisce in un MP4. Un deck 2K di 8 pagine costa 810 crediti (circa 2$), la narrazione aggiunge 1.680 crediti (circa 4,20$), quindi un riepilogo settimanale narrato si aggira intorno ai 6$ per cliente. Creato per marketing ops, growth engineer e agenzie.

Punti chiave

  • Un unico job schedulato sostituisce il rituale del lunedì: esportazione metriche, deck di riepilogo 8 slide, voiceover a due speaker e MP4 1920×1080.
  • Tre endpoint 2Slides fanno il lavoro: create-pdf-slides (10 + 100 crediti per pagina a 2K), generate-narration (210 crediti per pagina) e download-slides-pages-voices (gratuito).
  • Un riepilogo narrato di 8 slide costa 2.490 crediti, circa 5-6,25$ a seconda del pacchetto; solo il deck costa 810 crediti.
  • Ogni endpoint di scrittura è limitato a 6 richieste al minuto per chiave, quindi un run da 50 clienti va messo in coda, non lanciato in parallelo.
  • Fast PPT (generate) non può essere narrato; per il video, parti da create-pdf-slides o create-like-this.

A chi è rivolto

Responsabili marketing ops che ricostruiscono lo stesso deck di riepilogo ogni lunedì, growth engineer che hanno già le metriche in un data warehouse, e agenzie che devono fornire aggiornamenti settimanali a 20, 50 o più clienti. Il problema è lo stesso: i numeri sono pronti alle 6 del mattino, il deck è pronto a pranzo, e metà degli stakeholder non lo apre mai.

Non usare questa ricetta se gli stakeholder devono modificare le slide in PowerPoint dopo; la pipeline basata su immagini produce un PDF finito più immagini per pagina, non un PPTX nativo. Per deck settimanali modificabili, il percorso Fast PPT in Automatizza report settimanali con Zapier e 2Slides è più adatto.

Il flusso di lavoro in sintesi

PassoStrumentoCosa succedeEndpoint 2Slides / crediti
1. TriggerCron (GitHub Actions, Cloud Scheduler, cron su VM)Scatta lunedì alle 06:00 nel fuso orario del clientenessuno
2. Estrai metricheGoogle Ads, Meta, esportazione GA4 o query SQL su warehouseUn oggetto JSON per cliente: spesa, piano, conversioni, CPA, canali top, creatività topnessuno
3. Scrivi il raccontoIl tuo LLM preferitoRestituisce 8 sezioni titolate: risultato principale, spesa vs piano, canali top, creatività vincenti, note audience, test, rischi, piano settimana prossimanessuno
4. Genera il deck2SlidesDeck 16:9 a 2K con design a immagine e designStyle del tuo brandPOST /api/v1/slides/create-pdf-slides, 810 crediti per 8 pagine
5. Aggiungi narrazione2SlidesDue speaker si alternano nel deckPOST /api/v1/slides/generate-narration, 1.680 crediti per 8 pagine
6. Scarica asset2SlidesZIP con pages/page_01.png, voices/page_01.wav e transcript.txtPOST /api/v1/slides/download-slides-pages-voices, gratuito
7. Assembla e consegnaffmpeg sul tuo worker o Workspace ExportMP4 H.264 postato su Slack, email o portale clienteffmpeg: gratuito; Workspace Generate Video: 20 crediti per pagina

Ogni chiamata 2Slides usa lo stesso header Authorization: Bearer $SLIDES_API_KEY, e ogni job asincrono va interrogato con GET /api/v1/jobs/{jobId}.

Passo 1: Ottieni una chiave API e configura lo scheduler

Crea una chiave su 2slides.com/api nella scheda API Keys. I nuovi account ricevono 500 crediti gratuiti senza abbonamento, sufficienti per eseguire questa pipeline una volta completa prima di acquistare un pacchetto. Conserva la chiave come SLIDES_API_KEY nello store segreto del tuo scheduler, mai in un browser o notebook condiviso, e verifica con l’endpoint echo prima di schedulare.

curl -s https://2slides.com/api/v1/echo \ -H "Authorization: Bearer $SLIDES_API_KEY"

Riferimento API 2Slides con autenticazione Bearer
Figura 1: Il riferimento API su 2slides.com/api elenca tutti gli endpoint, l’header Bearer e i costi in crediti.

Per il trigger, un workflow GitHub Actions con on: schedule: - cron: "0 6 * * 1" è sufficiente per pochi clienti. Per 50 o più, metti i clienti in coda e lascia che un worker li processi uno alla volta, così resti sotto il limite di 6 richieste al minuto con margine per retry.

Passo 2: Estrai le metriche e lascia che un LLM scriva il racconto di 8 slide

L’API 2Slides non sa cosa dica un buon riepilogo settimanale; quella parte è tua e determina la qualità del deck. Estrai i numeri della settimana scorsa dalle tue piattaforme pubblicitarie o dal warehouse in un oggetto JSON piatto per cliente, poi chiedi al tuo LLM di restituire esattamente otto sezioni titolate:

  1. Risultato principale: un numero, una frase ("CPA giù del 18% settimana su settimana a spesa stabile").
  2. Spesa vs piano: reale, pianificata, scostamento, ritmo mensile.
  3. Canali top: tre canali con spesa, conversioni, CPA e variazione.
  4. Creatività vincenti: due o tre annunci con conversioni migliori e perché.
  5. Note audience e geografiche: cosa è cambiato.
  6. Test in corso: ipotesi, stato, data lettura.
  7. Rischi e ostacoli: limiti budget, lacune tracking, stagionalità.
  8. Piano settimana prossima: tre punti con responsabili.

Chiedi frasi semplici con numeri in linea e meno di 60 parole per sezione. create-pdf-slides considera il testo come fonte di verità per copy e layout, quindi un racconto pulito di 400-500 parole produce un deck più compatto di un dump di 3.000 parole di metriche.

// narrative.mjs: modella l’output LLM prima che arrivi a 2Slides export function toUserInput(client, sections) { const header = `Weekly paid media recap for ${client.name}, week of ${client.week}. ` + `Audience: ${client.stakeholders}. Tone: direct, numbers first.`; const body = sections .map((s, i) => `Slide ${i + 1}: ${s.title}\n${s.body}`) .join("\n\n"); return `${header}\n\n${body}`; }

Passo 3: Automazione del deck report campagna con create-pdf-slides

Invia il racconto a create-pdf-slides. Imposta page: 8 per far corrispondere il numero di slide alle otto sezioni, aspectRatio: "16:9" per schermi, e resolution: "2K" così i PNG reggono a 1920×1080 senza upscaling. designStyle è dove vive il tuo brand: colori, stile tipografico, regole di layout e cosa evitare.

curl -s https://2slides.com/api/v1/slides/create-pdf-slides \ -H "Authorization: Bearer $SLIDES_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Weekly paid media recap for Northwind Outdoor, week of 2026-09-01 to 2026-09-07. Audience: CMO and ecommerce lead. Tone: direct, numbers first.\n\nSlide 1: Headline result\nCPA fell 18% to $31.40 at flat spend of $48,200; 1,535 purchases vs. 1,301 the prior week.\n\nSlide 2: Spend vs. plan\nPlanned $50,000, spent $48,200 (-3.6%). Month pacing at 97% of plan.\n\nSlide 3: Top channels\nMeta $22,100 spend, 812 purchases, $27.20 CPA (-22%). Google Search $18,400, 571 purchases, $32.20 CPA (-9%). YouTube $7,700, 152 purchases, $50.66 CPA (+4%).\n\nSlide 4: Creative winners\n\"Trail-ready in 3 layers\" UGC video: 334 purchases, 3.1% CTR. \"Fall sale, free returns\" static: 218 purchases.\n\nSlide 5: Audience and geo notes\nPacific Northwest DMAs up 31% on purchases; 25-34 women now 41% of Meta conversions.\n\nSlide 6: Tests running\nBroad vs. interest targeting on Meta, day 9 of 14, read on Sept 12. Search brand exclusion test paused for tracking fix.\n\nSlide 7: Risks and blockers\nGA4 and Meta purchase counts diverge by 11%; YouTube CPA trending up two weeks straight.\n\nSlide 8: Next week plan\nShift $3,000 from YouTube to Meta UGC (owner: Priya). Launch two new UGC variants (owner: Sam). Close the GA4 tagging gap by Wednesday (owner: Dev).", "designStyle": "Northwind Outdoor brand: deep forest green #1F3D2B, sand #E8DCC4, white; bold geometric sans-serif headlines; one large number per slide; clean data cards and simple bar comparisons; generous margins; no stock photography, no gradients", "aspectRatio": "16:9", "resolution": "2K", "page": 8, "contentDetail": "concise", "imageModel": "gemini-3-pro-image", "responseLanguage": "English", "mode": "async" }'

La risposta è { "jobId": "..." }. Interroga GET https://2slides.com/api/v1/jobs/{jobId} ogni 5-10 secondi finché status è success (il PDF è a downloadUrl) o failed. Aspettati qualche minuto per otto pagine 2K. Costo: 10 crediti di pianificazione più 100 per pagina, quindi 810 crediti per il deck di 8 pagine.

Slide create con pipeline Nano Banana di 2Slides, dietro create-pdf-slides
Figura 2: La pipeline basata su immagini dietro Nano Banana presentation slides è ciò che create-pdf-slides espone via API.

Per abbinare uno slide brand esistente invece di una descrizione testuale, usa create-like-this con referenceImageUrl che punta a un’immagine pubblica di uno slide on-brand. Corpo, costi e limiti sono identici.

Passo 4: Due speaker con l’API di presentazione video narrata

Quando il job del deck riporta success, chiama generate-narration sullo stesso jobId. Usa mode: "multi" con due speaker nominati e due delle 30 voci disponibili; Kore e Puck sono abbastanza distanti da permettere di seguire chi parla senza indizi visivi. includeIntro: true aggiunge un breve opener che nomina cliente e settimana.

curl -s https://2slides.com/api/v1/slides/generate-narration \ -H "Authorization: Bearer $SLIDES_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "jobId": "<deck jobId from step 3>", "mode": "multi", "speaker1Name": "Maya", "speaker2Name": "Theo", "speaker1Voice": "Kore", "speaker2Voice": "Puck", "contentMode": "standard", "includeIntro": true }'

L’endpoint risponde con 202 e il job torna in processing. Interroga lo stesso jobId finché torna success. La narrazione costa 210 crediti per pagina (10 per lo script, 200 per l’audio), quindi 1.680 crediti per otto slide. Per lunghezza script e ritmo, vedi Slides narration and video best practices.

Un confronto, perché viene chiesto: il sito sviluppatori di Gamma (https://developers.gamma.app) documenta una ricetta video narrata che concatena n8n, Synthesia, ElevenLabs e la sua Generate API, e le sue chiavi API richiedono il piano Pro. La strada 2Slides sopra usa un solo vendor e una chiave che funziona su qualsiasi account, con ffmpeg da parte tua per l’assemblaggio; non produce un avatar presentatore come fa un layer Synthesia. Disclosure: 2Slides è il nostro prodotto.

Passo 5: Trasforma il report marketing settimanale in video con ffmpeg

Chiama download-slides-pages-voices con lo stesso jobId. Restituisce uno ZIP gratuito contenente pages/page_01.png fino a page_08.png, voices/page_01.wav fino a page_08.wav e transcript.txt con lo script parlato per didascalie o riepilogo 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": "<deck jobId>" }' \ -o recap.zip && unzip -q -o recap.zip -d recap

Poi unisci ogni PNG al suo WAV e concatena. Questa one-liner produce un MP4 H.264 1920×1080 dove ogni slide resta a schermo esattamente quanto dura la narrazione:

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.mp4

Il concat demuxer finale è documentato in ffmpeg formats reference. Per un taglio verticale, cambia entrambi i valori 1920:1080 in 1080:1920 e rigenera il deck con aspectRatio: "9:16".

Nessun worker con ffmpeg? Apri lo stesso job nel 2Slides Workspace e usa Export, poi Generate Video. Renderizza l’MP4 H.264 a 1920×1080 o 1080×1920 nel browser per 20 crediti a pagina (160 per un riepilogo 8 slide). Adatto per un caso singolo; ffmpeg per 50 clienti ogni lunedì.

Passo 6: Pipeline Node.js per automatizzare le presentazioni dei report marketing

Il tutto in uno script Node 20 senza dipendenze oltre a fetch. Sostituisci loadMetrics e writeNarrative con la tua query warehouse e chiamata LLM.

// weekly-recap.mjs: Node 20+, esegui dal cron del lunedì 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}`, // solo server-side "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} failed: ${job.message ?? ""}`); await sleep(everyMs); // poll ogni 5–10 s; jobs/{id} consente 10 req/min } } export async function buildRecap(client) { // 1) metriche -> racconto 8 sezioni const metrics = await loadMetrics(client); const sections = await writeNarrative(client, metrics); // 2) deck image-designed: 10 + 100 crediti/pagina a 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) narrazione due speaker: 210 crediti/pagina 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 per pagina (gratis) -> MP4 con 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 failed: ${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`]); // il loop ffmpeg del passo 5 return { jobId, pdf: deck.downloadUrl, video: `out/${client.slug}-recap.mp4` }; } // Processa i clienti uno alla volta: 3 POST per cliente ti mantiene sotto 6 req/min const clients = JSON.parse(process.env.CLIENTS_JSON ?? "[]"); for (const client of clients) { try { const out = await buildRecap(client); console.log(`done ${client.name}`, out); } catch (err) { console.error(`FAILED ${client.name}:`, err.message); // alert, non retry automatico } }

Ogni cliente costa tre richieste di scrittura (deck, narrazione, download) più polling di lettura con un limite separato di 10 richieste al minuto.

Scegliere uno stile di riferimento

Se descrivere il brand in designStyle non funziona, usa un’immagine di riferimento. La 2Slides Gallery ospita deck reali che puoi sfogliare per ispirazione o passare a create-like-this come referenceImageUrl. Sono deck di riferimento, non output API: le slide sotto provengono da un deck Adobe Creative Trends 2026 nella Gallery e mostrano uno stile sobrio e orientato ai dati, ideale per un riepilogo settimanale.

Deck di riferimento Adobe Creative Trends 2026 dalla 2Slides Gallery, riferimento stile per deck marketing
Figura 3: Slide di copertina del deck Adobe Creative Trends 2026 nella 2Slides Gallery.

Deck di riferimento Adobe Creative Trends 2026 dalla 2Slides Gallery, riferimento stile per deck marketing
Figura 4: Slide interna dello stesso deck in Gallery. Passa una slide così come referenceImageUrl e create-like-this ne ricava colori, tipografia e layout.

2Slides Gallery di deck slide pronti per il download
Figura 5: La 2Slides Gallery. Apri un deck e copia l’URL immagine della slide da cui vuoi ereditare lo stile.

Per le agenzie, conserva un URL slide di riferimento per cliente accanto alla configurazione metriche, così ogni deck del lunedì resta nel sistema visivo del cliente.

Quanto costa

Per un riepilogo di 8 slide: 810 crediti per il deck 2K, 1.680 per la narrazione, nulla per lo ZIP o ffmpeg sul tuo worker. I pacchetti crediti vanno da 5$ per 2.000 crediti (0,0025$ ciascuno) a 80$ per 40.000 crediti (0,002$ ciascuno).

VolumeCrediti deckCrediti narrazioneCrediti totaliUSD a $0.0025USD a $0.002 (pacchetti $80)
1 riepilogo narrato8101.6802.490$6.23$4.98
20 riepiloghi/mese (5 campagne settimanali)16.20033.60049.800$124.50$99.60
500 riepiloghi/mese (125 clienti settimanali)405.000840.0001.245.000n/a$2.490
20 deck/mese, senza narrazione16.200016.200$40.50$32.40

Due note. Passare a resolution: "1K" non risparmia nulla (100 crediti per pagina valgono per 512px, 1K e 2K; solo 4K raddoppia), quindi resta a 2K. Renderizzare l’MP4 nel Workspace invece che con ffmpeg aggiunge 160 crediti (0,32$-0,40$) per riepilogo.

Fast PPT o slide image-designed per questo caso?

NecessitàFast PPT generatecreate-pdf-slides / create-like-this
Stakeholder modificano il deck in PowerPointSì, PPTX nativo da 1.500+ templateNo, output PDF più immagini per pagina
Video da guardare con voiceoverNo, narrazione non disponibileSì, generate-narration poi MP4
Costo per 8 pagine80 crediti (circa 0,20$)810 crediti deck, 2.490 con narrazione
Tempi di esecuzioneCirca 30 secondi, sync di defaultPochi minuti, async di default
Controllo brandScegli un themeId da GET /api/v1/themes/searchTesto libero designStyle o referenceImageUrl

Molti team usano entrambi: un deck Fast PPT per l’account manager che lo annota, e il video narrato per il cliente che guarda da telefono. Come i team marketing generano deck AI a scala approfondisce il lato modificabile.

Errori comuni

  • Lanciare 50 clienti in parallelo. Ogni endpoint di scrittura consente 6 richieste al minuto per chiave. Metti i clienti in coda e processali uno alla volta, o distribuisci le chiamate nell’ora.
  • Chiamare generate-narration su un job Fast PPT. La narrazione accetta solo job da create-pdf-slides o create-like-this; un job generate viene rifiutato e non può essere convertito.
  • Mettere la chiave API in un dashboard browser. Tieni SLIDES_API_KEY sul server o nello store segreto dello scheduler. Se una pagina client deve mostrare il video, servi l’MP4 già renderizzato.
  • Usare page: 0 quando vuoi esattamente otto slide. 0 significa auto-detect del numero di pagine. Imposta page: 8 così ogni video settimanale ha forma e durata costante.
  • Passare un codice lingua. responseLanguage prende un nome come "Spanish", non "es". Conserva il nome nella configurazione di ogni cliente.
  • Inviare l’esportazione raw delle metriche. Un CSV di 3.000 righe incollato in userInput produce un deck confuso. Riassumi prima, passa un racconto di 400-500 parole e tieni il CSV come allegato.

Domande Frequenti

Quanto costa automatizzare un report marketing settimanale come video narrato?

Un riepilogo narrato di 8 slide costa 2.490 crediti, tra 4,98$ e 6,23$ a seconda del pacchetto. Si scompone in 810 crediti per il deck 2K image-designed (10 di pianificazione più 100 per pagina) e 1.680 crediti per la narrazione a due speaker (210 per pagina). Il download PNG e WAV per pagina è gratuito, e l’assemblaggio con ffmpeg sulla tua macchina non costa nulla.

Un’API di voiceover AI per slide può usare due voci diverse in un deck?

Sì. generate-narration con mode: "multi" prende speaker1Name, speaker2Name, speaker1Voice e speaker2Voice, e alterna i due speaker nelle slide. Ci sono 30 voci disponibili, tra cui Kore, Puck, Zephyr, Charon, Aoede e Leda. Usa mode: "single" con speakerName e voice quando basta un narratore, sempre a 210 crediti per pagina.

Quali endpoint servono per una pipeline API di presentazione video narrata?

Tre, in ordine: POST /api/v1/slides/create-pdf-slides (o create-like-this con referenceImageUrl) per disegnare il deck, POST /api/v1/slides/generate-narration sul jobId risultante per aggiungere audio, e POST /api/v1/slides/download-slides-pages-voices per scaricare PNG e WAV. Interroga GET /api/v1/jobs/{jobId} ogni 5-10 secondi tra i passaggi. Il generate di Fast PPT non fa parte di questa catena perché non può essere narrato.

Posso consegnare lo stesso report settimanale in più lingue?

Sì. Imposta responseLanguage su create-pdf-slides con un nome lingua come "Spanish" o "Japanese" e il testo delle slide sarà scritto in quella lingua; la narrazione segue il contenuto. Sono supportate oltre 20 lingue. Ogni lingua è un job deck separato, quindi un cliente che vuole video in inglese e spagnolo paga due run da 2.490 crediti.

Quanto tempo impiega la pipeline del lunedì per cliente?

Conta qualche minuto per cliente: un deck 2K di 8 pagine richiede qualche minuto di rendering, la narrazione qualche altro, e l’assemblaggio ffmpeg di solito meno di un minuto per otto clip. Interroga ogni 5-10 secondi e processa i clienti uno alla volta per rispettare il limite di 6 richieste al minuto; un run da 50 clienti iniziato alle 06:00 di solito finisce prima del primo stand-up.

Prossimi passi

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free