2Slides Logo
Pipeline de la recherche à la présentation : Tavily, LLM, Slides API (2026)
2Slides Team
18 min read

Pipeline de la recherche à la présentation : Tavily, LLM, Slides API (2026)

Un pipeline de la recherche à la présentation prend un sujet en entrée et retourne un deck sourcé. Une API de recherche (Tavily ou Exa) collecte 10 à 20 sources, un LLM rédige un brief de 12 diapositives avec citations numérotées, et l’API 2Slides transforme le brief en deck : POST /api/v1/slides/generate pour un PPTX éditable à 10 crédits par page (120 crédits, environ 0,30 $, pour 12 diapositives), ou create-pdf-slides pour des diapositives au design image à 10 + 100 crédits par page. Ce workflow convient aux équipes de conseil, analystes et opérations de recherche qui livrent le même deck chaque semaine.

Points clés

  • Un deck Fast PPT de 12 diapositives coûte 120 crédits, environ 0,30 $ au tarif du pack à 5 $ ; la version au design image coûte 1 210 crédits, environ 3,03 $.
  • Le pipeline comprend quatre appels : un appel à l’API de recherche, un appel LLM, GET /api/v1/themes/search, puis POST /api/v1/slides/generate.
  • Chaque réponse 2Slides est encapsulée sous la forme { success, data: { jobId, status, downloadUrl } }, ainsi un seul parseur gère à la fois la soumission et la mise en attente.
  • La limite de requêtes est de 6 par minute par clé, et un deck Fast PPT revient en environ 30 secondes en mode synchrone.
  • Les citations ne survivent que si le prompt LLM impose une liste de sources numérotées et interdit les chiffres inventés ; le générateur de deck formate le contenu, il ne le vérifie pas.

Pour qui est-ce ?

Vous dirigez un cabinet de conseil, un bureau de recherche ou une opération de contenu, et quelqu’un demande « un deck rapide sur le marché européen du recyclage des batteries » tous les quelques jours. La recherche prend une heure, le deck deux heures de plus, et ce sont toujours les mêmes 12 diapositives : résumé, taille du marché, acteurs, tendances, risques, recommandations, sources. Si vous possédez déjà une instance n8n ou un planificateur Python, cette recette ne nécessite aucune nouvelle infrastructure.

N’utilisez pas cette recette pour des livrables finaux clients nécessitant une analyse sur mesure. Elle produit un premier brouillon sourcé en quelques minutes ; un humain lit toujours les sources et décide du contenu.

Le workflow en un coup d’œil

ÉtapeOutilCe qui se passeEndpoint 2Slides / crédits
1. Déclencheurn8n Schedule ou Form, cron, ou argument CLIUne chaîne de sujet entre dans le pipelineaucun
2. RechercheTavily /search ou Exa /search10 à 20 URLs avec titres et extraits de texteaucun
3. BriefOpenAI ou ClaudeUn plan de 12 diapositives, chaque statistique taguée [n], plus une liste de sourcesaucun
4. ThèmeGET /api/v1/themes/search?query=consultingRetourne des valeurs candidates themeIdgratuit, 6 req/min
5. DeckPOST /api/v1/slides/generate (ou create-pdf-slides)Le brief devient un PPTX (ou PDF + images par page)10 crédits/page (ou 10 + 100/page)
6. Mise en attenteGET /api/v1/jobs/{jobId} toutes les 5 à 10 sAttente du status: "success"gratuit, 10 req/min
7. LivraisonUpload Google Drive, message SlackL’équipe reçoit un lien et le fichier des sourcesaucun

Étape 1 : Rassembler 10 à 20 sources avec une API de recherche

Le deck n’est aussi bon que ses sources, donc concentrez vos efforts ici. Tavily retourne des résultats avec le contenu extrait des pages, ce dont un LLM a besoin pour citer plutôt que de se souvenir. Exa fait de même avec une recherche sémantique. Demandez 10 à 20 résultats et restreignez aux 12 derniers mois si le sujet est sensible au temps.

