In questa guida costruiamo, passo dopo passo, un'automazione con n8n che legge nuovi contenuti (per esempio un feed RSS o le email in arrivo), li fa riassumere a un modello di IA e ti recapita il risultato dove preferisci. n8n e' uno strumento di automazione dei flussi di lavoro open source, gratuito se installato in locale, e perfetto per collegare l'IA ai servizi che gia' usi senza scrivere un'intera applicazione.

A chi serve e cosa costruiremo

Questa guida e' pensata per chi ha una minima dimestichezza con il terminale e vuole automatizzare compiti ripetitivi: monitorare notizie, riassumere email, smistare richieste, generare bozze. Non serve saper programmare, ma aiuta capire cos'e' una chiamata API. Alla fine avrai un flusso funzionante che: si attiva quando arriva un nuovo elemento, invia il testo a un modello IA (useremo Google Gemini o OpenAI), riceve un riassunto e lo consegna via email o su un canale a tua scelta.

Prerequisiti e strumenti: n8n, Docker e una chiave API

Ti servono tre cose:

  • n8n: lo installeremo in locale con Docker (gratis). In alternativa esiste n8n Cloud, a pagamento, senza installazione.
  • Docker installato sul tuo computer (Windows, Mac o Linux). E' il modo piu' pulito per far girare n8n senza sporcare il sistema.
  • Una chiave API di un modello IA: va bene quella gratuita di Google AI Studio (per Gemini) o una di OpenAI. In questa guida usiamo Gemini, ma i passaggi sono identici cambiando indirizzo e chiave.
n8n collega trigger, nodi IA e azioni in un unico flusso visuale.

n8n contro Make e Zapier: perche' n8n

Le alternative piu' note sono Zapier e Make. Zapier e' il piu' semplice e ricco di integrazioni pronte, ma diventa costoso quando i volumi crescono e offre poco controllo. Make ha un editor visuale potente e prezzi piu' aggressivi. n8n si distingue per tre motivi: e' open source e auto-ospitabile (quindi gratis e con i dati che restano da te), permette di scrivere codice personalizzato nei nodi quando serve, e non ha limiti artificiali sul numero di operazioni se lo ospiti tu. Lo svantaggio e' che richiede un minimo di configurazione iniziale. Per chi vuole automazioni con l'IA senza costi ricorrenti e con pieno controllo, e' la scelta migliore.

Passo 1: installare n8n in locale con Docker

Apri il terminale e lancia questo comando. Crea un volume per conservare i dati e avvia n8n sulla porta 5678:

docker volume create n8n_data

docker run -it --rm   --name n8n   -p 5678:5678   -v n8n_data:/home/node/.n8n   docker.n8n.io/n8nio/n8n

Dopo qualche secondo, apri il browser su http://localhost:5678. Alla prima apertura n8n ti chiede di creare un account locale (email e password, restano sul tuo computer). Fatto questo, sei nell'editor dei flussi.

Per un uso continuativo conviene far girare n8n in background e avviarlo all'accensione; la documentazione ufficiale spiega come farlo con Docker Compose. Per imparare, il comando qui sopra e' piu' che sufficiente.

Passo 2: creare il flusso - trigger, nodo IA, output

Un flusso n8n e' una catena di "nodi". Costruiamo il nostro:

  1. Clicca su Add first step e scegli un trigger. Per iniziare, seleziona Schedule Trigger (parte a intervalli regolari) oppure RSS Feed Trigger se vuoi monitorare un sito di notizie. Chi preferisce le email puo' usare il trigger Gmail o IMAP.
  2. Aggiungi un nodo HTTP Request: sara' quello che chiama il modello IA. In alternativa, n8n ha nodi IA gia' pronti (sezione "AI"), ma usare HTTP Request ti fa capire cosa succede sotto e funziona con qualsiasi modello.
  3. Aggiungi un nodo di output: Send Email, oppure un nodo Slack, Telegram o Notion, a seconda di dove vuoi ricevere il risultato.

Collega i nodi trascinando le connessioni: trigger → HTTP Request → output.

Passo 3: il nodo IA - prompt e parsing della risposta

Configura il nodo HTTP Request per chiamare Gemini. Imposta il metodo su POST e l'URL su quello dell'API di Gemini per il modello veloce ed economico:

