2Slides Logo
Gere Slides de Aula Programaticamente a partir de um Currículo (2026)
2Slides Team
18 min read

Gerar Slides de Aula Programaticamente a partir de um Currículo (2026)

Para gerar slides de aula programaticamente, exporte seu currículo como uma linha por aula (unidade, título, objetivos, vocabulário, série, idioma), depois faça um script chamar o endpoint POST /api/v1/slides/generate do 2Slides Fast PPT uma vez por linha com um tema educacional obtido via GET /api/v1/themes/search e responseLanguage definido por turma. Cada deck de 12 slides é um PPTX editável que custa 120 créditos, cerca de $0,30, e retorna em cerca de 30 segundos. Para salas invertidas, create-pdf-slides mais generate-narration produzem videoaulas curtas. Feito para desenvolvedores edtech, designers instrucionais e equipes de currículo distrital.

Principais pontos

  • Um deck de aula Fast PPT custa 10 créditos por slide, então um deck de 12 slides custa 120 créditos, cerca de $0,30 na tarifa de $5 por 2.000 créditos.
  • Um departamento com 40 aulas de 12 slides cada usa 4.800 créditos, aproximadamente $12, e submete em cerca de 7 minutos no limite de 6 requisições por minuto.
  • responseLanguage aceita o nome do idioma como "Spanish" ou "Vietnamese", cobrindo mais de 20 idiomas de saída para programas bilíngues a partir das mesmas linhas do currículo.
  • A saída Fast PPT é um PPTX nativo e editável, para que os professores possam adaptar cada slide antes da aula. Decks Fast PPT não podem ser narrados.
  • Para salas invertidas, uma videoaula narrada de 8 slides custa 2.490 créditos (810 para 2K slides mais 1.680 para narração), cerca de $5 a $6,25.

Para quem é isto

Designers instrucionais, engenheiros edtech e criadores de cursos que mantêm o currículo em formato estruturado (uma planilha Google Sheets, CSV de LMS, banco de dados de curso) e precisam de um deck rascunho para cada aula, não apenas algumas. Equipes distritais que executam programas bilíngues, onde uma aula deve existir em inglês e espanhol ou vietnamita, aproveitam ao máximo o campo de idioma por linha.

Pule esta receita se você tem cinco aulas e um professor com uma tarde livre; a ferramenta focada em professores cobre o caminho via web-app.

Fluxo de trabalho em resumo

PassoFerramentaO que aconteceEndpoint 2Slides / créditos
1Exportação do Sheets ou LMSUma linha por aula e idioma: unidade, título, série, objetivos, vocabulário, contagem de slidesnenhum
2curl ou navegadorBusca temas educacionais e de sala de aula, armazena um themeId por faixa de sérieGET /api/v1/themes/search, grátis
3Python ou NodeMonta um prompt estruturado a partir dos campos da linha, define responseLanguage por turmanenhum
4Python ou MakeUma chamada generate por linha com mode: "async", no máximo 6 por minutoPOST /api/v1/slides/generate, 10 créditos por página
5ScriptConsulta a cada 5 a 10 s até success, baixa o PPTX para Drive ou LMSGET /api/v1/jobs/{id}, grátis
6ProfessorRevisar, editar e aprovar o PPTX antes de chegar aos alunosnenhum
7 (opcional)Script mais workspaceSala invertida: slides com design de imagem, narração com voz única, exportação MP4create-pdf-slides 10 + 100 por página a 2K, generate-narration 210 por página

Passo 1: Normalizar a exportação do currículo

Achate a exportação do LMS ou guia de ritmo em uma linha por aula por idioma. Se uma aula for ministrada em dois idiomas, duplique a linha e altere apenas a coluna language. Mantenha campos com múltiplos valores (objetivos, vocabulário) separados por pipe para que o construtor de prompt possa transformá-los em bullets.

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,10

Adicione três colunas de controle que o script preencherá depois: job_id, download_url e status. A coluna status controla o fluxo de revisão descrito abaixo.

Passo 2: Encontrar um themeId adequado para educação

O themeId decide a aparência do deck Fast PPT. Busque entre os mais de 1.500 templates com termos de sala de aula, depois mantenha um ou dois IDs por faixa de série: um estilo desenhado à mão ou doodle para o ensino fundamental, algo mais limpo para o ensino médio.

curl "https://2slides.com/api/v1/themes/search?query=education&limit=10" \ -H "Authorization: Bearer $SLIDES_API_KEY" # Também vale tentar: query=classroom, query=doodle, query=science, query=study