Stockez chaque résultat sous la forme { id, url, title, published, snippet } et numérotez les ids à partir de 1. Ces ids deviennent les marqueurs de citation sur les diapositives, donc conservez le même tableau tout au long de l’exécution.

curl -s https://api.tavily.com/search \ -H "Content-Type: application/json" \ -d '{ "api_key": "'"$TAVILY_API_KEY"'", "query": "European battery recycling market size 2026", "search_depth": "advanced", "max_results": 15, "include_raw_content": false }'

Étape 2 : Rédiger un brief de 12 diapositives avec citations (OpenAI ou Claude)

Le prompt fait trois choses : fixer la structure des diapositives, forcer chaque chiffre à porter un id de citation, et interdire les chiffres qui n’apparaissent pas dans les sources. Demandez du texte brut, pas du JSON, car le texte va directement dans userInput de l’appel 2Slides.

Une structure qui fonctionne pour la plupart des briefs de conseil est 12 diapositives : 1 titre, 2 résumé exécutif, 3 taille du marché, 4 à 5 acteurs clés, 6 à 7 tendances, 8 à 9 risques, 10 à 11 recommandations, 12 sources. Gardez 3 à 5 puces par diapositive ; les templates Fast PPT sont conçus pour cette densité.

Vous êtes un analyste de recherche. En utilisant UNIQUEMENT les sources numérotées ci-dessous, rédigez un briefing de 12 diapositives sur : {topic}. Diapositives : 1 Titre, 2 Résumé exécutif, 3 Taille du marché, 4-5 Acteurs clés, 6-7 Tendances, 8-9 Risques, 10-11 Recommandations, 12 Sources. Règles : - Chaque nombre, pourcentage ou date doit se terminer par son id source entre crochets, ex. "EUR 4,2Md d’ici 2030 [3]". - Si les sources ne contiennent pas de chiffre, écrivez "aucun chiffre fiable trouvé" au lieu d’estimer. - La diapositive 12 liste chaque id cité sous la forme "[n] Titre, Éditeur, URL". - 3 à 5 puces par diapositive, chacune de moins de 20 mots. Commencez chaque diapositive par "Diapositive N : <titre>". Sources : {sources}

Étape 3 : Choisir un thème style consulting

Les decks Fast PPT sont construits à partir de templates designés, et le themeId décide du look. Cherchez dans la bibliothèque une fois pour « consulting » ou « corporate », choisissez un ou deux ids, et codez-les en dur dans le pipeline. Chercher à chaque exécution consomme le budget de limite de requêtes.

curl -s "https://2slides.com/api/v1/themes/search?query=consulting&limit=5" \ -H "Authorization: Bearer $SLIDES_API_KEY"

La réponse liste chaque thème avec son themeId, nom et aperçu. Pour naviguer visuellement, le Templates Hub montre les mêmes 1 500+ templates.

2Slides Templates Hub pour choisir un thème style consulting
Figure 1 : Le Templates Hub, où vous choisissez un thème consulting ou corporate et copiez son themeId pour l’appel API.

Étape 4 : Générer le deck avec l’API 2Slides

Deux chemins. Pour un PPTX éditable qu’un consultant peut retoucher dans PowerPoint, appelez generate. Il est en mode synchrone par défaut, donc un deck de 12 diapositives revient avec un downloadUrl en un seul appel en environ 30 secondes. Pour traiter plusieurs sujets, passez mode: "async" et faites de la mise en attente.

curl -s -X POST https://2slides.com/api/v1/slides/generate \ -H "Authorization: Bearer $SLIDES_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Diapositive 1 : Marché européen du recyclage des batteries 2026\n...\nDiapositive 12 : Sources\n[1] ...", "themeId": "THEME_ID_FROM_SEARCH", "responseLanguage": "English", "mode": "async" }'

