

Generar diapositivas de lecciones programáticamente a partir de un currículo (2026)
Para generar diapositivas de lecciones programáticamente, exporta tu currículo como una fila por lección (unidad, título, objetivos, vocabulario, grado, idioma), luego un script llama al endpoint POST /api/v1/slides/generate de 2Slides Fast PPT una vez por fila con un tema educativo obtenido de GET /api/v1/themes/search y responseLanguage configurado por clase. Cada presentación de 12 diapositivas es un PPTX editable que cuesta 120 créditos, aproximadamente $0.30, y se entrega en unos 30 segundos. Para aulas invertidas, create-pdf-slides más generate-narration produce video-lecciones cortas. Diseñado para desarrolladores edtech, diseñadores instruccionales y equipos de currículo distrital.
Puntos clave
- Un deck de lección Fast PPT cuesta 10 créditos por diapositiva, así que un deck de 12 diapositivas cuesta 120 créditos, aproximadamente $0.30 al precio de $5 por 2,000 créditos.
- Un departamento con 40 lecciones de 12 diapositivas cada una usa 4,800 créditos, aproximadamente $12, y envía en unos 7 minutos con el límite de 6 solicitudes por minuto.
responseLanguageacepta un nombre de idioma como "Spanish" o "Vietnamese", cubriendo más de 20 idiomas de salida para programas bilingües desde las mismas filas del currículo.- La salida Fast PPT es un PPTX nativo y editable, para que los docentes puedan adaptar cada diapositiva antes de clase. Los decks Fast PPT no pueden ser narrados.
- Para aulas invertidas, una video-lección narrada de 8 diapositivas cuesta 2,490 créditos (810 por 2K diapositivas más 1,680 por narración), alrededor de $5 a $6.25.
Para quién es esto
Diseñadores instruccionales, ingenieros edtech y creadores de cursos que mantienen el currículo en una forma estructurada (una hoja de Google Sheets, un CSV de LMS, una base de datos de cursos) y necesitan un borrador inicial para cada lección, no solo unas pocas. Los equipos distritales que ejecutan programas bilingües, donde una lección debe existir en inglés y español o vietnamita, se benefician especialmente del campo de idioma por fila.
Omitan esta receta si tienen cinco lecciones y un docente con una tarde libre; la guía de herramientas para docentes cubre la ruta de aplicaciones web.
Flujo de trabajo en resumen
| Paso | Herramienta | Qué sucede | Endpoint 2Slides / créditos |
|---|---|---|---|
| 1 | Exportación de Sheets o LMS | Una fila por lección e idioma: unidad, título, grado, objetivos, vocabulario, número de diapositivas | ninguno |
| 2 | curl o navegador | Buscar temas educativos y de aula, guardar un themeId por banda de grado | GET /api/v1/themes/search, gratis |
| 3 | Python o Node | Construir un prompt estructurado desde los campos de la fila, configurar responseLanguage por clase | ninguno |
| 4 | Python o Make | Una llamada generate por fila con mode: "async", máximo 6 por minuto | POST /api/v1/slides/generate, 10 créditos por página |
| 5 | Script | Consultar cada 5 a 10 s hasta success, descargar el PPTX a Drive o LMS | GET /api/v1/jobs/{id}, gratis |
| 6 | Docente | Revisar, editar y aprobar el PPTX antes de que llegue a estudiantes | ninguno |
| 7 (opcional) | Script más espacio de trabajo | Aula invertida: diapositivas diseñadas con imágenes, narración con voz única, exportar MP4 | create-pdf-slides 10 + 100 por página a 2K, generate-narration 210 por página |
Paso 1: Normalizar la exportación del currículo
Aplana la exportación del LMS o la guía de ritmo en una fila por lección por idioma. Si una lección se imparte en dos idiomas, duplica la fila y cambia solo la columna language. Mantén los campos con múltiples valores (objetivos, vocabulario) separados por barras verticales para que el generador de prompts los convierta en viñetas.
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,10Agrega tres columnas para control que el script llenará después: job_id, download_url y status. La columna status controla el flujo de revisión descrito más adelante.
Paso 2: Encontrar un themeId adecuado para educación
El themeId decide el aspecto de un deck Fast PPT. Busca entre más de 1,500 plantillas con términos de aula, luego guarda uno o dos IDs por banda de grado: un estilo dibujado a mano o garabato para primaria, algo más limpio para secundaria.
curl "https://2slides.com/api/v1/themes/search?query=education&limit=10" \
-H "Authorization: Bearer $SLIDES_API_KEY"
# También vale la pena probar: query=classroom, query=doodle, query=science, query=studyCada resultado incluye un themeId y metadatos. Guarda los IDs como variables de entorno (EDU_THEME_ELEMENTARY, EDU_THEME_SECONDARY) en lugar de en la hoja. El endpoint de búsqueda es gratuito pero comparte el límite de 6 solicitudes por minuto, así que ejecútalo una vez durante la configuración, no una vez por lección.

