2Slides Logo
Générez des diapositives de cours automatiquement à partir d'un programme scolaire (2026)
2Slides Team
19 min read

Générer des diapositives de cours de manière programmatique à partir d’un programme (2026)

Pour générer des diapositives de cours de manière programmatique, exportez votre programme sous forme d’une ligne par leçon (unité, titre, objectifs, vocabulaire, niveau, langue), puis faites qu’un script appelle l’endpoint 2Slides Fast PPT POST /api/v1/slides/generate une fois par ligne avec un thème éducatif issu de GET /api/v1/themes/search et responseLanguage défini par classe. Chaque présentation de 12 diapositives est un PPTX modifiable qui coûte 120 crédits, environ 0,30 $, et est livré en environ 30 secondes. Pour les classes inversées, create-pdf-slides plus generate-narration produit de courtes vidéos de cours. Conçu pour les développeurs edtech, les concepteurs pédagogiques et les équipes de programmes scolaires.

Points clés

  • Une présentation Fast PPT coûte 10 crédits par diapositive, donc une présentation de 12 diapositives coûte 120 crédits, environ 0,30 $ au tarif de 5 $ pour 2 000 crédits.
  • Un département avec 40 leçons de 12 diapositives utilise 4 800 crédits, soit environ 12 $, et soumet en environ 7 minutes avec la limite de 6 requêtes par minute.
  • responseLanguage accepte un nom de langue tel que « Spanish » ou « Vietnamese », couvrant plus de 20 langues de sortie pour des programmes bilingues à partir des mêmes lignes de programme.
  • La sortie Fast PPT est un PPTX natif et modifiable, donc les enseignants peuvent adapter chaque diapositive avant le cours. Les présentations Fast PPT ne peuvent pas être narrées.
  • Pour les classes inversées, une vidéo de cours narrée de 8 diapositives coûte 2 490 crédits (810 pour 2K diapositives plus 1 680 pour la narration), soit environ 5 à 6,25 $.

À qui cela s’adresse

Concepteurs pédagogiques, ingénieurs edtech et créateurs de cours qui détiennent le programme sous une forme structurée (Google Sheet, CSV LMS, base de données de cours) et ont besoin d’un brouillon de présentation pour chaque leçon, pas seulement quelques-unes. Les équipes de district gérant des programmes bilingues, où une leçon doit exister en anglais et en espagnol ou vietnamien, tirent le plus parti du champ langue par ligne.

Ignorez cette recette si vous avez cinq leçons et un enseignant avec un après-midi ; le tour d’horizon des outils pour enseignants couvre la voie des applications web.

Le flux de travail en un coup d’œil

ÉtapeOutilCe qui se passeEndpoint 2Slides / crédits
1Export Sheets ou LMSUne ligne par leçon et langue : unité, titre, niveau, objectifs, vocabulaire, nombre de diapositivesaucun
2curl ou navigateurRecherche de thèmes éducation et classe, stockage d’un themeId par tranche de niveauGET /api/v1/themes/search, gratuit
3Python ou NodeConstruction d’un prompt structuré à partir des champs de la ligne, définition de responseLanguage par classeaucun
4Python ou MakeUn appel generate par ligne avec mode: "async", au maximum 6 par minutePOST /api/v1/slides/generate, 10 crédits par page
5ScriptInterrogation toutes les 5 à 10 s jusqu’à success, téléchargement du PPTX vers Drive ou LMSGET /api/v1/jobs/{id}, gratuit
6EnseignantRevue, édition et approbation du PPTX avant diffusion aux élèvesaucun
7 (optionnel)Script plus espace de travailClasse inversée : diapositives conçues en images, narration à voix unique, export MP4create-pdf-slides 10 + 100 par page à 2K, generate-narration 210 par page

Étape 1 : Normaliser l’export du programme

