Agent IA n8n : transformer ses mails Gmail en tâches Todoist
Tutoriel n8n : un agent IA lit les mails Gmail marqués d’un libellé et crée dans Todoist une tâche avec titre, échéance et priorité. Sept étapes.
Ce workflow transforme un mail Gmail en tâche Todoist. Vous posez le libellé agent-todo sur un mail, un agent IA le lit, crée une tâche avec un titre actionnable, une échéance et une priorité, puis archive le mail. Il tient en sept nœuds et se monte en 45 minutes.
Je l’ai construit pour ma propre boîte. Mesuré sur trois mois, il me fait gagner environ une heure par semaine, et ma todo list est devenue le seul endroit où je regarde quoi faire ensuite.
La démo date d’avril 2026. Le tutoriel écrit est à jour au 7 octobre 2026 : quand un réglage diffère de la vidéo, suivez le texte.
Du mail à la tâche : le fonctionnement du workflow n8n
Votre seul geste consiste à poser un libellé sur un mail. Toutes les heures, n8n récupère les mails qui portent ce libellé et les traite un par un.
| Nœud | Rôle |
|---|---|
| 1. Schedule Trigger | Lance le workflow toutes les heures |
| 2. Gmail (Get Many) | Récupère les mails qui portent le libellé agent-todo |
| 3. Code | Garde l’expéditeur, l’objet et le texte, limité à 4 000 caractères |
| 4. AI Agent | Lit le mail, décide du titre, de l’échéance et de la priorité |
| 5. Groq Chat Model | Le modèle d’IA branché sur l’agent |
| 6. Todoist Tool | L’outil que l’agent appelle pour créer la tâche |
| 7. Gmail (Remove Label) | Retire le libellé et archive le mail |
L’agent reformule chaque mail. Un fil intitulé Re: Re: question facture devient « Renvoyer la facture #4521 à Marie (Acme) avant vendredi », avec l’adresse de Marie et le contexte en description. La tâche se traite sans rouvrir Gmail.
Ce qu’il vous faut avant de commencer
| Brique | Outil | À savoir |
|---|---|---|
| Automatisation | n8n Cloud, plan Starter | 20 € par mois facturé à l’année, 2 500 exécutions par mois |
| Mails | Gmail | Sur n8n Cloud, la connexion passe par le bouton Sign in with Google |
| Modèle d’IA | Groq | Plan gratuit : 1 000 requêtes par jour sur openai/gpt-oss-120b |
| Tâches | Todoist | Remplaçable par Notion, voir les variantes |
Tarifs et limites relevés le 7 octobre 2026 sur les sites de n8n et de Groq.
En auto-hébergé, connecter Gmail demande de créer un projet dans Google Cloud Console, d’y activer l’API Gmail et de générer un client OAuth. L’essai gratuit de n8n Cloud évite cette étape. Si vous débutez, le guide du premier workflow n8n pose le vocabulaire utilisé ici.
Tutoriel : l’agent IA qui envoie vos mails vers Todoist, en 7 étapes
Étape 1 : créer le libellé Gmail
Dans Gmail, créez un libellé agent-todo. Le poser sur un mail revient à dire « ce mail contient une chose à faire ».
Étape 2 : récupérer les mails du libellé toutes les heures
- Ajoutez un Schedule Trigger. Dans Trigger Interval, choisissez Hours et laissez Hours Between Triggers sur 1.
- Ajoutez un nœud Gmail, ressource Message, opération Get Many.
- Dans Filters, ajoutez Label Names or IDs et sélectionnez
agent-todo. - Désactivez Simplify : n8n renvoie alors le texte complet du mail, dont l’étape suivante a besoin.
Laissez le filtre Read Status de côté. Sa valeur par défaut, Unread emails only, écarterait les mails que vous avez lus avant de les étiqueter.
Sans mail étiqueté, le nœud Gmail ne renvoie rien et le workflow s’arrête là. Avec plusieurs mails, n8n exécute la suite une fois par mail, sans boucle à ajouter (quand utiliser Loop Over Items).
Étape 3 : préparer le texte du mail
Ajoutez un nœud Code (mode Run Once for All Items, langage JavaScript) et renommez-le Préparer le mail. Il garde l’essentiel du message et retire le HTML quand le mail n’a pas de version texte.
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),
},
}));
La limite de 4 000 caractères coupe les newsletters de 30 000 caractères : le début d’un mail suffit à l’agent pour comprendre la demande.
Étape 4 : configurer l’AI Agent et son modèle
- Ajoutez un nœud AI Agent.
- Dans Source for Prompt (User Message), choisissez Define below.
- Passez le champ Prompt (User Message) en mode Expression et collez :
Date du jour : {{ $now.toFormat('yyyy-MM-dd') }}
Email reçu de : {{ $json.fromName }} <{{ $json.from }}>
Objet : {{ $json.subject }}
Corps :
{{ $json.body }}
- Sur le connecteur Chat Model, ajoutez un Groq Chat Model. Créez le credential avec une clé API générée dans la console Groq, puis choisissez
openai/gpt-oss-120bdans la liste Model. - Dans Options, ajoutez Max Iterations et réglez-le sur 2 : un appel à Todoist, puis la réponse finale. La valeur par défaut, 10, laisse à l’agent la place de créer plusieurs fois la même tâche.
La date du jour sert au modèle à convertir « avant vendredi » en date précise.
Étape 5 : écrire le prompt système
Toujours dans Options, ajoutez System Message et collez ce prompt :
Rôle : transformer chaque email reçu en UNE tâche Todoist actionnable.
1. PRIORITÉ : un nombre de 1 à 4, selon cette grille.
- 4 (urgent) : échéance sous 48 h, client qui paie, blocage,
problème de production
- 3 (important) : échéance cette semaine, projet stratégique,
opportunité commerciale
- 2 (à planifier) : tâche administrative, relance, lecture
- 1 (basse) : retour non bloquant, information
2. ÉCHÉANCE : une date au format YYYY-MM-DD.
- Date mentionnée dans le mail (« avant vendredi »), calculée
à partir de la date du jour
- Sinon, selon la priorité : 4 = demain, 3 = vendredi de cette
semaine, 2 = dans 7 jours, 1 = dans 14 jours
3. TITRE : verbe d'action + objet, 80 caractères maximum.
Mauvais : "Re: Question facture #4521"
Bon : "Renvoyer la facture #4521 à Marie (Acme)"
4. DESCRIPTION : deux phrases maximum. Qui demande, pourquoi,
ce qu'il faut faire. Terminer par l'adresse email de l'expéditeur.
Appeler l'outil "todoist_create_task" exactement une fois par email.
Aucune réponse texte à la place de l'appel.
La règle « verbe d’action + objet » donne des titres exécutables au lieu de copies d’objets de mail. Les deux dernières lignes évitent les doublons et poussent le modèle à appeler l’outil plutôt qu’à résumer le mail. Quand le modèle le prend en charge, l’option Force Tool Call on First Iteration de l’AI Agent impose ce comportement.
Étape 6 : brancher Todoist, champ par champ
Sur le connecteur Tool de l’AI Agent, ajoutez un Todoist Tool et renommez-le todoist_create_task, le nom cité dans le prompt. Réglez Resource sur Task, Operation sur Create, puis choisissez votre projet dans Project Name or ID.
Les champs que l’agent remplit reçoivent chacun une expression $fromAI(). Description, Priority et Due Date s’ajoutent depuis Additional Fields.
- Content :
{{ $fromAI('title', 'Titre de la tâche, 80 caractères maximum', 'string') }} - Description :
{{ $fromAI('description', 'Contexte en deux phrases et adresse email du demandeur', 'string') }} - Priority :
{{ $fromAI('priority', 'Priorité de 1 (basse) à 4 (urgente)', 'number') }} - Due Date :
{{ $fromAI('due_date', 'Échéance au format YYYY-MM-DD', 'string') }}
$fromAI() prend une clé, une description et un type. La description guide le modèle, le type borne ce qu’il peut renvoyer. Le bouton étoilé au bout d’un champ laisse aussi l’agent le remplir ; l’expression écrite à la main permet d’imposer un format, celui de la date par exemple.
Étape 7 : archiver le mail, tester, publier
- Après l’AI Agent, ajoutez un nœud Gmail, ressource Message, opération Remove Label.
- Dans Message ID, collez l’expression
{{ $('Préparer le mail').item.json.messageId }}. - Dans Label Names or IDs, sélectionnez
agent-todoetINBOX. Le premier retrait sort le mail du prochain passage, le second l’archive. - Posez le libellé sur un mail de test et cliquez sur Execute workflow. Contrôlez la tâche créée dans Todoist : titre, échéance, priorité.
- Cliquez sur Publish. n8n enregistre vos modifications tout seul ; Publish met le workflow en production.
Le mail archivé reste dans « Tous les messages », retrouvable par la recherche Gmail. Pour être prévenu quand une exécution échoue (clé expirée, quota atteint), la gestion d’erreurs dans n8n détaille le Retry On Fail et l’Error Trigger.
Quel modèle d’IA pour trier ses mails dans n8n
Pour la première version de ce guide, en mai 2026, j’ai comparé trois modèles sur 200 mails.
| Modèle | Latence par mail | Coût par mail | Qualité des titres | Erreurs |
|---|---|---|---|---|
| Llama 3.3 70B (Groq) | ~0,8 s | 0 € (plan gratuit) | 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 |
Les trois produisent des tâches de qualité équivalente. Transformer un texte court en quatre champs structurés est à la portée d’un petit modèle rapide, et le choix se fait sur la latence et le coût.
L’offre de Groq a changé depuis. Au 7 octobre 2026, Llama 3.3 70B ne figure plus dans le plan gratuit. Celui-ci propose openai/gpt-oss-120b, compatible avec l’appel d’outils : 30 requêtes par minute, 1 000 par jour, 8 000 tokens par minute. Le comparatif ci-dessus n’a pas été refait avec ce modèle.
La limite de 8 000 tokens par minute compte quand vous étiquetez plusieurs mails d’un coup, car un mail long en consomme plusieurs milliers. Dans les Options de l’AI Agent, Batch Processing permet de régler un Delay Between Batches, 30 000 millisecondes par exemple, entre deux mails.
Pour un tri qui demande plus de contexte, comme distinguer un nouveau client d’un client existant, le nœud Anthropic Chat Model ou OpenAI Chat Model se branche à la place de Groq sans toucher au reste du workflow.
Les erreurs fréquentes sur ce workflow
Je retrouve les quatre mêmes chez ceux qui reproduisent ce workflow.
| Erreur | Conséquence | Correction |
|---|---|---|
| Filtrer sur les mails non lus plutôt que sur un libellé | Chaque mail non lu devient une tâche, par centaines | Un libellé dédié, posé à la main |
| Laisser le modèle construire toute la requête Todoist | Dates « next monday », priorités « urgent », erreurs de l’API | Une expression $fromAI() par champ |
| Garder Max Iterations à 10 | L’agent appelle Todoist plusieurs fois pour le même mail | Max Iterations à 2 |
| Lancer le workflow toutes les minutes | 43 200 exécutions par mois, pour 2 500 incluses dans le plan Starter | Un passage par heure |
Combien coûte ce workflow
Mon usage tourne autour de 30 mails étiquetés par semaine, soit 120 par mois. À ce volume, le plan gratuit de Groq suffit, et la seule dépense est l’abonnement n8n Cloud : 20 € par mois pour le plan Starter, facturé à l’année.
À un passage par heure, le workflow consomme environ 720 des 2 500 exécutions mensuelles de ce plan. Pour en garder davantage, passez Trigger Interval sur Custom (Cron) avec l’expression 0 8-19 * * 1-5 : un passage par heure de 8 h à 19 h, du lundi au vendredi, soit environ 260 exécutions par mois. En auto-hébergé, n8n ne plafonne pas les exécutions.
Variantes : Notion, plusieurs boîtes mail, Make
- Notion à la place de Todoist. Remplacez le Todoist Tool par un Notion Tool qui crée une page dans votre base de tâches. Vous y gagnez des colonnes sur mesure : projet, client, lien vers le mail. Je trouve Todoist plus fluide sur mobile pour cocher les tâches au fil de la journée.
- Deux boîtes Gmail. Dupliquez le workflow. Chaque compte garde son credential Google et son libellé, ce qui reste plus lisible qu’un seul workflow chargé de conditions.
- D’autres libellés, d’autres actions. Un libellé « facture » peut créer une écriture dans Pennylane, un libellé « commande » alimenter le CRM.
- Le même besoin dans Make. Ce cas concret trie et résume une boîte mail avec deux agents IA dans Make, et le comparatif Make, n8n, Zapier aide à choisir l’outil.
Pour un agent qui consulte vos documents avant d’agir, lisez le guide sur le RAG dans n8n.
FAQ
Peut-on trier ses mails avec un agent IA dans n8n gratuitement ?
Oui, en auto-hébergeant n8n avec la Community Edition, gratuite, et en restant sur le plan gratuit de Groq, qui couvre 1 000 requêtes par jour au 7 octobre 2026. Sur n8n Cloud, le plan Starter coûte 20 € par mois après l’essai gratuit.
Pourquoi le Gmail Trigger de n8n ignore-t-il un mail que je viens d’étiqueter ?
Le Gmail Trigger ne relève que les mails reçus après le dernier mail qu’il a traité. Un mail plus ancien, même étiqueté à l’instant, reste hors de sa recherche. Un Schedule Trigger suivi d’un nœud Gmail en Get Many, filtré sur le libellé, relit tous les mails étiquetés à chaque passage.
L’agent IA lit-il toute ma boîte mail ?
Il ne reçoit que les mails qui portent le libellé, limités à 4 000 caractères chacun. Le texte de ces mails part chez le fournisseur du modèle, Groq, OpenAI ou Anthropic selon votre choix : réservez le libellé aux mails que vous acceptez de confier à ce service.
Comment éviter que l’agent crée deux fois la même tâche ?
Réglez Max Iterations sur 2 dans l’AI Agent, et retirez le libellé du mail une fois la tâche créée.
Ce workflow repose sur les bases de n8n : triggers, credentials, expressions, transformation des données, gestion des erreurs. Ma formation n8n les pose en 31 leçons vidéo réparties en 4 chapitres. Son programme s’arrête avant les agents IA : il donne les fondations dont ce workflow a besoin. Accès à vie, garantie 14 jours satisfait ou remboursé.
Sources : n8n · tarifs, documentation n8n (nœud Gmail, AI Agent, fonction $fromAI()), documentation Groq (modèles et limites du plan gratuit), documentation de l’API Todoist (priorité des tâches). Pages consultées le 7 octobre 2026.
Créez des workflows fiables avec n8n.
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.
- 4 chapitres · 31 leçons
- 249 € · paiement unique
- Accès à vie
- Garantie 14 jours
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.