Vuoi un assistente che ogni mattina legga per te le ultime notizie di IA, le riassuma e te le recapiti su Telegram senza scrivere una riga di codice? In questo tutorial costruiamo esattamente questo: un piccolo agente no-code con n8n in versione self-hosted, che prende contenuti in ingresso da un feed RSS (o da un'email), li fa sintetizzare a un LLM e invia il riassunto in chat. Vedremo due strade per la parte di intelligenza: le API di OpenAI (a pagamento, zero installazione) e Ollama (modelli in locale, gratis). Alla fine avrai un flusso attivo, schedulato e testabile passo passo.
Cosa costruiamo e cosa serve
Il risultato finale e un workflow che gira da solo: a intervalli regolari controlla una fonte, individua i nuovi elementi, genera un riassunto di 4-5 righe e lo consegna. E il classico caso d'uso "monitoraggio e notifica" che ti fa risparmiare decine di micro-decisioni al giorno. n8n e la colla che orchestra tutto; l'LLM e il cervello che comprime il testo.
Prerequisiti reali, tutti gratuiti tranne dove indicato:
- Docker installato e funzionante (Docker Desktop su Windows/macOS, oppure Docker Engine su Linux). Serve per far girare n8n in un container isolato.
- Un account Telegram e l'app: la useremo per creare un bot tramite
@BotFathere ricevere i messaggi. - A scelta per la parte IA: una chiave API di OpenAI (richiede credito prepagato), oppure Ollama installato sul tuo computer per far girare i modelli in locale a costo zero.
- Un minimo di dimestichezza con il terminale: i comandi sono pronti da copiare.
Quale modello IA scegliere: OpenAI o Ollama
Per un compito di riassunto entrambe le opzioni funzionano benissimo. La differenza sta in costi, privacy e potenza dell'hardware.
| Criterio | OpenAI (cloud) | Ollama (locale) |
|---|---|---|
| Costo | A consumo, pochi centesimi per riassunto con i modelli mini | Gratis: paghi solo l'elettricita |
| Setup | Solo una chiave API | Installazione + download del modello (alcuni GB) |
| Hardware | Nessun requisito locale | Meglio 16 GB di RAM; GPU consigliata per velocita |
| Privacy | Il testo transita sui server OpenAI | Tutto resta sul tuo computer |
| Qualita sui riassunti brevi | Molto alta e costante | Ottima con modelli 7-8B, leggermente inferiore |
I nomi esatti e attuali dei modelli: su OpenAI usa gpt-4o-mini o la famiglia gpt-5-mini (verifica il listino aggiornato nei docs, i nomi evolvono in fretta). Su Ollama i piu solidi per il riassunto in italiano sono llama3.1 (8B) e qwen2.5: bilanciano bene qualita e leggerezza.
La mia prima scelta: OpenAI con gpt-4o-mini. Il motivo e pragmatico: per iniziare vuoi che il flusso funzioni in cinque minuti, senza dover scaricare gigabyte ne preoccuparti della RAM. Il costo di un riassunto e nell'ordine di frazioni di centesimo. Passa a Ollama quando hai bisogno di privacy totale, volumi elevati che non vuoi pagare, o semplicemente per il gusto di avere tutto in casa. Piu avanti trovi la configurazione per entrambe.
Installare n8n con Docker in 5 minuti
n8n si avvia con un solo comando. Il volume garantisce che i tuoi workflow e le credenziali sopravvivano al riavvio del container. La porta 5678 e quella dell'interfaccia web.
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Apri il browser su http://localhost:5678, crea l'account owner (resta tutto locale) e sei dentro l'editor. Se prevedi di usare Ollama sul tuo host, aggiungi al comando la mappatura che permette al container di raggiungere la tua macchina, indispensabile su Linux:
docker run -it --rm \
--name n8n \
-p 5678:5678 \
--add-host=host.docker.internal:host-gateway \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Per un uso stabile e consigliabile Docker Compose: definisci una volta il servizio in un file docker-compose.yml con lo stesso volume e la stessa porta, poi avvii con docker compose up -d in background. La documentazione ufficiale di n8n riporta un file compose pronto all'uso con le variabili d'ambiente utili (timezone, autenticazione, webhook URL).
Creare il bot Telegram e trovare il chat_id
Per inviare messaggi ti servono due valori: il token del bot e il chat_id della conversazione di destinazione.
- Su Telegram apri una chat con
@BotFather(il bot ufficiale, con la spunta blu). - Invia il comando
/newbote segui le istruzioni: scegli un nome e uno username che termini perbot. - BotFather ti restituisce un token nella forma
123456789:AAE...xyz. Conservalo: e la chiave d'accesso al tuo bot. - Ora scrivi un messaggio qualsiasi (es. "ciao") al tuo nuovo bot dalla tua app Telegram: serve a "svegliare" la conversazione.
- Per leggere il
chat_id, chiama l'endpointgetUpdatesdelle Telegram Bot API sostituendo il tuo token:
curl "https://api.telegram.org/bot<IL_TUO_TOKEN>/getUpdates"
Nella risposta JSON cerca "chat":{"id":123456789,...}: quel numero e il tuo chat_id. Se ottieni una lista vuota, invia di nuovo un messaggio al bot e ripeti la chiamata.
Il workflow nodo per nodo
Nell'editor di n8n un workflow e una catena di nodi collegati da sinistra a destra. I dati passano da un nodo al successivo e li richiami con le espressioni tra doppie parentesi graffe, ad esempio {{ $json.title }}. Costruiamo quattro nodi.
1. Trigger: leggere il feed RSS
Aggiungi come primo nodo uno Schedule Trigger (per decidere ogni quanto girare, es. ogni ora) e collegalo a un nodo RSS Read, dove incolli l'URL del feed che vuoi monitorare. In alternativa puoi partire da un trigger email (IMAP) se la fonte sono le newsletter. Ogni elemento del feed diventa un item con campi come title, link e content.
2. Preparare il testo da riassumere
Spesso il campo content contiene HTML. Puoi aggiungere un nodo Edit Fields (Set) per creare un campo pulito, ad esempio testo, componendo titolo e corpo con un'espressione come {{ $json.title }}\n\n{{ $json.content }}. Questo campo sara l'input del modello.
3. Riassumere con OpenAI o gratis con Ollama
Opzione OpenAI. Aggiungi il nodo OpenAI (sezione AI), crea la credenziale incollando la tua API key e scegli l'operazione di chat con il modello gpt-4o-mini. Imposti un messaggio di sistema (il prompt della prossima sezione) e un messaggio utente con {{ $json.testo }}. Sotto il cofano il nodo invia alle API di OpenAI un payload di questa forma:
{
"model": "gpt-4o-mini",
"messages": [
{ "role": "system", "content": "Sei un redattore che scrive riassunti concisi in italiano." },
{ "role": "user", "content": "Riassumi in 4 frasi: ..." }
],
"temperature": 0.3
}
Opzione Ollama (gratis, in locale). Assicurati che Ollama sia in esecuzione e di aver scaricato il modello con ollama pull llama3.1. n8n offre un nodo Ollama Chat Model (usato con i nodi AI come "Basic LLM Chain"), ma il modo piu trasparente e didattico e un nodo HTTP Request in POST verso l'endpoint /api/generate. Dal container n8n l'host si raggiunge con host.docker.internal. Ecco la chiamata equivalente da terminale, utile anche solo per verificare che Ollama risponda:
curl http://host.docker.internal:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "Riassumi in 4 frasi in italiano il seguente testo:\n\n...",
"stream": false
}'
Nel nodo HTTP Request imposta metodo POST, URL http://host.docker.internal:11434/api/generate, Body in JSON con i campi model, prompt (dove inserisci {{ $json.testo }}) e stream: false. La risposta di Ollama contiene il testo nel campo response.
4. Inviare su Telegram
Aggiungi il nodo Telegram, operazione Send Message. Crea la credenziale "Telegram API" incollando il token di BotFather, imposta Chat ID con il numero trovato prima e nel campo Text inserisci il risultato del modello. Con OpenAI sara qualcosa come {{ $json.message.content }}, con Ollama {{ $json.response }} (i nomi esatti dei campi dipendono dal nodo precedente: usa il pannello di n8n per selezionarli con un clic e non sbagliare il percorso).
Il prompt di sistema per riassunti impeccabili
La qualita del riassunto dipende quasi tutta dal prompt. Copia questo messaggio di sistema, valido sia per OpenAI sia per Ollama:
Sei un redattore tecnico italiano. Riassumi il testo fornito in 3-5 frasi chiare e scorrevoli, in italiano. Mantieni solo i fatti essenziali, elimina opinioni e ripetizioni. Non aggiungere informazioni non presenti nel testo. Inizia direttamente con il contenuto, senza frasi introduttive come "Ecco il riassunto".
Ecco alcuni prompt utente copiabili e il risultato atteso:
- Riassunto base:
Riassumi in massimo 4 frasi: {{ $json.testo }}- restituisce un paragrafo compatto pronto da inviare. - Riassunto a punti:
Estrai i 3 punti chiave in elenco puntato: {{ $json.testo }}- restituisce tre bullet sintetici, comodi in chat. - Con titolo e emoji:
Scrivi un titolo breve seguito da un riassunto di 3 frasi, aggiungi una emoji pertinente all'inizio: {{ $json.testo }}- produce un messaggio gia formattato per Telegram. - Con giudizio di rilevanza:
Riassumi in 3 frasi e indica su una scala 1-5 quanto e rilevante per chi si occupa di IA: {{ $json.testo }}- aggiunge un punteggio che puoi usare per filtrare.
Testare, attivare e schedulare
- Clicca Test workflow (o esegui il singolo nodo con "Execute step"): n8n mostra i dati che escono da ogni nodo. Verifica che l'RSS porti gli articoli, che il modello risponda e che Telegram invii.
- Controlla la chat del bot: dovresti ricevere il riassunto. Se non arriva, apri il nodo Telegram e leggi l'errore.
- Quando tutto funziona, imposta la cadenza nello Schedule Trigger (es. ogni 60 minuti o ogni mattina alle 8).
- Sposta l'interruttore Active in alto a destra su ON: da questo momento il workflow gira in autonomia, anche se chiudi l'editor, finche il container e in esecuzione.
Varianti e casi avanzati
- Evitare i doppioni: aggiungi un nodo che confronta il
linkdell'articolo con quelli gia processati (usando un nodo di storage o un database esterno) cosi non ricevi due volte lo stesso pezzo. - Filtrare per parole chiave: inserisci un nodo Filter o IF dopo l'RSS con una condizione sul titolo, ad esempio
{{ $json.title.toLowerCase().includes('agente') }}, per riassumere solo i temi che ti interessano. - Inviare a Slack o email: sostituisci semplicemente il nodo finale con il nodo Slack (Post Message) o Send Email (SMTP). Il resto del flusso resta identico.
- Usare l'AI Agent node: per compiti piu complessi n8n mette a disposizione i nodi AI Agent con memoria e tool. Puoi collegare una memoria di conversazione e dare all'agente strumenti (ricerca, database) in modo che decida da solo come agire, invece di seguire una catena fissa.
Errori comuni e come risolverli
- ECONNREFUSED verso Ollama: dal container,
localhostpunta al container stesso, non alla tua macchina. Usahttp://host.docker.internal:11434e su Linux avvia n8n con--add-host=host.docker.internal:host-gateway. Verifica anche che Ollama sia attivo (ollama serve) e il modello scaricato. - Telegram: "Unauthorized" o "chat not found": quasi sempre token errato/incollato male, oppure
chat_idsbagliato. Ricontrolla congetUpdatese assicurati di aver scritto almeno una volta al bot. - OpenAI: rate limit (429) o "insufficient_quota": hai superato i limiti o esaurito il credito. Aggiungi credito, riduci la frequenza dello Schedule o inserisci un breve ritardo tra le chiamate.
- Espressione che restituisce vuoto: il percorso del campo non esiste. Non digitarlo a mano: nel pannello di n8n trascina o clicca il campo dall'output del nodo precedente.
- Il modello risponde in inglese: rafforza il prompt di sistema chiedendo esplicitamente l'italiano e abbassa la
temperaturea 0.2-0.3.
Alternative e come proseguire
n8n non e l'unica strada. Make e Zapier offrono automazioni no-code piu immediate ma cloud-only e a pagamento sui volumi alti; un semplice script Python con la libreria del provider e la scelta giusta se sei uno sviluppatore e vuoi controllo totale. Evita n8n quando ti serve solo una singola chiamata occasionale (basta uno script) o quando l'azienda vieta i servizi self-hosted senza un team che li mantenga. Per il resto, l'accoppiata n8n + LLM e ideale: visuale, estendibile e senza lock-in.
Da qui puoi crescere: aggiungi piu fonti, un nodo di traduzione, un archivio dei riassunti in un foglio Google, o trasforma il flusso in un vero agente con memoria. Consulta la documentazione di n8n per i dettagli di ogni nodo e la reference API di Ollama per sfruttare al meglio i modelli locali. Il tuo primo agente no-code e gia operativo: adesso e solo questione di dargli piu compiti.