Aplatissez l’export LMS ou le guide de progression en une ligne par leçon par langue. Si une leçon est donnée en deux langues, dupliquez la ligne en ne changeant que la colonne language. Gardez les champs multi-valeurs (objectifs, vocabulaire) séparés par des pipes pour que le générateur de prompt puisse les transformer en listes à puces.

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

Ajoutez trois colonnes de suivi que le script remplira plus tard : job_id, download_url et status. La colonne status pilote le flux de révision décrit ci-dessous.

Étape 2 : Trouver un themeId adapté à l’éducation

Le themeId détermine l’apparence d’une présentation Fast PPT. Recherchez parmi les 1 500+ modèles avec des termes liés à la classe, puis conservez un ou deux IDs par tranche de niveau : un style dessiné à la main ou griffonné pour l’élémentaire, quelque chose de plus épuré pour le secondaire.

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

Chaque résultat inclut un themeId et des métadonnées. Stockez les IDs comme variables d’environnement (EDU_THEME_ELEMENTARY, EDU_THEME_SECONDARY) plutôt que dans la feuille. L’endpoint de recherche est gratuit mais partage la limite de 6 requêtes par minute, donc lancez-le une fois lors de la configuration, pas une fois par leçon.

2Slides Templates Hub avec des thèmes style dessin à la main et griffonnage adaptés aux classes
Figure 1 : Le hub des modèles 2Slides, parcouru ici pour présélectionner des styles dessinés à la main et griffonnés pour les niveaux jeunes ; les mêmes modèles sont accessibles via themes/search.

Étape 3 : Construire le prompt et définir la langue pour des diapositives multilingues

Le prompt est là où la qualité du programme devient qualité de la présentation. Donnez au modèle le niveau, les objectifs en puces, le vocabulaire à définir, et une structure fixe de diapositives. Gardez userInput sous quelques centaines de mots ; les objectifs et le vocabulaire sont l’entrée, pas tout le plan d’unité.

Puis définissez responseLanguage depuis la ligne. Il prend un nom de langue, donc « Spanish » et « Vietnamese » fonctionnent, mais pas « es » ou « vi ». Rédigez le prompt en anglais et laissez la présentation sortir en espagnol ; un seul modèle sert tout le programme.

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.

Paramètres de l’endpoint generate de 2Slides et les 20+ langues de sortie supportées
Figure 2 : Paramètres de l’endpoint generate dans la documentation API 2Slides, incluant les 20+ valeurs que responseLanguage accepte par nom.

Étape 4 : Générer les diapositives de cours de manière programmatique avec Fast PPT

C’est l’étape qui permet à une petite équipe de créer en masse des présentations de classe. Fast PPT generate est synchrone par défaut et retourne un downloadUrl en un appel, ce qui convient pour une seule présentation. Pour un lot, définissez mode: "async", collectez les jobId, et interrogez. Chaque présentation prend environ 30 secondes, et la clé autorise 6 requêtes par minute, donc espacez les soumissions de 10 secondes.

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":"..."} puis interroger GET https://2slides.com/api/v1/jobs/{jobId}

La boucle complète en Python : lire le CSV, soumettre chaque ligne avec un intervalle de 10 secondes, interroger chaque job toutes les 8 secondes, et sauvegarder le PPTX sous un nom de fichier incluant unité, niveau et langue pour que deux niveaux avec le même titre de leçon ne s’écrasent pas.

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) # interroger toutes les 5-10 s ; endpoint jobs autorise 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 soumissions par minute, jamais plus os.makedirs("decks", exist_ok=True) for row, job_id in queued: job = wait(job_id) if job["status"] != "success": print("ÉCHEC", 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("sauvegardé", name)

Écrivez job_id, download_url et status = "draft" dans la feuille au fur et à mesure que chaque présentation arrive.

Interface Fast PPT 2Slides montrant des cartes de modèles comme Blue Doodle study-abroad et Critical Thinking
Figure 3 : L’interface Fast PPT dans l’application web 2Slides. L’endpoint generate produit le même PPTX modifiable à partir des mêmes modèles, un appel par leçon.