https://generativelanguage.googleapis.com/v1beta/models/gemini-3.6-flash:generateContent

Negli header aggiungi x-goog-api-key con la tua chiave e Content-Type: application/json. Nel corpo (Body, tipo JSON) inserisci il prompt, riprendendo il testo arrivato dal trigger con un'espressione n8n. Un esempio di corpo:

{
  "contents": [{
    "parts": [{
      "text": "Riassumi in 3 frasi, in italiano, questo testo: {{ $json.content }}"
    }]
  }]
}

La sintassi {{ $json.content }} prende il campo "content" dell'elemento in arrivo (nel feed RSS potrebbe chiamarsi "contentSnippet" o "content": guarda i dati che il trigger produce e adatta il nome). Il modello risponde con un JSON in cui il testo generato si trova nel percorso dei candidati. Per estrarlo, aggiungi un nodo Set (o Edit Fields) e crea un campo "riassunto" con questa espressione:

{{ $json.candidates[0].content.parts[0].text }}

Infine, nel nodo di output usa {{ $json.riassunto }} come corpo dell'email o del messaggio. Salva ed esegui il flusso con Execute Workflow: se tutto e' corretto, riceverai il riassunto generato dall'IA.

Prompt pronti da incollare

Il prompt e' il cuore dell'automazione. Ecco tre varianti da provare nel corpo della richiesta, cambiando solo la riga del testo:

Riassumi in 3 frasi, in italiano semplice, il seguente articolo e aggiungi in fondo una riga "Perche' conta:" con una considerazione. Testo: {{ $json.content }}
Leggi questa email e classificala come [urgente], [normale] o [spam]. Rispondi solo con la categoria e una riga di motivazione. Email: {{ $json.text }}
Estrai da questo testo eventuali date, nomi di aziende e cifre in denaro. Restituisci un elenco puntato. Se non ci sono, scrivi "nessun dato". Testo: {{ $json.content }}
Con i prompt giusti lo stesso flusso riassume, classifica o estrae dati.

Errori comuni e come risolverli

  • "port is already allocated" all'avvio di Docker: la porta 5678 e' occupata. Chiudi l'altra istanza o cambia porta (per esempio -p 5679:5678) e apri localhost:5679.
  • Risposta 400 o 403 dall'API: quasi sempre e' la chiave sbagliata o mancante negli header, oppure il nome del modello errato. Verifica x-goog-api-key e il nome esatto del modello.
  • Il campo "riassunto" e' vuoto: il percorso JSON non corrisponde. Apri l'output del nodo HTTP Request, guarda la struttura reale della risposta e correggi l'espressione (a volte i nomi dei campi cambiano tra modelli).
  • Errore 429 (too many requests): hai superato i limiti del piano gratuito. Rallenta la frequenza del trigger o passa a un piano a pagamento.

Varianti: pianificazione, RAG e altri modelli

Una volta capito il meccanismo, le possibilita' si moltiplicano. Puoi pianificare il flusso ogni mattina per ricevere una rassegna stampa automatica. Puoi sostituire Gemini con OpenAI o con un modello locale (via Ollama) cambiando URL e header. Puoi aggiungere un passaggio di RAG: prima di chiamare il modello, cerchi informazioni in un database di documenti e le inserisci nel prompt, cosi' le risposte si basano sui tuoi dati. E puoi concatenare piu' nodi IA — uno che estrae, uno che scrive — per pipeline piu' sofisticate.

Quando NON usare n8n (e come proseguire)

n8n non e' la scelta giusta per tutto. Se ti serve un'unica integrazione semplicissima e non vuoi gestire nulla, Zapier e' piu' immediato. Se il compito richiede logica complessa e prestazioni elevate, a volte conviene scrivere un piccolo script in Python e schedularlo. E se maneggi dati molto sensibili, valuta con attenzione dove gira n8n e a quali servizi lo colleghi. Per proseguire, consulta la documentazione ufficiale di n8n, che raccoglie centinaia di integrazioni ed esempi, e sperimenta un flusso alla volta: il modo migliore per imparare l'automazione con l'IA e' automatizzare un compito che ti annoia davvero.