

Reportistica clienti automatizzata: presentazioni per agenzie (2026)
La reportistica automatizzata per le agenzie si articola in quattro fasi: esportazione delle metriche del mese precedente da GA4, Google Ads, Meta e Search Console; calcolo di ogni delta tramite codice proprietario; utilizzo di un LLM per narrare i dati elaborati; invio del brief all'API di 2Slides. Fast PPT restituisce un file PPTX modificabile basato sul modello scelto, al costo di 10 crediti per pagina. Una presentazione mensile di 12 pagine costa quindi 120 crediti (circa 0,30 $ con il pacchetto starter). Un account manager revisiona ogni deck prima dell'invio al cliente.
Punti chiave
- 60 clienti × un deck mensile Fast PPT da 12 pagine = 7.200 crediti. Rientra nel piano Pro da 12,50 $/mese (10.000 crediti), ovvero circa 0,15 $ a presentazione.
- Un video recap di 6 pagine con narrazione a due voci (percorso basato su immagini) costa 1.870 crediti (610 per le slide + 1.260 per la narrazione), circa 3,74 $ a cliente con la tariffa del pacchetto da 80 $.
- I numeri vengono calcolati via codice, mai dall'LLM; un sistema di controllo scarta ogni narrazione che contenga numeri non presenti nei dati calcolati.
- Il limite di generazione è di 6 richieste al minuto per chiave, quindi l'invio di 60 deck richiede circa 10 minuti. Pianifica l'esecuzione il 2 del mese con cron, n8n, Zapier o Make.
- Invia solo metriche aggregate (sessioni, spesa, CPA, clic), mai liste di clienti o dati personali, e includi il trattamento nel DPA del cliente.
A chi si rivolge e quale problema risolve
Gestisci o lavori in un'agenzia SEO, PPC, social o full-service con un portafoglio tra i 20 e i 200 clienti a canone mensile, e ognuno di loro si aspetta una presentazione di reportistica. Probabilmente utilizzi già delle dashboard: report di Looker Studio collegati a GA4 e Google Ads, o piattaforme dedicate come AgencyAnalytics, DashThis o Whatagraph. Questi strumenti sono ottimi per il loro scopo. AgencyAnalytics, ad esempio, offre report automatizzati white-label, portali clienti brandizzati e una funzione "Ask AI" per individuare i trend tra gli account.
Il punto critico è la riunione di revisione mensile. Una dashboard fornisce dati; un meeting ha bisogno di una storia: cosa è successo, perché, cosa hai fatto al riguardo e quali sono i prossimi passi. Così, nei primi giorni lavorativi di ogni mese, gli account manager catturano screenshot dei grafici, li incollano nel deck del mese precedente, riscrivono i commenti e aggiornano le date. Con 60 clienti e una media di 60-90 minuti a deck, si perdono dalle 60 alle 90 ore di tempo senior ogni mese solo per il layout.
Questa procedura automatizza il deck, non il pensiero. Il tuo codice genera i fatti, un LLM stende una bozza del commento, 2Slides crea il layout e l'account manager dedica 10 minuti a rifinire una bozza pronta invece di un'ora a costruirla da zero.
Non utilizzare questo metodo se i tuoi clienti desiderano solo il link alla dashboard live, o se il deck richiede dati grezzi a livello di singolo utente per essere efficace.
Il flusso di lavoro in sintesi
| Fase | Strumento | Cosa succede | Endpoint 2Slides / crediti |
|---|---|---|---|
| 1. Trigger | cron, n8n, Zapier o Make | Si attiva il 2 del mese, dopo il consolidamento dei dati sulle piattaforme | nessuno |
| 2. Estrazione metriche | API di GA4, Google Ads, Meta Insights, Search Console (o il tuo data warehouse) | Un JSON per cliente: mese corrente, mese precedente, stesso mese dell'anno scorso | nessuno |
| 3. Calcolo delta | Il tuo codice | Variazioni MoM e YoY, pacing rispetto al budget, principali scostamenti | nessuno |
| 4. Scrittura narrazione | Qualsiasi LLM, vincolato ai dati calcolati | Da 8 a 12 sezioni con titolo, numeri copiati testualmente | nessuno |
| 5. Generazione deck | 2Slides Fast PPT, su un modello white label | PPTX modificabile per cliente | themes/search (gratis), slides/generate (10/pagina) |
| 6. Versione opzionale (design o narrazione) | Percorso "image-designed" di 2Slides | Deck con il brand del cliente, video MP4 recap a due voci | create-like-this (10 + 100/pagina a 2K), generate-narration (210/pagina) |
| 7. Revisione e invio | Account manager | Modifica, aggiunta logo se necessario, invio o presentazione | nessuno |
Fase 1: Estrai le metriche che contano davvero
Seleziona i 15-25 numeri che compaiono in ogni report mensile, non tutto ciò che le piattaforme mettono a disposizione. Un mix tipico include:
- SEO: sessioni organiche ed eventi chiave dalla GA4 Data API; clic, impressioni, CTR e posizione media dal metodo Search Console searchAnalytics.query; le 5 query o pagine con i maggiori incrementi o cali.
- PPC: spesa, conversioni, CPA, ROAS e quota impressioni per tipo di campagna dall'interfaccia di reportistica della Google Ads API.
- Social a pagamento: spesa, risultati, costo per risultato e i tre annunci migliori dall'endpoint Meta Marketing API Insights.
- Contesto agenzia: budget per il mese, lavoro completato (dal tuo tool di gestione progetti), test in corso, piano per il mese successivo.
Se centralizzi già i dati in BigQuery, Supermetrics o tramite l'esportazione di una piattaforma di reportistica, leggili direttamente da lì. Al processo di creazione del deck non importa l'origine dei numeri, purché ogni cliente corrisponda a un oggetto JSON piatto con i valori correnti, precedenti e dell'anno scorso.
Fase 2: Calcola i delta via codice, poi lascia che l'LLM scriva il commento
Questa è la regola d'oro per rendere affidabili i report automatizzati: l'LLM non deve mai fare calcoli aritmetici. Il tuo codice calcola le variazioni mese su mese (MoM) e anno su anno (YoY), il pacing e i ranking, fornendo al modello una lista di fatti pronti come Organic clicks: 18,420 (+12.4% MoM, +31.0% YoY). L'unico compito del modello è raggruppare questi fatti in sezioni e spiegarli in linguaggio naturale: "I clic organici sono cresciuti del 12,4% rispetto al mese scorso, spinti dalle nuove guide ai prezzi".
Due controlli di sicurezza rendono questo processo affidabile per 60 clienti:
- Verifica numerica. Estrai ogni numero dal testo prodotto dall'LLM e scarta la narrazione se un numero non compare nei dati calcolati. Un cliente scartato riceverà un deck di soli fatti, che è comunque utile.
- Controllo del nesso causale in revisione. Il modello potrebbe usare espressioni come "spinto da" quando rileva solo una correlazione. Gli account manager sono le figure giuste per correggere queste sfumature, motivo per cui la revisione rimane obbligatoria.
Un prompt efficace per la fase narrativa:
You are writing commentary for a monthly SEO and PPC client report for {client_name}.
Use ONLY the facts below. Copy every number exactly as written. Do not calculate,
round or estimate anything new. If a fact has no obvious explanation, describe it
without inventing a cause.
Return 10 sections, each with a title and 2-3 sentences (max 50 words):
1. Month at a glance 2. Organic search 3. Top organic movers 4. Paid search
5. Paid social 6. Conversions and revenue 7. Work completed 8. Tests and learnings
9. Risks and watch items 10. Next month plan
FACTS:
{facts}
WORK COMPLETED: {work_log}
NEXT MONTH PLAN: {plan}Step 3: Scegli un modello white label una sola volta
In questo contesto, "white label" significa che il cliente riceve un report con il brand della tua agenzia (o il proprio), senza alcun marchio di prodotti terzi. Con Fast PPT, la presentazione è un file PPTX nativo creato a partire dal modello che scegli e il testo viene inserito in normali caselle di testo PowerPoint. Restano due aspetti che spetta a te verificare, poiché questa guida non può garantire risultati che non può visualizzare nel tuo account:
- Controlla il file scaricato. Apri un file PPTX generato, esamina ogni slide, lo schema diapositiva e i layout, i piè di pagina e le proprietà in File > Informazioni (autore, società) prima di mettere in produzione la pipeline. Correggi nel tuo modello o in una fase di post-elaborazione tutto ciò che non vuoi che il cliente veda.
- I loghi fanno parte della post-elaborazione. Fast PPT compila i segnaposto di testo di un modello; non accetta il logo di un cliente tramite API. Puoi mantenere un modello neutro e lasciare che l'account manager inserisca il logo nella slide del titolo, oppure aggiungerlo automaticamente con python-pptx dopo il download.
Trova un modello con themes/search e salva il relativo themeId per ogni cliente, così che uno studio legale riceva un layout sobrio e un brand DTC qualcosa di più vivace:
curl -s "https://2slides.com/api/v1/themes/search?query=business%20report&limit=5" \
-H "Authorization: Bearer $SLIDES_API_KEY"Prova anche query=marketing, query=minimal e query=data. La libreria dei Modelli è la versione visiva della stessa ricerca; sfogliala una volta, poi fissa gli ID nella tua configurazione.