themes/search.
Paso 3: Construir el prompt y configurar el idioma para diapositivas multilingües
El prompt es donde la calidad del currículo se convierte en calidad del deck. Dale al modelo el grado, los objetivos en viñetas, el vocabulario a definir y una estructura fija de diapositivas. Mantén userInput por debajo de unas pocas centenas de palabras; los objetivos y vocabulario son la entrada, no todo el plan de unidad.
Luego configura responseLanguage desde la fila. Acepta un nombre de idioma, así que "Spanish" y "Vietnamese" funcionan, pero "es" y "vi" no. Escribe el prompt en inglés y deja que el deck salga en español; una plantilla sirve para todo el programa.
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 en la documentación API de 2Slides, incluyendo los más de 20 valores que responseLanguage acepta por nombre.
Paso 4: Generar diapositivas de lecciones programáticamente con Fast PPT
Este es el paso que permite a un equipo pequeño crear presentaciones en lote. Fast PPT generate por defecto es síncrono y devuelve un downloadUrl en una llamada, adecuado para un solo deck. Para un lote, configura mode: "async", recoge los valores jobId y consulta. Cada deck tarda unos 30 segundos, y la clave permite 6 solicitudes por minuto, así que separa los envíos por 10 segundos.
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":"..."} luego consulta GET https://2slides.com/api/v1/jobs/{jobId}El ciclo completo en Python: lee el CSV, envía cada fila con un intervalo de 10 segundos, consulta cada trabajo cada 8 segundos y guarda el PPTX con un nombre que incluye unidad, grado e idioma para que dos grados con el mismo título de lección no se sobrescriban.
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) # consulta cada 5-10 s; el endpoint jobs permite 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 envíos por minuto, nunca más
os.makedirs("decks", exist_ok=True)
for row, job_id in queued:
job = wait(job_id)
if job["status"] != "success":
print("FALLÓ", 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("guardado", name)Escribe job_id, download_url y status = "draft" de vuelta en la hoja a medida que cada deck llega.

generate produce el mismo PPTX editable desde las mismas plantillas, una llamada por lección.
Paso 5: Variante para aula invertida: video-lecciones narradas cortas
Para un aula invertida, el artefacto que los estudiantes ven en casa es un video, así que cambia el pipeline. Los trabajos Fast PPT no pueden ser narrados. Usa create-pdf-slides para diapositivas diseñadas con imágenes en 16:9 a 2K, luego generate-narration con un solo hablante, y luego exporta el video. Mantén las lecciones cortas: 6 a 8 diapositivas con unos 45 segundos de narración cada una es un video de 5 a 6 minutos.
# 1) diapositivas diseñadas con imágenes (async por defecto)
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"
}'
# consulta GET /api/v1/jobs/{jobId} hasta que status = success (10 + 8 x 100 = 810 créditos)
# 2) narración con voz única en ese trabajo (8 x 210 = 1,680 créditos)
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
}'
# consulta nuevamente hasta éxito
# 3) PNG + WAV por página, gratis
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.zipDos opciones para el MP4: abre el trabajo en el espacio de trabajo de 2Slides y usa Exportar, luego Generar Video, que renderiza un MP4 H.264 a 1920×1080 en el navegador por 20 créditos por página; o une los pares PNG y WAV del ZIP con FFmpeg para una carga LMS totalmente automatizada. El post sobre shorts educativos sin rostro muestra la versión 9:16 para clips de revisión.
Paso 6: Alternativas sin código y con agentes
Automatización de currículo a PowerPoint en Make
Si nadie en el equipo de currículo quiere ejecutar un trabajo Python, el mismo ciclo cabe en un escenario Make (n8n y Zapier funcionan igual):
- Disparador: vigilar filas nuevas o actualizadas en la hoja de Google Sheets del currículo, o un disparador Webhook activado por el LMS.
- Transformación: un paso de texto o variable arma
userInputdesde los campos de la fila usando la plantilla del Paso 3. - Solicitud HTTP:
POST https://2slides.com/api/v1/slides/generateconmode: "async", el encabezadoAuthorization: Bearerguardado como secreto del escenario, yresponseLanguagemapeado desde la fila. - Espera: un paso Delay o Sleep de 30 a 45 segundos.
- Solicitud HTTP:
GET https://2slides.com/api/v1/jobs/{jobId}; sistatusno es aúnsuccessofailed, repetir la espera. - Entrega: subir el PPTX a una carpeta Drive por grado, luego escribir
download_urlystatus = "draft"de vuelta en la fila. - Control de ritmo: una fila por ejecución, al menos 10 segundos entre envíos, para que un pegado de 40 filas nunca supere 6 solicitudes por minuto.
Preguntar a un agente en su lugar
Los docentes que trabajan en Claude Code, Codex o Cursor pueden saltarse tanto el script como el escenario. Instala la 2Slides Agent Skill o añade el servidor MCP alojado (claude mcp add --transport http 2slides "https://2slides.com/api/mcp?apikey=YOUR_KEY"), pega la tabla del currículo y pide un deck por fila. El agente llama a las mismas herramientas themes_search, slides_generate y jobs_get con la misma clave y créditos; ver la página de Agent Skills.

