Costruire la tua prima automazione AI non significa scrivere un'app da zero. Significa collegare strumenti che hai gia' - Gmail, Slack, Google Sheets, un LLM - e farli lavorare insieme. n8n e' lo strumento che da' due anni domina questa categoria: open-source, self-hostable o cloud, con un'interfaccia visuale a nodi e oltre 500 integrazioni native. In questo tutorial costruiremo un agente che legge la tua posta in arrivo, classifica ogni mail con un LLM e prepara bozze di risposta, lasciandoti solo l'ultimo controllo.
A chi serve e cosa otterrai
Questo tutorial e' per chi ha un account Gmail (o Outlook) e riceve troppe email da gestire a mano: freelance, consulenti, founder, customer support di piccole aziende. Al termine avrai un workflow n8n che, ogni 5 minuti, legge le nuove email non lette dell'account collegato, le classifica con OpenAI o Anthropic in categorie (urgente, informativa, spam, da rispondere), e per quelle "da rispondere" prepara una bozza salvata nelle Bozze di Gmail. L'invio resta manuale: tu approvi.
Tempo: 60-90 minuti per il primo workflow. Costo: gratis se usi n8n self-hosted; pochi euro all'anno di API LLM per un volume normale.
Prerequisiti
Servono tre cose. Primo: un account Gmail di test (consigliato: non usare il principale per i primi esperimenti). Secondo: una chiave API di un provider LLM. OpenAI (platform.openai.com) o Anthropic (console.anthropic.com). Entrambi danno una bonifica di crediti iniziali per i nuovi account; in seguito si paga a consumo, e per questo workflow tipicamente costa pochi centesimi al giorno. Terzo: un'installazione di n8n.
1) Installare n8n in cinque minuti
La strada piu' rapida e' n8n Cloud: vai su n8n.io, registrati, hai un workspace gratis con un certo numero di esecuzioni mensili. Per maggior controllo e gratuita' illimitata, conviene il self-hosting via Docker. Su Mac/Linux con Docker installato:
docker volume create n8n_data
docker run -d --name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-e GENERIC_TIMEZONE="Europe/Rome" \
-e TZ="Europe/Rome" \
--restart unless-stopped \
docker.n8n.io/n8nio/n8nApri il browser su http://localhost:5678. n8n ti chiede di creare un utente amministratore - email, password. Da qui in poi sei pronto. Per la versione cloud, l'interfaccia e' identica.
2) Collegare Gmail a n8n
n8n usa OAuth2 per le credenziali Gmail. La procedura ufficiale richiede di creare un'app OAuth nella Google Cloud Console; sembra complesso, e' una pratica di 10 minuti.
- Vai su console.cloud.google.com, crea un nuovo progetto ("n8n personal").
- Abilita la Gmail API dal menu "API e servizi".
- Crea le credenziali OAuth 2.0: tipo "Web application". Come authorized redirect URI usa
http://localhost:5678/rest/oauth2-credential/callbackper il self-hosted, oppure l'URI fornito da n8n Cloud nelle istruzioni. - Copia Client ID e Client Secret.
- In n8n, dal menu "Credentials → New credential", scegli "Gmail OAuth2 API", incolla Client ID e Secret, clicca "Sign in with Google".
Se tutto va bene, n8n apre una finestra Google, ti chiede l'autorizzazione, salva il token. Da ora i nodi Gmail potranno leggere e scrivere sul tuo account.
3) Aggiungere la chiave OpenAI o Anthropic
Su platform.openai.com/api-keys crei una chiave ("n8n-email") con permessi restricted ai modelli che ti servono. Su console.anthropic.com, lo stesso. Poi in n8n: "Credentials → New credential → OpenAI" (o "Anthropic"), incolli la chiave, salvi.
Quale modello scegliere? Per un classificatore di email basta un modello piccolo: gpt-5.5-mini di OpenAI (10 centesimi per milione di token in input) o claude-haiku-4.5 di Anthropic. Per le bozze di risposta in italiano ben scritto, sale di un livello: gpt-5.5 oppure claude-sonnet-4.5.
4) Il workflow: trigger + classificatore
Crea un nuovo workflow dal pulsante "+ New" in alto a destra. Si apre il canvas vuoto. Aggiungi i nodi uno alla volta.
Nodo 1: Schedule Trigger. E' il trigger temporale. Imposta "Every 5 minutes". Per i test usa "Manual Trigger" - parte solo quando premi "Test workflow".
Nodo 2: Gmail - Get Many Messages. Cerca il nodo "Gmail", scegli l'operazione "Get Many". Filtri:
- Filters → Add Filter → Read Status: Unread
- Filters → Add Filter → Received After:
{{ $now.minus(5, 'minutes').toISO() }}(le mail arrivate negli ultimi 5 minuti) - Limit: 20 (sicurezza, mai elaborare troppe alla volta)
Esegui il nodo: dovresti vedere l'output con le email non lette recenti.
Nodo 3: OpenAI - Message a Model. Aggiungi il nodo OpenAI. Configurazione:
- Resource: Text
- Operation: Message a Model
- Model: gpt-5.5-mini
- Messages →
Aggiungi un System Message:
Sei un assistente che classifica le email. Per ogni email rispondi SOLO con un JSON nel formato: { "categoria": "urgente|informativa|spam|da_rispondere", "motivo": "breve descrizione", "priorita": 1-5 }. Non aggiungere altro testo.
Aggiungi un User Message con l'espressione dinamica:
Oggetto: {{ $json.Subject }}
Mittente: {{ $json.From }}
Corpo:
{{ $json.snippet }}Imposta "Output Format: JSON" per costringere il modello a restituire JSON valido.
Nodo 4: Switch / IF. Filtra solo le email categorizzate come "da_rispondere". Aggiungi un nodo "IF", condizione: {{ $json.message.content.categoria === 'da_rispondere' }}. Da true continua, da false stop.
5) Generare la bozza di risposta
Nodo 5: Anthropic - Message a Model. Per le risposte vere ho ottenuto risultati piu' eleganti con Claude. Configurazione:
- Model: claude-sonnet-4-6-20250101 (o l'ultima versione disponibile)
- System message:
Sei l'assistente personale di un consulente italiano. Scrivi bozze di risposta cortesi, dirette e professionali in italiano. Mai oltre 120 parole. Mantieni il tono del mittente: formale con clienti, informale con colleghi. Non promettere cose specifiche (date, prezzi, impegni), usa formule come "ti faccio sapere a breve". Inserisci sempre i saluti di apertura e chiusura ma non firmare (il mittente firmera' a mano).
- User message:
Email ricevuta da: {{ $('Gmail').item.json.From }}
Oggetto: {{ $('Gmail').item.json.Subject }}
Corpo originale:
{{ $('Gmail').item.json.snippet }}
Classificazione: {{ $json.message.content.motivo }}
Scrivi una bozza di risposta.Nodo 6: Gmail - Create Draft. L'ultimo nodo crea la bozza. Configurazione:
- Operation: Create Draft
- To:
{{ $('Gmail').item.json.From }} - Subject:
Re: {{ $('Gmail').item.json.Subject }} - Email Type: HTML
- Message:
{{ $json.message.content }}
Salva tutto il workflow. Click su "Test workflow". Se hai email non lette degli ultimi 5 minuti, ne dovresti trovare le bozze di risposta nelle Bozze di Gmail.
6) Far girare automaticamente
Una volta verificato che funziona in test, attiva il workflow con il toggle "Active" in alto a destra. Lo Schedule Trigger fara' partire l'esecuzione ogni 5 minuti. Se sei su n8n Cloud verifica i limiti di esecuzione del piano gratuito (qualche migliaio al mese, sufficienti).
Per il self-hosted, basta che il container Docker rimanga attivo. Conviene aggiungere il restart automatico (gia' incluso nel comando docker run sopra) per i riavvii.
Varianti e casi avanzati
Una volta che hai il workflow base, le evoluzioni naturali sono tre.
Filtro di sicurezza: aggiungi un nodo che esclude email da mittenti in una blacklist (esempio: noreply@) o che contengono parole chiave come "unsubscribe". Risparmi token e crei meno bozze inutili.
Notifica Slack: per le email "urgente" o di priorita' 5, aggiungi un nodo Slack che ti scrive un DM con riassunto e link diretto alla mail. Ricevi il segnale forte anche fuori da Gmail.
Memoria conversazionale: per i clienti ricorrenti, salva un riassunto delle email passate in un Google Sheet o in un piccolo database, e passali come contesto al modello. La risposta diventa molto piu' personalizzata.
Errori comuni
"Invalid OAuth2 token": il token Google e' scaduto. Vai in Credentials, apri la credential Gmail, riconnetti.
"Rate limit exceeded" da OpenAI/Anthropic: stai facendo troppe chiamate. Aggiungi un nodo "Wait" da 1-2 secondi tra le iterazioni, o aumenta il filtro temporale.
JSON malformato dal modello: succede raramente con "Output Format: JSON", ma se accade aggiungi un nodo "Code" con un try/catch che cattura l'errore e continua.
Bozze in inglese pur avendo chiesto italiano: rinforza il prompt di sistema con "RISPOSTA OBBLIGATORIAMENTE IN ITALIANO" e includi un esempio (one-shot prompting): "Esempio di risposta corretta: Ciao Marco, ho ricevuto la tua mail...".
Quando NON usare n8n
Tre scenari per fermarti. Primo: se il caso d'uso richiede latenza sotto i 200 millisecondi (un chatbot live, una validazione in tempo reale di pagamento), n8n e' troppo lento; va meglio un servizio scritto in codice. Secondo: se hai gia' un'infrastruttura forte su AWS Lambda o Cloudflare Workers e una squadra che li sa usare. Terzo: se l'automazione gira su milioni di eventi al giorno: n8n scala, ma a quel volume va dimensionato seriamente, e a quel punto Temporal o Apache Airflow possono dare piu' controllo.
Confronto: n8n, Zapier, Make
Tre alternative principali. Zapier e' la piu' diffusa, costa di piu' per esecuzione, ha l'enorme libreria di app native ma e' meno flessibile sui flussi complessi. Make.com (ex Integromat) e' simile a Zapier ma con un canvas piu' potente; pricing intermedio. n8n, oggi, ha tre vantaggi: e' open-source (puoi auto-ospitarlo senza costi), ha nodi LLM nativi per OpenAI, Anthropic, Gemini, Mistral e Ollama (per modelli locali), e ha il supporto piu' avanzato per gli agenti AI con strumenti multipli.
Come proseguire
Dopo questo workflow, le strade naturali sono: costruire un agente RAG che risponde da una knowledge base aziendale (PDF, Notion, Google Drive); creare automazioni multi-canale che integrano Gmail, WhatsApp Business, Telegram; costruire pipeline di lead scoring per il CRM. Tutta la documentazione e' su docs.n8n.io. Per ispirazione, la community pubblica template scaricabili su n8n.io/workflows: anche per chi non vuole costruire da zero, ci sono centinaia di workflow pronti da adattare in mezz'ora.