Étape 5 : Variante classe inversée : courtes vidéos de cours narrées

Pour une classe inversée, l’artefact que les élèves voient à la maison est une vidéo, donc changez de pipeline. Les jobs Fast PPT ne peuvent pas être narrés. Utilisez create-pdf-slides pour des diapositives conçues en images au format 16:9 en 2K, puis generate-narration avec un seul intervenant, puis exportez la vidéo. Gardez les cours courts : 6 à 8 diapositives avec environ 45 secondes de narration chacune font une vidéo de 5 à 6 minutes.

# 1) diapositives conçues en images (async par défaut) 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" }' # interroger GET /api/v1/jobs/{jobId} jusqu’à status = success (10 + 8 x 100 = 810 crédits) # 2) narration à voix unique sur ce job (8 x 210 = 1 680 crédits) 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 }' # interroger à nouveau jusqu’à succès # 3) PNG + WAV par page, gratuit 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

Deux options pour le MP4 : ouvrez le job dans l’espace de travail 2Slides et utilisez Exporter, puis Générer la vidéo, qui rend un MP4 H.264 en 1920×1080 dans le navigateur pour 20 crédits par page ; ou assemblez les paires PNG et WAV du ZIP avec FFmpeg pour un upload LMS entièrement scripté. Le post sur les courts éducatifs sans visage montre la version 9:16 pour les clips de révision.

Étape 6 : Alternatives sans code et agents

Automatisation du programme vers PowerPoint dans Make

Si personne dans l’équipe programme ne veut lancer un job Python, la même boucle s’intègre dans un scénario Make (n8n et Zapier fonctionnent pareil) :

  • Déclencheur : surveillez les nouvelles lignes ou mises à jour dans la Google Sheet du programme, ou un déclencheur Webhook lancé par le LMS.
  • Transformation : une étape texte ou variable assemble userInput à partir des champs de la ligne selon le modèle de l’étape 3.
  • Requête HTTP : POST https://2slides.com/api/v1/slides/generate avec mode: "async", l’en-tête Authorization: Bearer stocké comme secret du scénario, et responseLanguage mappé depuis la ligne.
  • Attente : une étape Delay ou Sleep de 30 à 45 secondes.
  • Requête HTTP : GET https://2slides.com/api/v1/jobs/{jobId} ; si status n’est pas encore success ou failed, bouclez avec une autre attente.
  • Livraison : téléchargez le PPTX dans un dossier Drive par niveau, puis écrivez download_url et status = "draft" dans la ligne.
  • Limitation : une ligne par exécution, au moins 10 secondes entre les soumissions, ainsi un collage de 40 lignes ne dépasse jamais 6 requêtes par minute.

Demander à un agent à la place

Les enseignants qui travaillent dans Claude Code, Codex ou Cursor peuvent sauter le script et le scénario. Installez la compétence 2Slides Agent Skill ou ajoutez le serveur MCP hébergé (claude mcp add --transport http 2slides "https://2slides.com/api/mcp?apikey=YOUR_KEY"), collez la table du programme, et demandez une présentation par ligne. L’agent appelle les mêmes outils themes_search, slides_generate et jobs_get avec la même clé et crédits ; voir la page Agent Skills.

Page 2Slides Agent Skills : lancer la même génération depuis Claude Code, Codex, Cursor et autres agents
Figure 4 : La page 2Slides Agent Skills. La compétence et le serveur MCP exposent les sept outils API aux agents de codage, pour qu’un enseignant puisse demander des présentations en langage naturel.

Accessibilité et révision : brouillons IA, enseignants valident

Considérez chaque présentation générée comme un brouillon. La colonne status passe de draft à reviewed puis approved avec les initiales du réviseur, et rien ne parvient aux élèves tant que ce n’est pas approved. C’est une politique, pas une fonctionnalité, et c’est pourquoi le PPTX modifiable importe plus qu’un PDF plus joli pour l’usage en classe.

