

Generare Diapositive per Lezioni Programmaticamente da un Curriculum (2026)
Per generare diapositive per lezioni in modo programmatico, esporta il tuo curriculum come una riga per lezione (unità, titolo, obiettivi, vocabolario, grado, lingua), quindi fai in modo che uno script chiami l’endpoint POST /api/v1/slides/generate di 2Slides Fast PPT una volta per ogni riga con un tema educativo da GET /api/v1/themes/search e responseLanguage impostato per classe. Ogni deck da 12 diapositive è un PPTX modificabile che costa 120 crediti, circa $0,30, e viene restituito in circa 30 secondi. Per le classi capovolte, create-pdf-slides più generate-narration producono brevi lezioni video. Creato per sviluppatori edtech, instructional designer e team curriculari distrettuali.
Punti chiave
- Un deck Fast PPT per lezione costa 10 crediti per diapositiva, quindi un deck da 12 diapositive costa 120 crediti, circa $0,30 al tasso di $5 per 2.000 crediti.
- Un dipartimento con 40 lezioni da 12 diapositive ciascuna usa 4.800 crediti, circa $12, e invia in circa 7 minuti al limite di 6 richieste al minuto.
responseLanguageaccetta un nome di lingua come "Spanish" o "Vietnamese", coprendo oltre 20 lingue di output per programmi bilingue dallo stesso set di righe del curriculum.- L’output Fast PPT è un PPTX nativo e modificabile, così gli insegnanti possono adattare ogni diapositiva prima della lezione. I deck Fast PPT non possono essere narrati.
- Per le classi capovolte, una lezione video narrata da 8 diapositive costa 2.490 crediti (810 per 2K diapositive più 1.680 per la narrazione), circa $5-$6,25.
A chi è rivolto
Instructional designer, ingegneri edtech e creatori di corsi che tengono il curriculum in forma strutturata (un Google Sheet, un CSV LMS, un database corsi) e hanno bisogno di un deck di prima bozza per ogni lezione, non solo per poche. I team distrettuali che gestiscono programmi bilingue, dove una lezione deve esistere in inglese e spagnolo o vietnamita, traggono il massimo vantaggio dal campo lingua per riga.
Salta questa ricetta se hai cinque lezioni e un insegnante con un pomeriggio libero; il riassunto degli strumenti per insegnanti copre il percorso con app web.
Il flusso di lavoro a colpo d’occhio
| Passo | Strumento | Cosa succede | Endpoint 2Slides / crediti |
|---|---|---|---|
| 1 | Esportazione da Sheets o LMS | Una riga per lezione e lingua: unità, titolo, grado, obiettivi, vocabolario, numero di diapositive | nessuno |
| 2 | curl o browser | Cerca temi educativi e per aula, memorizza un themeId per fascia di grado | GET /api/v1/themes/search, gratuito |
| 3 | Python o Node | Costruisci un prompt strutturato dai campi della riga, imposta responseLanguage per classe | nessuno |
| 4 | Python o Make | Una chiamata generate per riga con mode: "async", massimo 6 al minuto | POST /api/v1/slides/generate, 10 crediti per pagina |
| 5 | Script | Poll ogni 5-10 s fino a success, scarica il PPTX su Drive o LMS | GET /api/v1/jobs/{id}, gratuito |
| 6 | Insegnante | Revisiona, modifica e approva il PPTX prima che arrivi agli studenti | nessuno |
| 7 (opzionale) | Script più workspace | Classe capovolta: diapositive con immagini, narrazione a voce singola, esportazione MP4 | create-pdf-slides 10 + 100 per pagina a 2K, generate-narration 210 per pagina |
Passo 1: Normalizza l’esportazione del curriculum
Appiattisci l’esportazione LMS o la guida di pacing in una riga per lezione per lingua. Se una lezione è in due lingue, duplica la riga e cambia solo la colonna language. Mantieni i campi multi-valore (obiettivi, vocabolario) separati da pipe così il generatore di prompt può trasformarli in elenchi puntati.
unit,lesson_title,grade,objectives,vocabulary,language,slide_count
Ecosystems,Food Webs and Energy Flow,7,"Explain how energy moves between trophic levels|Identify producers, consumers and decomposers in a local ecosystem","producer|consumer|decomposer|trophic level",English,12
Ecosystems,Food Webs and Energy Flow,7,"Explain how energy moves between trophic levels|Identify producers, consumers and decomposers in a local ecosystem","producer|consumer|decomposer|trophic level",Spanish,12
Fractions,Comparing Fractions with Unlike Denominators,4,"Compare two fractions using common denominators|Justify comparisons with a visual model","numerator|denominator|equivalent fraction|benchmark fraction",Vietnamese,10Aggiungi tre colonne di contabilità che lo script compilerà in seguito: job_id, download_url e status. La colonna status guida il flusso di revisione descritto più avanti.
Passo 2: Trova un themeId adatto all’educazione
Il themeId decide l’aspetto di un deck Fast PPT. Cerca tra i 1.500+ template con termini per aula, poi conserva uno o due ID per fascia di grado: uno stile disegnato a mano o doodle per la primaria, qualcosa di più pulito per la secondaria.
curl "https://2slides.com/api/v1/themes/search?query=education&limit=10" \
-H "Authorization: Bearer $SLIDES_API_KEY"
# Vale la pena provare anche: query=classroom, query=doodle, query=science, query=studyOgni risultato include un themeId e metadati. Memorizza gli ID come variabili d’ambiente (EDU_THEME_ELEMENTARY, EDU_THEME_SECONDARY) invece che nel foglio. L’endpoint di ricerca è gratuito ma condivide il limite di 6 richieste al minuto, quindi eseguilo una volta durante la configurazione, non una volta per lezione.

