gmail_inbox_zero — Gmail inbox zero — classifier + actions auto
sha=6c4440a1c6bc · visibility=admin · tags=gmail, llm, hourly
🚫
Workflow bloqué — composants manquants (11)
Le bouton "Run now" est désactivé tant que ces erreurs ne sont pas résolues.
-
GMAIL_OAUTH_CLIENT_ID_MISSINGsteplist_unreadnodegmail.list_inboxCredential KV `GMAIL_OAUTH_CLIENT_ID` absent.💡 Pose GMAIL_OAUTH_CLIENT_ID via .env ou `PUT /api/credentials {"name":"GMAIL_OAUTH_CLIENT_ID","value":"…"}`. -
GMAIL_OAUTH_CLIENT_SECRET_MISSINGsteplist_unreadnodegmail.list_inboxCredential KV `GMAIL_OAUTH_CLIENT_SECRET` absent.💡 Pose GMAIL_OAUTH_CLIENT_SECRET via .env ou `PUT /api/credentials {"name":"GMAIL_OAUTH_CLIENT_SECRET","value":"…"}`. -
GMAIL_OAUTH_REFRESH_TOKEN_MISSINGsteplist_unreadnodegmail.list_inboxCredential KV `GMAIL_OAUTH_REFRESH_TOKEN` absent.💡 Pose GMAIL_OAUTH_REFRESH_TOKEN via .env ou `PUT /api/credentials {"name":"GMAIL_OAUTH_REFRESH_TOKEN","value":"…"}`. -
LITELLM_NOT_INSTALLEDstepclassify_eachnodellm.classifyPackage `litellm` non installé.💡 Réinstalle les deps : `.venv/bin/python -m pip install -e .` -
GMAIL_OAUTH_CLIENT_ID_MISSINGsteplabel_eachnodegmail.labelCredential KV `GMAIL_OAUTH_CLIENT_ID` absent.💡 Pose GMAIL_OAUTH_CLIENT_ID via .env ou `PUT /api/credentials {"name":"GMAIL_OAUTH_CLIENT_ID","value":"…"}`. -
GMAIL_OAUTH_CLIENT_SECRET_MISSINGsteplabel_eachnodegmail.labelCredential KV `GMAIL_OAUTH_CLIENT_SECRET` absent.💡 Pose GMAIL_OAUTH_CLIENT_SECRET via .env ou `PUT /api/credentials {"name":"GMAIL_OAUTH_CLIENT_SECRET","value":"…"}`. -
GMAIL_OAUTH_REFRESH_TOKEN_MISSINGsteplabel_eachnodegmail.labelCredential KV `GMAIL_OAUTH_REFRESH_TOKEN` absent.💡 Pose GMAIL_OAUTH_REFRESH_TOKEN via .env ou `PUT /api/credentials {"name":"GMAIL_OAUTH_REFRESH_TOKEN","value":"…"}`. -
TELEGRAM_BOT_TOKEN_MISSINGstepalert_criticalnodenotif.telegramToken bot Telegram absent.💡 Pose TELEGRAM_BOT_TOKEN via .env ou `PUT /api/credentials {"name":"TELEGRAM_BOT_TOKEN","value":"…"}`. -
TELEGRAM_CHAT_ID_MISSINGstepalert_criticalnodenotif.telegramChat ID Telegram absent (pas en config et pas dans le step).💡 Pose TELEGRAM_CHAT_ID via .env ou `PUT /api/credentials {"name":"TELEGRAM_CHAT_ID","value":"…"}`. -
TELEGRAM_BOT_TOKEN_MISSINGstepnotify_failnodenotif.telegramToken bot Telegram absent.💡 Pose TELEGRAM_BOT_TOKEN via .env ou `PUT /api/credentials {"name":"TELEGRAM_BOT_TOKEN","value":"…"}`. -
TELEGRAM_CHAT_ID_MISSINGstepnotify_failnodenotif.telegramChat ID Telegram absent (pas en config et pas dans le step).💡 Pose TELEGRAM_CHAT_ID via .env ou `PUT /api/credentials {"name":"TELEGRAM_CHAT_ID","value":"…"}`.
id: gmail_inbox_zero
name: Gmail inbox zero — classifier + actions auto
description: |
Toutes les 30 min : récupère les non-lus, classifie via Groq,
applique labels/archive/trash, alerte si critique. HITL si confidence < 0.7.
owner: admin
visibility: admin
tags: [gmail, llm, hourly]
triggers:
- type: interval
every: 30m
inputs: {}
env: {}
steps:
- id: list_unread
node: gmail.list_inbox
with:
query: "is:unread"
max: 50
- id: classify_each
node: llm.classify
foreach: ${{ steps.list_unread.outputs.messages }}
with:
text: "Sujet: ${{ each.subject }}\nExpéditeur: ${{ each.from }}\nAperçu: ${{ each.snippet }}"
classes: [critical, important, newsletter, spam, deja_traite]
on_low_confidence:
hitl_gate:
title: "Classement email incertain"
notify: telegram
timeout_minutes: 720
on_timeout: skip
- id: label_each
node: gmail.label
foreach: ${{ steps.classify_each.outputs }}
with:
message_id: ${{ each.label }}
add_labels: [INBOX]
remove_labels: []
- id: alert_critical
node: notif.telegram
if: ${{ steps.classify_each.outputs | length }}
with:
message: "🚨 Inbox zero run ${{ run.id }} — ${{ steps.list_unread.outputs.messages | length }} mails traités."
on_failure:
- id: notify_fail
node: notif.telegram
with:
message: "❌ gmail_inbox_zero a échoué — run ${{ run.id }}"