Accesibilidad y revisión: borradores AI, docentes aprueban
Trata cada deck generado como un borrador. La columna status pasa de draft a reviewed a approved con las iniciales del revisor, y nada llega a estudiantes hasta que dice approved. Esto es una política, no una función, y es por eso que el PPTX editable importa más que un PDF más bonito para uso en aula.
Lista de verificación para revisión por deck:
- Contenido: cada objetivo de la fila aparece y es correcto para el estándar; no hay hechos o fechas inventadas; las preguntas de revisión rápida se pueden responder con las diapositivas.
- Nivel de lectura: la longitud de las oraciones y el vocabulario coinciden con el grado. Las diapositivas de grado 4 con oraciones de grado 9 son la corrección más común.
- Decks traducidos: un docente bilingüe revisa el deck en español o vietnamita por sus propios méritos, ya que los ejemplos necesitan ajuste cultural además de traducción correcta.
- Accesibilidad: añade texto alternativo a imágenes, verifica el contraste del texto contra el fondo de la plantilla, mantén el texto legible desde el fondo del aula y nunca transmitas significado solo con color. Las directrices WCAG son la referencia que la mayoría de distritos ya citan.
- Video-lecciones: el ZIP de
download-slides-pages-voiceste da un WAV por diapositiva, así que una transcripción con cualquier herramienta de voz a texto y subtítulos en el MP4 toma minutos.
Presupuesta unos 10 minutos de revisión docente por deck: aproximadamente 7 horas para 40 lecciones, frente a cero horas gastadas en crear decks desde una plantilla en blanco.
Costos para un departamento
Los créditos son pay-as-you-go: $5 compra 2,000 créditos ($0.0025 cada uno) y $80 compra 40,000 ($0.002 cada uno). Las cuentas nuevas reciben 500 créditos gratis, suficientes para 4 decks de prueba de 12 diapositivas.
| Volumen | Pipeline | Créditos | USD |
|---|---|---|---|
| 40 lecciones × 12 diapositivas (un departamento, un trimestre) | Fast PPT generate | 480 páginas × 10 = 4,800 | ≈ $12.00 al precio del paquete de $5 |
| 500 lecciones × 12 diapositivas (distrito o mercado de cursos, por mes) | Fast PPT generate | 6,000 páginas × 10 = 60,000 | ≈ $120 al precio del paquete de $80 |
| 40 lecciones invertidas × 8 diapositivas, 2K más narración | create-pdf-slides 40 × 810, generate-narration 40 × 1,680 | 32,400 + 67,200 = 99,600 | ≈ $199 a $249 |
| Exportación MP4 opcional para esas 40 lecciones en el espacio de trabajo | 320 páginas × 20 | 6,400 | ≈ $13 a $16 |
El tiempo es otro presupuesto. A 6 envíos por minuto, 40 lecciones se envían en unos 7 minutos y 500 en unos 84 minutos, cada deck termina aproximadamente 30 segundos después del envío.
¿Fast PPT o diapositivas diseñadas con imágenes para este caso?
- Fast PPT (
generate) cuando los docentes deben editar en PowerPoint o Google Slides y el volumen es alto: 120 créditos por un deck de 12 diapositivas, entregado en unos 30 segundos. create-pdf-slidescuando el deck es el artefacto final para estudiantes (video-lección, incrustación LMS) o necesita un estilo visual específico: 1,010 créditos por 10 páginas a 2K, más 210 por página para narración.create-like-thiscuando el distrito tiene una diapositiva con marca que cada deck debe igualar; pasa su URL pública comoreferenceImageUrl, mismo costo quecreate-pdf-slides.- Nunca los mezcles por accidente: narración y exportación MP4 existen solo para trabajos
create-pdf-slidesycreate-like-this, no para Fast PPT.
Errores comunes
- HTTP 429 durante un pegado masivo: la clave permite 6 solicitudes por minuto, así que mantén un solo emisor con un intervalo de 10 segundos. No disperses envíos en hilos o ramas de escenario que compartan clave.
- Clave API en la hoja o un Apps Script compartido: mantenla del lado servidor o en el almacén de secretos de la herramienta de automatización. Los docentes reciben decks, nunca claves.
- Narrar un trabajo Fast PPT: el endpoint de narración lo rechaza. Reconstruye la lección primero con
create-pdf-slides. - Pasar un código de idioma:
responseLanguage: "es"no es"Spanish". Valida la columna de idioma contra los nombres soportados. create-pdf-slidespor defecto usapage: 1: establece el conteo explícitamente (8 para una mini-lección) o usapage: 0para que el modelo elija. Una lección de una página es una sorpresa común en la primera ejecución.- Pegar todo el plan de unidad como
userInput: documentos largos de estándares producen decks poco enfocados. Reduce cada lección a objetivos, vocabulario y estructura de diapositivas primero.
Preguntas Frecuentes
¿Puedo generar diapositivas de lecciones programáticamente sin escribir código?
Sí. En Make, n8n o Zapier, un disparador de Sheets alimenta un paso de Solicitud HTTP que llama a POST /api/v1/slides/generate con mode: "async", seguido de un paso de espera y una segunda Solicitud HTTP a GET /api/v1/jobs/{id}. Los docentes también pueden saltarse las herramientas de automatización y pedir a un agente AI con la skill o servidor MCP de 2Slides que construya los decks desde una tabla de currículo pegada. Cada ruta usa la misma clave API y los mismos créditos.
¿Cómo hago diapositivas de lecciones multilingües desde un solo currículo?
Duplica cada fila de lección una vez por idioma y configura la columna de idioma con un nombre como "Spanish" o "Vietnamese". El script pasa ese valor como responseLanguage, así que objetivos y vocabulario idénticos producen un deck en inglés y otro en español desde un solo prompt. 2Slides soporta más de 20 idiomas de salida. Que un docente bilingüe revise cada deck traducido, porque los ejemplos de vocabulario necesitan ajuste cultural además de traducción correcta.
¿Existe una alternativa API de plan de lección a diapositivas con IA diferente a 2Slides?
Sí, varias herramientas de presentación tienen APIs. La API de Gamma ofrece automatización similar pero requiere un plan Pro para claves API, mientras que las claves 2Slides funcionan en cualquier cuenta, incluida una gratuita con 500 créditos. SlideSpeak y Canva Connect también exponen APIs. 2Slides es nuestro producto, así que compara en los puntos que importan para educación: salida PPTX editable, idioma por solicitud y precio por diapositiva.
¿Cuántas diapositivas debe tener un deck de lección generado?
Para un periodo de clase de 45 a 50 minutos, 10 a 14 diapositivas es un valor predeterminado manejable: título, objetivos, calentamiento, 4 a 6 diapositivas de contenido con una idea cada una, una diapositiva de vocabulario, una revisión rápida y un resumen. A 10 créditos por diapositiva, un deck de 12 diapositivas cuesta 120 créditos. Indica el conteo en userInput para que cada deck del lote tenga un tamaño, tiempo de revisión y costo predecibles.
¿Pueden los docentes editar los decks generados en PowerPoint o Google Slides?
Sí. El endpoint Fast PPT generate devuelve un PPTX nativo construido desde una plantilla diseñada, así que los cuadros de texto, formas e imágenes son editables en PowerPoint, Keynote o Google Slides tras la importación. Por eso esta receta trata la salida API como un borrador: el docente abre el archivo, ajusta ejemplos para sus estudiantes y guarda la versión aprobada. La salida create-pdf-slides es un PDF más imágenes por página y no es editable en texto.
Próximos pasos
Ahora tienes el diseño de hoja, plantilla de prompt, ciclo Python y política de revisión necesarios para generar diapositivas de lecciones programáticamente para todo un departamento, en todos los idiomas que el programa enseñe.
- Obtén una clave API en 2slides.com/api. El registro incluye 500 créditos gratis, suficientes para ejecutar cuatro lecciones de prueba de 12 diapositivas antes de comprar.
- Lee el post central, Casos de uso de API de presentación AI por equipo, para ver cómo equipos de ventas, RRHH y marketing ejecutan el mismo ciclo en sus propias hojas.
- Continúa con la receta batch para decks de vocabulario para una variante con prompt más pequeño, y la guía de video-lecciones antes de grabar tu primera lección para aula invertida.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free