themes/search.
Passo 3: Costruisci il prompt e imposta la lingua per diapositive multilingue
Il prompt è dove la qualità del curriculum diventa qualità del deck. Dai al modello il grado, gli obiettivi come punti elenco, il vocabolario da definire e una struttura fissa per le diapositive. Mantieni userInput sotto qualche centinaio di parole; obiettivi e vocabolario sono l’input, non l’intero piano unità.
Poi imposta responseLanguage dalla riga. Accetta un nome di lingua, quindi "Spanish" e "Vietnamese" funzionano mentre "es" e "vi" no. Scrivi il prompt in inglese e lascia che il deck esca in spagnolo; un template serve tutto il programma.
Create a 12-slide lesson deck for grade 7.
Unit: Ecosystems
Lesson: Food Webs and Energy Flow
Learning objectives:
- Explain how energy moves between trophic levels
- Identify producers, consumers and decomposers in a local ecosystem
Key vocabulary to define with one example each: producer, consumer, decomposer, trophic level
Structure: title slide, objectives, warm-up question, 5 content slides with one idea each,
vocabulary slide, quick check with 3 questions, summary.
Use short sentences suitable for the grade level.
generate nella documentazione API di 2Slides, inclusi i 20+ valori che responseLanguage accetta per nome.
Passo 4: Genera diapositive per lezioni programmaticamente con Fast PPT
Questo è il passo che permette a un piccolo team di creare in massa presentazioni per l’aula. Fast PPT generate di default è sincrono e restituisce un downloadUrl in una chiamata, adatto per un singolo deck. Per un batch, imposta mode: "async", raccogli i valori jobId e fai polling. Ogni deck richiede circa 30 secondi, e la chiave permette 6 richieste al minuto, quindi distanzia le invii di 10 secondi.
curl -X POST https://2slides.com/api/v1/slides/generate \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "Create a 12-slide lesson deck for grade 7. Unit: Ecosystems. Lesson: Food Webs and Energy Flow. Learning objectives: explain how energy moves between trophic levels; identify producers, consumers and decomposers in a local ecosystem. Key vocabulary to define with one example each: producer, consumer, decomposer, trophic level. Structure: title, objectives, warm-up question, 5 content slides, vocabulary, 3-question quick check, summary.",
"themeId": "'"$EDU_THEME_SECONDARY"'",
"responseLanguage": "Spanish",
"mode": "async"
}'
# -> {"jobId":"..."} poi fai polling con GET https://2slides.com/api/v1/jobs/{jobId}Il ciclo completo in Python: leggi il CSV, invia ogni riga con un intervallo di 10 secondi, fai polling di ogni job ogni 8 secondi e salva il PPTX con un nome file che include unità, grado e lingua così due gradi con lo stesso titolo lezione non si sovrascrivono.
import csv, os, time, requests
API = "https://2slides.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SLIDES_API_KEY']}"}
THEMES = {
"elementary": os.environ["EDU_THEME_ELEMENTARY"],
"secondary": os.environ["EDU_THEME_SECONDARY"],
}
def theme_for(grade: str) -> str:
return THEMES["elementary"] if int(grade) <= 5 else THEMES["secondary"]
def build_prompt(row: dict) -> str:
objectives = "\n".join(f"- {o.strip()}" for o in row["objectives"].split("|"))
vocab = ", ".join(v.strip() for v in row["vocabulary"].split("|"))
return (
f"Create a {row['slide_count']}-slide lesson deck for grade {row['grade']}.\n"
f"Unit: {row['unit']}\nLesson: {row['lesson_title']}\n"
f"Learning objectives:\n{objectives}\n"
f"Key vocabulary to define with one example each: {vocab}\n"
"Structure: title slide, objectives, warm-up question, content slides with one "
"idea each, vocabulary slide, quick check with 3 questions, summary. "
"Use short sentences suitable for the grade level."
)
def submit(row: dict) -> str:
r = requests.post(f"{API}/slides/generate", headers=HEADERS, timeout=60, json={
"userInput": build_prompt(row),
"themeId": theme_for(row["grade"]),
"responseLanguage": row["language"] or "English",
"mode": "async",
})
r.raise_for_status()
return r.json()["jobId"]
def wait(job_id: str) -> dict:
while True:
job = requests.get(f"{API}/jobs/{job_id}", headers=HEADERS, timeout=30).json()
if job["status"] in ("success", "failed"):
return job
time.sleep(8) # poll ogni 5-10 s; l’endpoint jobs permette 10 req/min
with open("curriculum.csv", newline="", encoding="utf-8") as f:
rows = list(csv.DictReader(f))
queued = []
for row in rows:
queued.append((row, submit(row)))
time.sleep(10) # 6 invii al minuto, mai di più
os.makedirs("decks", exist_ok=True)
for row, job_id in queued:
job = wait(job_id)
if job["status"] != "success":
print("FALLITO", row["lesson_title"], row["language"], job_id)
continue
pptx = requests.get(job["downloadUrl"], timeout=120).content
name = f"{row['unit']}_G{row['grade']}_{row['lesson_title']}_{row['language']}.pptx"
with open(os.path.join("decks", name.replace(" ", "_")), "wb") as out:
out.write(pptx)
print("salvato", name)Scrivi job_id, download_url e status = "draft" nel foglio man mano che ogni deck arriva.

