8
n8n 中文网amn8n.com

自动化新闻监控与Claude 4 AI分析,用于Discord和Google新闻

高级

这是一个Miscellaneous, AI Summarization, Multimodal AI领域的自动化工作流,包含 30 个节点。主要使用 Code, Discord, Aggregate, SerpApi, GoogleSheets 等节点。 自动化新闻监控与Claude 4 AI分析,用于Discord和Google新闻

前置要求
  • Discord Bot Token 或 Webhook
  • Google Sheets API 凭证
  • Anthropic API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "393ca9e36a1f81b0f643c72792946a5fe5e49eb4864181ba4032e5a408278263",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "3b6eab19-a13e-4779-80bb-8df6e55b1a32",
      "name": "Anthropic聊天模型6",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        2240,
        1600
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-20250514",
          "cachedResultName": "Claude 4 Sonnet"
        },
        "options": {
          "maxTokensToSample": 20000
        }
      },
      "credentials": {
        "anthropicApi": {
          "id": "WXQf5QsxCs3AyxlW",
          "name": "Anthropic account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "61a264f4-781e-45c7-8514-a7d5ae7d1c2f",
      "name": "计划触发器",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -336,
        1568
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * 1"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "84b638ee-ab02-433f-954e-94464d2eba0c",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        1392
      ],
      "parameters": {
        "width": 464,
        "height": 320,
        "content": "# 阶段1:每周计划激活"
      },
      "typeVersion": 1
    },
    {
      "id": "bbd0aa95-608f-45be-99f6-c5dc2257d3af",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        1760
      ],
      "parameters": {
        "width": 464,
        "height": 528,
        "content": "### 您需要做的:"
      },
      "typeVersion": 1
    },
    {
      "id": "9a22fc2f-05e1-489f-851d-dae76b15e047",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        1392
      ],
      "parameters": {
        "color": 2,
        "width": 464,
        "height": 320,
        "content": "# 阶段2:搜索查询管理和主题处理"
      },
      "typeVersion": 1
    },
    {
      "id": "a54bf68b-e599-4f1f-bf1c-04a2b0656ec1",
      "name": "便签5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        1760
      ],
      "parameters": {
        "color": 2,
        "width": 464,
        "height": 464,
        "content": "### 您需要做的:"
      },
      "typeVersion": 1
    },
    {
      "id": "02d9b7dc-6364-427e-be7d-59c778b05175",
      "name": "便签 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        1392
      ],
      "parameters": {
        "color": 3,
        "width": 464,
        "height": 320,
        "content": "# 阶段3:全面新闻发现和收集"
      },
      "typeVersion": 1
    },
    {
      "id": "a5b99be3-b041-460a-b42a-ea02f374f184",
      "name": "便签7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        1760
      ],
      "parameters": {
        "color": 3,
        "width": 464,
        "height": 512,
        "content": "### 系统执行的操作:"
      },
      "typeVersion": 1
    },
    {
      "id": "adb304ef-bd97-4715-bb06-2c1967849676",
      "name": "便签8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        1392
      ],
      "parameters": {
        "color": 4,
        "width": 752,
        "height": 320,
        "content": "# 阶段4:深度内容分析和文章抓取"
      },
      "typeVersion": 1
    },
    {
      "id": "7ec99a64-6825-4207-ae5b-36a0f8b67c72",
      "name": "便签9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        1760
      ],
      "parameters": {
        "color": 4,
        "width": 752,
        "height": 416,
        "content": "### 系统执行的操作:"
      },
      "typeVersion": 1
    },
    {
      "id": "facae94e-45e9-4907-b686-fb89ef9623eb",
      "name": "便签10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2080,
        1392
      ],
      "parameters": {
        "color": 5,
        "width": 752,
        "height": 320,
        "content": "# 阶段5:AI驱动的内容分析和综合"
      },
      "typeVersion": 1
    },
    {
      "id": "faebe895-b178-42d3-b434-ed3eaece7381",
      "name": "便签11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2080,
        1760
      ],
      "parameters": {
        "color": 5,
        "width": 752,
        "height": 416,
        "content": "### 系统执行的操作:"
      },
      "typeVersion": 1
    },
    {
      "id": "877bda6c-58da-4d0c-a46a-bce25c6cbaf7",
      "name": "便签12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2880,
        1392
      ],
      "parameters": {
        "color": 6,
        "width": 752,
        "height": 320,
        "content": "# 阶段6:Discord交付的内容优化"
      },
      "typeVersion": 1
    },
    {
      "id": "a90cfa84-e316-486f-82a1-b2ab16b18573",
      "name": "便签 13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2880,
        1776
      ],
      "parameters": {
        "color": 6,
        "width": 752,
        "height": 480,
        "content": "### 系统执行的操作:"
      },
      "typeVersion": 1
    },
    {
      "id": "312854b3-8fd4-4f23-8f5e-59975ada4600",
      "name": "便签14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3664,
        1296
      ],
      "parameters": {
        "color": 7,
        "width": 928,
        "height": 592,
        "content": "# 阶段7:自动化团队沟通和报告交付"
      },
      "typeVersion": 1
    },
    {
      "id": "9ec29dfb-98be-4edd-8a6c-c7b6531602c6",
      "name": "便签15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3664,
        1936
      ],
      "parameters": {
        "color": 7,
        "width": 928,
        "height": 448,
        "content": "### 系统执行的操作:"
      },
      "typeVersion": 1
    },
    {
      "id": "d5842671-b64e-423a-85c4-7d3256b1422c",
      "name": "获取查询",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        160,
        1568
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Query"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1k6v6DeL_3cZ0U9kANAlrIIUIIOil959MaykV7JNAXro/edit?gid=0#gid=0"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wBRLUCktxqXE6DVJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "11b98779-6f2c-42ad-b051-41fa8aed3fc2",
      "name": "遍历项目",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        528,
        1568
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "a9778ac0-c55e-46b9-9288-820cec4cabb0",
      "name": "搜索GNews",
      "type": "n8n-nodes-serpapi.serpApi",
      "position": [
        864,
        1568
      ],
      "parameters": {
        "q": "={{ $json.Query }}",
        "operation": "google_news",
        "requestOptions": {},
        "additionalFields": {}
      },
      "credentials": {
        "serpApi": {
          "id": "w1oDmQzMKE4Wcj2P",
          "name": "SerpAPI account"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "d679b877-042f-4bf6-b5ee-9fae394a5da1",
      "name": "仅返回URL",
      "type": "n8n-nodes-base.code",
      "position": [
        1072,
        1568
      ],
      "parameters": {
        "jsCode": "// Récupérer les données d'entrée\nconst inputData = $input.all()[0].json;\n\n// Extraire les résultats de news\nconst newsResults = inputData.news_results || [];\n\n// Trier par position (ordre croissant)\nconst sortedResults = newsResults.sort((a, b) => a.position - b.position);\n\n// Prendre les 3 premiers résultats avec des propriétés nommées\nconst top3Results = sortedResults.slice(0, 3);\n\n// Créer un objet avec des propriétés distinctes pour chaque article\nconst result = {\n  article1: {\n    link: top3Results[0]?.link || null,\n    title: top3Results[0]?.title || null,\n    snippet: top3Results[0]?.snippet || null,\n    source: top3Results[0]?.source || null,\n    date: top3Results[0]?.date || null\n  },\n  article2: {\n    link: top3Results[1]?.link || null,\n    title: top3Results[1]?.title || null,\n    snippet: top3Results[1]?.snippet || null,\n    source: top3Results[1]?.source || null,\n    date: top3Results[1]?.date || null\n  },\n  article3: {\n    link: top3Results[2]?.link || null,\n    title: top3Results[2]?.title || null,\n    snippet: top3Results[2]?.snippet || null,\n    source: top3Results[2]?.source || null,\n    date: top3Results[2]?.date || null\n  },\n  // Pour compatibilité avec votre workflow existant\n  all_links: top3Results.map(result => result.link).filter(link => link !== null),\n  count: top3Results.length\n};\n\n// CORRECTION : Retourner un tableau avec un objet (format requis par n8n)\nreturn [{ json: result }];"
      },
      "typeVersion": 2
    },
    {
      "id": "a7a1521e-1183-4518-9320-3ebc88192b1d",
      "name": "抓取文章1",
      "type": "@mendable/n8n-nodes-firecrawl.firecrawl",
      "onError": "continueRegularOutput",
      "maxTries": 5,
      "position": [
        1360,
        1568
      ],
      "parameters": {
        "url": "={{ $('Return URL only').item.json.article1.link }}",
        "operation": "scrape",
        "requestOptions": {}
      },
      "credentials": {
        "firecrawlApi": {
          "id": "E34WDB80ik5VHjiI",
          "name": "Firecrawl account"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1,
      "alwaysOutputData": false
    },
    {
      "id": "42018b6f-ca36-42bc-aa9b-7880592d6f17",
      "name": "抓取文章2",
      "type": "@mendable/n8n-nodes-firecrawl.firecrawl",
      "onError": "continueRegularOutput",
      "maxTries": 5,
      "position": [
        1600,
        1568
      ],
      "parameters": {
        "url": "={{ $('Return URL only').item.json.article2.link }}",
        "operation": "scrape",
        "requestOptions": {}
      },
      "credentials": {
        "firecrawlApi": {
          "id": "E34WDB80ik5VHjiI",
          "name": "Firecrawl account"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "9f8552d4-131d-40e2-a1a7-6165310e5645",
      "name": "抓取文章3",
      "type": "@mendable/n8n-nodes-firecrawl.firecrawl",
      "onError": "continueRegularOutput",
      "maxTries": 5,
      "position": [
        1872,
        1568
      ],
      "parameters": {
        "url": "={{ $('Return URL only').item.json.article3.link }}",
        "operation": "scrape",
        "requestOptions": {}
      },
      "credentials": {
        "firecrawlApi": {
          "id": "E34WDB80ik5VHjiI",
          "name": "Firecrawl account"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "706d3a3b-057c-4def-8330-7c989968aa87",
      "name": "监控报告撰写",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "maxTries": 5,
      "position": [
        2416,
        1488
      ],
      "parameters": {
        "text": "=Source 1\n\nURL : {{ $('Return URL only').item.json.article1.link }}\nDate : {{ $('Return URL only').item.json.article1.date }}\nContenu de l'article : {{ $('Scrape article 1').item.json.data.markdown }}\n\n\nSource 2 \n\nURL : {{ $('Return URL only').item.json.article2.link }}\nDate : {{ $('Return URL only').item.json.article2.date }}\nContenu de l'article : {{ $('Scrape article 2').item.json.data.markdown }}\n\nSource 3\n\nURL : {{ $('Return URL only').item.json.article3.link }}\nDate : {{ $('Return URL only').item.json.article3.date }}\nContenu de l'article : {{ $('Scrape article 3').item.json.data.markdown }}\n",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "=Voilà le contenu de 3 article sur le thème \"{{ $('Loop Over Items').item.json.Query }}\".\n\n\n# Mission\nAnalysez les articles fournis et produisez une synthèse structurée.\n\n# Format de sortie requis\n\nUne fois au début : Veille **{{ $('Loop Over Items').item.json.Query }}**\n\nPuis pour chaque article, suivez exactement cette structure :\n\n```\n# Article [Titre]\n\n**Média :** [Nom du média]\n**Date :** [Date de publication]  \n**Lien :** [URL]\n**Résumé :** [2-3 phrases sur le contenu principal]\n\n---\n```\n\n## Consignes\n- Respecter l'ordre : Média → Date → Lien → Résumé\n- Numéroter les articles dans l'ordre d'apparition\n- Résumé maximum 3 phrases\n- Si une info manque, indiquer \"Non disponible\"\n\nSi il manque les informations d'un article ignore le et fait un rendu conséquent au nombre d'article que tu a pu traiter).\n\nTraitez maintenant le document fourni et donnez un rendu en français."
            }
          ]
        },
        "promptType": "define"
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "bd674533-295d-4223-93ac-971b5a1157d2",
      "name": "监控数据编译",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        3056,
        1552
      ],
      "parameters": {
        "include": "specifiedFields",
        "options": {},
        "aggregate": "aggregateAllItemData",
        "fieldsToInclude": "text"
      },
      "typeVersion": 1
    },
    {
      "id": "073edc5a-f56b-4b48-b7c1-3397c57eda5d",
      "name": "Discord消息分割",
      "type": "n8n-nodes-base.code",
      "position": [
        3392,
        1536
      ],
      "parameters": {
        "jsCode": "// Code pour node n8n - Division de texte pour Discord\n// Limite Discord : 2000 caractères par message\n\nconst DISCORD_CHAR_LIMIT = 2000;\nconst SAFETY_MARGIN = 50; // Marge de sécurité pour éviter les dépassements\nconst EFFECTIVE_LIMIT = DISCORD_CHAR_LIMIT - SAFETY_MARGIN;\n\nfunction splitTextForDiscord(text) {\n  // Si le texte est plus court que la limite, on le retourne tel quel\n  if (text.length <= EFFECTIVE_LIMIT) {\n    return [text];\n  }\n\n  const messages = [];\n  let currentMessage = '';\n  \n  // Diviser le texte en paragraphes d'abord (séparés par \\n\\n ou ----)\n  const sections = text.split(/(?:\\n\\n|----)/);\n  \n  for (let i = 0; i < sections.length; i++) {\n    let section = sections[i].trim();\n    \n    // Si une section complète dépasse la limite, la diviser par phrases\n    if (section.length > EFFECTIVE_LIMIT) {\n      const sentences = section.split(/(?<=[.!?:])\\s+/);\n      \n      for (const sentence of sentences) {\n        // Si une phrase seule dépasse la limite, la couper brutalement\n        if (sentence.length > EFFECTIVE_LIMIT) {\n          const chunks = splitByLength(sentence, EFFECTIVE_LIMIT);\n          for (const chunk of chunks) {\n            if (currentMessage.length + chunk.length + 1 > EFFECTIVE_LIMIT) {\n              if (currentMessage.trim()) {\n                messages.push(currentMessage.trim());\n              }\n              currentMessage = chunk;\n            } else {\n              currentMessage += (currentMessage ? ' ' : '') + chunk;\n            }\n          }\n        } else {\n          // Ajouter la phrase si elle rentre dans le message actuel\n          if (currentMessage.length + sentence.length + 1 <= EFFECTIVE_LIMIT) {\n            currentMessage += (currentMessage ? ' ' : '') + sentence;\n          } else {\n            // Sauvegarder le message actuel et commencer un nouveau\n            if (currentMessage.trim()) {\n              messages.push(currentMessage.trim());\n            }\n            currentMessage = sentence;\n          }\n        }\n      }\n    } else {\n      // La section rentre dans la limite, vérifier si elle rentre dans le message actuel\n      if (currentMessage.length + section.length + 2 <= EFFECTIVE_LIMIT) {\n        currentMessage += (currentMessage ? '\\n\\n' : '') + section;\n      } else {\n        // Sauvegarder le message actuel et commencer un nouveau\n        if (currentMessage.trim()) {\n          messages.push(currentMessage.trim());\n        }\n        currentMessage = section;\n      }\n    }\n  }\n  \n  // Ajouter le dernier message s'il existe\n  if (currentMessage.trim()) {\n    messages.push(currentMessage.trim());\n  }\n  \n  return messages.length > 0 ? messages : [text];\n}\n\nfunction splitByLength(text, maxLength) {\n  const chunks = [];\n  for (let i = 0; i < text.length; i += maxLength) {\n    chunks.push(text.slice(i, i + maxLength));\n  }\n  return chunks;\n}\n\n// Code principal pour n8n\nconst inputData = $input.all();\nconst outputItems = [];\n\nfor (let i = 0; i < inputData.length; i++) {\n  const item = inputData[i];\n  \n  // Extraire le texte à diviser (adaptez selon votre structure de données)\n  // Exemple : si votre texte est dans item.json.content\n  let textToSplit = '';\n  \n  // Si c'est un tableau comme dans votre exemple\n  if (item.json.data && Array.isArray(item.json.data)) {\n    textToSplit = item.json.data.map(dataItem => dataItem.text || '').join('\\n\\n---\\n\\n');\n  } \n  // Si c'est directement du texte\n  else if (item.json.text) {\n    textToSplit = item.json.text;\n  }\n  // Si c'est dans un autre champ\n  else if (item.json.content) {\n    textToSplit = item.json.content;\n  }\n  // Fallback : convertir tout l'objet en texte\n  else {\n    textToSplit = JSON.stringify(item.json, null, 2);\n  }\n  \n  // Diviser le texte\n  const messages = splitTextForDiscord(textToSplit);\n  \n  // Créer un item de sortie pour chaque message\n  messages.forEach((message, index) => {\n    outputItems.push({\n      json: {\n        message: message,\n        messageIndex: index + 1,\n        totalMessages: messages.length,\n        characterCount: message.length,\n        originalItemIndex: i\n      }\n    });\n  });\n}\n\nreturn outputItems;"
      },
      "typeVersion": 2
    },
    {
      "id": "3be2a835-9ef2-47d3-a70b-5e8093178519",
      "name": "介绍",
      "type": "n8n-nodes-base.discord",
      "position": [
        3760,
        1472
      ],
      "webhookId": "47593169-e23c-4303-b8e2-7e93386c4c7a",
      "parameters": {
        "content": "SALUTATIONS MAGNIFIQUES RÉFÉRENCEURS ! Claptrap ici avec votre veille hebdomadaire ultra-FANTASTIQUE qui va faire exploser vos circuits organiques ! 🤖⚡",
        "guildId": {
          "__rl": true,
          "mode": "list",
          "value": "919951151888236595",
          "cachedResultUrl": "https://discord.com/channels/919951151888236595",
          "cachedResultName": "Institut du référencement"
        },
        "options": {},
        "resource": "message",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "1334455789284364309",
          "cachedResultUrl": "https://discord.com/channels/919951151888236595/1334455789284364309",
          "cachedResultName": "📝-veille-📝"
        }
      },
      "credentials": {
        "discordBotApi": {
          "id": "wEzWTKJiOc3ZcZew",
          "name": "ClapTrap IDR"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "f987c547-d915-420f-a03b-91d4b9bf7892",
      "name": "监控",
      "type": "n8n-nodes-base.discord",
      "position": [
        4176,
        1648
      ],
      "webhookId": "f3ee61cf-fbfa-447c-9fa8-78b7e5e1c4f7",
      "parameters": {
        "content": "={{ $json.message }}",
        "guildId": {
          "__rl": true,
          "mode": "list",
          "value": "919951151888236595",
          "cachedResultUrl": "https://discord.com/channels/919951151888236595",
          "cachedResultName": "Institut du référencement"
        },
        "options": {
          "flags": [
            "SUPPRESS_EMBEDS"
          ]
        },
        "resource": "message",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "1334455789284364309",
          "cachedResultUrl": "https://discord.com/channels/919951151888236595/1334455789284364309",
          "cachedResultName": "📝-veille-📝"
        }
      },
      "credentials": {
        "discordBotApi": {
          "id": "wEzWTKJiOc3ZcZew",
          "name": "ClapTrap IDR"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "8b09ed9a-d5c1-4a7c-97a2-39219e888576",
      "name": "结论",
      "type": "n8n-nodes-base.discord",
      "position": [
        4384,
        1504
      ],
      "webhookId": "47593169-e23c-4303-b8e2-7e93386c4c7a",
      "parameters": {
        "content": "ET VOILÀ MINIONS ORGANIQUES ! Claptrap a terminé sa mission ÉPIQUE - à la semaine prochaine pour encore plus d'excellence robotique ! Bip boop 🤖✨",
        "guildId": {
          "__rl": true,
          "mode": "list",
          "value": "919951151888236595",
          "cachedResultUrl": "https://discord.com/channels/919951151888236595",
          "cachedResultName": "Institut du référencement"
        },
        "options": {},
        "resource": "message",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "1334455789284364309",
          "cachedResultUrl": "https://discord.com/channels/919951151888236595/1334455789284364309",
          "cachedResultName": "📝-veille-📝"
        }
      },
      "credentials": {
        "discordBotApi": {
          "id": "wEzWTKJiOc3ZcZew",
          "name": "ClapTrap IDR"
        }
      },
      "executeOnce": true,
      "typeVersion": 2
    },
    {
      "id": "2396728d-d58e-459b-b657-f2a11192a837",
      "name": "遍历项目2",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        3952,
        1584
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    }
  ],
  "pinData": {},
  "connections": {
    "Veille": {
      "main": [
        [
          {
            "node": "Loop Over Items 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get query": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search GNews": {
      "main": [
        [
          {
            "node": "Return URL only",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Compilation données veilles",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Search GNews",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Return URL only": {
      "main": [
        [
          {
            "node": "Scrape article 1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get query",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape article 1": {
      "main": [
        [
          {
            "node": "Scrape article 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape article 2": {
      "main": [
        [
          {
            "node": "Scrape article 3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape article 3": {
      "main": [
        [
          {
            "node": "Rédaction veille",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items 2": {
      "main": [
        [
          {
            "node": "Conclusion",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Veille",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rédaction veille": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model6": {
      "ai_languageModel": [
        [
          {
            "node": "Rédaction veille",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Découpage message discord": {
      "main": [
        [
          {
            "node": "Loop Over Items 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compilation données veilles": {
      "main": [
        [
          {
            "node": "Découpage message discord",
            "type": "main",
            "index": 0
          },
          {
            "node": "Intro ",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 杂项, AI 摘要总结, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量30
分类3
节点类型11
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

外部链接
在 n8n.io 查看

分享此工作流