Pour chaque jalon, tu as un schéma des nœuds à placer dans n8n. Monte le workflow toi-même d'abord. Utilise Claude Code uniquement pour débloquer, corriger ou expliquer (colle-lui une capture ou ton message d'erreur) — jamais pour tout faire à ta place. C'est en construisant que tu apprends.
Dans Telegram :
- Cherche @BotFather (celui avec la coche bleue ✔) et ouvre la conversation.
- Envoie
/newbot. - Donne un nom (affiché, ex : « Assistant d'Adam »).
- Donne un username unique finissant par
bot(ex :adam_assistant_bot). - BotFather te renvoie un token du style
1234567:AAE…→ copie-le et garde-le secret.
❓ À quoi sert le token, et pourquoi doit-il rester secret ?
Un seul nœud pour l'instant. On y branchera l'IA au jalon suivant.
- Dans n8n, crée un nouveau workflow.
- Ajoute le nœud Telegram Trigger.
- Crée une credential Telegram : colle ton token (BotFather).
- Dans les paramètres, écoute les messages (Updates → message).
🔧 Bloqué ou une erreur ? Montre ta capture à Claude Code :
Clique « Listen for event » dans n8n, puis envoie un message à ton bot sur Telegram. Le message doit apparaître dans n8n.
❓ C'est quoi un « déclencheur » (trigger) dans un workflow n8n ?
Le « Chat Model » se branche SOUS l'AI Agent (petit connecteur du bas), pas à la suite.
- Après le trigger, ajoute un nœud AI Agent.
- Sous l'agent, connecte un Chat Model (Claude / OpenAI) avec ta clé API.
- Dans « User Message » de l'agent, mets le texte reçu :
{{ $json.message.text }}.
🔧 Un souci de branchement ou de clé API ?
❓ Quelle est la différence entre le message de l'utilisateur et le system prompt ?
3 nœuds en ligne = ton bot répond. C'est la boucle de base terminée.
- Ajoute un nœud Telegram → Send Message après l'IA.
- Chat ID =
{{ $json.message.chat.id }}(venu du trigger). - Texte = la sortie de l'IA (
{{ $json.output }}).
🔧 Le bot ne répond pas ou répond dans le vide ?
❗ Obligatoire : décris le trajet complet d'un message, de Telegram jusqu'à la réponse (les 4 nœuds).
Dans le system prompt de l'IA, définis : le rôle (ex : assistant de productivité), le ton (direct, amical…), les règles (réponses courtes, en français…), et éventuellement des tâches qu'il sait faire.
❗ Obligatoire : écris TON system prompt (le rôle et les règles de ton assistant).
Change le prompt (ex : coach sportif, prof d'anglais, assistant très formel) et observe comment le bot change de comportement.
❓ Qu'est-ce qui a le plus changé la façon de répondre du bot dans tes tests ?
La mémoire se branche SOUS l'AI Agent, comme le modèle. La « clé de session » = le chat id, pour séparer les utilisateurs.
- Sous l'AI Agent, ajoute un nœud Memory (ex : Window Buffer Memory).
- Mets la clé de session = le chat id (
{{ $json.message.chat.id }}).
Test : dis « je m'appelle Adam », puis « comment je m'appelle ? ». Il doit répondre correctement.
🔧 Il oublie toujours ?
Chaque outil est un nœud branché sous l'agent. L'agent lit leur description pour savoir lequel utiliser.
- Sous l'AI Agent, ajoute un outil (ex : Google Calendar → Create Event, ou Notion → Create Page).
- Connecte sa credential et donne-lui une description claire (ce que fait l'outil).
Test : écris au bot « ajoute une réunion demain à 15h avec Léa ». Vérifie que l'événement est créé.
🔧 L'agent n'utilise pas l'outil ?
❗ Obligatoire : comment l'agent décide-t-il d'utiliser un outil plutôt que de simplement répondre ? (le rôle de la description de l'outil)
Ex : envoyer un email, faire une recherche web, ajouter une tâche dans une to-do. Choisis ce qui t'est utile.
❓ Quels outils as-tu donnés à ton bot, et pour quel usage concret ?
Checklist de finition
- Workflow activé (le bot répond même sans mode écoute)
- Token stocké en credential/secret (pas en clair dans un nœud)
- Le bot gère un message qu'il ne comprend pas (réponse propre)
- Personnalité (system prompt) finalisée
- Au moins 1 tâche/outil qui fonctionne de bout en bout
- Testé sur plusieurs conversations différentes
📷 Captures finales
🔗 Username de ton bot Telegram (ex : @adam_assistant_bot)
❓ Bilan : quelle tâche ton assistant te rend-il le plus utile ? Qu'ajouterais-tu en V2 ?
message.text mais dans message.voice (avec un file_id). Il faut donc télécharger l'audio, le transcrire en texte (Whisper), puis l'envoyer à l'agent. On aiguille voix ou texte vers un même champ pour que la suite ne change pas.La branche « texte » du Switch va directement au Set. Les deux branches se rejoignent sur le champ userText que lit l'agent.
- Après le Trigger, ajoute un Switch : condition «
{{ $json.message.voice }}existe ? » → 2 sorties (Vocal / Texte). - Sur la branche Vocal : Telegram → Get a File, File ID =
{{ $json.message.voice.file_id }}.
- Ajoute un nœud OpenAI → Transcribe a recording (Whisper) qui prend l'audio binaire → texte.
- Sur chaque branche, un nœud Set range le texte dans un même champ userText (soit
message.text, soit la transcription). - Dans l'AI Agent, remplace l'entrée par
{{ $json.userText }}.
Test : envoie un vocal à ton bot (« ajoute une réunion demain 15h »). Il doit répondre en texte et exécuter la tâche.
🔧 La transcription échoue ou l'agent reçoit du vide ?
❗ Obligatoire : pourquoi doit-on transcrire le vocal AVANT l'agent, au lieu de l'envoyer tel quel ?
1. À quoi sert BotFather et qu'est-ce que le token d'un bot ?
2. Décris le circuit complet d'un message (les 4 nœuds : trigger → IA → envoi).
3. Quel est le rôle du system prompt ? Donne un exemple concret.
4. Pourquoi la mémoire change l'expérience, et comment on sépare les conversations de chaque utilisateur ?
5. C'est quoi un « agent à outils » ? Comment décide-t-il d'utiliser un outil ?
Bravo, tu as terminé tous les projets ! Pour clôturer : on publie / pousse tous tes projets en ligne (le formateur t'accompagne), puis tu remplis ton compte rendu de stage à imprimer. C'est la dernière chose à faire, une fois tout le reste terminé.
👉 Ouvrir mon compte rendu de stage