Une checklist de révision par présentation :

  • Contenu : chaque objectif de la ligne apparaît et est correct pour la norme ; pas de faits ou dates inventés ; les questions du contrôle rapide sont répondables à partir des diapositives.
  • Niveau de lecture : la longueur des phrases et le vocabulaire correspondent au niveau. Les diapositives de niveau 4 avec des phrases de niveau 9 sont la correction la plus fréquente.
  • Présentations traduites : un enseignant bilingue révise la présentation espagnole ou vietnamienne sur ses propres mérites, car les exemples doivent convenir culturellement autant que la traduction soit correcte.
  • Accessibilité : ajoutez du texte alternatif aux images, vérifiez le contraste du texte avec le fond du modèle, gardez le texte lisible depuis le fond de la salle, et ne transmettez jamais d’information par la couleur seule. Les directives WCAG sont la référence citée par la plupart des districts.
  • Vidéos de cours : le ZIP de download-slides-pages-voices vous donne un WAV par diapositive, donc une transcription avec n’importe quel outil de reconnaissance vocale et des sous-titres sur le MP4 prennent quelques minutes.

Prévoyez environ 10 minutes de révision enseignant par présentation : environ 7 heures pour 40 leçons, contre zéro heure passé à créer des présentations à partir d’un modèle vierge.

Coût pour un département

Les crédits sont payés à l’usage : 5 $ achètent 2 000 crédits (0,0025 $ chacun) et 80 $ achètent 40 000 (0,002 $ chacun). Les nouveaux comptes reçoivent 500 crédits gratuits, suffisants pour 4 présentations test de 12 diapositives.

VolumePipelineCréditsUSD
40 leçons × 12 diapositives (un département, un trimestre)Fast PPT generate480 pages × 10 = 4 800≈ 12,00 $ au tarif pack 5 $
500 leçons × 12 diapositives (district ou marché de cours, par mois)Fast PPT generate6 000 pages × 10 = 60 000≈ 120 $ au tarif pack 80 $
40 cours inversés × 8 diapositives, 2K plus narrationcreate-pdf-slides 40 × 810, generate-narration 40 × 1 68032 400 + 67 200 = 99 600≈ 199 à 249 $
Export MP4 optionnel pour ces 40 cours dans l’espace de travail320 pages × 206 400≈ 13 à 16 $

Le temps est l’autre budget. À 6 soumissions par minute, 40 leçons se soumettent en environ 7 minutes et 500 en environ 84 minutes, chaque présentation se terminant environ 30 secondes après la soumission.

Fast PPT ou diapositives conçues en images pour ce cas d’usage ?

  • Fast PPT (generate) quand les enseignants doivent éditer dans PowerPoint ou Google Slides et que le volume est élevé : 120 crédits pour une présentation de 12 diapositives, livrée en environ 30 secondes.
  • create-pdf-slides quand la présentation est l’artefact final destiné aux élèves (vidéo de cours, intégration LMS) ou nécessite un style visuel spécifique : 1 010 crédits pour 10 pages en 2K, plus 210 par page pour la narration.
  • create-like-this quand le district a une diapositive de marque que chaque présentation doit respecter ; passez son URL publique comme referenceImageUrl, même coût que create-pdf-slides.
  • Ne les mélangez jamais par accident : narration et export MP4 existent uniquement pour les jobs create-pdf-slides et create-like-this, pas pour Fast PPT.