Réponse :

{ "success": true, "data": { "jobId": "job_9f3a...", "status": "pending" } }

Pour une version premium au design image (PDF plus images par page), appelez create-pdf-slides avec le même brief. Réglez page: 12 pour correspondre au brief, ou page: 0 pour laisser le planificateur choisir.

curl -s -X POST https://2slides.com/api/v1/slides/create-pdf-slides \ -H "Authorization: Bearer $SLIDES_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Diapositive 1 : Marché européen du recyclage des batteries 2026\n...", "designStyle": "consulting deck, navy and white, dense data slides, one chart per slide", "aspectRatio": "16:9", "resolution": "2K", "page": 12, "contentDetail": "standard", "responseLanguage": "English" }'

Les deux chemins retournent la même enveloppe. Faites une mise en attente avec GET https://2slides.com/api/v1/jobs/{jobId} toutes les 5 à 10 secondes jusqu’à ce que data.status soit success ou failed, puis récupérez data.downloadUrl.

Étape 5 : Implémentation A, le workflow n8n (présentation Tavily n8n)

n8n est le moyen le plus rapide de faire de ce processus un job de présentation Tavily n8n planifié que des non-ingénieurs peuvent déclencher via un formulaire. Sept nœuds standards suffisent.

  • Schedule Trigger (hebdomadaire) ou Form Trigger avec un seul champ « topic ».
  • HTTP Request vers Tavily /search avec le sujet, max_results: 15.
  • Nœud OpenAI (ou une requête HTTP vers Claude) avec le prompt de l’étape 2 ; passez les sources numérotées dans le message.
  • Nœud Code qui assemble { userInput, themeId, responseLanguage: "English", mode: "async" } à partir du texte LLM.
  • HTTP Request vers POST https://2slides.com/api/v1/slides/generate avec l’en-tête Authorization: Bearer {{ $env.SLIDES_API_KEY }}. Gardez la clé dans les credentials n8n, jamais dans le corps du nœud.
  • Nœud Wait (10 secondes), puis HTTP Request vers GET /api/v1/jobs/{{ $json.data.jobId }} et un nœud IF : success continue, pending ou processing boucle vers Wait, failed poste l’erreur sur Slack.
  • HTTP Request (télécharge data.downloadUrl en binaire) puis upload Google Drive et message Slack avec le lien Drive et le sujet.

Ajoutez un second upload Google Drive pour le sources.json de l’étape 1 ; le relecteur voudra les extraits complets, pas seulement la diapositive Sources. Les credentials et branches d’erreur sont couverts dans n8n + 2Slides : automatiser les workflows de présentation.

Étape 6 : Implémentation B, un script Python unique

Pour une équipe qui préfère un job cron, un fichier Python fait le même travail. Cette version utilise Tavily et OpenAI ; remplacez par Exa ou Claude en changeant une fonction.

