Transformer ses mails en todo list avec un agent IA n8n
Tutoriel n8n complet : un agent IA qui lit vos emails labellisés, les transforme en tâches Todoist priorisées, et vous fait gagner 1h par semaine.
Mon inbox Gmail a été un cimetière pendant des années. Je laissais traîner des mails « non lus » pour me souvenir d’agir, j’archivais ceux que je voulais traiter « plus tard », et au final je me retrouvais à 23h avec 80 onglets ouverts dans la tête.
L’inbox zéro à coups de discipline pure ? Mensonge. Je l’ai testé. Je ne tiens pas trois semaines.
Ce qui marche, en revanche : un système qui prend ce mail-tâche et le sort de Gmail pour le poser ailleurs, dans le seul outil où je regarde réellement quoi faire ensuite — ma todo list.
J’ai donc construit un agent IA n8n qui fait exactement ça. Vous déplacez un mail dans un label, l’agent l’analyse, en sort une tâche actionnable avec deadline et priorité, la pousse dans Notion ou Todoist, et archive le mail. Une heure récupérée par semaine, mesurée. Et surtout : zéro charge mentale.
Voici comment le construire en 45 minutes.
Le vrai problème : un mail = une tâche déguisée
Un mail n’est presque jamais juste un mail. C’est :
- Une demande d’un client (« peux-tu m’envoyer la facture ? »)
- Un retour à donner (« qu’en penses-tu ? »)
- Un truc à lire pour plus tard (newsletter dense, doc partagé)
- Une décision à prendre (« on signe ou pas ? »)
Quatre intentions qui appellent quatre actions différentes — mais Gmail les présente toutes pareil, en ligne dans une boîte. On lit, on se dit « je m’en occupe », on n’a pas le temps maintenant, on archive ou on laisse en non-lu, et la charge mentale s’accumule : il y a quelque chose à faire, mais impossible de se rappeler quoi exactement ni quand.
L’astuce, ce n’est pas de mieux gérer ses mails. C’est d’arrêter de les gérer. On les sort de Gmail dès qu’ils représentent une tâche, on les transforme en truc actionnable, et on les oublie.
La logique du système en 4 étapes
[Mail dans Gmail]
→ Vous le déplacez dans le label "agent-todo"
→ n8n détecte (toutes les heures)
→ Un agent IA analyse + crée une tâche Todoist priorisée
→ Le label est retiré, le mail est archivé
Le geste humain : 1 clic pour déplacer le mail dans un label. Pas plus. Pas de prompt, pas de copier-coller, pas de saisie. Juste « ce mail = une chose à faire » → drag.
Le reste se passe sans vous. Quand vous ouvrez Todoist le matin, vous voyez votre journée. Plus besoin de retourner dans Gmail pour « vérifier si y’a un truc important ».
Stack et pourquoi je l’ai choisie
| Composant | Choix | Pourquoi |
|---|---|---|
| Plateforme automation | n8n Cloud (plan starter) | Pas d’hébergement à gérer, OAuth Google natif, ~20€/mois |
| Source mails | Gmail Trigger | Polling natif, filtre par label gratuit |
| Modèle IA | Llama 3 70B via Groq | Vitesse fulgurante (LPU), coût ~ gratuit en usage perso |
| Destination tâches | Todoist (ou Notion) | API simple, app mobile excellente, vous pouvez remplacer par ce que vous voulez |
Tutoriel pas-à-pas
Étape 1 — Préparer Gmail
Créez un label dans Gmail. Je l’appelle agent-todo (le nom n’importe pas, mais évitez les espaces et accents pour simplifier le filtre). C’est ce label qui va devenir votre geste « je veux que ce mail devienne une tâche ».
Vous pouvez le binder à un raccourci clavier Gmail (paramètres > raccourcis) pour aller encore plus vite.
Étape 2 — Le Gmail Trigger
Dans n8n, ajoutez un node Gmail Trigger, configuré ainsi :
- Authentification : OAuth2 sur votre compte Google (5 minutes de setup)
- Polling : Every Hour (largement suffisant pour ce use case, et économique en exécutions n8n)
- Filters :
label:agent-tododans le champ Search
Ce trigger ne se déclenche que pour les mails portant votre label. Le reste de votre inbox est ignoré.
Étape 3 — Nettoyer le HTML
Les mails contiennent souvent un HTML monstrueux (signatures images, tracking pixels, CSS inline). Si vous balancez ça brut au LLM, vous allez (a) cramer des tokens pour rien et (b) confuser le modèle.
Ajoutez un node Code (JavaScript) après le Gmail Trigger :
const stripHtml = (html) =>
html
.replace(/<style[\s\S]*?<\/style>/gi, '')
.replace(/<script[\s\S]*?<\/script>/gi, '')
.replace(/<[^>]+>/g, ' ')
.replace(/ /g, ' ')
.replace(/&/g, '&')
.replace(/\s+/g, ' ')
.trim();
return $input.all().map((item) => ({
json: {
messageId: item.json.id,
from: item.json.from?.value?.[0]?.address ?? 'unknown',
fromName: item.json.from?.value?.[0]?.name ?? '',
subject: item.json.subject ?? '',
body: stripHtml(item.json.text ?? item.json.html ?? '').slice(0, 4000),
},
}));
Le .slice(0, 4000) évite les mails géants (newsletters de 30k caractères) qui exploseraient le contexte. 4000 caractères, c’est largement assez pour qu’un agent comprenne l’intention.
Étape 4 — L’AI Agent
Ajoutez un node AI Agent. Connectez-lui :
- Chat Model →
Groq Chat Modelavecllama-3.3-70b-versatile - Tool →
Todoist(on y vient à l’étape 6)
Dans le champ Prompt du AI Agent, mappez :
Email reçu de : {{ $json.fromName }} <{{ $json.from }}>
Sujet : {{ $json.subject }}
Corps :
{{ $json.body }}
Étape 5 — Le system prompt qui fait toute la différence
C’est la pièce centrale. Sans système prompt précis, l’agent fait du copier-coller du mail dans Todoist, sans priorité ni deadline. Inutile.
Voici celui que j’utilise (rédigé avec Claude pour itérer dessus) :
Tu es un assistant productivité expert. Ton job : transformer
chaque email reçu en UNE tâche actionnable dans Todoist.
Règles strictes :
1. PRIORITÉ — assigne P1, P2, P3 ou P4 selon cette grille :
- P1 (urgent + critique) : deadline < 48h, client qui paie,
blocage, problème de prod
- P2 (important pas urgent) : deadline cette semaine, projet
stratégique, opportunité business
- P3 (à faire un jour) : tâche admin, follow-up, à lire
- P4 (basse priorité) : feedback non bloquant, info
2. DEADLINE — extrais la date dans cet ordre :
- Date explicitement mentionnée dans le mail (« avant vendredi »)
- Sinon, déduis-la de la priorité :
P1 → demain, P2 → vendredi de cette semaine,
P3 → +7 jours, P4 → +14 jours
3. LABELS — assigne 1 à 2 labels parmi :
"client", "admin", "tech", "contenu", "perso"
4. TITRE — reformule en VERBE D'ACTION + objet, max 80 caractères.
❌ Mauvais : "Re: Question facture #4521"
✅ Bon : "Renvoyer la facture #4521 à Marie (Acme)"
5. DESCRIPTION — résume en 2 phrases max le contexte utile :
qui demande, pourquoi, ce qu'il faut faire concrètement.
Inclus l'email de l'expéditeur en fin de description.
Tu DOIS appeler l'outil "todoist_create_task" exactement
une fois par email. Jamais de réponse texte directe.
Les 3 mots-clés qui changent tout :
- « VERBE D’ACTION + objet » → vous vous retrouvez avec des titres exécutables au lieu de copies de sujets de mails
- « exactement une fois » → empêche les boucles où l’agent hésite
- « Jamais de réponse texte » → force l’usage du tool, pas un résumé en chat
Étape 6 — Le tool Todoist (anti-hallucination)
C’est ici qu’on évite le piège classique. Si vous laissez l’AI Agent gérer le tool Todoist en mode « let the model decide », il invente des formats de date, des priorités hors plage, et vous vous retrouvez avec des erreurs API toutes les 3 exécutions.
La parade : configurer manuellement les paramètres du tool dans n8n.
Sur le node Todoist Tool :
Resource: TaskOperation: CreateContent(titre) :={{ $fromAI('title', 'Titre tâche, 80 char max', 'string') }}Description:={{ $fromAI('description', 'Description tâche', 'string') }}Priority:={{ $fromAI('priority', 'Priorité 1-4', 'number') }}Due Date:={{ $fromAI('due_date', 'Date YYYY-MM-DD', 'string') }}Labels:={{ $fromAI('labels', 'Labels Todoist', 'string') }}
Le helper $fromAI() dit à n8n : « ne laisse pas l’agent envoyer ce qu’il veut, fais-lui remplir cette case précise ». Vous validez chaque champ, et vous pouvez même ajouter des transformations (lowercase, regex de validation date) avant l’appel API.
Étape 7 — Retirer les labels en sortie
Après création de la tâche Todoist, ajoutez deux nodes Gmail en série :
- Remove Label :
agent-todo(pour ne pas re-traiter le mail au prochain polling) - Remove Label :
INBOX(équivalent d’archiver le mail)
Vous pourriez aussi ajouter un label processed pour audit, mais perso je trouve que c’est du bruit. Le mail est dans [Tous les messages], retrouvable via recherche si besoin.
Pourquoi Groq + Llama 3 70B pour ce cas précis
J’ai testé GPT-4o-mini, Claude Haiku 4.5 et Llama 3 70B sur Groq. Voici les chiffres après 200 mails traités :
| Modèle | Latence/mail | Coût/mail | Qualité titre | Erreurs |
|---|---|---|---|---|
| Llama 3 70B (Groq) | ~0,8 s | ~0€ (free tier) | 9/10 | 1 |
| GPT-4o-mini | ~3,2 s | ~0,002€ | 9/10 | 0 |
| Claude Haiku 4.5 | ~2,1 s | ~0,003€ | 10/10 | 0 |
Pour ce use case précis (transformation structurée d’un texte court en JSON), les trois sont équivalents en qualité — la différence se fait sur la latence et le coût. Groq, avec ses LPU, écrase la concurrence en vitesse, et le free tier (14 400 requêtes/jour) est largement suffisant pour traiter ses mails persos.
Les 4 erreurs que je vois sur 90% des reproductions
1. Filtrer le trigger sur la mauvaise condition
Beaucoup utilisent is unread au lieu d’un label. Le piège : à chaque mail lu, le trigger se déclenche, et vous vous retrouvez avec des centaines de tâches inutiles dans Todoist.
Fix : toujours un label dédié, jamais l’état unread.
2. Laisser le LLM construire le payload Todoist entier
Vous allez avoir des dates next monday, des priorités urgent, des labels en français quand l’API attend les IDs… 30% d’échecs.
Fix : $fromAI() sur chaque paramètre, validation côté n8n.
3. Pas de maxIterations
L’agent boucle, appelle Todoist 5 fois pour le même mail, crée des doublons.
Fix : dans le AI Agent node, set maxIterations: 2 et returnIntermediateSteps: false.
4. Polling toutes les minutes
Tentation : « je veux ça en temps réel ! ». Conséquence : vous cramez votre quota d’exécutions n8n et votre API quota Gmail.
Fix : 1 fois par heure suffit largement. Vous ne déplacez pas un mail dans le label en attendant qu’il devienne tâche dans la seconde — vous déplacez et vous oubliez.
Aller plus loin
Variante Notion
Remplacez le tool Todoist par un node Notion en Database > Create Page. Avantages : vous pouvez ajouter des colonnes custom (projet associé, client, lien vers le mail). Inconvénient : moins fluide en mobile que Todoist pour cocher au fil de la journée.
Notes vocales avec Whisper
Vous pouvez dupliquer ce workflow pour traiter des mémos vocaux que vous vous envoyez par mail. Ajoutez un branchement : si le mail contient une pièce jointe .m4a ou .mp3, passez-la par un node OpenAI Whisper pour la transcrire, puis injectez le texte dans le même AI Agent. Votre trajet en voiture devient une session de planning.
Multi-comptes
Si vous avez un Gmail pro + un Gmail perso, dupliquer le workflow est plus propre que de jouer avec des if. Chaque compte a son label, son OAuth, son trigger. Ça reste 5 minutes de copie.
Combien ça coûte vraiment
Setup pour mon usage perso (~30 mails labellisés/semaine, soit ~120/mois) :
| Poste | Coût mensuel |
|---|---|
| n8n Cloud Starter | 20 €/mois |
| Groq (Llama 3 70B) | 0 € (free tier) |
| Todoist Pro (déjà utilisé) | 4 €/mois |
| Total marginal | ~0 € (n8n et Todoist déjà payés) |
Le coût marginal réel pour ce workflow est nul si vous avez déjà n8n. C’est probablement le ROI le plus délirant de tous mes workflows perso : 0€ pour 50 heures récupérées par an.
Le mot de la fin
Le fichier JSON du workflow complet (Gmail Trigger + Code + AI Agent + Groq + Todoist + Remove Labels) est exportable depuis n8n en 2 clics — à vous de l’adapter à votre stack (remplacez Todoist par Notion, Llama par Claude, ajoutez des labels custom).
Et si vous commencez à voir le potentiel de ce pattern (label Gmail → agent → action automatique), vous allez vouloir l’étendre : labels « facture » → création automatique dans Pennylane, label « commande » → ajout au CRM, label « devis » → génération PDF. C’est la même mécanique, des labels différents.
C’est exactement ce qu’on construit dans la formation.
Vous voulez maîtriser n8n et les agents IA en pratique ? La formation n8n complète couvre 8 modules, des fondamentaux aux agents IA avec RAG, Tools et Mémoire. Expert n8n · formateur no-code certifié, garantie 30 jours.
Aller plus loin
Automatisez vos opérations et construisez vos agents IA.
Ce guide montre le principe sur un cas. La formation n8n déroule la construction complète : des fondamentaux jusqu'aux patterns qui tiennent en production chez un client qui paie.
- 8 modules · agents IA inclus
- 249 € · paiement unique
- Accès à vie
- Garantie 30 jours
Recevez les prochains guides
Ce guide vous a aidé ? Recevez les prochains.
Un mail quand un nouveau guide sort. Pas de spam, désabonnement en 1 clic.
Confirmation par email · désabonnement en 1 clic.