网络安全情报:使用Gemini AI生成每日摘要和热门话题
高级
这是一个AI Summarization、Multimodal AI领域的自动化工作流,包含 39 个节点。主要使用 Set、Code、Merge、Baserow、EmailSend 等节点。 网络安全情报:利用Gemini AI创建每日摘要和病毒式传播话题
前置要求
- •Google Gemini API Key
使用的节点 (39 个)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"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": "结构化输出解析器",
"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": "预处理数据",
"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": "将输出处理为 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 推送数据",
"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": "过滤摘要和创建日期",
"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": "获取前几天的数据",
"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 聊天模型",
"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": "扁平化",
"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": "将输出处理为 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 推送数据1",
"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": "每日触发器",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
128,
2288
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "6f2637dc-9ad6-4d45-837e-db882c5a142a",
"name": "合并收集的文章",
"type": "n8n-nodes-base.merge",
"position": [
576,
2160
],
"parameters": {
"numberInputs": 10
},
"typeVersion": 3.1
},
{
"id": "8352ef4c-4c9e-4d14-a665-aa25dd03c4c7",
"name": "编写今日基本摘要",
"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": "发送每日摘要邮件",
"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": "发送病毒主题邮件",
"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": "结构化输出解析器1",
"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": "识别病毒主题并编写摘要",
"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": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
1344
],
"parameters": {
"width": 416,
"height": 2016,
"content": "## 收集"
},
"typeVersion": 1
},
{
"id": "ab97c5ee-648b-46ac-961c-641948cf58b7",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
1344
],
"parameters": {
"color": 3,
"width": 416,
"height": 2016,
"content": "## 处理"
},
"typeVersion": 1
},
{
"id": "d57fe9a7-4b7e-4409-af19-0b8b0ac71fa5",
"name": "便签 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
976,
1344
],
"parameters": {
"color": 4,
"width": 320,
"height": 2016,
"content": "## 分析"
},
"typeVersion": 1
},
{
"id": "32e4c1c4-349f-42ac-ae19-44996f6962fb",
"name": "便签 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2448,
1344
],
"parameters": {
"color": 4,
"width": 320,
"height": 2016,
"content": "## 分析"
},
"typeVersion": 1
},
{
"id": "4aec27b9-16c4-486f-95be-e59342055366",
"name": "7 天前日期",
"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": "便签 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1328,
2352
],
"parameters": {
"color": 5,
"width": 416,
"height": 1008,
"content": ""
},
"typeVersion": 1
},
{
"id": "7155a07d-ab5e-4b79-9a81-3ea09c48b073",
"name": "便签 5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1328,
1344
],
"parameters": {
"color": 3,
"width": 1088,
"height": 976,
"content": "## 处理"
},
"typeVersion": 1
},
{
"id": "dc30ac83-874b-4660-873b-ee9f3f5646c6",
"name": "便签6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2800,
1344
],
"parameters": {
"color": 5,
"width": 416,
"height": 2016,
"content": "## 分发"
},
"typeVersion": 1
},
{
"id": "3fda11d8-6593-4d49-a183-2ed8ad95ec40",
"name": "便签7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-592,
1344
],
"parameters": {
"color": 7,
"width": 640,
"height": 1072,
"content": "# AI 威胁情报:编写每日摘要和病毒主题报告"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Flatten": {
"main": [
[
{
"node": "Identify viral topics and write digest",
"type": "main",
"index": 0
}
]
]
},
"Darkreading": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 4
}
]
]
},
"Trend Micro": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 8
}
]
]
},
"Precook data": {
"main": [
[
{
"node": "Write basic digest for today",
"type": "main",
"index": 0
}
]
]
},
"Securityweek": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 1
}
]
]
},
"Daily trigger": {
"main": [
[
{
"node": "Bleepingcomputer",
"type": "main",
"index": 0
},
{
"node": "Securityweek",
"type": "main",
"index": 0
},
{
"node": "The Hacker News",
"type": "main",
"index": 0
},
{
"node": "Schneier on Security",
"type": "main",
"index": 0
},
{
"node": "Darkreading",
"type": "main",
"index": 0
},
{
"node": "Kaspersky Securelist",
"type": "main",
"index": 0
},
{
"node": "Google (Mandiant)",
"type": "main",
"index": 0
},
{
"node": "Microsoft Security",
"type": "main",
"index": 0
},
{
"node": "Trend Micro",
"type": "main",
"index": 0
},
{
"node": "Recorded Future",
"type": "main",
"index": 0
}
]
]
},
"7 days ago date": {
"main": [
[
{
"node": "Get data of previous days",
"type": "main",
"index": 0
}
]
]
},
"Recorded Future": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 9
}
]
]
},
"The Hacker News": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 2
}
]
]
},
"Bleepingcomputer": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 0
}
]
]
},
"Baserow Push Data": {
"main": [
[
{
"node": "7 days ago date",
"type": "main",
"index": 0
}
]
]
},
"Google (Mandiant)": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 6
}
]
]
},
"Microsoft Security": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 7
}
]
]
},
"Kaspersky Securelist": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 5
}
]
]
},
"Schneier on Security": {
"main": [
[
{
"node": "Merge collected articles",
"type": "main",
"index": 3
}
]
]
},
"Send daily digest email": {
"main": [
[]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Identify viral topics and write digest",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Write basic digest for today",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Merge collected articles": {
"main": [
[
{
"node": "Precook data",
"type": "main",
"index": 0
}
]
]
},
"Process output into HTML": {
"main": [
[
{
"node": "Send daily digest email",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Write basic digest for today",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Get data of previous days": {
"main": [
[
{
"node": "Filter summaries and created date",
"type": "main",
"index": 0
}
]
]
},
"Process output into HTML1": {
"main": [
[
{
"node": "Send viral topics email",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser1": {
"ai_outputParser": [
[
{
"node": "Identify viral topics and write digest",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Write basic digest for today": {
"main": [
[
{
"node": "Process output into HTML",
"type": "main",
"index": 0
},
{
"node": "Baserow Push Data",
"type": "main",
"index": 0
}
]
]
},
"Filter summaries and created date": {
"main": [
[
{
"node": "Flatten",
"type": "main",
"index": 0
}
]
]
},
"Identify viral topics and write digest": {
"main": [
[
{
"node": "Process output into HTML1",
"type": "main",
"index": 0
},
{
"node": "Baserow Push Data1",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
这是一个高级难度的工作流,适用于AI Summarization、Multimodal AI等场景。适合高级用户,包含 16+ 个节点的复杂工作流
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
Twitter数据抓取 - n8n Creator
使用Gemini 2.5 Pro自动生成Twitter情报摘要并推送到WhatsApp群组
Set
Code
Wait
+13
39 节点Daniel Lianes
AI Summarization
每日法国经济新闻摘要(Gemini AI + Outlook邮件)
使用Gemini AI和Outlook邮件的每日法国经济新闻摘要
If
Set
Sort
+10
29 节点Louis
AI Summarization
每日Jira工单摘要生成器(GPT-5 + Jira API)
使用GPT-5和Jira API的每日Jira工单摘要生成器
Set
Code
Jira
+11
24 节点Billy Christi
AI Summarization
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
If
Set
Code
+20
52 节点Daniel Lianes
Miscellaneous
使用ScrapeGraph AI提取n8n社区最近添加的工作流
使用ScrapeGraphAI和Gemini提取和存储n8n社区最近添加的工作流
Set
Merge
Split Out
+12
21 节点Davide
Miscellaneous
使用Groq、Gemini和Slack审批系统自动化RSS到Medium发布
通过Groq、Gemini和Slack审批系统实现RSS到Medium发布的自动化流程
If
Set
Code
+16
41 节点ObisDev
Content Creation