import os, time, json, requests TAVILY = os.environ["TAVILY_API_KEY"] OPENAI = os.environ["OPENAI_API_KEY"] SLIDES = os.environ["SLIDES_API_KEY"] BASE = "https://2slides.com/api/v1" H = {"Authorization": f"Bearer {SLIDES}", "Content-Type": "application/json"} def search(topic, n=15): r = requests.post("https://api.tavily.com/search", json={ "api_key": TAVILY, "query": topic, "search_depth": "advanced", "max_results": n}) r.raise_for_status() return [{"id": i + 1, "url": s["url"], "title": s["title"], "snippet": s["content"]} for i, s in enumerate(r.json()["results"])] def write_brief(topic, sources): src = "\n".join(f"[{s['id']}] {s['title']} | {s['url']}\n{s['snippet']}" for s in sources) prompt = open("brief_prompt.txt").read().format(topic=topic, sources=src) r = requests.post("https://api.openai.com/v1/chat/completions", headers={"Authorization": f"Bearer {OPENAI}"}, json={"model": "gpt-4.1", "messages": [{"role": "user", "content": prompt}], "temperature": 0.2}) r.raise_for_status() return r.json()["choices"][0]["message"]["content"] def pick_theme(query="consulting"): r = requests.get(f"{BASE}/themes/search", headers=H, params={"query": query, "limit": 5}) r.raise_for_status() return r.json()["data"]["themes"][0]["themeId"] def generate_deck(brief, theme_id, language="English"): r = requests.post(f"{BASE}/slides/generate", headers=H, json={ "userInput": brief, "themeId": theme_id, "responseLanguage": language, "mode": "async"}) r.raise_for_status() body = r.json() assert body["success"], body return body["data"]["jobId"] def wait_for(job_id, every=8, timeout=600): start = time.time() while time.time() - start < timeout: d = requests.get(f"{BASE}/jobs/{job_id}", headers=H).json()["data"] if d["status"] == "success": return d["downloadUrl"] if d["status"] == "failed": raise RuntimeError(f"job {job_id} failed: {d}") time.sleep(every) raise TimeoutError(job_id) if __name__ == "__main__": topic = "European battery recycling market 2026" sources = search(topic) brief = write_brief(topic, sources) url = wait_for(generate_deck(brief, pick_theme())) slug = topic.lower().replace(" ", "-") open(f"{slug}.pptx", "wb").write(requests.get(url).content) json.dump({"topic": topic, "sources": sources, "brief": brief}, open(f"{slug}.sources.json", "w"), indent=2)

Le script écrit deux fichiers par exécution : le PPTX et un .sources.json avec la liste des sources et le texte du brief. Le JSON est la trace d’audit quand un associé demande d’où vient la donnée de la diapositive 3. Pour les lots, gardez les soumissions sous 6 par minute.

Hygiène des citations : chaque chiffre porte sa source

La génération automatisée de decks de conseil échoue de façon prévisible : un chiffre confiant sur la diapositive 3 que nulle source ne contient. Le générateur de deck ne fait que formater ce qu’il reçoit, donc les contrôles appartiennent à l’étape LLM et à une vérification après.

  • Forcer le format du marqueur. Chaque chiffre se termine par [n]. Rejetez le brief (et relancez l’appel LLM) si une regex trouve un nombre suivi de "%", "B", "M" ou d’une année sans id entre crochets sur la même ligne.
  • Valider les ids par rapport au tableau des sources. Un [7] dans le brief alors qu’il n’y a que 6 sources signifie que le modèle a inventé une référence. Échouez l’exécution.
  • Conserver la diapositive Sources. La diapositive 12 liste [n] Titre, Éditeur, URL pour chaque id cité. C’est la diapositive que le relecteur lit en premier.
  • Stocker le fichier compagnon. Le .sources.json (ou l’upload Drive dans n8n) conserve les extraits vus par le modèle, pour que le relecteur puisse comparer le texte de la diapositive avec le passage original.
  • Préférer « aucun chiffre fiable trouvé ». Les consultants peuvent combler un vide honnête ; ils ne peuvent pas détecter facilement un chiffre fabriqué.

L’alternative agent : Claude Code ou Codex avec la compétence 2Slides ou MCP

Le pipeline scripté convient aux sujets planifiés et répétables. Pour une analyse ponctuelle approfondie, une session agent fait les mêmes étapes de façon interactive. Connectez le serveur MCP 2Slides hébergé à Claude Code en une commande, puis demandez à l’agent de rechercher le sujet avec son outil de recherche web, rédiger le brief cité, appeler themes_search pour un thème consulting, et appeler slides_generate avec le brief. Le MCP expose 7 outils, dont jobs_get pour la mise en attente, sur la même clé et crédits que l’API REST.

claude mcp add --transport http 2slides "https://2slides.com/api/mcp?apikey=YOUR_KEY"