generate produce lo stesso PPTX modificabile dagli stessi template, una chiamata per lezione.
Passo 5: Variante classe capovolta: brevi lezioni video narrate
Per una classe capovolta l’artefatto che gli studenti vedono a casa è un video, quindi cambia pipeline. I job Fast PPT non possono essere narrati. Usa create-pdf-slides per diapositive con immagini 16:9 a 2K, poi generate-narration con un solo speaker, quindi esporta il video. Mantieni le lezioni brevi: 6-8 diapositive con circa 45 secondi di narrazione ciascuna è un video da 5-6 minuti.
# 1) diapositive con immagini (async di default)
curl -X POST https://2slides.com/api/v1/slides/create-pdf-slides \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"userInput": "8-slide mini-lecture for grade 7 on food webs and energy flow. One idea per slide, written to be read aloud in about 45 seconds per slide. Cover: what a food web is, producers, consumers, decomposers, trophic levels, the 10 percent energy rule, one local example, a 2-question check.",
"aspectRatio": "16:9",
"resolution": "2K",
"page": 8,
"contentDetail": "standard",
"responseLanguage": "English",
"mode": "async"
}'
# poll GET /api/v1/jobs/{jobId} fino a status = success (10 + 8 x 100 = 810 crediti)
# 2) narrazione a voce singola su quel job (8 x 210 = 1.680 crediti)
curl -X POST https://2slides.com/api/v1/slides/generate-narration \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jobId": "JOB_ID_FROM_STEP_1",
"mode": "single",
"speakerName": "Teacher",
"voice": "Leda",
"contentMode": "standard",
"includeIntro": true
}'
# fai polling di nuovo fino a successo
# 3) PNG + WAV per pagina, gratuito
curl -X POST https://2slides.com/api/v1/slides/download-slides-pages-voices \
-H "Authorization: Bearer $SLIDES_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jobId": "JOB_ID_FROM_STEP_1"}' -o lecture-assets.zipDue opzioni per l’MP4: apri il job nel workspace 2Slides e usa Esporta, poi Genera Video, che rende un MP4 H.264 a 1920×1080 nel browser per 20 crediti a pagina; oppure unisci le coppie PNG e WAV dallo ZIP con FFmpeg per un caricamento LMS completamente scriptato. Il post sugli shorts educativi senza volto mostra la versione 9:16 per clip di revisione.
Passo 6: Alternative no-code e agenti
Automazione curriculum a PowerPoint in Make
Se nessuno nel team curriculum vuole eseguire un job Python, lo stesso ciclo si adatta a uno scenario Make (n8n e Zapier funzionano allo stesso modo):
- Trigger: osserva nuove o aggiornate righe nel Google Sheet del curriculum, o un trigger Webhook lanciato dall’LMS.
- Trasformazione: un passo testo o variabile assembla
userInputdai campi della riga usando il template del Passo 3. - Richiesta HTTP:
POST https://2slides.com/api/v1/slides/generateconmode: "async", headerAuthorization: Bearermemorizzato come segreto dello scenario, eresponseLanguagemappato dalla riga. - Attesa: un passo Delay o Sleep di 30-45 secondi.
- Richiesta HTTP:
GET https://2slides.com/api/v1/jobs/{jobId}; sestatusnon è ancorasuccessofailed, ripeti l’attesa. - Consegna: carica il PPTX in una cartella Drive per grado, poi scrivi
download_urlestatus = "draft"nella riga. - Limitazione: una riga per esecuzione, almeno 10 secondi tra invii, così un incolla di 40 righe non supera mai 6 richieste al minuto.
Chiedi a un agente invece
Gli insegnanti che lavorano in Claude Code, Codex o Cursor possono saltare sia lo script che lo scenario. Installa la 2Slides Agent Skill o aggiungi il server MCP ospitato (claude mcp add --transport http 2slides "https://2slides.com/api/mcp?apikey=YOUR_KEY"), incolla la tabella del curriculum e chiedi un deck per riga. L’agente chiama gli stessi strumenti themes_search, slides_generate e jobs_get con la stessa chiave e crediti; vedi la pagina Agent Skills.

