Inteligencia de ciberseguridad: generación de resumen diario y temas populares con Gemini AI

Avanzado

Este es unAI Summarization, Multimodal AIflujo de automatización del dominio deautomatización que contiene 39 nodos.Utiliza principalmente nodos como Set, Code, Merge, Baserow, EmailSend. Inteligencia de ciberseguridad: crear resúmenes diarios y temas virales usando Gemini AI

Requisitos previos
  • Clave de API de Google Gemini
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "c47b2be6e94e56f3895047f8e71284fea9b7ba290222599b4ab91232f7a20d1f",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "798d5678-dce4-4942-8fc7-e96f26b4ff75",
      "name": "Bleepingcomputer",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        1424
      ],
      "parameters": {
        "url": "https://www.bleepingcomputer.com/feed/",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "dedfc0c2-443b-491e-a9d3-631e85072ed5",
      "name": "Securityweek",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        1616
      ],
      "parameters": {
        "url": "https://www.securityweek.com/feed",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "d61a714c-a12f-4112-b52f-daa5d55865c3",
      "name": "Schneier on Security",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        2000
      ],
      "parameters": {
        "url": "https://www.schneier.com/feed/atom/",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "ad13d476-4780-4ed5-9ce8-8ab707116fe7",
      "name": "The Hacker News",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        1808
      ],
      "parameters": {
        "url": "https://feeds.feedburner.com/TheHackersNews",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "0eccdac4-22eb-4f7e-94b1-af0fc1cb22a6",
      "name": "Darkreading",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        2192
      ],
      "parameters": {
        "url": "https://www.darkreading.com/rss.xml",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "889c9692-1474-4d04-9621-7aa02e0c571b",
      "name": "Analizador de Salida Estructurada",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1104,
        2512
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"activity_nation_state_actors\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"news_item\": { \"type\": \"string\" },\n          \"references\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"object\",\n              \"properties\": {\n                \"link\": { \"type\": \"string\" },\n                \"website_name\": { \"type\": \"string\" },\n                \"publish_date\": { \"type\": \"string\", \"format\": \"date-time\" }\n              },\n              \"required\": [\"link\", \"website_name\", \"publish_date\"]\n            }\n          }\n        },\n        \"required\": [\"news_item\", \"references\"]\n      }\n    },\n    \"activity_financially_motivated_actors\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"news_item\": { \"type\": \"string\" },\n          \"references\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"object\",\n              \"properties\": {\n                \"link\": { \"type\": \"string\" },\n                \"website_name\": { \"type\": \"string\" },\n                \"publish_date\": { \"type\": \"string\", \"format\": \"date-time\" }\n              },\n              \"required\": [\"link\", \"website_name\", \"publish_date\"]\n            }\n          }\n        },\n        \"required\": [\"news_item\", \"references\"]\n      }\n    },\n    \"activity_compromises_and_data_breaches\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"news_item\": { \"type\": \"string\" },\n          \"references\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"object\",\n              \"properties\": {\n                \"link\": { \"type\": \"string\" },\n                \"website_name\": { \"type\": \"string\" },\n                \"publish_date\": { \"type\": \"string\", \"format\": \"date-time\" }\n              },\n              \"required\": [\"link\", \"website_name\", \"publish_date\"]\n            }\n          }\n        },\n        \"required\": [\"news_item\", \"references\"]\n      }\n    },\n    \"activity_vulnerabilities\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"news_item\": { \"type\": \"string\" },\n          \"references\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"object\",\n              \"properties\": {\n                \"link\": { \"type\": \"string\" },\n                \"website_name\": { \"type\": \"string\" },\n                \"publish_date\": { \"type\": \"string\", \"format\": \"date-time\" }\n              },\n              \"required\": [\"link\", \"website_name\", \"publish_date\"]\n            }\n          }\n        },\n        \"required\": [\"news_item\", \"references\"]\n      }\n    },\n    \"activity_miscellaneous\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"news_item\": { \"type\": \"string\" },\n          \"references\": {\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"object\",\n              \"properties\": {\n                \"link\": { \"type\": \"string\" },\n                \"website_name\": { \"type\": \"string\" },\n                \"publish_date\": { \"type\": \"string\", \"format\": \"date-time\" }\n              },\n              \"required\": [\"link\", \"website_name\", \"publish_date\"]\n            }\n          }\n        },\n        \"required\": [\"news_item\", \"references\"]\n      }\n    }\n  },\n  \"required\": [\n    \"activity_nation_state_actors\",\n    \"activity_financially_motivated_actors\",\n    \"activity_compromises_and_data_breaches\",\n    \"activity_vulnerabilities\",\n    \"activity_miscellaneous\"\n  ]\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "a2c0e161-ea80-42b3-b081-6b7ec6a93b6c",
      "name": "Preparar datos",
      "type": "n8n-nodes-base.code",
      "position": [
        800,
        2288
      ],
      "parameters": {
        "jsCode": "// Get the current date and time\nconst now = new Date();\n\n// Combine the output from all RSS feed nodes into one array\nconst allArticles = items.flatMap(item => item.json);\n\n// Filter out articles older than 24 hours\nconst filteredArticles = allArticles.filter(item => {\n    const pubDate = new Date(item.pubDate);\n    const diff = (now - pubDate) / (1000 * 60 * 60);\n    return diff <= 24;\n});\n\n// Extract key fields including publish date\nconst articlesText = filteredArticles.map(item => {\n    return `\\nTitle: ${item.title}\\nLink: ${item.link}\\nPublished: ${item.pubDate}\\nText snippet: ${item.contentSnippet}\\n---\\n`;\n}).join('');\n\n// Return the filtered and formatted articles\nreturn [{ json: { articlesText } }];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "e2c5b770-f147-4f7b-a295-717fbc3fc26b",
      "name": "Procesar salida a HTML",
      "type": "n8n-nodes-base.code",
      "position": [
        1376,
        2384
      ],
      "parameters": {
        "jsCode": "function convertToHTML(data) {\n  const categoryMap = {\n    activity_nation_state_actors: \"Nation State Actors\",\n    activity_financially_motivated_actors: \"Financially Motivated Actors\",\n    activity_compromises_and_data_breaches: \"Compromises and Data Breaches\",\n    activity_vulnerabilities: \"Vulnerabilities\",\n    activity_miscellaneous: \"Miscellaneous\"\n  };\n\n  const input = data[0]?.json?.output;\n  if (!input) return [{ htmlOutput: '' }];\n\n  let html = '';\n\n  Object.keys(categoryMap).forEach((key) => {\n    const entries = input[key];\n    if (!Array.isArray(entries) || entries.length === 0) return;\n\n    html += `<h4>${categoryMap[key]}</h4>`;\n\n    entries.forEach((item) => {\n      html += `- ${item.news_item}`;\n\n      if (Array.isArray(item.references) && item.references.length > 0) {\n        const sources = item.references.map((ref, idx) => {\n          const date = new Date(ref.publish_date);\n          const formattedDate = `${String(date.getDate()).padStart(2, '0')}/${String(date.getMonth() + 1).padStart(2, '0')}/${String(date.getFullYear()).slice(-2)}`;\n          return `<a href=\"${ref.link}\" target=\"_blank\" rel=\"noopener\">${ref.website_name} (${formattedDate})</a>`;\n        }).join(', ');\n        html += ` (${sources})`;\n      }\n\n      html += '<br />';\n    });\n  });\n\n  return [{ htmlOutput: html }];\n}\n\nreturn convertToHTML($input.all());\n"
      },
      "typeVersion": 2
    },
    {
      "id": "48bcffbc-2bdc-4395-92cc-8d631580650b",
      "name": "Baserow Enviar Datos",
      "type": "n8n-nodes-base.baserow",
      "position": [
        1376,
        2192
      ],
      "parameters": {
        "tableId": 562928,
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": 4515701,
              "fieldValue": "={{ JSON.stringify($json.output) }}"
            }
          ]
        },
        "operation": "create",
        "databaseId": 236879
      },
      "credentials": {
        "baserowApi": {
          "id": "S0JbjUsfZA9NtGxj",
          "name": "Baserow account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b418c1a0-15e0-40ba-8e21-aee998d3a447",
      "name": "Kaspersky Securelist",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        2384
      ],
      "parameters": {
        "url": "http://www.securelist.com/en/rss/allupdates",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "2c8b84d6-abc0-4c82-8ee3-a0a2ce4ab3fd",
      "name": "Google (Mandiant)",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        2576
      ],
      "parameters": {
        "url": "https://www.mandiant.com/resources/blog/rss.xml",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "c11f98ac-9680-4c1f-a374-4308e4059ece",
      "name": "Microsoft Security",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        2768
      ],
      "parameters": {
        "url": "https://www.microsoft.com/en-us/security/blog/feed/",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "443e3f7a-b465-4b2e-ac83-0ef249f180ee",
      "name": "Proofpoint Threat Insight",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        -592,
        3840
      ],
      "parameters": {
        "url": "https://www.proofpoint.com/us/threat-insight-blog.xml",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "c6fad442-8ffc-4e1c-ba50-fb87e03fa5bf",
      "name": "Recorded Future",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        3152
      ],
      "parameters": {
        "url": "https://www.recordedfuture.com/feed/",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "13f82226-90de-4bbd-8e37-430cb83b98dc",
      "name": "Google TAG",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        -592,
        4064
      ],
      "parameters": {
        "url": "https://blog.google/threat-analysis-group/rss",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "d0d0b83f-e0de-4c3a-b36a-23ede75b19f7",
      "name": "Trend Micro",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        352,
        2960
      ],
      "parameters": {
        "url": "http://feeds.trendmicro.com/TrendMicroSimplySecurity",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "f03baefc-21c8-4898-9db7-107255eaf34d",
      "name": "Sophos",
      "type": "n8n-nodes-base.rssFeedRead",
      "onError": "continueRegularOutput",
      "position": [
        -592,
        3616
      ],
      "parameters": {
        "url": "https://news.sophos.com/en-us/feed",
        "options": {
          "ignoreSSL": true
        }
      },
      "executeOnce": false,
      "typeVersion": 1.1,
      "alwaysOutputData": false
    },
    {
      "id": "1a2089ee-d4b6-4afc-a877-bad51563fd44",
      "name": "Filtrar resúmenes y fecha de creación",
      "type": "n8n-nodes-base.set",
      "position": [
        2048,
        2192
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "9974ba68-9f3b-420c-8676-38de8c6d1292",
              "name": "daily_report",
              "type": "string",
              "value": "={{ $json.Description }}"
            },
            {
              "id": "aac39345-a8e6-4b8c-ac09-7452fe584040",
              "name": "created_on",
              "type": "string",
              "value": "={{ $json[\"Created on\"] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "c3ad7a1b-c3c8-4127-8bbc-268b8589ef30",
      "name": "Obtener datos de días anteriores",
      "type": "n8n-nodes-base.baserow",
      "position": [
        1824,
        2192
      ],
      "parameters": {
        "tableId": 562928,
        "databaseId": 236879,
        "additionalOptions": {
          "filters": {
            "fields": [
              {
                "field": 4515726,
                "value": "={{ $json.previous_days }}",
                "operator": "date_after"
              }
            ]
          }
        }
      },
      "credentials": {
        "baserowApi": {
          "id": "S0JbjUsfZA9NtGxj",
          "name": "Baserow account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9c6e7f25-c8de-4ddd-b5ac-eeb20f3e6662",
      "name": "Google Gemini Modelo de Chat",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        2512,
        2416
      ],
      "parameters": {
        "options": {
          "temperature": 0
        }
      },
      "credentials": {
        "googlePalmApi": {
          "id": "XEg77k9lHATjmxBY",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a780f816-8837-4c28-9d5f-412887203159",
      "name": "Aplanar",
      "type": "n8n-nodes-base.code",
      "position": [
        2272,
        2192
      ],
      "parameters": {
        "jsCode": "const merged = items.map(e => e.json);\nreturn [{\n  json: {\n    merged_reports: merged\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "a66f1c65-a6e4-4fea-9516-46ec0d539df9",
      "name": "Procesar salida a HTML1",
      "type": "n8n-nodes-base.code",
      "position": [
        2848,
        2096
      ],
      "parameters": {
        "jsCode": "const reports = items[0].json.output;\n\nconst filtered = reports.filter(report => report.references.length >= 3);\n\nconst html = filtered.map(report => {\n  const references = report.references.map(ref => {\n    const date = ref.publish_date ? new Date(ref.publish_date).toISOString().split('T')[0] : 'N/A';\n    return `<li><a href=\"${ref.link}\">${ref.website_name}</a> (${date})</li>`;\n  }).join('');\n\n  return `\n    <section style=\"margin-bottom:2em;\">\n      <h2>${report.title}</h2>\n      <p>${report.content}</p>\n      <ul>${references}</ul>\n    </section>\n  `;\n}).join('');\n\nreturn [{\n  json: {\n    html: `<div>${html}</div>`\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "d80708b7-e1a5-45cb-b126-08f82b07ea60",
      "name": "Baserow Enviar Datos1",
      "type": "n8n-nodes-base.baserow",
      "position": [
        2848,
        2288
      ],
      "parameters": {
        "tableId": 628338,
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": 5118199,
              "fieldValue": "={{ JSON.stringify($json.output) }}"
            }
          ]
        },
        "operation": "create",
        "databaseId": 236879
      },
      "credentials": {
        "baserowApi": {
          "id": "S0JbjUsfZA9NtGxj",
          "name": "Baserow account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2356acbc-2759-4ba8-bbf9-0d9e3c7d7a04",
      "name": "Activador Diario",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        128,
        2288
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 7
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
      "name": "Combinar artículos recopilados",
      "type": "n8n-nodes-base.merge",
      "position": [
        576,
        2160
      ],
      "parameters": {
        "numberInputs": 10
      },
      "typeVersion": 3.1
    },
    {
      "id": "8352ef4c-4c9e-4d14-a665-aa25dd03c4c7",
      "name": "Escribir resumen básico para hoy",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1024,
        2288
      ],
      "parameters": {
        "text": "={{ $json.articlesText }}",
        "messages": {
          "messageValues": [
            {
              "message": "You are an intelligence analyst. Summarize the following threat intelligence articles into a concise, high-signal daily briefing. Do not make things up. Drop items that are not relevant enough. Follow these rules:  \n1. Group information by topic. Use the following sections as guidelines:\n    - Nation state actor activity\n    - Financially motivated actor activity\n    - Compromises and data breach activity (list victims only)\n    - Vulnerabilities activity (list with CVEs or affected products, only high priorities)\n    - Other miscellaneous activity that is sensible to share. Topics not related to cybersecurity can be disregarded. Ignore ads. Keep it short.\n2. Deduplicate reports. If multiple sources report on the same event, merge them. Prefer brevity over repetition.\n3. Prioritize topics mentioned multiple times. Omit low-signal, one-off articles unless highly critical. Keep lines concise, prioritize readability of the end product over including all content. Topics should typically fit on a single line, having 20 words maximum.\n4. Link all sources found for an item. Deduplicated items should have more than one source.  \n5. Remove all ads, promotional language, or off-topic content.\n6. Use clear, non-speculative language. Avoid filler. \n7. Put it in well-unified JSON format."
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "516904af-b6d2-4a32-9620-cbdd20fd0431",
      "name": "Enviar correo de resumen diario",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1600,
        2384
      ],
      "webhookId": "b10ab568-4d98-41d8-b431-6a2fbeb0a04c",
      "parameters": {
        "html": "={{ $json.htmlOutput }}",
        "options": {},
        "subject": "=CTI Digest - {{ $now.format('yyyy-MM-dd') }}",
        "toEmail": "velden.tom@linkmet.me",
        "fromEmail": "Threat Intelligence Digest <CTI@notification.com>"
      },
      "credentials": {
        "smtp": {
          "id": "aglx8Z4I6eejlFRD",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "4a72735e-69aa-4442-a9d9-66482b3bff21",
      "name": "Enviar correo de temas virales",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        3072,
        2096
      ],
      "webhookId": "b10ab568-4d98-41d8-b431-6a2fbeb0a04c",
      "parameters": {
        "html": "={{ $json.html }}",
        "options": {},
        "subject": "=CTI Digest (Viral Topics) - {{ $now.format('yyyy-MM-dd') }}",
        "toEmail": "velden.tom@linkmet.me",
        "fromEmail": "Threat Intelligence Digest <CTI@notification.com>"
      },
      "credentials": {
        "smtp": {
          "id": "aglx8Z4I6eejlFRD",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "01d3e5d9-794d-4941-9a48-57e9b024634e",
      "name": "Analizador de Salida Estructurada1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2640,
        2416
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"array\",\n  \"items\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"title\": { \"type\": \"string\" },\n      \"content\": { \"type\": \"string\" },\n      \"references\": {\n        \"type\": \"array\",\n        \"items\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"link\": { \"type\": \"string\" },\n            \"website_name\": { \"type\": \"string\" },\n            \"publish_date\": { \"type\": \"string\", \"format\": \"date-time\" }\n          }\n        }\n      }\n    }\n  }\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "bd26af2e-0ffd-476b-acbe-cbfdcca91f4e",
      "name": "Identificar temas virales y escribir resumen",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "onError": "continueRegularOutput",
      "position": [
        2496,
        2192
      ],
      "parameters": {
        "text": "={{ $json }}",
        "messages": {
          "messageValues": [
            {
              "message": "You are an intelligence analyst reviewing cyber threat intelligence reports from the past x days, formatted in a defined JSON schema. Your task is to identify 'viral' news items that describe the *same topic* and appear across multiple days. When such overlapping topics are found:\n\n* Merge them into a single entry.\n* Ensure the merged entry is mentioned on multiple across the grouped items.\n* Extract and synthesize a concise *title* and *summary* for the merged topic.\n* Aggregate all associated references under the merged entry.\n* Sort the merged topics based on newest source, descending.\n\nYou may merge items across different categories (e.g., “Nation state actors”, “Vulnerabilities”) if they clearly concern the same underlying event or threat. Do not include or report on any item that does not meet the above threshold. The objective is to surface recurring, high-signal topics for a daily digest, consolidating redundant reports into unified narratives. It is more important to have three well-processed viral topics, than many bad ones.\n"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "573f1261-b2be-48b5-ad2e-e01a03e64ce3",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        1344
      ],
      "parameters": {
        "width": 416,
        "height": 2016,
        "content": "## Collection\nIngest intelligence from RSS feeds, every morning on 7am."
      },
      "typeVersion": 1
    },
    {
      "id": "ab97c5ee-648b-46ac-961c-641948cf58b7",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        1344
      ],
      "parameters": {
        "color": 3,
        "width": 416,
        "height": 2016,
        "content": "## Processing\nProcess the ingested data for further analysis by merging it into a single data block. Filter articles older than 24h and irrelevant fields."
      },
      "typeVersion": 1
    },
    {
      "id": "d57fe9a7-4b7e-4409-af19-0b8b0ac71fa5",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        1344
      ],
      "parameters": {
        "color": 4,
        "width": 320,
        "height": 2016,
        "content": "## Analysis\nLeverage AI to deduplicate, organize, and summarize the information for a daily digest email."
      },
      "typeVersion": 1
    },
    {
      "id": "32e4c1c4-349f-42ac-ae19-44996f6962fb",
      "name": "Nota Adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2448,
        1344
      ],
      "parameters": {
        "color": 4,
        "width": 320,
        "height": 2016,
        "content": "## Analysis\nLeverage AI to identity viral topics in reporting from the previous week and organize it into a viral topics threat brief."
      },
      "typeVersion": 1
    },
    {
      "id": "4aec27b9-16c4-486f-95be-e59342055366",
      "name": "Fecha de hace 7 días",
      "type": "n8n-nodes-base.code",
      "position": [
        1600,
        2192
      ],
      "parameters": {
        "jsCode": "return [{\n  json: {\n    previous_days: new Date(Date.now() - 604800000).toISOString().split('T')[0]\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "4dce20d6-456e-4133-80fe-f94f897f3089",
      "name": "Nota Adhesiva4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1328,
        2352
      ],
      "parameters": {
        "color": 5,
        "width": 416,
        "height": 1008,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Dissemination\nDisseminate the report over email."
      },
      "typeVersion": 1
    },
    {
      "id": "7155a07d-ab5e-4b79-9a81-3ea09c48b073",
      "name": "Nota Adhesiva5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1328,
        1344
      ],
      "parameters": {
        "color": 3,
        "width": 1088,
        "height": 976,
        "content": "## Processing\nSave the output in a database and collect the data of the last 7 days for viral topic identification. Filter out only the needed data and flatten the array for better AI consumption."
      },
      "typeVersion": 1
    },
    {
      "id": "dc30ac83-874b-4660-873b-ee9f3f5646c6",
      "name": "Nota Adhesiva6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2800,
        1344
      ],
      "parameters": {
        "color": 5,
        "width": 416,
        "height": 2016,
        "content": "## Dissemination\nDisseminate the report over email and save it in a database for future usage."
      },
      "typeVersion": 1
    },
    {
      "id": "3fda11d8-6593-4d49-a183-2ed8ad95ec40",
      "name": "Nota Adhesiva7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -592,
        1344
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 1072,
        "content": "# AI Threat Intelligence: Compose Daily Digest & Viral Topics Reports \n## Process cybersecurity reports into an AI-generated daily threat intelligence digest and viral topic report.\nThis n8n workflow simplifies the process of digesting cybersecurity reports by summarizing, deduplicating, organizing, and identifying viral topics of interest into daily emails. \n\nIt will generate two types of emails:\n- A daily digest with summaries of deduplicated cybersecurity reports organized into various topics.\n- A daily viral topic report with summaries of recurring topics that have been identified over the last seven days. \n\n\n**This workflow template supports threat intelligence analysts digest the high number of cybersecurity reports they must analyse daily by decreasing the noise and tracking topics of importance with additional care, while providing customizability with regards to sources and output format.**\n\n## How it works\nThe workflow follows the threat intelligence lifecycle as labelled by the coloured notes.\n- Every morning, collect news articles from a set of RSS feeds.\n- Merge the feeds output and prepare them for LLM consumption.\n- Task an LLM with writing an intelligence briefing that summarizes, deduplicates, and organizes the topics.\n- Generate and send an email with the daily digest.\n- Collect the daily digests of the last seven days and prepare them for LLM consumption.\n- Task an LLM with writing a report that covers 'viral' topics that have appeared prominently in the news. \n- Store this report and send out over email.\n\n## How to use & customization\n- The workflow will trigger daily at 7am. \n- The workflow can be reused for other types of news as well. The RSS feeds can be swapped out and the AI prompts can easily be altered. \n- The parameters used for the viral topic identification process can easily be changed (number of previous days considered, requirements for a topic to be 'viral').\n\n## Requirements\n- The workflow leverages Gemini (free tier) for email content generation and Baserow for storing generated reports. The viral topic identification relies on the Gemini Pro model because of a higher data quantity and more complex task.\n- An SMTP email account must be provided to send the emails with. This can be through Gmail. "
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "a780f816-8837-4c28-9d5f-412887203159": {
      "main": [
        [
          {
            "node": "bd26af2e-0ffd-476b-acbe-cbfdcca91f4e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0eccdac4-22eb-4f7e-94b1-af0fc1cb22a6": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "d0d0b83f-e0de-4c3a-b36a-23ede75b19f7": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 8
          }
        ]
      ]
    },
    "a2c0e161-ea80-42b3-b081-6b7ec6a93b6c": {
      "main": [
        [
          {
            "node": "8352ef4c-4c9e-4d14-a665-aa25dd03c4c7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dedfc0c2-443b-491e-a9d3-631e85072ed5": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "2356acbc-2759-4ba8-bbf9-0d9e3c7d7a04": {
      "main": [
        [
          {
            "node": "798d5678-dce4-4942-8fc7-e96f26b4ff75",
            "type": "main",
            "index": 0
          },
          {
            "node": "dedfc0c2-443b-491e-a9d3-631e85072ed5",
            "type": "main",
            "index": 0
          },
          {
            "node": "ad13d476-4780-4ed5-9ce8-8ab707116fe7",
            "type": "main",
            "index": 0
          },
          {
            "node": "d61a714c-a12f-4112-b52f-daa5d55865c3",
            "type": "main",
            "index": 0
          },
          {
            "node": "0eccdac4-22eb-4f7e-94b1-af0fc1cb22a6",
            "type": "main",
            "index": 0
          },
          {
            "node": "b418c1a0-15e0-40ba-8e21-aee998d3a447",
            "type": "main",
            "index": 0
          },
          {
            "node": "2c8b84d6-abc0-4c82-8ee3-a0a2ce4ab3fd",
            "type": "main",
            "index": 0
          },
          {
            "node": "c11f98ac-9680-4c1f-a374-4308e4059ece",
            "type": "main",
            "index": 0
          },
          {
            "node": "d0d0b83f-e0de-4c3a-b36a-23ede75b19f7",
            "type": "main",
            "index": 0
          },
          {
            "node": "c6fad442-8ffc-4e1c-ba50-fb87e03fa5bf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4aec27b9-16c4-486f-95be-e59342055366": {
      "main": [
        [
          {
            "node": "c3ad7a1b-c3c8-4127-8bbc-268b8589ef30",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c6fad442-8ffc-4e1c-ba50-fb87e03fa5bf": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 9
          }
        ]
      ]
    },
    "ad13d476-4780-4ed5-9ce8-8ab707116fe7": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "798d5678-dce4-4942-8fc7-e96f26b4ff75": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "48bcffbc-2bdc-4395-92cc-8d631580650b": {
      "main": [
        [
          {
            "node": "4aec27b9-16c4-486f-95be-e59342055366",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2c8b84d6-abc0-4c82-8ee3-a0a2ce4ab3fd": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 6
          }
        ]
      ]
    },
    "c11f98ac-9680-4c1f-a374-4308e4059ece": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 7
          }
        ]
      ]
    },
    "b418c1a0-15e0-40ba-8e21-aee998d3a447": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 5
          }
        ]
      ]
    },
    "d61a714c-a12f-4112-b52f-daa5d55865c3": {
      "main": [
        [
          {
            "node": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "516904af-b6d2-4a32-9620-cbdd20fd0431": {
      "main": [
        []
      ]
    },
    "9c6e7f25-c8de-4ddd-b5ac-eeb20f3e6662": {
      "ai_languageModel": [
        [
          {
            "node": "bd26af2e-0ffd-476b-acbe-cbfdcca91f4e",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "8352ef4c-4c9e-4d14-a665-aa25dd03c4c7",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "6f2637dc-9ad6-4d45-837e-db882c5a142a": {
      "main": [
        [
          {
            "node": "a2c0e161-ea80-42b3-b081-6b7ec6a93b6c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e2c5b770-f147-4f7b-a295-717fbc3fc26b": {
      "main": [
        [
          {
            "node": "516904af-b6d2-4a32-9620-cbdd20fd0431",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "889c9692-1474-4d04-9621-7aa02e0c571b": {
      "ai_outputParser": [
        [
          {
            "node": "8352ef4c-4c9e-4d14-a665-aa25dd03c4c7",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "c3ad7a1b-c3c8-4127-8bbc-268b8589ef30": {
      "main": [
        [
          {
            "node": "1a2089ee-d4b6-4afc-a877-bad51563fd44",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a66f1c65-a6e4-4fea-9516-46ec0d539df9": {
      "main": [
        [
          {
            "node": "4a72735e-69aa-4442-a9d9-66482b3bff21",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "01d3e5d9-794d-4941-9a48-57e9b024634e": {
      "ai_outputParser": [
        [
          {
            "node": "bd26af2e-0ffd-476b-acbe-cbfdcca91f4e",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "8352ef4c-4c9e-4d14-a665-aa25dd03c4c7": {
      "main": [
        [
          {
            "node": "e2c5b770-f147-4f7b-a295-717fbc3fc26b",
            "type": "main",
            "index": 0
          },
          {
            "node": "48bcffbc-2bdc-4395-92cc-8d631580650b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1a2089ee-d4b6-4afc-a877-bad51563fd44": {
      "main": [
        [
          {
            "node": "a780f816-8837-4c28-9d5f-412887203159",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bd26af2e-0ffd-476b-acbe-cbfdcca91f4e": {
      "main": [
        [
          {
            "node": "a66f1c65-a6e4-4fea-9516-46ec0d539df9",
            "type": "main",
            "index": 0
          },
          {
            "node": "d80708b7-e1a5-45cb-b126-08f82b07ea60",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Resumen de IA, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos39
Categoría2
Tipos de nodos11
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34