Figura 1: La libreria dei modelli. Ogni modello ha un themeId; scegline uno per ogni fascia di clientela e riutilizzalo ogni mese.
Step 4: Lo script Node.js (metriche in entrata, cartella di revisione in uscita)
Lo script seguente legge clients.json (un oggetto per cliente con metriche, themeId e lingua), calcola i delta, interroga il tuo LLM tramite una funzione writeNarrative() fornita da te, esegue il controllo dei numeri, genera un deck Fast PPT per cliente e salva ogni PPTX in review/<month>/ con una riga review.csv. Questo script non invia nulla al cliente. È sufficiente Node 18+; utilizza la funzione integrata fetch.
// monthly-decks.mjs — node monthly-decks.mjs 2026-09
import fs from "node:fs/promises";
import { writeNarrative } from "./llm.mjs"; // your LLM call, returns a string
const API = "https://2slides.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SLIDES_API_KEY}`, "Content-Type": "application/json" };
const month = process.argv[2];
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const pct = (cur, prev) => (prev ? (((cur - prev) / prev) * 100).toFixed(1) : "n/a");
const fmt = (n) => Number(n).toLocaleString("en-US");
function buildFacts(c) {
return Object.entries(c.metrics).map(([name, m]) =>
`${name}: ${fmt(m.cur)} (${pct(m.cur, m.prev)}% MoM, ${pct(m.cur, m.yoy)}% YoY)`
);
}
// Every number in the LLM text must already exist in the facts (section numbers 1-12 excepted)
function numbersOk(text, sourceText) {
const nums = (t) => (t.match(/\d[\d,.]*\d|\d/g) ?? []).map((n) => n.replace(/[.,]$/, ""));
const allowed = new Set(nums(sourceText));
return nums(text).every((n) => allowed.has(n) || Number(n) <= 12);
}
async function generate(c, userInput) {
const r = await fetch(`${API}/slides/generate`, {
method: "POST", headers: H,
body: JSON.stringify({ userInput, themeId: c.themeId, responseLanguage: c.language ?? "English", mode: "async" }),
});
if (!r.ok) throw new Error(`generate ${r.status}`);
return (await r.json()).jobId;
}
async function waitFor(jobId) {
for (;;) {
await sleep(8000); // stays under 10 polls/min
const job = await (await fetch(`${API}/jobs/${jobId}`, { headers: H })).json();
if (job.status === "success") return job.downloadUrl;
if (job.status === "failed") throw new Error(`job ${jobId} failed`);
}
}
const clients = JSON.parse(await fs.readFile("clients.json", "utf8"));
await fs.mkdir(`review/${month}`, { recursive: true });
for (const c of clients) {
const facts = buildFacts(c);
let story = await writeNarrative(c.name, facts, c.workLog, c.plan);
const source = [...facts, c.workLog, c.plan].join("\n");
if (!numbersOk(story, source)) story = facts.join("\n"); // facts-only fallback
const userInput = `Monthly SEO and PPC report for ${c.name}, ${month}. ` +
`Audience: ${c.audience}. One key number per slide, plain language.\n\n${story}`;
const jobId = await generate(c, userInput);
const url = await waitFor(jobId);
const file = `review/${month}/${c.slug}_${jobId}.pptx`;
await fs.writeFile(file, Buffer.from(await (await fetch(url)).arrayBuffer()));
await fs.appendFile(`review/${month}/review.csv`, `${c.slug},${c.accountManager},${jobId},${file},pending\n`);
await sleep(10000); // 6 generate requests per minute per key
}Per 60 clienti, l'esecuzione sequenziale richiede circa 40-60 minuti, incluso il polling, il che è perfetto per un processo notturno. Se desideri maggiore velocità, invia prima tutti i job (uno ogni 10 secondi), salva i jobId e poi interroga il set in sospeso; la guida alla generazione batch illustra questo schema.
Ecco come appare in pratica una presentazione finita di 12 pagine per un cliente SaaS B2B. Dati sorgente: esportazioni di settembre che mostrano 18.420 clic organici (+12,4% MoM), spesa Google Ads di $14.300 con un CPA di $96 (-8,1% MoM), spesa LinkedIn di $4.200 con CPL in aumento del 22%, 14 post sul blog e riscrittura della pagina prezzi completata. Output: una slide del titolo, una slide di riepilogo mensile con tre numeri chiave, slide separate per traffico organico, paid search e paid social, una slide sul lavoro completato, una slide sui rischi che segnala l'aumento del CPL su LinkedIn e il piano per il mese successivo. Operazioni ancora manuali: inserimento di due grafici nativi (il modello usa richiami di testo e numeri, non i tuoi grafici in tempo reale), correzione di una motivazione "driven by" che il modello non poteva conoscere, aggiunta del logo del cliente e una rilettura di 10 minuti prima dell'invio.
Step 5 (opzionale): Un deck con il brand del cliente e un recap narrato
Alcuni clienti, solitamente quelli con i retainer più alti, si aspettano un report che rispecchi la loro brand identity piuttosto che il tuo modello. In questi casi, usa Crea slide come queste tramite API: passa l'URL pubblico di una slide del brand del cliente o di un key visual di campagna come referenceImageUrl, e l'intero design verrà derivato da quello.
curl -s -X POST https://2slides.com/api/v1/slides/create-like-this \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Monthly performance recap for Northwind Outdoor, September 2026. Slide 1: Month at a glance. Revenue from paid channels $212,400 (+9.8% MoM). Slide 2: ...",
"referenceImageUrl": "https://cdn.your-agency.com/clients/northwind/brand-slide.png",
"aspectRatio": "16:9",
"resolution": "2K",
"page": 6,
"contentDetail": "concise",
"responseLanguage": "English",
"mode": "async"
}'Queste slide sono immagini: hanno un design curato, ma il testo non è modificabile in PowerPoint. Se l'account manager deve ritoccare il copy dopo la revisione, è necessario correggere il brief e rigenerare, oppure mantenere quel cliente su Fast PPT. Otterrai un PDF e i file PNG di ogni pagina.
Una volta completato il job, generate-narration con mode: "multi" aggiunge un recap a due voci (ad esempio, il tuo account manager e uno strategist che discutono l'andamento del mese). download-slides-pages-voices restituisce un file ZIP gratuito con i PNG e i file WAV, che puoi montare in un MP4 con ffmpeg, oppure puoi esportare il video direttamente dal Workspace. I corpi delle richieste completi e il comando ffmpeg sono disponibili nella guida ai deck per report di campagne marketing e video narrati via API. I job Fast PPT non supportano la narrazione, quindi il video viene sempre generato dal percorso di design basato su immagini.
I clienti che saltano la call mensile spesso guardano volentieri un recap di tre minuti. Consideralo un add-on per i retainer in cui il problema è la partecipazione, non uno standard per ogni account.
Step 6: Pianificazione senza server
Non hai bisogno di una tua infrastruttura per eseguire questo processo mensilmente:
- cron o GitHub Actions:
cron: "0 5 2 * *"viene eseguito alle 05:00 UTC del giorno 2, dopo che la maggior parte delle piattaforme ha consolidato le conversioni del mese precedente. - n8n: un nodo Schedule Trigger, i tuoi nodi dati, un nodo LLM, quindi nodi HTTP Request per
generateejobs/{id}con un ciclo di attesa (Wait loop). La guida al workflow n8n e 2Slides illustra nel dettaglio il ciclo di polling. - Zapier o Make: ideali per gestire da 10 a 30 clienti usando un Google Sheet come lista clienti; consulta la guida su come automatizzare i report settimanali con Zapier per la struttura dello Zap, quindi cambia la frequenza in mensile.
Qualunque strumento tu scelga, invia un messaggio al canale di account management quando la cartella di revisione è pronta, con un link per ogni cliente.
Quanto costa
Ipotizziamo 60 clienti, un deck Fast PPT da 12 pagine ciascuno, più un recap narrato di 6 pagine per i 15 retainer più importanti.
| Voce | Crediti cad. | Quantità | Crediti al mese |
|---|---|---|---|
| Deck mensile Fast PPT, 12 pagine | 120 | 60 | 7.200 |
Recap con design via create-like-this, 6 pagine in 2K | 610 | 15 | 9.150 |
| Narrazione a due voci, 6 pagine | 1.260 | 15 | 18.900 |
| Totale | 35.250 |
- Solo deck (7.200 crediti): il piano Pro a $12.50/mese include 10.000 crediti, quindi ogni deck costa circa $0,15 e hai margine per eventuali rigenerazioni. Con i pacchetti, 7.200 crediti costano circa $18.
- Deck più recap narrati (35.250 crediti): un pacchetto da $80 per 40.000 crediti copre tutto, con circa $70 di crediti utilizzati, ovvero circa $3,74 per ogni recap narrato.
- Un deck completo da 12 pagine con design e narrazione costerebbe 1.210 + 2.520 = 3.730 crediti, circa $7,46 con la tariffa del pacchetto da $80; ecco perché la maggior parte delle agenzie sceglie di narrare un breve recap invece dell'intero report.
Non esiste un prezzo per utente, quindi aggiungere account manager che si occupano solo di revisionare i file non costa nulla. I nuovi account ricevono 500 crediti gratuiti, sufficienti per testare quattro deck da 12 pagine dall'inizio alla fine. I piani attuali sono disponibili nella pagina Prezzi.
Gestione dei dati dei clienti: solo aggregati e inseriti nel DPA
Tutto ciò che questa pipeline invia a 2Slides è il testo del brief: nomi delle metriche, numeri aggregati e i tuoi commenti. Mantieni questo approccio.
- Solo metriche aggregate. Sessioni, click, spesa, CPA, conteggio delle conversioni e query principali vanno bene. Liste email dei clienti, esportazioni CRM, dati a livello di singolo ordine e qualsiasi cosa identifichi un individuo non devono essere inviati, e comunque non migliorerebbero la qualità di un deck mensile.
- Attenzione ai campi di testo libero. I log di lavoro e le colonne "note" sono i punti in cui può scivolare il nome di un lead o un reclamo interno del cliente. Filtrali prima che raggiungano
userInput. - Copertura contrattuale. Se lavori con clienti nell'UE o nel Regno Unito, il tuo accordo con loro probabilmente include già termini di trattamento dei dati ai sensi dell'Articolo 28 del GDPR. Elenca gli strumenti AI di terze parti nel tuo stack di reportistica (il tuo fornitore di LLM e 2Slides) dove il tuo DPA elenca i sub-responsabili del trattamento, e comunica ai clienti quali categorie di dati ricevono. Alcuni clienti ti chiederanno di anonimizzare il loro nome nel brief; usare lo slug del cliente nella chiamata API e aggiungere il nome in post-elaborazione è una soluzione semplice.
- Nessuna dichiarazione di certificazione. 2Slides non dichiara certificazioni SOC 2 o simili. Se l'ufficio acquisti di un cliente ne richiede una per ogni fornitore che tocca i propri dati, verifica con loro prima di includere quell'account.
- Le chiavi restano lato server. Memorizza
SLIDES_API_KEYnei segreti del tuo scheduler, mai in un Google Sheet condiviso.
Dove 2Slides non è lo strumento adatto
Sii consapevole dei limiti prima di proporre questa soluzione internamente:
- Reportistica live e interattiva. I clienti che hanno bisogno di filtrare per data o analizzare nel dettaglio una campagna necessitano di una dashboard: Looker Studio, AgencyAnalytics, DashThis, Whatagraph e strumenti simili. Una presentazione generata è un'istantanea mensile. Molte agenzie inseriscono il link alla dashboard nell'ultima slide.
- Grafici nativi. Fast PPT compila un modello con testi e callout numerici. Se i tuoi clienti si aspettano l'esatto grafico di GA4 o del tuo strumento di BI, inseriscilo manualmente o tramite python-pptx dopo il download.
- Presentazioni di design modificabili. Il percorso
create-like-thisproduce slide basate su immagini. Riprendono il brand del cliente ma il testo non è modificabile. - Editing avanzato in-app in strumenti di design. Canva e Gamma sono più indicati se il tuo team vuole rielaborare i layout visivamente nel browser dopo la generazione; Microsoft Copilot in PowerPoint è più adatto per modifiche una tantum all'interno di una presentazione già in possesso dell'account manager. Nessuno dei due sostituisce una pipeline che crea 60 presentazioni in una notte, ma se hai solo cinque clienti, procedere manualmente con uno di essi è ragionevole.
- Capacità di giudizio. Il modello non saprà che le conversioni sono calate perché il checkout del cliente è rimasto bloccato per tre giorni. La revisione umana non è opzionale.
Per un contesto più ampio su come altri team utilizzano gli stessi endpoint, consulta i casi d'uso delle API per presentazioni AI per team e la panoramica su come i team di marketing creano presentazioni su larga scala. Se desideri offrire presentazioni di reportistica all'interno del tuo portale clienti o del tuo prodotto di reporting, la guida su come integrare la generazione di slide AI in un prodotto SaaS copre la gestione delle chiavi multi-tenant e dei crediti.
FAQ
Posso automatizzare i report clienti in white label senza uno sviluppatore?
Sì, fino a circa 30 clienti. Usa Zapier, Make o n8n con un Google Sheet contenente le metriche calcolate per ogni cliente, uno step LLM per il commento e passaggi HTTP per gli endpoint 2Slides generate e jobs. Oltre questo volume, uno script breve è più facile da mantenere e sottoporre a debug.
Il file PPTX generato mostra il branding di 2Slides?
Fast PPT crea la presentazione a partire dal modello scelto, utilizzando caselle di testo native di PowerPoint. Prima di inviare qualsiasi materiale ai clienti, apri il file scaricato e controlla personalmente ogni slide, lo schema diapositiva (slide master) e le proprietà del file, modificando il modello o il post-processing se necessario.
Come posso evitare che l'AI sbagli i numeri nelle slide dei report SEO e PPC?
Calcola ogni numero via codice e passa al modello i fatti già pronti con l'istruzione di copiarli testualmente. Successivamente, estrai tutti i numeri dal suo output e scarta qualsiasi narrazione che contenga un numero non presente nei tuoi dati iniziali. In caso di errore nel controllo, ripiega su una presentazione contenente solo i dati certi.
Quanto costa generare la presentazione di un report mensile per un'agenzia?
Una presentazione Fast PPT da 12 pagine costa 120 crediti: circa 0,30 $ con il pacchetto da 5 $ o 0,15 $ con il piano Pro. Un riepilogo di design da 6 pagine con narrazione vocale AI a due voci costa 1.870 crediti, circa 3,74 $ con la tariffa del pacchetto da 80 $.
Ogni cliente può ricevere la presentazione nella propria lingua?
Sì. Imposta responseLanguage per ogni cliente, ad esempio "German" o "Spanish". 2Slides supporta oltre 20 lingue di output. Fai revisionare le presentazioni non in inglese da un account manager fluente nella lingua, specialmente per i termini di marketing che non si traducono letteralmente.
Dovrei sostituire AgencyAnalytics o Looker Studio con questo strumento?
No. Mantieni la dashboard per i dati in tempo reale e l'accesso self-service; usa le presentazioni generate per il racconto mensile e la riunione di revisione. I due strumenti lavorano al meglio insieme, con il link alla dashboard inserito nella slide finale.
Pronto a smettere di creare manualmente i report mensili? Ottieni una chiave API con 500 crediti gratuiti su 2slides.com/api e genera i tuoi primi cinque report clienti questa settimana.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free