Cada resultado inclui um themeId e metadados. Armazene os IDs como variáveis de ambiente (EDU_THEME_ELEMENTARY, EDU_THEME_SECONDARY) em vez de na planilha. O endpoint de busca é gratuito, mas compartilha o limite de 6 requisições por minuto, então execute-o uma vez na configuração, não uma vez por aula.

2Slides Templates Hub com temas em estilo desenhado à mão e doodle adequados para salas de aula
Figura 1: O 2Slides Templates Hub, navegando aqui para selecionar estilos desenhados à mão e doodle para séries mais jovens; os mesmos templates são pesquisáveis via themes/search.

Passo 3: Construir o prompt e definir o idioma para slides multilíngues

O prompt é onde a qualidade do currículo vira qualidade do deck. Dê ao modelo a série, os objetivos em bullets, o vocabulário a definir e uma estrutura fixa de slides. Mantenha userInput abaixo de algumas centenas de palavras; os objetivos e vocabulário são a entrada, não o plano completo da unidade.

Depois defina responseLanguage a partir da linha. Ele aceita o nome do idioma, então "Spanish" e "Vietnamese" funcionam, mas "es" e "vi" não. Escreva o prompt em inglês e deixe o deck sair em espanhol; um template serve para todo o 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.

Parâmetros do endpoint generate do 2Slides e os 20+ idiomas de saída suportados
Figura 2: Parâmetros do endpoint generate na documentação da API 2Slides, incluindo os mais de 20 valores que responseLanguage aceita por nome.

Passo 4: Gerar slides de aula programaticamente com Fast PPT

Este é o passo que permite a uma pequena equipe criar apresentações em lote. O generate do Fast PPT usa sync por padrão e retorna um downloadUrl numa chamada, bom para um deck único. Para lote, defina mode: "async", colete os valores jobId e consulte. Cada deck leva cerca de 30 segundos, e a chave permite 6 requisições por minuto, então espaçe as submissões em 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":"..."} então consulte GET https://2slides.com/api/v1/jobs/{jobId}