Accessibilità e revisione: bozze AI, insegnanti approvano
Tratta ogni deck generato come una bozza. La colonna status passa da draft a reviewed a approved con le iniziali del revisore, e nulla arriva agli studenti finché non dice approved. Questa è una politica, non una funzione, ed è per questo che il PPTX modificabile conta più di un PDF più bello per l’uso in aula.
Una checklist di revisione per deck:
- Contenuto: ogni obiettivo della riga appare ed è corretto per lo standard; nessun fatto o data inventata; le domande del quick-check sono rispondibili dalle diapositive.
- Livello di lettura: lunghezza delle frasi e vocabolario corrispondono al grado. Le diapositive di grado 4 con frasi da grado 9 sono la correzione più comune.
- Deck tradotti: un insegnante bilingue revisiona il deck spagnolo o vietnamita per i suoi meriti, poiché gli esempi devono avere adeguatezza culturale oltre che traduzione corretta.
- Accessibilità: aggiungi testo alternativo alle immagini, controlla il contrasto del testo rispetto allo sfondo del template, mantieni il testo leggibile dal fondo dell’aula e non trasmettere mai significato solo con il colore. Le linee guida WCAG sono il riferimento citato dalla maggior parte dei distretti.
- Lezioni video: lo ZIP da
download-slides-pages-voicesti dà un WAV per diapositiva, così una trascrizione da qualsiasi strumento speech-to-text e i sottotitoli sull’MP4 richiedono pochi minuti.
Prevedi circa 10 minuti di revisione insegnante per deck: circa 7 ore per 40 lezioni, contro zero ore spese a costruire deck da un template vuoto.
Quanto costa per un dipartimento
I crediti sono pay-as-you-go: $5 comprano 2.000 crediti ($0,0025 ciascuno) e $80 comprano 40.000 ($0,002 ciascuno). I nuovi account ricevono 500 crediti gratuiti, sufficienti per 4 deck di prova da 12 diapositive.
| Volume | Pipeline | Crediti | USD |
|---|---|---|---|
| 40 lezioni × 12 diapositive (un dipartimento, un trimestre) | Fast PPT generate | 480 pagine × 10 = 4.800 | ≈ $12,00 al tasso del pacchetto da $5 |
| 500 lezioni × 12 diapositive (distretto o marketplace corsi, al mese) | Fast PPT generate | 6.000 pagine × 10 = 60.000 | ≈ $120 al tasso del pacchetto da $80 |
| 40 lezioni capovolte × 8 diapositive, 2K più narrazione | create-pdf-slides 40 × 810, generate-narration 40 × 1.680 | 32.400 + 67.200 = 99.600 | ≈ $199-$249 |
| Esportazione MP4 opzionale per quelle 40 lezioni nel workspace | 320 pagine × 20 | 6.400 | ≈ $13-$16 |
Il tempo è l’altro budget. A 6 invii al minuto, 40 lezioni si inviano in circa 7 minuti e 500 in circa 84 minuti, ogni deck termina circa 30 secondi dopo l’invio.
Fast PPT o diapositive con immagini per questo caso d’uso?
- Fast PPT (
generate) quando gli insegnanti devono modificare in PowerPoint o Google Slides e il volume è alto: 120 crediti per un deck da 12 diapositive, consegnato in circa 30 secondi. create-pdf-slidesquando il deck è l’artefatto finale per lo studente (lezione video, embed LMS) o serve uno stile visivo specifico: 1.010 crediti per 10 pagine a 2K, più 210 per pagina per la narrazione.create-like-thisquando il distretto ha una diapositiva brandizzata che ogni deck deve rispettare; passa la sua URL pubblica comereferenceImageUrl, stesso costo dicreate-pdf-slides.- Non mischiare mai per errore: narrazione ed esportazione MP4 esistono solo per i job
create-pdf-slidesecreate-like-this, non per Fast PPT.
Errori comuni
- HTTP 429 durante un incolla massivo: la chiave permette 6 richieste al minuto, quindi mantieni un solo submitter con intervallo di 10 secondi. Non distribuire gli invii su thread o rami di scenario che condividono la chiave.
- Chiave API nel foglio o in uno script Apps condiviso: tienila lato server o nel secret store dello strumento di automazione. Gli insegnanti ricevono i deck, mai le chiavi.
- Narrare un job Fast PPT: l’endpoint narrazione lo rifiuta. Ricostruisci la lezione con
create-pdf-slidesprima. - Passare un codice lingua:
responseLanguage: "es"non è"Spanish". Valida la colonna lingua contro i nomi supportati. create-pdf-slidesdi default èpage: 1: imposta esplicitamente il conteggio (8 per una mini-lezione) o usapage: 0per lasciare scegliere al modello. Una lezione a pagina singola è una sorpresa comune al primo tentativo.- Incollare l’intero piano unità come
userInput: documenti lunghi di standard producono deck poco focalizzati. Riduci ogni lezione a obiettivi, vocabolario e struttura di diapositive prima.
Domande Frequenti
Posso generare diapositive per lezioni programmaticamente senza scrivere codice?
Sì. In Make, n8n o Zapier, un trigger Sheets alimenta un passo HTTP Request che chiama POST /api/v1/slides/generate con mode: "async", seguito da un passo di attesa e una seconda richiesta HTTP a GET /api/v1/jobs/{id}. Gli insegnanti possono anche saltare gli strumenti di automazione e chiedere a un agente AI con la skill 2Slides o il server MCP di costruire i deck da una tabella curriculum incollata. Ogni percorso usa la stessa chiave API e gli stessi crediti.
Come faccio a creare diapositive multilingue da un solo curriculum?
Duplica ogni riga di lezione una volta per lingua e imposta la colonna lingua con un nome come "Spanish" o "Vietnamese". Lo script passa quel valore come responseLanguage, così obiettivi e vocabolario identici producono un deck in inglese e uno in spagnolo da un solo template di prompt. 2Slides supporta oltre 20 lingue di output. Fai revisionare ogni deck tradotto da un insegnante bilingue, perché gli esempi di vocabolario devono avere adeguatezza culturale oltre che traduzione corretta.
Esiste un’alternativa API AI da piano lezioni a diapositive a 2Slides?
Sì, diversi strumenti di presentazione hanno API. L’API di Gamma offre automazione simile ma richiede un piano Pro per le chiavi API, mentre le chiavi 2Slides funzionano su qualsiasi account, incluso uno gratuito con 500 crediti. SlideSpeak e Canva Connect espongono anch’essi API. 2Slides è il nostro prodotto, quindi confronta sui punti che contano per l’educazione: output PPTX modificabile, lingua per richiesta e prezzo per diapositiva.
Quante diapositive dovrebbe avere un deck generato per lezione?
Per una lezione di 45-50 minuti, 10-14 diapositive sono un default praticabile: titolo, obiettivi, riscaldamento, 4-6 diapositive di contenuto con un’idea ciascuna, una diapositiva vocabolario, un quick check e un riepilogo. A 10 crediti per diapositiva, un deck da 12 diapositive costa 120 crediti. Indica il numero in userInput così ogni deck nel batch ha dimensione, tempo di revisione e costo prevedibili.
Gli insegnanti possono modificare i deck generati in PowerPoint o Google Slides?
Sì. L’endpoint Fast PPT generate restituisce un PPTX nativo costruito da un template progettato, quindi caselle di testo, forme e immagini sono modificabili in PowerPoint, Keynote o Google Slides dopo l’importazione. Per questo questa ricetta tratta l’output API come una bozza: l’insegnante apre il file, adatta gli esempi per i propri studenti e salva la versione approvata. L’output create-pdf-slides è un PDF più immagini di pagina e non è modificabile come testo.
Passi successivi
Ora hai il layout del foglio, il template del prompt, il ciclo Python e la politica di revisione necessari per generare diapositive per lezioni programmaticamente per un intero dipartimento, in tutte le lingue insegnate dal programma.
- Ottieni una chiave API su 2slides.com/api. La registrazione include 500 crediti gratuiti, sufficienti per eseguire quattro lezioni di prova da 12 diapositive prima di acquistare.
- Leggi il post hub, Casi d’uso API presentazioni AI per team, per vedere come team di vendita, HR e marketing eseguono lo stesso ciclo sui propri fogli.
- Continua con la ricetta batch per deck di vocabolario per una variante con prompt più piccoli, e la guida alle lezioni video prima di registrare la tua prima lezione capovolta.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free