Onglet MCP Server 2Slides avec l’endpoint HTTP Streamable et la commande claude mcp add
Figure 2 : L’onglet MCP Server sur la page API, avec l’endpoint HTTP Streamable et la configuration Claude Code en une ligne.

Dans Codex, Cursor ou un autre agent préférant les compétences, installez plutôt la compétence Agent depuis la page des skills ; elle enseigne les mêmes endpoints et la même boucle soumission, mise en attente, téléchargement. Voir Agent Skills vs MCP servers for presentations pour les compromis et How to use Claude MCP to generate presentations pour la configuration pas à pas.

Page Agent Skills 2Slides listant Claude Code, OpenAI Codex, Cursor, Google Antigravity, Manus et Openclaw
Figure 3 : La page Agent Skills, avec les instructions d’installation pour Claude Code, Codex, Cursor et autres agents.

À quoi ressemble un deck de qualité consulting

La galerie 2Slides héberge des decks de référence comme « AI at Work 2025 » de BCG, qui commence par une thèse en une ligne et se termine par la méthodologie et les sources, la même forme que le brief de 12 diapositives ci-dessus. Ces decks de galerie sont des références du monde réel hébergées sur 2Slides, pas des sorties API. Servez-vous en d’inspiration design, ou passez une URL d’image de diapositive en referenceImageUrl à create-like-this pour que le chemin design image dérive son type, couleur et mise en page de la référence.

Deck de référence BCG AI at Work 2025 depuis la galerie 2Slides, référence de structure style consulting
Figure 4 : Diapositive titre du deck de référence BCG AI at Work 2025 dans la galerie 2Slides.

Deck de référence BCG AI at Work 2025 depuis la galerie 2Slides, référence de structure style consulting
Figure 5 : Une diapositive plus tardive du même deck, montrant la mise en page à un message par diapositive attendue par les audiences consulting.

Pour un aperçu plus large des outils adaptés au travail de conseil, voir Best AI presentation tools for consultants. La page API de Gamma documente une recette comparable n8n + Tavily + OpenAI ; ses clés API nécessitent un plan Pro, tandis que les clés 2Slides fonctionnent sur tout compte. 2Slides est notre produit, donc pondérez cette comparaison en conséquence.

Combien ça coûte

Les crédits sont pay-as-you-go : 5 $ achètent 2 000 crédits (0,0025 $ par crédit) et 80 $ achètent 40 000 (0,002 $ par crédit). Les frais des API de recherche et LLM sont facturés par leurs fournisseurs et exclus ci-dessous.

VolumeFast PPT generate (12 diapositives = 120 crédits)Image-designed create-pdf-slides (12 diapositives en 2K = 1 210 crédits)
20 decks / mois2 400 crédits, environ 6,00 $ (un pack à 9,50 $ couvre)24 200 crédits, environ 48 à 61 $ selon le pack
500 decks / mois60 000 crédits, environ 120 $ (deux packs à 80 $)605 000 crédits, environ 1 210 $ à 0,002 $ le crédit

Les nouveaux comptes reçoivent 500 crédits gratuits, soit 4 decks Fast PPT complets de test avant achat.

Fast PPT ou diapositives design image pour ce cas d’usage ?

  • Fast PPT generate convient quand le consultant va éditer le deck dans PowerPoint, quand le volume est élevé (500 decks par mois coûtent environ 120 $), et quand un look template est acceptable. Retourne en environ 30 secondes.
  • create-pdf-slides convient quand le deck est destiné à un client en PDF en lecture seule et nécessite un look designé, une idée par diapositive. Coût environ 10 fois plus élevé par deck.
  • create-like-this convient quand l’entreprise a une charte graphique : passez une image de diapositive brandée en referenceImageUrl et chaque exécution en hérite.
  • Narration et MP4 sont disponibles uniquement sur les jobs design image, via generate-narration à 210 crédits par page. Utile pour une vidéo de briefing interne, pas pour le chemin Fast PPT.

