Crea resúmenes de inteligencia con IA a partir de boletines de noticias usando Gemini, Slack y Notion

Avanzado

Este es unMiscellaneous, AI Summarization, Multimodal AIflujo de automatización del dominio deautomatización que contiene 19 nodos.Utiliza principalmente nodos como Set, Code, Gmail, Slack, Filter. Usa Gemini, Slack y Notion para crear resúmenes de inteligencia de IA a partir de boletines de noticias

Requisitos previos
  • Cuenta de Google y credenciales de API de Gmail
  • Bot Token de Slack o URL de Webhook
  • Clave de API de Notion
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "2b4a3d81eafa60e4b2dfa202fdf88e491b785e2a2a6ca005b137d831a6faa7c0",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "2755b9eb-352a-447f-9960-d34fb4905045",
      "name": "Obtener boletines etiquetados",
      "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": "Combinar todos los boletines",
      "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": "Analista de boletines con IA",
      "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": "Activador diario matutino",
      "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": "Filtrar resultados vacíos",
      "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": "Formatear para 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": "Enviar a Slack",
      "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": "Modelo de chat OpenRouter",
      "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": "Modelo analizador de salida",
      "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": "Separar preguntas",
      "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": "Guardar preguntas en Notion",
      "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": "Herramienta de investigación Perplexity",
      "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": "Analizador de salida estructurada",
      "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": "Memoria de conversación",
      "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": "Configuración",
      "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": "Nota adhesiva",
      "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": "Nota adhesiva1",
      "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": "Nota adhesiva2",
      "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": "Nota adhesiva3",
      "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
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

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

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

Avanzado - Varios, Resumen de IA, IA Multimodal

¿Es de pago?

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

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos19
Categoría3
Tipos de nodos15
Descripción de la dificultad

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

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34