{
"name": "03 - Rassegna email mattutina con AI",
"nodes": [
{
"parameters": {
"content": "## \u2699\ufe0f CONFIGURAZIONE (5 min)\n\n1. **Gmail**: collega l'account da monitorare nel nodo 'Prendi email non lette'.\n2. **OpenAI**: inserisci la tua API key nel nodo 'Riassumi con AI' (funziona anche con altri provider cambiando nodo: Claude, Gemini, Ollama in locale a costo zero).\n3. **Telegram**: crea un bot con @BotFather e inserisci token + Chat ID nel nodo finale.\n\nOgni mattina alle 8:00 ricevi su Telegram un riassunto delle email non lette delle ultime 24 ore, ordinate per urgenza.\n\n\ud83d\udcb0 Costo AI: ~1 centesimo al giorno con gpt-4o-mini.",
"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\ud83d\udd34 URGENTI (rispondere oggi):\n- [mittente]: [cosa vuole in max 10 parole]\n\n\ud83d\udfe1 IMPORTANTI (questa settimana):\n- ...\n\n\u26aa IL RESTO:\n- una riga sola che raggruppa il resto\n\nSii sintetico. Se qualcosa sembra un cliente arrabbiato o un'opportunit\u00e0 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": "=\u2615 *Rassegna email del {{ $now.format('dd/MM') }}*\n\n{{ $json.message?.content || $json.output || $json.text }}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"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"
},
"pinData": {}
}