Pièges courants

  • Limite de requêtes à 6 par minute. Filez les lots à une soumission toutes les 10 à 12 secondes ; la mise en attente utilise le budget séparé de 10 req/min pour jobs.
  • Clé API dans le corps du nœud n8n ou dans un script navigateur. Gardez-la dans les credentials n8n ou une variable d’environnement côté serveur, jamais dans le code client.
  • Essayer de narrer un deck Fast PPT. generate-narration n’accepte que les jobs de create-pdf-slides ou create-like-this. Les jobs Fast PPT sont rejetés.
  • page: 0 signifie détection automatique, pas zéro page. Sur create-pdf-slides, mettez page: 12 quand le brief fait déjà 12 diapositives, ou page: 0 pour laisser le planificateur décider.
  • Codes langue au lieu de noms. responseLanguage prend "Spanish" ou "German", pas "es" ou "de".
  • Envoyer 20 articles complets en userInput. Résumez d’abord ; c’est le brief, pas les sources brutes, qui va à 2Slides.

Questions fréquemment posées

Combien coûte un pipeline de recherche à présentation par deck ?

Environ 0,30 $ pour la partie 2Slides d’un deck Fast PPT de 12 diapositives (120 crédits à 0,0025 $ par crédit), ou environ 3,03 $ pour un deck design image 12 diapositives en 2K (1 210 crédits). Ajoutez un appel API de recherche et une complétion LLM, facturés par leurs fournisseurs. À 500 decks par mois, le chemin Fast PPT coûte environ 120 $ en crédits.

Le pipeline peut-il produire un deck dans une autre langue ?

Oui. Passez responseLanguage comme nom de langue tel que "Spanish" ou "Japanese" ; plus de 20 langues sont supportées. La configuration la plus propre écrit le brief en anglais et laisse 2Slides traduire à la génération, ainsi les citations et URLs sources restent identiques entre les versions linguistiques du même deck.

Ai-je besoin de n8n, ou puis-je faire sans outil de workflow ?

Vous n’avez pas besoin de n8n. Le script Python de l’étape 6 fait le même travail depuis un cron, et une session agent avec le MCP ou la compétence 2Slides le fait de façon interactive. n8n trouve sa place quand des non-ingénieurs doivent déclencher des exécutions via un formulaire et que vous voulez une livraison Google Drive et Slack sans écrire ces intégrations.

Comment empêcher le LLM d’inventer des statistiques sur les diapositives ?

Contraignez le prompt et validez la sortie. Exigez que chaque chiffre se termine par un id source [n], dites au modèle d’écrire « aucun chiffre fiable trouvé » au lieu d’estimer, et rejetez tout brief dont les ids dépassent le nombre de sources. Stockez le fichier des sources à côté du deck pour que le relecteur puisse vérifier chaque diapositive avec son passage.

Puis-je faire correspondre le style de diapositives de mon entreprise au lieu d’un template ?

Oui, avec create-like-this. Passez une URL publique d’une de vos diapositives brandées existantes en referenceImageUrl et le pipeline design image en déduit couleurs, typographie et mise en page. Le coût est le même que create-pdf-slides : 10 crédits de planification plus 100 crédits par page en 2K. Pour un PPTX éditable, choisissez plutôt le thème le plus proche via themes/search.

Prochaines étapes

  • Obtenez une clé API sur 2slides.com/api. Les nouveaux comptes démarrent avec 500 crédits gratuits, suffisants pour 4 decks test de 12 diapositives.
  • Découvrez comment d’autres équipes utilisent les mêmes endpoints dans le billet hub, AI presentation API use cases by team.
  • Si votre équipe travaille avec Claude Code ou Codex, installez la Agent Skill et exécutez le pipeline recherche à présentation de façon interactive avant de le planifier ; n8n + 2Slides couvre la version avec outil de workflow.

About 2Slides

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

Try For Free