O loop completo em Python: leia o CSV, submeta cada linha com intervalo de 10 segundos, consulte cada job a cada 8 segundos e salve o PPTX com nome que inclui unidade, série e idioma para que duas séries com o mesmo título de aula não sobrescrevam.

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 a cada 5-10 s; 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 submissões por minuto, nunca mais os.makedirs("decks", exist_ok=True) for row, job_id in queued: job = wait(job_id) if job["status"] != "success": print("FAILED", 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("saved", name)

Escreva job_id, download_url e status = "draft" de volta na planilha conforme cada deck chega.

Interface Fast PPT do 2Slides mostrando cards de templates como Blue Doodle study-abroad e Critical Thinking
Figura 3: Interface Fast PPT no app web 2Slides. O endpoint generate produz o mesmo PPTX editável a partir dos mesmos templates, uma chamada por aula.

Passo 5: Variante para sala invertida: videoaulas narradas curtas

Para uma sala invertida, o artefato que os alunos veem em casa é um vídeo, então mude o pipeline. Jobs Fast PPT não podem ser narrados. Use create-pdf-slides para slides com design de imagem 16:9 a 2K, depois generate-narration com um único locutor, e então exporte o vídeo. Mantenha as aulas curtas: 6 a 8 slides com cerca de 45 segundos de narração cada é um vídeo de 5 a 6 minutos.

# 1) slides com design de imagem (async por padrão) 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" }' # consulte GET /api/v1/jobs/{jobId} até status = success (10 + 8 x 100 = 810 créditos) # 2) narração com voz única nesse job (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 }' # consulte novamente até sucesso # 3) PNG + WAV por página, grátis 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.zip

Duas opções para o MP4: abra o job no workspace 2Slides e use Exportar, depois Gerar Vídeo, que renderiza um MP4 H.264 a 1920×1080 no navegador por 20 créditos por página; ou una os pares PNG e WAV do ZIP com FFmpeg para upload totalmente scriptado no LMS. O post sobre shorts educacionais sem rosto mostra a versão 9:16 para clipes de revisão.

Passo 6: Alternativas sem código e com agentes

Automação currículo para PowerPoint no Make

Se ninguém na equipe de currículo quiser rodar um job Python, o mesmo loop cabe num cenário Make (n8n e Zapier funcionam igual):

  • Gatilho: observar linhas novas ou atualizadas na planilha Google Sheets do currículo, ou um gatilho Webhook disparado pelo LMS.
  • Transformação: um passo de texto ou variável monta userInput a partir dos campos da linha usando o template do Passo 3.
  • Requisição HTTP: POST https://2slides.com/api/v1/slides/generate com mode: "async", cabeçalho Authorization: Bearer armazenado como segredo do cenário, e responseLanguage mapeado da linha.
  • Espera: um passo Delay ou Sleep de 30 a 45 segundos.
  • Requisição HTTP: GET https://2slides.com/api/v1/jobs/{jobId}; se status ainda não for success ou failed, repete a espera.
  • Entrega: envia o PPTX para uma pasta Drive por série, depois escreve download_url e status = "draft" de volta na linha.
  • Controle: uma linha por execução, pelo menos 10 segundos entre submissões, para que uma colagem de 40 linhas nunca ultrapasse 6 requisições por minuto.

Pergunte a um agente em vez disso

Professores que trabalham no Claude Code, Codex ou Cursor podem pular o script e o cenário. Instale a 2Slides Agent Skill ou adicione o servidor MCP hospedado (claude mcp add --transport http 2slides "https://2slides.com/api/mcp?apikey=YOUR_KEY"), cole a tabela do currículo e peça um deck por linha. O agente chama as mesmas ferramentas themes_search, slides_generate e jobs_get com a mesma chave e créditos; veja a página Agent Skills.

Página 2Slides Agent Skills: rode a mesma geração do Claude Code, Codex, Cursor e outros agentes
Figura 4: Página 2Slides Agent Skills. A skill e o servidor MCP expõem as sete ferramentas API para agentes de código, para que um professor possa pedir decks em linguagem natural.

Acessibilidade e revisão: rascunhos de IA, professores aprovam

Trate cada deck gerado como um rascunho. A coluna status passa de draft para reviewed para approved com as iniciais do revisor, e nada chega aos alunos até estar approved. Isso é uma política, não um recurso, e é por isso que o PPTX editável importa mais que um PDF mais bonito para uso em sala.

Checklist de revisão por deck:

  • Conteúdo: todo objetivo da linha aparece e está correto para o padrão; sem fatos ou datas inventadas; as perguntas do quick-check são respondíveis a partir dos slides.
  • Nível de leitura: comprimento das frases e vocabulário condizem com a série. Slides da série 4 com frases da série 9 são o ajuste mais comum.
  • Decks traduzidos: um professor bilíngue revisa o deck em espanhol ou vietnamita por seus próprios méritos, pois exemplos precisam de adequação cultural além da tradução correta.
  • Acessibilidade: adicione texto alternativo às imagens, verifique contraste do texto contra o fundo do template, mantenha o texto legível do fundo da sala, e nunca transmita significado só pela cor. As diretrizes WCAG são a referência que a maioria dos distritos já cita.
  • Videoaulas: o ZIP de download-slides-pages-voices dá um WAV por slide, então uma transcrição por qualquer ferramenta de fala para texto e legendas no MP4 levam minutos.

Orce cerca de 10 minutos de revisão por deck: aproximadamente 7 horas para 40 aulas, contra zero horas gastas construindo decks do zero.

Quanto custa para um departamento

Créditos são pay-as-you-go: $5 compra 2.000 créditos ($0,0025 cada) e $80 compra 40.000 ($0,002 cada). Contas novas ganham 500 créditos grátis, suficientes para 4 decks teste de 12 slides.

VolumePipelineCréditosUSD
40 aulas × 12 slides (um departamento, um semestre)Fast PPT generate480 páginas × 10 = 4.800≈ $12,00 na tarifa do pacote de $5
500 aulas × 12 slides (distrito ou marketplace de cursos, por mês)Fast PPT generate6.000 páginas × 10 = 60.000≈ $120 no pacote de $80
40 videoaulas invertidas × 8 slides, 2K mais narraçãocreate-pdf-slides 40 × 810, generate-narration 40 × 1.68032.400 + 67.200 = 99.600≈ $199 a $249
Exportação MP4 opcional para essas 40 videoaulas no workspace320 páginas × 206.400≈ $13 a $16

Tempo é outro orçamento. A 6 submissões por minuto, 40 aulas submetem em cerca de 7 minutos e 500 em cerca de 84 minutos, cada deck terminando cerca de 30 segundos após a submissão.

Fast PPT ou slides com design de imagem para este caso?

  • Fast PPT (generate) quando professores precisam editar no PowerPoint ou Google Slides e o volume é alto: 120 créditos para deck de 12 slides, entregue em cerca de 30 segundos.
  • create-pdf-slides quando o deck é o artefato final para o aluno (videoaula, embed no LMS) ou precisa de estilo visual específico: 1.010 créditos para 10 páginas a 2K, mais 210 por página para narração.
  • create-like-this quando o distrito tem um slide com marca que todo deck deve seguir; passe sua URL pública como referenceImageUrl, mesmo custo de create-pdf-slides.
  • Nunca misture por acidente: narração e exportação MP4 existem só para jobs create-pdf-slides e create-like-this, não para Fast PPT.

Armadilhas comuns

  • HTTP 429 durante colagem em lote: a chave permite 6 requisições por minuto, então mantenha um único submitter com intervalo de 10 segundos. Não espalhe submissões por threads ou ramos de cenário que compartilham a chave.
  • Chave API na planilha ou Apps Script compartilhado: mantenha no servidor ou na loja de segredos da ferramenta de automação. Professores recebem decks, nunca chaves.
  • Narrar um job Fast PPT: o endpoint de narração rejeita. Refaça a aula com create-pdf-slides primeiro.
  • Passar código de idioma: responseLanguage: "es" não é "Spanish". Valide a coluna idioma contra os nomes suportados.
  • create-pdf-slides padrão é page: 1: defina a contagem explicitamente (8 para mini-aula) ou use page: 0 para deixar o modelo escolher. Uma aula de uma página é surpresa comum na primeira execução.
  • Colar o plano inteiro da unidade como userInput: documentos longos de padrões produzem decks dispersos. Reduza cada aula a objetivos, vocabulário e estrutura de slides primeiro.

Perguntas Frequentes

Posso gerar slides de aula programaticamente sem escrever código?

Sim. No Make, n8n ou Zapier, um gatilho Sheets alimenta um passo HTTP Request que chama POST /api/v1/slides/generate com mode: "async", seguido de um passo de espera e uma segunda requisição HTTP para GET /api/v1/jobs/{id}. Professores também podem pular ferramentas de automação e pedir a um agente de IA com a skill 2Slides ou servidor MCP para construir os decks a partir de uma tabela de currículo colada. Todo caminho usa a mesma chave API e os mesmos créditos.

Como faço slides multilíngues a partir de um currículo?

Duplique cada linha de aula uma vez por idioma e defina a coluna idioma para um nome como "Spanish" ou "Vietnamese". O script passa esse valor como responseLanguage, então objetivos e vocabulário idênticos produzem um deck em inglês e outro em espanhol a partir do mesmo template de prompt. 2Slides suporta mais de 20 idiomas de saída. Peça a um professor bilíngue para revisar cada deck traduzido, pois exemplos de vocabulário precisam de adequação cultural além da tradução correta.

Existe uma API alternativa para plano de aula para slides com IA além do 2Slides?

Sim, várias ferramentas de apresentação têm APIs. A API da Gamma oferece automação similar, mas requer plano Pro para chaves API, enquanto as chaves 2Slides funcionam em qualquer conta, inclusive grátis com 500 créditos. SlideSpeak e Canva Connect também expõem APIs. 2Slides é nosso produto, então compare nos pontos que importam para educação: saída PPTX editável, idioma por requisição e preço por slide.

Quantos slides um deck de aula gerado deve ter?

Para uma aula de 45 a 50 minutos, 10 a 14 slides é um padrão viável: título, objetivos, aquecimento, 4 a 6 slides de conteúdo com uma ideia cada, slide de vocabulário, quick check e resumo. A 10 créditos por slide, um deck de 12 slides custa 120 créditos. Declare a contagem em userInput para que cada deck do lote tenha tamanho, tempo de revisão e custo previsíveis.

Professores podem editar os decks gerados no PowerPoint ou Google Slides?

Sim. O endpoint generate do Fast PPT retorna um PPTX nativo construído a partir de um template desenhado, então caixas de texto, formas e imagens são editáveis no PowerPoint, Keynote ou Google Slides após importação. Por isso esta receita trata a saída da API como rascunho: o professor abre o arquivo, ajusta exemplos para seus alunos e salva a versão aprovada. A saída create-pdf-slides é um PDF mais imagens das páginas e não é editável em texto.

Próximos passos

Agora você tem o layout da planilha, template de prompt, loop Python e política de revisão necessários para gerar slides de aula programaticamente para um departamento inteiro, em todos os idiomas que o programa ensina.

About 2Slides

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

Try For Free