自動ニュース監視とClaude 4 AIアナリティクス、DiscordとGoogleニュースへ

上級

これはMiscellaneous, AI Summarization, Multimodal AI分野の自動化ワークフローで、30個のノードを含みます。主にCode, Discord, Aggregate, SerpApi, GoogleSheetsなどのノードを使用。 Discord および Google ニュース向け、Claude 4 AI を使用したニュース監視の自動化

前提条件
  • 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 Chat Model6",
      "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": "# Phase 1: Weekly Schedule Activation"
      },
      "typeVersion": 1
    },
    {
      "id": "bbd0aa95-608f-45be-99f6-c5dc2257d3af",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        1760
      ],
      "parameters": {
        "width": 464,
        "height": 528,
        "content": "### What you do:\nConfigure the schedule trigger to set your preferred monitoring frequency (default: Mondays at 9 AM)\nDefine monitoring topics by adding search queries to the Google Sheets \"Query\" sheet\nEnsure Discord bot permissions are properly configured for the target channel\n\n### What the system does:\nTriggers workflow execution based on scheduled intervals (configurable via cron expression)\nInitiates comprehensive news monitoring cycle for all configured topics\nPrepares system for multi-topic news analysis and content generation\nCoordinates sequential processing of search queries and content delivery\n\n### Result:\n✅ Automated news monitoring without manual intervention\n✅ Customizable scheduling for optimal team communication timing\n✅ Scalable monitoring for multiple industry topics and keywords\n✅ Consistent intelligence gathering for competitive awareness"
      },
      "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": "# Phase 2: Search Query Management and Topic Processing"
      },
      "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": "### What you do:\nMaintain and update search queries in the designated Google Sheets document\nAdd new monitoring topics, keywords, or industry-specific terms as needed\nReview and refine query effectiveness based on delivered content quality\n\n### What the system does:\nRetrieves monitoring topics from Google Sheets \"Query\" sheet\nProcesses each search query individually for comprehensive coverage\nInitiates sequential news searches to avoid API rate limiting\nPrepares topic-specific news collection for analysis and synthesis\n\n### Result:\n✅ Centralized management of monitoring topics and keywords\n✅ Easy addition and modification of search parameters\n✅ Systematic processing of all configured monitoring queries\n✅ Flexible topic management for evolving business needs\n"
      },
      "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": "# Phase 3: Comprehensive News Discovery and Collection"
      },
      "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": "### What the system does:\nExecutes Google News searches for each configured query using SerpAPI\nRetrieves top news results with comprehensive metadata (titles, sources, dates, snippets)\nProcesses and ranks news articles by relevance and publication date\nExtracts the top 3 most relevant articles per topic for detailed analysis\nHandles API rate limiting and retry logic for reliable data collection\n\n**News Collection Features:**\n- Real-time Google News integration via SerpAPI\n- Automatic relevance scoring and article ranking\n- Comprehensive metadata extraction (source, date, snippet)\n- Multi-topic parallel processing capability\n\n### Result:\n✅ Comprehensive news coverage across all monitored topics\n✅ Top-quality article selection based on relevance and recency\n✅ Complete source attribution and publication timing\n✅ Reliable news discovery with error handling and retry mechanisms\n"
      },
      "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": "# Phase 4: Deep Content Analysis and Article Scraping"
      },
      "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": "### What the system does:\nScrapes full content from the top 3 selected articles per topic using Firecrawl\nConverts article content to clean markdown format for AI processing\nImplements retry logic and error handling for reliable content extraction\nPreserves article structure, headings, and key formatting elements\nHandles various website formats and content management systems\n\n**Content Extraction Capabilities:**\n- Full-text article scraping with clean formatting\n- Multi-website compatibility and format handling\n- Automatic content structure preservation\n- Error handling for inaccessible or protected content\n\n### Result:\n✅ Complete article content captured for in-depth analysis\n✅ Clean, formatted content ready for AI processing\n✅ Comprehensive coverage of key industry developments\n✅ Reliable content extraction despite varied website formats"
      },
      "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": "# Phase 5: AI-Powered Content Analysis and Synthesis"
      },
      "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": "### What the system does:\nProcesses scraped articles using Claude 4 Sonnet for intelligent analysis\nGenerates structured summaries following consistent formatting standards\nCreates topic-specific intelligence reports with key insights and implications\nMaintains professional tone and factual accuracy in all generated content\nFormats analysis results for optimal Discord presentation\n\n**AI Analysis Features:**\n- Advanced content comprehension and synthesis\n- Consistent formatting and structure across all topics\n- Key insight extraction and trend identification\n- Professional writing style suitable for business communication\n\n### Result:\n✅ High-quality intelligence reports generated automatically\n✅ Consistent professional formatting across all monitoring topics\n✅ Key insights and implications clearly highlighted\n✅ Actionable intelligence ready for team consumption"
      },
      "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": "# Phase 6: Content Optimization for Discord Delivery"
      },
      "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": "### What the system does:\nAggregates all topic analyses into comprehensive monitoring report\nImplements intelligent text segmentation to comply with Discord's 2000-character limit\nMaintains content coherence while splitting longer analyses into multiple messages\nPreserves formatting and readability across message segments\nOptimizes message flow for sequential delivery\n\n**Discord Optimization Features:**\n- Automatic message length compliance (under 2000 characters)\n- Intelligent text segmentation maintaining content flow\n- Formatting preservation across multiple messages\n- Sequential message preparation for smooth delivery\n\n### Result:\n✅ Content perfectly formatted for Discord platform constraints\n✅ Coherent message flow maintained across multiple segments\n✅ Professional presentation optimized for team communication\n✅ Automated compliance with platform messaging limitations\n"
      },
      "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": "# Phase 7: Automated Team Communication and Report Delivery"
      },
      "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": "### What the system does:\nDelivers engaging introduction message to Discord channel with branded personality\nPosts segmented intelligence reports in proper sequence to maintain readability\nSends conclusion message to complete the monitoring cycle\nImplements message timing to ensure proper delivery order\nUses branded \"Claptrap\" persona for consistent team engagement\n\n**Discord Delivery Features:**\n- Branded bot persona for engaging team communication\n- Sequential message delivery maintaining proper flow\n- Professional intelligence reporting with personality elements\n- Automated conclusion and cycle completion messaging\n\n### Result:\n✅ Professional intelligence reports delivered directly to team Discord channel\n✅ Engaging branded communication maintaining team interest\n✅ Complete monitoring cycle with clear beginning and conclusion\n✅ Consistent timing and delivery for reliable team updates"
      },
      "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": "Rédaction veille",
      "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": "Compilation données veilles",
      "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": "Découpage message 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": {
    "f987c547-d915-420f-a03b-91d4b9bf7892": {
      "main": [
        [
          {
            "node": "2396728d-d58e-459b-b657-f2a11192a837",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d5842671-b64e-423a-85c4-7d3256b1422c": {
      "main": [
        [
          {
            "node": "11b98779-6f2c-42ad-b051-41fa8aed3fc2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a9778ac0-c55e-46b9-9288-820cec4cabb0": {
      "main": [
        [
          {
            "node": "d679b877-042f-4bf6-b5ee-9fae394a5da1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "11b98779-6f2c-42ad-b051-41fa8aed3fc2": {
      "main": [
        [
          {
            "node": "bd674533-295d-4223-93ac-971b5a1157d2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "a9778ac0-c55e-46b9-9288-820cec4cabb0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d679b877-042f-4bf6-b5ee-9fae394a5da1": {
      "main": [
        [
          {
            "node": "a7a1521e-1183-4518-9320-3ebc88192b1d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "61a264f4-781e-45c7-8514-a7d5ae7d1c2f": {
      "main": [
        [
          {
            "node": "d5842671-b64e-423a-85c4-7d3256b1422c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a7a1521e-1183-4518-9320-3ebc88192b1d": {
      "main": [
        [
          {
            "node": "42018b6f-ca36-42bc-aa9b-7880592d6f17",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "42018b6f-ca36-42bc-aa9b-7880592d6f17": {
      "main": [
        [
          {
            "node": "9f8552d4-131d-40e2-a1a7-6165310e5645",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9f8552d4-131d-40e2-a1a7-6165310e5645": {
      "main": [
        [
          {
            "node": "706d3a3b-057c-4def-8330-7c989968aa87",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2396728d-d58e-459b-b657-f2a11192a837": {
      "main": [
        [
          {
            "node": "8b09ed9a-d5c1-4a7c-97a2-39219e888576",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "f987c547-d915-420f-a03b-91d4b9bf7892",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "706d3a3b-057c-4def-8330-7c989968aa87": {
      "main": [
        [
          {
            "node": "11b98779-6f2c-42ad-b051-41fa8aed3fc2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3b6eab19-a13e-4779-80bb-8df6e55b1a32": {
      "ai_languageModel": [
        [
          {
            "node": "706d3a3b-057c-4def-8330-7c989968aa87",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "073edc5a-f56b-4b48-b7c1-3397c57eda5d": {
      "main": [
        [
          {
            "node": "2396728d-d58e-459b-b657-f2a11192a837",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bd674533-295d-4223-93ac-971b5a1157d2": {
      "main": [
        [
          {
            "node": "073edc5a-f56b-4b48-b7c1-3397c57eda5d",
            "type": "main",
            "index": 0
          },
          {
            "node": "3be2a835-9ef2-47d3-a70b-5e8093178519",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - その他, AI要約, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

Googleトレンド、ニュース、Firecrawl、そしてClaude AIを使った自動コンテンツ戦略
Google トレンド、ニュース、Firecrawl、Claude AI を用いた自動コンテンツ戦略
Set
Code
Aggregate
+
Set
Code
Aggregate
22 ノードGrowth AI
市場調査
毎日の WhatsApp グループ スマート分析:GPT-4.1 による分析と音声メッセージの transcrição
毎日の WhatsApp グループ インタラクティブ分析:GPT-4.1 分析と音声メッセージ文字起こし
If
Set
Code
+
If
Set
Code
52 ノードDaniel Lianes
その他
Claude AIおよび競合分析を使用したSEOコンテンツジェネレーター
Claude AIとApify製品分析でSEOコンテンツ生成
If
Code
Filter
+
If
Code
Filter
36 ノードGrowth AI
コンテンツ作成
Claude AI、競合分析、Supabase RAGを使用したSEOコンテンツジェネレーター
Claude AI、製品分析、Supabase RAGを使用してSEOコンテンツ生成
If
Code
Filter
+
If
Code
Filter
40 ノードGrowth AI
コンテンツ作成
Google広告活動レポートをGoogleスプレッドシートに自動生成(Airtable顧客管理別途あり)
Google広告活動レポートを自動生成してGoogleスプレッドシートに出力(Airtable顧客管理含む)
If
Code
Wait
+
If
Code
Wait
31 ノードGrowth AI
その他
毎日 Gmail の受信トレイを Discord にまとめる(GPT-4.1-mini + PDF 変換)
GPT-4.1-miniとPDF変換を使用した日次Gmail受信箱要約のDiscordへの送信
Code
Gmail
Discord
+
Code
Gmail
Discord
18 ノードmoosa
その他
ワークフロー情報
難易度
上級
ノード数30
カテゴリー3
ノードタイプ11
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34