Guide
Riassumere Articoli Web con n8n e OpenAI: Workflow Pronti per la Produzione
Se leggi molte fonti ogni giorno, sai quanto tempo bruci nel capire cosa conta davvero. Con openai n8n articoli puoi trasformare feed, link e bookmark in un riassunto automatico di pagine web pronto per Slack, email o Notion. In questa guida costruisci un workflow n8n per sintesi contenuti che: acquisisce articoli (da URL o feed RSS), estrae il testo (estrazione testo da HTML), deduplica e filtra la qualità, usa prompt per riassunti efficaci con l’LLM, gestisce chunking e map‑reduce per testi lunghi, e pubblica una rassegna quotidiana su Slack/Email con output strutturato JSON o Markdown. Vedrai configurazioni esatte dei nodi chiave (OpenAI Chat, Slack, Google Sheets, Notion), snippet di codice e best practice di produzione: gestione token e costi OpenAI, rate limiting e retry nelle API, versioning dei prompt, human‑in‑the‑loop per approvazione e osservabilità e logging delle esecuzioni. Obiettivo: passare da “tab aperti” a insight azionabili, aumentando produttività e qualità decisionale.
📚 Nuovo a n8n? Parti dalla guida completa: cos’è n8n e come funziona.
[IMG: Panoramica del workflow: Trigger → Fetch (HTTP/RSS) → Parse/Extract → Dedup → Chunking → LLM Summarize → Merge → Publish (Slack/Email/Notion) → Log]
Architettura del workflow: dalle fonti al digest
Per costruire un workflow n8n per sintesi contenuti solido, progetta tre layer:
- Ingestion e normalizzazione
- Sorgenti: feed RSS a riepilogo (blog/portali), link singoli da form/Slack, segnalazioni via email.
- Normalizza: porta tutto a uno schema comune (title, url, source, publishedAt, html, textRaw).
- Deduplicazione articoli e filtraggio qualità: scarta duplicati, snippet molto corti o pagine senza contenuto centrale.
- Sintesi e arricchimento
- Estrarre testo da HTML e pulire boilerplate.
- Prompt per riassunti efficaci, con output strutturato JSON o Markdown.
- Chunking e map‑reduce per testi lunghi, così controlli token e costo.
- Distribuzione e audit
- Rassegna quotidiana su Slack/Email con 5‑10 highlight.
- Salvataggio su Notion o Google Sheets per archivio e KPI.
- Log sintetico: conteggio articoli, errori, costi stimati, versione prompt.
Insight operativo: parti da un “MVP giornaliero” e scala a più canali. L’approccio modulare ti permette di riusare lo stesso cuore di sintesi per newsletter interne, recap per il team prodotto e aggiornamenti clienti. Con openai n8n articoli puoi orchestrare fonti diverse mantenendo un flusso coerente e sostenibile nei costi.
[IMG: Mappa logica a blocchi “Ingest → Clean → Summarize → Publish → Log”]
Configurare OpenAI in n8n: nodo chat, prompt e costi sotto controllo
Per la sintesi useremo il nodo chat di OpenAI. Ecco una configurazione testata che rispetta le best practice per output strutturati e budget.
Nodo Chat OpenAI (con campi esatti)
{
"name": "ChatGPT",
"type": "n8n-nodes-langchain.lmChatOpenAi",
"parameters": {
"model": "gpt-3.5-turbo",
"temperature": 0.4,
"maxTokens": 500,
"systemPrompt": "You are a concise research assistant. Produce faithful, structured summaries.",
"userPrompt": "Riassumi il seguente testo in 5 bullet, includi 1 citazione chiave e 3 takeaway azionabili. Output in Markdown. Testo:\n\n{{ $json.text }}"
},
"credentials": {
"openAiApi": { "id": "OPENAI_CREDENTIAL_ID" }
}
}
Linee guida per prompt per riassunti efficaci
- Imposta systemPrompt con ruolo e stile (conciso, fedele, strutturato).
- Definisci chiaramente formato e schema: “Output in Markdown”, elenchi puntati, lunghezza massima.
- Passa solo il testo rilevante (no boilerplate) per ridurre costi e latenza.
Gestione token e costi OpenAI
- temperature bassa (0–0.4) per stabilità.
- maxTokens adeguati al formato (300–600 per articolo).
- Troncamento input su soglia (es. 10k‑15k caratteri) e applica chunking per il resto.
- Caching: per URL già visti, usa la versione salvata o ricalcola solo se aggiornato.
Monitoraggio e versioning dei prompt
- Mantieni una variabile “prompt_version” e logga risultati per confronti A/B (es. più o meno bullet).
- Con openai n8n articoli, versionare i prompt ti permette di ottimizzare la qualità senza sorprese.
[IMG: Nodo OpenAI con system/user prompt e credenziali configurate]
Ingestion: da feed RSS o URL singoli a testo pulito
Opzione A: Feed RSS a riepilogo
- Recupera il feed con un nodo HTTP Request (GET sull’URL del feed).
- Con un nodo XML, parsifica il feed in JSON (titolo, link, pubDate, guid).
- Usa un Item Lists/Code per estrarre i campi chiave e normalizzare.
Opzione B: URL singoli (segnalazioni)
- Usa un Webhook o form (es. Typeform → Webhook → n8n) per ricevere link.
- Accoda in una lista giornaliera per sintesi batch.
Estrazione testo da HTML (senza librerie esterne)
- Esegui HTTP Request sulla pagina per ottenere l’HTML.
- In un Code node, rimuovi script/style e strip dei tag, mantieni struttura minima:
// Input: $json.html contiene l'HTML della pagina
let html = ($json.html || '').toString();
// Rimuovi script e style
html = html.replace(/<script[\s\S]*?<\/script>/gi, '')
.replace(/<style[\s\S]*?<\/style>/gi, '');
// Rimpiazza i tag block con nuove righe per preservare struttura
html = html.replace(/<\/(p|div|h[1-6]|li|br|section|article)>/gi, '$&\n');
// Strippa i tag rimanenti
const text = html.replace(/<[^>]+>/g, '')
.replace(/\n{3,}/g, '\n\n')
.trim();
return [{ json: { ...$json, text } }];
Deduplicazione articoli e filtraggio qualità
- Mantieni una “fingerprint” per URL (hash) e scarta duplicati della giornata.
- Filtra articoli troppo corti (es. <500 caratteri di text).
- Registra i motivi di esclusione per trasparenza.
[IMG: HTTP Request (RSS) → XML → Transform → HTTP Request (HTML) → Code (clean) → Filter/Dedup]
Chunking e map‑reduce: riassumere testi lunghi senza sforare quote
Per articoli oltre una certa lunghezza, adotta uno schema chunk + map‑reduce:
- Chunking
- Dividi text in blocchi (es. 2000–3000 caratteri), assicurandoti di spezzare su fine frase/paragrafo quando possibile.
- Emitti un item per chunk.
- “Map”: sintetizza ogni chunk
- Invia ogni chunk al nodo ChatGPT con un prompt breve, stesso schema di output.
- “Reduce”: unisci le sintesi parziali in una sintesi unica
- Combina le mini‑sintesi in una “mega‑sintesi” con un secondo passaggio LLM più corto (o una semplice fusione logica).
Split In Batches (per controllo di flusso)
{
"name": "Batch Loop",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 1,
"parameters": { "batchSize": 10 }
}
Merge delle mini‑sintesi
- Usa il Merge node per “Append” o per sincronizzare rami (mode “Wait”) e poi un Code node “Run Once For All Items” per concatenare:
// Run Once For All Items: combina mini-sintesi in un brief unico
const parts = $input.all().map(i => i.json.summary_md || i.json.text || '');
const combined = parts.filter(Boolean).join('\n\n');
return [{ json: { combinedSummary: combined } }];
Vantaggi pratici
- Controllo granulare su costi (paghi per chunk).
- Robustezza: se un chunk fallisce, puoi ritentare quel pezzo.
- Con openai n8n articoli, il pattern map‑reduce ti permette di trattare report lunghi con stabilità.
[IMG: Split text → Split In Batches → LLM (map) → Merge/Wait → LLM (reduce) → Output]
Pubblicazione: Slack/Email, Notion e Google Sheets
Slack: rassegna quotidiana
- Nodo Slack (n8n-nodes-base.slack), invio messaggi:
{
"name": "Post Slack Digest",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"parameters": {
"resource": "message",
"operation": "send",
"channel": "C01234567",
"text": "Rassegna di oggi: {{ $json.combinedSummary }}"
},
"credentials": {
"slackOAuth2Api": { "name": "Slack OAuth2" }
}
}
- Invia il digest come HTML/Markdown, con i link agli articoli originali e i takeaway.
Notion: archivio consultabile
- Crea una pagina per articolo o per rassegna (titolo, link, riassunto, tag).
- Esempio di properties (concettuale): Name (title), Status (select), Summary (rich text), URL.
Google Sheets: log e KPI
{
"name": "Append to Sheet",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4,
"parameters": {
"operation": "append",
"spreadsheetId": "1A2b3C4D5E6FgHiJkLMnoPQrstu",
"sheetName": "Sheet1",
"dataMode": "autoMap",
"options": { "valueInputMode": "USER_ENTERED" }
},
"credentials": {
"googleSheetsOAuth2Api": { "name": "Google Sheets OAuth2" }
}
}
Suggerimenti di layout
- Output strutturato JSON o Markdown coerente, con: titolo, fonte, link, 3‑5 bullet, citazione chiave, tag.
- Con openai n8n articoli, standardizzare il formato rende la rassegna chiara e riusabile per blog interni o newsletter.
[IMG: Ramo “Publish”: Slack + Email + Notion + Sheets]
Affidabilità e governance: retry, prompt versioning e human‑in‑the‑loop
Rate limiting e retry nelle API
- Su 429/5xx (fetch o LLM), implementa retry con backoff (2s→5s→10s) in rami alternativi e segnala il fallimento dopo N tentativi.
- Usa batch costanti (Split In Batches) per evitare picchi.
Human‑in‑the‑loop per approvazione
- Inserisci una fase di revisione (es. creare una pagina Notion “Bozza” o inviare anteprima via Slack a un canale di approvazione) prima del publish finale.
- Se la revisione approva entro X ore, pubblica; altrimenti invia fallback (digest minimale).
Osservabilità e logging delle esecuzioni
- Log sintetico: numero articoli, scartati (motivo), token stimati, latenza media, prompt_version.
- Error Trigger dedicato per allarmi (es. Slack) quando error rate supera soglie.
Sicurezza e privacy
- Minimizza dati: conserva testo pulito e metadati essenziali.
- Segreti sempre in credenziali/variabili d’ambiente.
Con openai n8n articoli, un minimo di governance (prompt versioning, review, log) fa la differenza tra demo e produzione.
[IMG: Pannello “Logs & Alerts”: Sheets + Slack Alerts + Error Trigger]
Esempio end‑to‑end: 10 link al giorno → digest Slack in Markdown
- Trigger (giornaliero)
- Programma alle 8:00.
- Ingest
- Se RSS: HTTP Request → XML → map a {title,url,source,publishedAt}.
- Se lista di URL: leggi da Google Sheets “inbox” o payload manuale.
- Fetch + Clean
- HTTP Request (HTML) per ogni URL → Code (clean HTML → text).
- Filtra (<500 char → scarta con motivo).
- Summarize
- Se text > soglia → chunking + map‑reduce; altrimenti una sola chiamata a “ChatGPT” (n8n-nodes-langchain.lmChatOpenAi).
- Salva summary_md in item.
- Merge
- Code “Run Once For All Items” concatena i migliori 5‑10 in un digest Markdown.
- Publish
- Slack: “Rassegna di oggi” + digest.
- Notion/Sheets: salva per archivio e metriche.
- Log
- Append KPI (articoli processati, token stimati, prompt_version).
Con openai n8n articoli ottieni un recap leggibile in pochi minuti ogni mattina.
[IMG: Canvas completo con i nodi principali collegati]
Quick Takeaways
- Usa HTTP Request + XML per leggere feed e HTTP Request + Code per pulire HTML in testo.
- Configura n8n-nodes-langchain.lmChatOpenAi con system/user prompt chiari e maxTokens contenuti.
- Applica chunking e un pattern map‑reduce per testi lunghi, unendo mini‑sintesi con un pass “reduce”.
- Pubblica una rassegna quotidiana su Slack/Email e archivia in Notion/Google Sheets.
- Implementa dedup, filtri di qualità e log sintetici (KPI, prompt_version, errori).
- Progetta retry/backoff su 429/5xx e integra una review human‑in‑the‑loop dove serve.
Conclusione
Riassumere il web in modo affidabile richiede pipeline sobrie e misurabili. Con openai n8n articoli puoi creare un flusso che parte da feed o link, pulisce il contenuto, produce un riassunto strutturato e consegna un digest chiaro dove serve. Standardizzando prompt e output, controllando token e applicando chunking quando il testo è lungo, mantieni qualità e costi sotto controllo. L’archiviazione su Notion o Sheets e un logging essenziale rendono il processo osservabile e migliorabile. Inizia da un canale (es. Slack) e un set di fonti prioritarie, testa due varianti di prompt, misura tempo/accuratezza e itera. In poche settimane avrai un “radar” informativo che libera ore al tuo team marketing, trasformando letture sparse in insight pronti all’azione. Porta questo schema anche in newsletter interne o recap per sales: la stessa base scalda più use case con minima manutenzione.
FAQ
- Come faccio un riassunto automatico di pagine web partendo da RSS?
Recupera il feed con HTTP Request, parsifica con un nodo XML, poi per ogni item fetch dell’HTML e Code per pulizia testo. Passa il campo text al nodo OpenAI chat e genera un output strutturato JSON o Markdown. Infine, pubblica via Slack/Email e archivia in Notion o Google Sheets.
- Come gestire testi molto lunghi senza sforare i token?
Usa chunking e map‑reduce: dividi il testo in blocchi, sintetizza ogni blocco (map), poi combina le mini‑sintesi in un digest (reduce). Con Split In Batches regoli il throughput e con un Code “Run Once For All Items” unisci i risultati.
- Come ridurre costi e latenza?
Controlla maxTokens, riduci il testo con pulizia HTML e troncamento, imposta temperature basse per stabilità e implementa caching dei link già riassunti. Aggiungi retry/backoff su 429/5xx e monitora tempi/token.
- Come implemento la deduplicazione articoli e filtraggio qualità?
Crea una fingerprint per URL (hash) e mantieni una lista giornaliera dei visti; scarta se già presente. Applica filtri minimi di lunghezza e segnala motivi nei log. Salva le decisioni in Sheets/Notion per audit.
- Posso far approvare i riassunti prima dell’invio?
Sì: invia bozza su Notion (status “Review”) o in un canale Slack di approvazione. Se approvato entro una finestra, pubblica il digest finale; in caso contrario, invia un riepilogo minimale o rimanda al giorno successivo.
Hai trovato utile questa guida?
Qual è la prima fonte che inserirai nel tuo digest: il blog di settore o il feed delle news di mercato? Condividi la tua scelta (e l’articolo) con il team: confrontiamo i prompt migliori e costruiamo una rassegna che taglia davvero il rumore!
Articoli correlati
- Automate RPA: Guida Completa a Power Automate e all’Iperautomazione per le Aziende
- RPA Process: Guida Completa e Operativa all’Automazione Robotica
- RPA Robotica: guida completa a benefici, costi e roadmap
- Automation RPA: Guida Completa all’Automazione Robotica dei Processi
Vuoi automazioni AI su misura per la tua azienda?
Scopri la consulenza →