Pièges courants

  • HTTP 429 lors d’un collage massif : la clé autorise 6 requêtes par minute, donc gardez un seul soumissionnaire avec un intervalle de 10 secondes. Ne répartissez pas les soumissions sur plusieurs threads ou branches de scénario partageant une clé.
  • Clé API dans la feuille ou un Apps Script partagé : gardez-la côté serveur ou dans le magasin de secrets de l’outil d’automatisation. Les enseignants reçoivent les présentations, jamais les clés.
  • Narration d’un job Fast PPT : l’endpoint narration le rejette. Reconstruisez la leçon avec create-pdf-slides d’abord.
  • Passage d’un code langue : responseLanguage: "es" n’est pas "Spanish". Validez la colonne langue avec les noms supportés.
  • create-pdf-slides par défaut à page: 1 : définissez explicitement le nombre (8 pour une mini-leçon) ou utilisez page: 0 pour laisser le modèle choisir. Une leçon d’une page est une surprise fréquente au premier lancement.
  • Coller tout le plan d’unité comme userInput : des documents de normes longs produisent des présentations peu ciblées. Réduisez chaque leçon aux objectifs, vocabulaire et structure de diapositives d’abord.

Questions fréquemment posées

Puis-je générer des diapositives de cours de manière programmatique sans coder ?

Oui. Dans Make, n8n ou Zapier, un déclencheur Sheets alimente une étape Requête HTTP qui appelle POST /api/v1/slides/generate avec mode: "async", suivi d’une étape d’attente et d’une seconde Requête HTTP vers GET /api/v1/jobs/{id}. Les enseignants peuvent aussi sauter les outils d’automatisation et demander à un agent IA avec la compétence 2Slides ou le serveur MCP de construire les présentations à partir d’un tableau de programme collé. Chaque voie utilise la même clé API et les mêmes crédits.

Comment créer des diapositives multilingues à partir d’un seul programme ?

Dupliquez chaque ligne de leçon une fois par langue et définissez la colonne langue avec un nom tel que « Spanish » ou « Vietnamese ». Le script passe cette valeur comme responseLanguage, donc des objectifs et vocabulaire identiques produisent une présentation en anglais et une en espagnol à partir d’un seul modèle de prompt. 2Slides supporte plus de 20 langues de sortie. Faites réviser chaque présentation traduite par un enseignant bilingue, car les exemples de vocabulaire doivent convenir culturellement autant que la traduction soit correcte.

Existe-t-il une alternative API IA plan de cours vers diapositives à 2Slides ?

Oui, plusieurs outils de présentation ont des API. L’API Gamma offre une automatisation similaire mais nécessite un plan Pro pour les clés API, tandis que les clés 2Slides fonctionnent sur tout compte, y compris un gratuit avec 500 crédits. SlideSpeak et Canva Connect exposent aussi des API. 2Slides est notre produit, donc comparez sur les points importants pour l’éducation : sortie PPTX modifiable, langue par requête, et tarification par diapositive.

Combien de diapositives une présentation de cours générée doit-elle avoir ?

Pour une séance de 45 à 50 minutes, 10 à 14 diapositives est un bon standard : titre, objectifs, échauffement, 4 à 6 diapositives de contenu avec une idée chacune, une diapositive vocabulaire, un contrôle rapide, et un résumé. À 10 crédits par diapositive, une présentation de 12 diapositives coûte 120 crédits. Indiquez le nombre dans userInput pour que chaque présentation du lot ait une taille, un temps de révision et un coût prévisibles.

Les enseignants peuvent-ils modifier les présentations générées dans PowerPoint ou Google Slides ?

Oui. L’endpoint Fast PPT generate retourne un PPTX natif construit à partir d’un modèle conçu, donc les zones de texte, formes et images sont modifiables dans PowerPoint, Keynote ou Google Slides après import. C’est pourquoi cette recette considère la sortie API comme un brouillon : l’enseignant ouvre le fichier, ajuste les exemples pour ses élèves, et sauvegarde la version approuvée. La sortie create-pdf-slides est un PDF plus images par page et n’est pas modifiable en texte.

Prochaines étapes

Vous avez maintenant la mise en page de la feuille, le modèle de prompt, la boucle Python et la politique de révision nécessaires pour générer des diapositives de cours de manière programmatique pour un département entier, dans toutes les langues enseignées par le programme.

About 2Slides

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

Try For Free