Mit Gemini, Slack und Notion aus Nachrichten-Updates KI-Intelligence-Zusammenfassungen erstellen

Experte

Dies ist ein Miscellaneous, AI Summarization, Multimodal AI-Bereich Automatisierungsworkflow mit 19 Nodes. Hauptsächlich werden Set, Code, Gmail, Slack, Filter und andere Nodes verwendet. KI-Intelligence-Zusammenfassungen aus Newsletter mit Gemini, Slack und Notion erstellen

Voraussetzungen
  • Google-Konto + Gmail API-Anmeldedaten
  • Slack Bot Token oder Webhook URL
  • Notion API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "meta": {
    "instanceId": "2b4a3d81eafa60e4b2dfa202fdf88e491b785e2a2a6ca005b137d831a6faa7c0",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "2755b9eb-352a-447f-9960-d34fb4905045",
      "name": "Gelabelte Newsletter abrufen",
      "type": "n8n-nodes-base.gmail",
      "notes": "Fetches emails with your specified label from the last 24 hours",
      "position": [
        288,
        384
      ],
      "webhookId": "bf88d99c-1bea-4f19-9ef5-3c0a59eb862c",
      "parameters": {
        "limit": 20,
        "simple": false,
        "filters": {
          "labelIds": [
            "YOUR_GMAIL_LABEL_ID"
          ],
          "receivedAfter": "={{ $today.minus(1, 'days') }}"
        },
        "options": {},
        "operation": "getAll"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "yvJI2wRBiA9DGTL4",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1,
      "alwaysOutputData": true
    },
    {
      "id": "b53fe8a3-8cc6-4343-ad86-6d64ca6b4e72",
      "name": "Alle Newsletter kombinieren",
      "type": "n8n-nodes-base.aggregate",
      "notes": "Combines all newsletter emails into a single item for AI processing",
      "position": [
        736,
        384
      ],
      "parameters": {
        "include": "specifiedFields",
        "options": {},
        "aggregate": "aggregateAllItemData",
        "fieldsToInclude": "headers.from, subject, textAsHtml",
        "destinationFieldName": "newsletter"
      },
      "typeVersion": 1
    },
    {
      "id": "0e35800c-542d-49b5-80eb-2900fb2bb6b3",
      "name": "KI-Newsletter-Analyst",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "notes": "AI agent that analyzes newsletters and generates insights based on your configuration",
      "position": [
        1024,
        384
      ],
      "parameters": {
        "text": "=Analyze today's newsletters and create a comprehensive brief for {{ $('Configuration').item.json.recipient_name }}.\n\n## Context\n{{ $('Configuration').item.json.business_context }}\n\n## Task 1: Executive Summary\nFrom today's newsletters, identify 3-5 developments that matter for {{ $('Configuration').item.json.target_audience }}. For each:\n\n**[Development Title]**\n- TL;DR: [2-3 sentences explaining what this is about]\n- Why this matters: [1-2 sentences on real business impact for your audience]\n- Implementation reality: [What it would actually take to adopt this]\n- Source: [Newsletter sender name]\n\nOnly include developments that pass this test: {{ $('Configuration').item.json.relevance_filter }}\n\nAs part of the executive summary, include a short tl;dr that should be maximum of 1-2 sentences summarizing all the developments you extract.\n\n## Task 2: Content-Inspiring Questions\nGenerate 3-4 questions that could become {{ $('Configuration').item.json.content_platforms }} content. Each question should:\n- Connect to real operational challenges\n- Bridge technical capability and business reality\n- Feel non-obvious but highly relevant\n\nFormat:\n**Question:** [Concise, thought-provoking question]\n**Context:** [1 sentence on why this question matters now, referencing specific newsletter content]\n**Relevant Content Pillar:** [name of the content pillar this relates to]\n\n## Task 3: Hidden Patterns\nBrief note on any patterns across multiple newsletters that suggest an emerging theme your audience should track.\n\nRemember: Filter aggressively. If something is just \"interesting\" but not actionable for your specific audience, exclude it. Focus on signal, not noise.\n\n## Content to analyze\n\nHere are the newsletters and their content: {{ \n$json.newsletter.map(item => \n  `Subject: \"${item.subject}\"\nFull content follows:\n${item.textAsHtml}`\n).join('\\\\n\\\\n==========\\\\n\\\\n')\n}}",
        "options": {
          "systemMessage": "=You are an AI intelligence analyst for {{ $('Configuration').item.json.company_name }}, helping to filter the daily flood of newsletters through a specific operational lens.\n\n## Core Context\n\n### Who You Serve\n{{ $('Configuration').item.json.target_audience_description }}\n\n### Your Unique Perspective\nYou view information through three interconnected lenses:\n1. **Operational Reality**: How does this actually work in a running business?\n2. **Technical Feasibility**: What's required to implement this at scale?\n3. **Human Dynamics**: How will teams actually adopt and use this?\n\n### Content Focus Areas\n{{ $('Configuration').item.json.content_pillars }}\n\n## Processing Framework\n\nWhen analyzing newsletters and updates:\n\n### Relevance Filter\nINCLUDE information about:\n- New capabilities that could change how operations work (not just make them faster)\n- Implementation patterns from companies in the {{ $('Configuration').item.json.company_size_range }} range\n- Tools or frameworks that bridge technical capability and business operations\n- Real implementation case studies (not just press releases)\n- {{ $('Configuration').item.json.additional_include_criteria }}\n\nEXCLUDE information about:\n- Pure research advances without clear operational application\n- Consumer products without business applications\n- Generic tool updates that are just feature additions\n- {{ $('Configuration').item.json.additional_exclude_criteria }}\n\n### Analysis Depth\nFor each relevant item, consider:\n- What operational problem does this actually solve?\n- What would implementing this require (people, process, technology)?\n- How does this connect to what {{ $('Configuration').item.json.target_audience }} are already doing?\n\nIf needed, and really only in cases where you feel it's required, you can use the Perplexity tool to find additional information. Be efficient in your use.\n\n## Output Requirements\n\n### Executive Summary Structure\n- Lead with operational impact, not technical innovation\n- Connect developments to specific challenges your audience faces\n- Use concrete examples over abstract possibilities\n- Maintain calm clarity - no breathless hype\n- Maximum 3-5 key developments per day (quality over quantity)\n- Keep language free of jargon and accessible\n- Go for conciseness while including essential information\n\n### Question Generation Philosophy\nCreate questions that:\n- Bridge the gap between potential and operational reality\n- Challenge conventional thinking\n- Explore practical implementation tensions\n- Address the \"how\" after others cover the \"what\"\n- Connect capabilities to business outcomes\n- Use clear, accessible language without corporate jargon\n\nQuestions should feel like they come from someone who has actually worked in this space, not someone theorizing about it.\n\nRemember: Your audience needs insights that are worth their precious mental space during commutes and reflection time."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 2.2
    },
    {
      "id": "c1986c22-9219-4dd0-8c59-88d618f06065",
      "name": "Täglicher Morgen-Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "Runs daily at 8am UTC - adjust timezone as needed",
      "position": [
        -176,
        384
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 8 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "111aea15-2a77-4326-b132-58d6ab8d054a",
      "name": "Leere Ergebnisse filtern",
      "type": "n8n-nodes-base.filter",
      "notes": "Only proceeds if emails were found",
      "position": [
        512,
        384
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "9fda51d9-feb0-464d-9ab7-a8d32b4654a3",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.id }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3da6d119-88a4-49ad-9af1-c82e6dc3deb2",
      "name": "Formatieren für Slack",
      "type": "n8n-nodes-base.code",
      "notes": "Converts AI analysis to rich Slack Block Kit format",
      "position": [
        1424,
        288
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Format the structured AI analysis for Slack Block Kit\nconst data = $input.item.json;\nconst analysis = Array.isArray(data) ? data[0].output : (data.output || data);\nconst config = $('Configuration').item.json;\n\n// Helper function to format date nicely\nconst formatDate = (dateStr) => {\n  const date = dateStr ? new Date(dateStr) : new Date();\n  return date.toLocaleDateString('en-US', { \n    weekday: 'long', \n    year: 'numeric', \n    month: 'long', \n    day: 'numeric' \n  });\n};\n\n// Helper to truncate text to avoid Slack's block limits\nconst truncateText = (text, maxLength = 3000) => {\n  if (text && text.length > maxLength) {\n    return text.substring(0, maxLength - 3) + '...';\n  }\n  return text || '';\n};\n\n// Use the TLDR from the AI agent or create a fallback\nlet tldrSummary = \"\";\nif (analysis.executive_summary?.tldr) {\n  tldrSummary = analysis.executive_summary.tldr;\n} else if (analysis.executive_summary?.developments && analysis.executive_summary.developments.length > 0) {\n  const devCount = analysis.executive_summary.developments.length;\n  const topics = analysis.executive_summary.developments\n    .slice(0, 2)\n    .map(dev => dev.title.split(' ').slice(0, 4).join(' '))\n    .join(\" and \");\n  tldrSummary = `${devCount} key developments today: ${topics}. Focus on signal over noise.`;\n} else {\n  tldrSummary = \"No developments met our strict relevance criteria today. This is valuable signal - not every day brings operationally relevant news.\";\n}\n\n// Build the blocks array\nlet blocks = [\n  {\n    \"type\": \"header\",\n    \"text\": {\n      \"type\": \"plain_text\",\n      \"text\": `📰 | ${config.brief_title || 'Intelligence Brief'}`\n    }\n  },\n  {\n    \"type\": \"context\",\n    \"elements\": [\n      {\n        \"text\": `📅 ${formatDate(analysis.metadata?.date_analyzed)} | 👤 ${config.recipient_name || 'Team'}`,\n        \"type\": \"mrkdwn\"\n      }\n    ]\n  },\n  {\n    \"type\": \"divider\"\n  },\n  {\n    \"type\": \"section\",\n    \"text\": {\n      \"type\": \"mrkdwn\",\n      \"text\": \"📢 | *TL;DR*\"\n    }\n  },\n  {\n    \"type\": \"section\",\n    \"text\": {\n      \"type\": \"mrkdwn\",\n      \"text\": truncateText(tldrSummary, 3000)\n    }\n  },\n  {\n    \"type\": \"divider\"\n  }\n];\n\n// Add news summary if we have developments\nif (analysis.executive_summary?.developments && analysis.executive_summary.developments.length > 0) {\n  blocks.push({\n    \"type\": \"section\",\n    \"text\": {\n      \"type\": \"mrkdwn\",\n      \"text\": \"📰 | *KEY DEVELOPMENTS*\"\n    }\n  });\n\n  // Build rich text elements for each development\n  let richTextElements = [];\n  \n  analysis.executive_summary.developments.forEach((dev, index) => {\n    // Add title with source\n    richTextElements.push({\n      \"type\": \"rich_text_section\",\n      \"elements\": [\n        {\n          \"type\": \"text\",\n          \"text\": `${dev.title}`,\n          \"style\": {\n            \"code\": true\n          }\n        },\n        {\n          \"type\": \"text\",\n          \"text\": ` - ${dev.source || 'Newsletter'}`,\n          \"style\": {\n            \"italic\": true\n          }\n        },\n        {\n          \"type\": \"text\",\n          \"text\": \"\\n\"\n        }\n      ]\n    });\n    \n    // Add content in quote block \n    richTextElements.push({\n      \"type\": \"rich_text_quote\",\n      \"elements\": [\n        {\n          \"type\": \"text\",\n          \"text\": \"TL;DR:\",\n          \"style\": {\n            \"bold\": true\n          }\n        },\n        {\n          \"type\": \"text\",\n          \"text\": `\\n${truncateText(dev.tldr_development, 500)}\\n\\n`\n        },\n        {\n          \"type\": \"text\",\n          \"text\": \"Why it matters:\",\n          \"style\": {\n            \"bold\": true\n          }\n        },\n        {\n          \"type\": \"text\",\n          \"text\": `\\n${truncateText(dev.operational_impact, 500)}\\n\\n`\n        },\n        {\n          \"type\": \"text\",\n          \"text\": \"Implementation Reality:\",\n          \"style\": {\n            \"bold\": true\n          }\n        },\n        {\n          \"type\": \"text\",\n          \"text\": `\\n${truncateText(dev.implementation_reality, 500)}\\n\\n`\n        }\n      ]\n    });\n    \n    // Add separator between items (except after last item)\n    if (index < analysis.executive_summary.developments.length - 1) {\n      richTextElements.push({\n        \"type\": \"rich_text_section\",\n        \"elements\": [\n          {\n            \"type\": \"text\",\n            \"text\": \"\\n\"\n          }\n        ]\n      });\n    }\n  });\n  \n  richTextElements.push({\n    \"type\": \"rich_text_section\",\n    \"elements\": []\n  });\n  \n  blocks.push({\n    \"type\": \"rich_text\",\n    \"elements\": richTextElements\n  });\n  \n  blocks.push({\n    \"type\": \"divider\"\n  });\n}\n\n// Add content questions if we have them\nif (analysis.content_questions && analysis.content_questions.length > 0) {\n  blocks.push({\n    \"type\": \"section\",\n    \"text\": {\n      \"type\": \"mrkdwn\",\n      \"text\": \"🤔 | *CONTENT INSPIRATION*\"\n    }\n  });\n  \n  let questionElements = [];\n  \n  analysis.content_questions.forEach((q, index) => {\n    questionElements.push({\n      \"type\": \"rich_text_quote\",\n      \"elements\": [\n        {\n          \"type\": \"text\",\n          \"text\": `\"${truncateText(q.question, 500)}\"\\n\\n`,\n          \"style\": {\n            \"bold\": true\n          }\n        },\n        {\n          \"type\": \"text\",\n          \"text\": truncateText(q.context, 500),\n          \"style\": {\n            \"italic\": true\n          }\n        }\n      ]\n    });\n    \n    if (q.content_pillar) {\n      questionElements.push({\n        \"type\": \"rich_text_section\",\n        \"elements\": [\n          {\n            \"type\": \"text\",\n            \"text\": `📁 Content Pillar: ${q.content_pillar}`,\n            \"style\": {\n              \"italic\": true\n            }\n          }\n        ]\n      });\n    }\n    \n    if (index < analysis.content_questions.length - 1) {\n      questionElements.push({\n        \"type\": \"rich_text_section\",\n        \"elements\": [\n          {\n            \"type\": \"text\",\n            \"text\": \"\\n\"\n          }\n        ]\n      });\n    }\n  });\n  \n  questionElements.push({\n    \"type\": \"rich_text_section\",\n    \"elements\": []\n  });\n  \n  blocks.push({\n    \"type\": \"rich_text\",\n    \"elements\": questionElements\n  });\n  \n  blocks.push({\n    \"type\": \"divider\"\n  });\n}\n\n// Add hidden patterns if present\nif (analysis.hidden_patterns?.pattern) {\n  blocks.push({\n    \"type\": \"section\",\n    \"text\": {\n      \"type\": \"mrkdwn\",\n      \"text\": \"🔍 | *EMERGING PATTERN*\"\n    }\n  });\n  \n  blocks.push({\n    \"type\": \"section\",\n    \"text\": {\n      \"type\": \"mrkdwn\",\n      \"text\": `_${truncateText(analysis.hidden_patterns.pattern, 3000)}_`\n    }\n  });\n  \n  if (analysis.hidden_patterns.relevance) {\n    blocks.push({\n      \"type\": \"context\",\n      \"elements\": [\n        {\n          \"type\": \"mrkdwn\",\n          \"text\": `*Relevance:* ${truncateText(analysis.hidden_patterns.relevance, 2900)}`\n        }\n      ]\n    });\n  }\n  \n  blocks.push({\n    \"type\": \"divider\"\n  });\n}\n\n// Add footer\nblocks.push({\n  \"type\": \"context\",\n  \"elements\": [\n    {\n      \"type\": \"mrkdwn\",\n      \"text\": `_${config.footer_message || 'Focus on signal, not noise. Make informed decisions.'}_`\n    }\n  ]\n});\n\n// Add stats if available\nif (analysis.metadata) {\n  let statsText = \"\";\n  \n  if (analysis.metadata.total_developments) {\n    statsText += `📊 ${analysis.metadata.total_developments} developments analyzed`;\n    \n    if (analysis.executive_summary?.developments?.length) {\n      statsText += `, ${analysis.executive_summary.developments.length} passed relevance threshold`;\n    }\n  }\n  \n  if (analysis.metadata.newsletter_count) {\n    if (statsText) statsText += \" | \";\n    statsText += `📧 ${analysis.metadata.newsletter_count} newsletters processed`;\n  }\n  \n  if (statsText) {\n    blocks.push({\n      \"type\": \"context\",\n      \"elements\": [\n        {\n          \"type\": \"mrkdwn\",\n          \"text\": `_${statsText}_`\n        }\n      ]\n    });\n  }\n}\n\nconst blockKitJson = {\n  \"blocks\": blocks\n};\n\nreturn {\n  blocksUi: JSON.stringify(blockKitJson),\n  rawBlocks: blocks,\n  blockKitObject: blockKitJson,\n  hasContent: (analysis.executive_summary?.developments?.length > 0) || \n              (analysis.content_questions?.length > 0) || \n              analysis.hidden_patterns?.pattern,\n  developmentCount: analysis.executive_summary?.developments?.length || 0,\n  questionCount: analysis.content_questions?.length || 0,\n  metadata: analysis.metadata\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "76e03f5c-553a-4b15-9fc4-171d45300c60",
      "name": "An Slack senden",
      "type": "n8n-nodes-base.slack",
      "notes": "Sends formatted brief to your Slack channel",
      "position": [
        1648,
        288
      ],
      "webhookId": "0ff2b8f9-344a-4f43-9fd7-b8149a5d5ca9",
      "parameters": {
        "text": "Daily Newsletter Brief",
        "select": "channel",
        "blocksUi": "={{ $json.blocksUi }}",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_SLACK_CHANNEL_ID"
        },
        "messageType": "block",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "I1AdBji1W6jc0rm7",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "314f38f4-0663-417a-a811-c3ab59df9186",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "notes": "Primary AI model for newsletter analysis",
      "position": [
        880,
        624
      ],
      "parameters": {
        "model": "google/gemini-2.5-flash",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "bA9Ec45f0B7Bpa10",
          "name": "OpenRouter"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "bfbc76fb-5ca3-4801-8b1a-1534bf45e7c1",
      "name": "Output Parser Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "notes": "Model for structured output parsing",
      "position": [
        1296,
        816
      ],
      "parameters": {
        "model": "google/gemini-2.5-flash",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "bA9Ec45f0B7Bpa10",
          "name": "OpenRouter"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0d990fe0-495c-4967-b53c-480f84f301b2",
      "name": "Fragen ausgliedern",
      "type": "n8n-nodes-base.splitOut",
      "notes": "Separates content questions for individual processing",
      "position": [
        1424,
        480
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output.content_questions"
      },
      "typeVersion": 1
    },
    {
      "id": "bd52e7e9-c35e-4e8e-bf50-d6945bb02891",
      "name": "Fragen in Notion speichern",
      "type": "n8n-nodes-base.notion",
      "notes": "Creates Notion pages for each content question (optional)",
      "position": [
        1648,
        480
      ],
      "parameters": {
        "title": "={{ $json.question }}",
        "blockUi": {
          "blockValues": [
            {
              "text": {
                "text": [
                  {
                    "text": "={{ $json.context }}",
                    "annotationUi": {
                      "italic": true
                    }
                  }
                ]
              },
              "richText": true
            },
            {
              "textContent": "=Content Pillar: {{ $json.content_pillar }}"
            },
            {
              "textContent": "=Generated from newsletter analysis on {{ $today.format('MM-dd-yyyy') }}"
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_NOTION_DATABASE_ID"
        }
      },
      "credentials": {
        "notionApi": {
          "id": "toqwsLC7U4Kur83F",
          "name": "Notion"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "c4553d6c-3b7a-4018-b91d-fce030c48590",
      "name": "Perplexity Research Tool",
      "type": "n8n-nodes-base.perplexityTool",
      "notes": "Optional tool for the AI agent to gather additional context",
      "position": [
        1168,
        608
      ],
      "parameters": {
        "model": "sonar-pro",
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "id": "Lp8s8pOa5dCRCcUm",
          "name": "Perplexity account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "88953eaf-035a-4c44-8d17-98432b4a5a8f",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "notes": "Ensures AI output follows the expected JSON structure",
      "position": [
        1296,
        656
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"executive_summary\": {\n    \"tldr\": \"Quick summary across all developments\",\n    \"developments\": [\n      {\n        \"title\": \"Development Title Here\",\n        \"operational_impact\": \"Why this matters operationally\",\n        \"implementation_reality\": \"What it would actually take to adopt this\",\n        \"tldr_development\": \"TL;DR of the development\",\n        \"source\": \"Newsletter source name\"\n      }\n    ]\n  },\n  \"content_questions\": [\n    {\n      \"question\": \"The thought-provoking question itself\",\n      \"context\": \"Why this question matters now, with newsletter reference\",\n      \"content_pillar\": \"Relevant content pillar\"\n    }\n  ],\n  \"hidden_patterns\": {\n    \"pattern\": \"Description of emerging theme across newsletters\",\n    \"relevance\": \"Why this pattern matters for the audience\"\n  },\n  \"metadata\": {\n    \"date_analyzed\": \"2024-01-20\",\n    \"newsletter_count\": 2,\n    \"total_developments\": 5\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "fb930565-a81e-40cd-96d6-340b6bf64138",
      "name": "Conversation Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "notes": "Maintains context across multiple AI interactions",
      "position": [
        1024,
        704
      ],
      "parameters": {
        "contextWindowLength": 7
      },
      "typeVersion": 1.3
    },
    {
      "id": "68c99298-c391-4026-b589-8f09028c5966",
      "name": "Configuration",
      "type": "n8n-nodes-base.set",
      "notes": "📝 CUSTOMIZE THESE VALUES for your business and use case",
      "position": [
        64,
        384
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2aa9dd22-9fe1-46a4-9927-7b8a997c30af",
              "name": "recipient_name",
              "type": "string",
              "value": "Who the brief is for (e.g., \"Tech Team\")"
            },
            {
              "id": "f2440cb8-6076-4dac-831b-c38c489fbff8",
              "name": "company_name",
              "type": "string",
              "value": "Your company name"
            },
            {
              "id": "550c6854-c3c2-4aec-8c89-3e4d11dc5f7e",
              "name": "business_context",
              "type": "string",
              "value": "What your company does/goals"
            },
            {
              "id": "30be18e1-0242-45f7-a1da-8b20b35e7c35",
              "name": "target_audience",
              "type": "string",
              "value": "Who you're analyzing for (e.g., \"product managers and engineering leaders\")"
            },
            {
              "id": "39659801-9da6-4259-b07c-9d19b4bdac62",
              "name": "target_audience_description",
              "type": "string",
              "value": "Detailed description of your audience"
            },
            {
              "id": "91841974-0e77-4068-8568-4e762269e43e",
              "name": "company_size_range",
              "type": "string",
              "value": "Size of companies you focus on (e.g., \"50-200 employee\")"
            },
            {
              "id": "a4a9ad55-1817-46da-a787-4892a94f3787",
              "name": "relevance_filter",
              "type": "string",
              "value": "The key question to filter relevant news"
            },
            {
              "id": "4f3237ae-a44f-4594-ac3d-27d2488c0e48",
              "name": "content_platforms",
              "type": "string",
              "value": "Where you'll use insights (e.g., \"LinkedIn posts, internal updates\")"
            },
            {
              "id": "def78ff4-6ef5-4eeb-9c86-7f10a6d2aa0a",
              "name": "content_pillars",
              "type": "string",
              "value": "Your main content focus areas (3 pillars)"
            },
            {
              "id": "14fd66df-9969-4228-a68f-20e34b372e3f",
              "name": "additional_include_criteria",
              "type": "string",
              "value": "Extra things to include in analysis"
            },
            {
              "id": "c7906cd3-9589-4b9f-b07b-724042d2f404",
              "name": "additional_exclude_criteria",
              "type": "string",
              "value": "Things to exclude from analysis"
            },
            {
              "id": "0435bcaa-85b7-4ae3-8ee4-7c933e9d44ae",
              "name": "brief_title",
              "type": "string",
              "value": "Title for your Slack briefs (e.g., \"Tech Intelligence Brief\")"
            },
            {
              "id": "f1f74e29-fe24-4620-8def-c0e8a02b17e7",
              "name": "footer_message",
              "type": "string",
              "value": "Footer text for your briefs"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2da8b52f-779b-4289-aa2a-2072116feb20",
      "name": "Notizzettel",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1664,
        -272
      ],
      "parameters": {
        "color": 5,
        "width": 767,
        "height": 1133,
        "content": "## 🤖 AI-powered Newsletter Intelligence Brief\n\nThis n8n template automatically analyzes newsletters you receive and creates an intelligent brief that filters signal from noise. Perfect for busy professionals who need to stay informed without information overload.\n\n## Who's it for\n- **Busy executives and founders** who subscribe to industry newsletters but lack time to read them all\n- **Content creators and strategists** who need to spot trends and generate content ideas\n- **Team leaders** who want to share curated insights with their teams\n- **Anyone** who wants AI to help them stay informed efficiently\n\n## How it works\n1. **Daily collection**: Automatically fetches emails with your specified label from the last 24 hours\n2. **AI analysis**: Uses advanced AI to analyze content through your specific business lens\n3. **Intelligent filtering**: Only surfaces developments that meet your relevance criteria\n4. **Multi-format output**: Sends formatted briefs to Slack and optionally saves questions to Notion\n5. **Content inspiration**: Generates thought-provoking questions for your content creation\n\n## Requirements\n- **Gmail account** with newsletters labeled appropriately\n- **OpenRouter API key** for AI analysis (costs ~$0.01-0.05 per run)\n- **Slack workspace** for receiving briefs\n- **Notion account** (optional, for saving content questions)\n- **Perplexity API key** (optional, for additional research)\n\n## How to set up\n1. **Configure the workflow**: Edit the \"Configuration\" node with your business details\n2. **Set up Gmail**: Create a label for newsletters you want analyzed (Forum instructions: <https://support.google.com/mail/thread/208327636/how-do-i-automatically-label-emails?hl=en|>)\n3. **Connect credentials**: Add your API keys and OAuth connections\n4. **Customize timing**: Adjust the schedule trigger for your timezone\n5. **Test the workflow**: Run manually first to verify everything works\n\n## How to customize\n- **Change analysis focus**: Modify the Configuration node values to match your industry/audience\n- **Adjust timing**: Edit the cron expression in the trigger node\n- **Modify output format**: Update the Slack formatting code node\n- **Add more destinations**: Connect additional nodes for email, Teams, etc.\n- **Skip Notion**: Remove the Notion nodes if you don't need content question tracking\n\n## Tips for success\n- **Be specific** in your relevance criteria to avoid information overload\n- **Start with 3-5 newsletters** to test, then add more gradually\n- **Review and refine** your configuration based on the quality of results\n- **Use consistent labeling** in Gmail for reliable processing"
      },
      "typeVersion": 1
    },
    {
      "id": "71e94dba-2edf-4183-874c-cfa9c35ffa5d",
      "name": "Notizzettel1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        -272
      ],
      "parameters": {
        "width": 443,
        "height": 507,
        "content": "## ⚙️ Setup Steps\n\n### 1. Gmail Setup\n- Create a Gmail label (e.g., \"AI-Newsletter\")\n- Apply this label to newsletters you want analyzed\n- Select the label from the dropdown options in the node.\n\n### 2. Configure Your Business Context\n- Edit the \"Configuration\" node\n- Update all values to match your business, audience, and goals\n- Be specific about your relevance criteria\n\n### 3. Connect Credentials\n- **Gmail**: OAuth2 connection for email access\n- **OpenRouter**: API key for AI models\n- **Slack**: Bot token for posting messages\n- **Notion**: API key (optional, for questions)\n- **Perplexity**: API key (optional, for research)"
      },
      "typeVersion": 1
    },
    {
      "id": "1c04e69c-16cb-43b3-a952-53a7ccc3cd24",
      "name": "Notizzettel2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        272
      ],
      "parameters": {
        "width": 443,
        "height": 520,
        "content": "## 🔧 Required Configuration\n\n### Update These Node Settings:\n1. **Get Labeled Newsletters**: Replace \"YOUR_GMAIL_LABEL_ID\" with your actual Gmail label ID (can simply select it from the dropdown)\n2. **Send to Slack**: Replace \"YOUR_SLACK_CHANNEL_ID\" with your channel ID (can simply select it from the dropdown)\n3. **Save Questions to Notion**: Replace \"YOUR_NOTION_DATABASE_ID\" with your database ID (optional) (can simply select it from the dropdown)\n4. **Daily Morning Trigger**: Adjust cron expression for your timezone\n\n### Timezone Note:\nThe trigger is set to 8am UTC. Adjust as needed:\n- 8am Pacific: \"0 15 * * *\"\n- 8am Eastern: \"0 12 * * *\"\n- 8am GMT: \"0 8 * * *\""
      },
      "typeVersion": 1
    },
    {
      "id": "04f9d0ca-0bd3-4367-af91-42491570b1c6",
      "name": "Notizzettel3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        -272
      ],
      "parameters": {
        "color": 2,
        "width": 423,
        "height": 491,
        "content": "## 🚨 Important Notes\n\n### Security\n- Never hardcode API keys in nodes\n- Use n8n's credential system\n\n### Costs\n- OpenRouter: ~$0.01-0.05 per analysis\n- Perplexity: ~$0.01 per research query\n- Other services: Free tiers available\n\n### Customization\n- Start with the Configuration node\n- Test with a few newsletters first\n- Adjust prompts based on your results\n- The AI will improve with clear instructions"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "68c99298-c391-4026-b589-8f09028c5966": {
      "main": [
        [
          {
            "node": "2755b9eb-352a-447f-9960-d34fb4905045",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3da6d119-88a4-49ad-9af1-c82e6dc3deb2": {
      "main": [
        [
          {
            "node": "76e03f5c-553a-4b15-9fc4-171d45300c60",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fb930565-a81e-40cd-96d6-340b6bf64138": {
      "ai_memory": [
        [
          {
            "node": "0e35800c-542d-49b5-80eb-2900fb2bb6b3",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "bfbc76fb-5ca3-4801-8b1a-1534bf45e7c1": {
      "ai_languageModel": [
        [
          {
            "node": "88953eaf-035a-4c44-8d17-98432b4a5a8f",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "0d990fe0-495c-4967-b53c-480f84f301b2": {
      "main": [
        [
          {
            "node": "bd52e7e9-c35e-4e8e-bf50-d6945bb02891",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0e35800c-542d-49b5-80eb-2900fb2bb6b3": {
      "main": [
        [
          {
            "node": "3da6d119-88a4-49ad-9af1-c82e6dc3deb2",
            "type": "main",
            "index": 0
          },
          {
            "node": "0d990fe0-495c-4967-b53c-480f84f301b2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c1986c22-9219-4dd0-8c59-88d618f06065": {
      "main": [
        [
          {
            "node": "68c99298-c391-4026-b589-8f09028c5966",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "314f38f4-0663-417a-a811-c3ab59df9186": {
      "ai_languageModel": [
        [
          {
            "node": "0e35800c-542d-49b5-80eb-2900fb2bb6b3",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "b53fe8a3-8cc6-4343-ad86-6d64ca6b4e72": {
      "main": [
        [
          {
            "node": "0e35800c-542d-49b5-80eb-2900fb2bb6b3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2755b9eb-352a-447f-9960-d34fb4905045": {
      "main": [
        [
          {
            "node": "111aea15-2a77-4326-b132-58d6ab8d054a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "111aea15-2a77-4326-b132-58d6ab8d054a": {
      "main": [
        [
          {
            "node": "b53fe8a3-8cc6-4343-ad86-6d64ca6b4e72",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c4553d6c-3b7a-4018-b91d-fce030c48590": {
      "ai_tool": [
        [
          {
            "node": "0e35800c-542d-49b5-80eb-2900fb2bb6b3",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "88953eaf-035a-4c44-8d17-98432b4a5a8f": {
      "ai_outputParser": [
        [
          {
            "node": "0e35800c-542d-49b5-80eb-2900fb2bb6b3",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Verschiedenes, KI-Zusammenfassung, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes19
Kategorie3
Node-Typen15
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34