{ "name": "03 - Rassegna email mattutina con AI", "nodes": [ { "parameters": { "content": "## Configurazione\n\nCollega Gmail, OpenAI e Telegram. Imposta il Chat ID Telegram e verifica il modello gpt-4o-mini.\n\nIl workflow parte alle 08:00 UTC dal lunedì al venerdì. Conferma il fuso orario prima di attivarlo.\n\nElabora al massimo 25 email non lette e invia una sola rassegna in italiano, come testo semplice. Nessuna notifica se non ci sono email. Le email restano non lette.", "height": 360, "width": 400 }, "id": "nota-setup", "name": "Nota di setup", "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -60, -200 ] }, { "parameters": { "rule": { "interval": [ { "field": "cronExpression", "expression": "0 8 * * 1-5" } ] } }, "id": "schedule-8", "name": "Ogni mattina alle 8 (lun-ven)", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": [ 400, 0 ] }, { "parameters": { "operation": "getAll", "returnAll": false, "limit": 25, "filters": { "q": "is:unread newer_than:1d -category:promotions -category:social" }, "options": {} }, "id": "gmail-getall", "name": "Prendi email non lette", "type": "n8n-nodes-base.gmail", "typeVersion": 2.1, "position": [ 620, 0 ] }, { "parameters": { "jsCode": "// Compatta le email in un unico testo per l'AI\nconst righe = [];\n\nfor (const item of $input.all()) {\n const e = item.json;\n const da = e.from?.value?.[0]?.name || e.from?.value?.[0]?.address || e.From || 'Sconosciuto';\n const oggetto = e.subject || e.Subject || '(senza oggetto)';\n const anteprima = String(e.snippet || e.text || '').slice(0, 200).replace(/\\s+/g, ' ');\n righe.push(`DA: ${da}\\nOGGETTO: ${oggetto}\\nANTEPRIMA: ${anteprima}\\n---`);\n}\n\nif (righe.length === 0) {\n return [{ json: { vuoto: true, testoEmail: '' } }];\n}\n\nreturn [{ json: { vuoto: false, totale: righe.length, testoEmail: righe.join('\\n') } }];" }, "id": "code-compatta", "name": "Prepara testo per AI", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ 840, 0 ] }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "c1", "leftValue": "={{ $json.vuoto }}", "rightValue": false, "operator": { "type": "boolean", "operation": "equals" } } ], "combinator": "and" }, "options": {} }, "id": "if-ci-sono-email", "name": "Ci sono email?", "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ 1060, 0 ] }, { "parameters": { "modelId": { "__rl": true, "mode": "list", "value": "gpt-4o-mini" }, "messages": { "values": [ { "role": "system", "content": "Sei l'assistente di un imprenditore italiano. Ricevi l'elenco delle email non lette e produci una rassegna mattutina in italiano, breve e pratica, in questo formato:\n\n🔴 URGENTI (rispondere oggi):\n- [mittente]: [cosa vuole in max 10 parole]\n\n🟡 IMPORTANTI (questa settimana):\n- ...\n\n⚪ IL RESTO:\n- una riga sola che raggruppa il resto\n\nSii sintetico. Se qualcosa sembra un cliente arrabbiato o un'opportunità di vendita, segnalalo per primo." }, { "content": "=Ecco le {{ $json.totale }} email non lette:\n\n{{ $json.testoEmail }}" } ] }, "options": {} }, "id": "openai-riassunto", "name": "Riassumi con AI", "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": [ 1280, -100 ] }, { "parameters": { "chatId": "INSERISCI-CHAT-ID", "text": "=☕ Rassegna email del {{ $now.toFormat('dd/MM') }}\n\n{{ $json.message?.content || $json.output || $json.text }}", "additionalFields": {} }, "id": "telegram-rassegna", "name": "Invia rassegna su Telegram", "type": "n8n-nodes-base.telegram", "typeVersion": 1.2, "position": [ 1500, -100 ] } ], "connections": { "Ogni mattina alle 8 (lun-ven)": { "main": [ [ { "node": "Prendi email non lette", "type": "main", "index": 0 } ] ] }, "Prendi email non lette": { "main": [ [ { "node": "Prepara testo per AI", "type": "main", "index": 0 } ] ] }, "Prepara testo per AI": { "main": [ [ { "node": "Ci sono email?", "type": "main", "index": 0 } ] ] }, "Ci sono email?": { "main": [ [ { "node": "Riassumi con AI", "type": "main", "index": 0 } ] ] }, "Riassumi con AI": { "main": [ [ { "node": "Invia rassegna su Telegram", "type": "main", "index": 0 } ] ] } }, "settings": { "executionOrder": "v1", "timezone": "UTC" }, "pinData": {}, "active": false }