Crea resúmenes de noticias de tecnología seleccionados con IA usando GPT-4.1 Mini y una base de datos de Notion

Avanzado

Este es unContent Creation, AI Summarizationflujo de automatización del dominio deautomatización que contiene 20 nodos.Utiliza principalmente nodos como Code, Notion, HttpRequest, ManualTrigger, Agent. Usa GPT-4.1 Mini y una base de datos de Notion para crear resúmenes seleccionados de noticias tecnológicas de IA

Requisitos previos
  • Clave de API de Notion
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Clave de API de OpenAI
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": "5f3c5e6f777b2c7f976eff784f15d2e2501680193b55be3d2ceef10db21e51fb",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "c6bfc0f0-ba09-47f7-9224-56581124b177",
      "name": "Al hacer clic en 'Ejecutar flujo de trabajo'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        432,
        64
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b53c4d1d-ea67-4ef8-a637-3ed694d78845",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3136,
        368
      ],
      "parameters": {
        "url": "https://api.notion.com/v1/pages",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $item(\"0\").$node[\"Code in JavaScript2\"].json.pagePayload }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer NOTION_API_KEY_WITH_ACCESS_TO_PAGE"
            },
            {
              "name": "Notion-Version",
              "value": "2022-06-28"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "046cff62-c51c-4568-91e3-b387641a6800",
      "name": "Obtener múltiples páginas de base de datos",
      "type": "n8n-nodes-base.notion",
      "position": [
        720,
        240
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "key": "Date|date",
              "date": "={{$now.minus({days: 1}).toISO()}}",
              "condition": "after"
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "matchType": "allFilters",
        "operation": "getAll",
        "returnAll": true,
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "26f79f2b-1851-8054-a6af-e7106fc0ce40",
          "cachedResultUrl": "https://www.notion.so/26f79f2b18518054a6afe7106fc0ce40",
          "cachedResultName": "Tech & Startups rss feed"
        },
        "filterType": "manual"
      },
      "credentials": {
        "notionApi": {
          "id": "sRT9MWg4gspaOMaP",
          "name": "Notion account"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6a1e2866-d724-4ddf-92e6-124540e376b6",
      "name": "Código en JavaScript",
      "type": "n8n-nodes-base.code",
      "position": [
        960,
        272
      ],
      "parameters": {
        "jsCode": "const techKeywords = [\n  \"tech\", \"startup\", \"ai\", \"openai\", \"google\", \"microsoft\", \"apple\",\n  \"iphone\", \"app\", \"software\", \"vc\", \"funding\", \"ipo\", \"venture\",\n  \"silicon valley\", \"cloud\", \"semiconductor\", \"data\", \"innovation\",\n  \"tiktok\", \"meta\", \"facebook\", \"amazon\", \"netflix\", \"snap\"\n];\n\nreturn items.filter(item => {\n  const text = (\n    (item.json.property_title || \"\") + \" \" +\n    (item.json.property_summary || \"\") + \" \" +\n    (item.json.property_full_article || \"\")\n  ).toLowerCase();\n\n  return techKeywords.some(k => text.includes(k));\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "c61e26d7-22bc-4135-9d9f-49219dbdd36f",
      "name": "Clasificador de texto",
      "type": "@n8n/n8n-nodes-langchain.textClassifier",
      "position": [
        1312,
        240
      ],
      "parameters": {
        "options": {},
        "inputText": "=Classify the article into one of these categories: \"Tech/Startup\" or \"Other\".\nReturn only one word: Tech/Startup or Other.\n\nTitle: {{$json.property_title}}\nSummary: {{$json.property_summary}}\nFull article: {{$json.property_full_article}}\n",
        "categories": {
          "categories": [
            {
              "category": "Other",
              "description": "not Tech/Startup"
            },
            {
              "category": "Tech/Startup",
              "description": "Tech/Startup"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "64df328e-4a0d-428c-9e6f-26cd378a3371",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1360,
        448
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "j4OqIQtI7Um6LEX2",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "54ceedf7-a9bf-4a50-a3a8-8cdc37c0b9f8",
      "name": "Código en JavaScript1",
      "type": "n8n-nodes-base.code",
      "position": [
        1744,
        480
      ],
      "parameters": {
        "jsCode": "\nconst articles = items.map(item => item.json);\n\n// Return one array in one item\nreturn [{ json: { articles } }];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "13728a28-ba6e-465d-9257-2ec7cbc3a9a7",
      "name": "Agente de IA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2128,
        384
      ],
      "parameters": {
        "text": "={{ $json.articles }}",
        "options": {
          "systemMessage": "=\nYou are an expert technology editor creating a **daily curated digest** of technology and startup news.\nYou receive a list of articles as input (with titles, summaries, and links).\n\n### Your Goals:\n\n1. **Create a single daily digest page** that feels like a professional publication.\n2. **Write a short intro paragraph** summarizing the day’s main themes.\n3. **Group articles by categories** (e.g., *AI & Developer Tools, Startups & Funding, Consumer Tech, Regulation, Hardware & Gadgets, Web & Internet Services*).\n\n   * Only include categories that are relevant for today’s articles.\n4. **For each article**:\n\n   * Use a **bullet point format**.\n   * Write in **concise editorial style** (2–3 sentences max per article).\n   * Always include the **title as a link** to the article.\n5. **End with a closing note** like “That’s it for today’s digest.”\n\n### Formatting Rules:\n\n* Use **Markdown headings** (`#`, `##`) for sections.\n* Ensure **links are clickable Markdown links**.\n* Do **not** include raw JSON, system notes, or AI meta-commentary.\n* Output should be **clean and publish-ready** for Notion.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "d93debb8-7e57-4117-92fe-64b43501b326",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2176,
        608
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "j4OqIQtI7Um6LEX2",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d5cd2cc9-5f16-40c7-97c4-68edbee168a3",
      "name": "Código en JavaScript2",
      "type": "n8n-nodes-base.code",
      "position": [
        2656,
        400
      ],
      "parameters": {
        "jsCode": "// Get markdown digest from AI output\nconst digest = $json[\"output\"];\nconst today = new Date().toISOString().split(\"T\")[0]; // YYYY-MM-DD\n\n// Helper: convert a markdown line into a Notion block\nfunction mdToBlock(line) {\n  line = line.trim();\n\n  // Headings\n  if (line.startsWith(\"### \")) {\n    return {\n      object: \"block\",\n      type: \"heading_3\",\n      heading_3: {\n        rich_text: [{ type: \"text\", text: { content: line.replace(/^### /, \"\") } }]\n      }\n    };\n  }\n  if (line.startsWith(\"## \")) {\n    return {\n      object: \"block\",\n      type: \"heading_2\",\n      heading_2: {\n        rich_text: [{ type: \"text\", text: { content: line.replace(/^## /, \"\") } }]\n      }\n    };\n  }\n  if (line.startsWith(\"# \")) {\n    return {\n      object: \"block\",\n      type: \"heading_1\",\n      heading_1: {\n        rich_text: [{ type: \"text\", text: { content: line.replace(/^# /, \"\") } }]\n      }\n    };\n  }\n\n  // Bulleted list\n  if (line.startsWith(\"- \")) {\n    const linkMatch = line.match(/\\[(.*?)\\]\\((.*?)\\)/);\n    let textContent = line.replace(/^- /, \"\");\n    let richText = [];\n\n    if (linkMatch) {\n      richText.push({\n        type: \"text\",\n        text: { content: linkMatch[1], link: { url: linkMatch[2] } }\n      });\n      const after = textContent.replace(linkMatch[0], \"\").trim();\n      if (after) {\n        richText.push({ type: \"text\", text: { content: \" \" + after } });\n      }\n    } else {\n      richText.push({ type: \"text\", text: { content: textContent } });\n    }\n\n    return {\n      object: \"block\",\n      type: \"bulleted_list_item\",\n      bulleted_list_item: { rich_text: richText }\n    };\n  }\n\n  // Horizontal rule\n  if (line.startsWith(\"---\")) {\n    return { object: \"block\", type: \"divider\", divider: {} };\n  }\n\n  // Regular paragraph\n  if (line.length > 0) {\n    return {\n      object: \"block\",\n      type: \"paragraph\",\n      paragraph: { rich_text: [{ type: \"text\", text: { content: line } }] }\n    };\n  }\n\n  // Empty line → blank paragraph\n  return {\n    object: \"block\",\n    type: \"paragraph\",\n    paragraph: { rich_text: [] }\n  };\n}\n\n// Convert markdown into array of Notion blocks\nconst blocks = digest.split(\"\\n\").map(mdToBlock).filter(Boolean);\n\n// Split blocks into chunks of 100\nconst chunkSize = 100;\nconst chunks = [];\nfor (let i = 0; i < blocks.length; i += chunkSize) {\n  chunks.push(blocks.slice(i, i + chunkSize));\n}\n\nreturn {\n  pagePayload: {\n    parent: { page_id: \"26f79f2b185180ffa6aded90ddd9ba4c\" }, // your parent page\n    icon: { emoji: \"📰\" },\n    cover: {\n      external: { url: \"https://upload.wikimedia.org/wikipedia/commons/6/62/Tuscankale.jpg\" }\n    },\n    properties: {\n      title: [\n        {\n          text: { content: `Tech & Startup Daily Digest – ${today}` }\n        }\n      ]\n    },\n    children: chunks[0] // first 100 blocks only\n  },\n  extraChunks: chunks.slice(1) // save rest for appending\n};\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "6caf59be-ed6b-4ac7-8699-28fd3cc0c799",
      "name": "Activador programado",
      "type": "n8n-nodes-base.scheduleTrigger",
      "disabled": true,
      "position": [
        448,
        384
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 20
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7a2e7407-a775-466b-8022-37836b1927f6",
      "name": "Nota adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        -48
      ],
      "parameters": {
        "height": 576,
        "content": "## manual activation is for testing\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ba4b3f32-885b-4155-ab8e-a30530dc1f07",
      "name": "Nota adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        240
      ],
      "parameters": {
        "width": 208,
        "height": 128,
        "content": "## we can schedule it for daily"
      },
      "typeVersion": 1
    },
    {
      "id": "8e8e21ca-190f-491e-be20-f14861347e2e",
      "name": "Nota adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        624,
        16
      ],
      "parameters": {
        "height": 416,
        "content": "## date filter can be modified for desired days or may be hours to fetch articles from notion database\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3c1c0e30-ebe5-4b1b-b431-916716b822f1",
      "name": "Nota adhesiva4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        48
      ],
      "parameters": {
        "height": 400,
        "content": "## this code does initial filtering for required articles for our these **Tech and startup** "
      },
      "typeVersion": 1
    },
    {
      "id": "adff5b0a-8745-4a2e-9325-3a165055ac91",
      "name": "Nota adhesiva5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        32
      ],
      "parameters": {
        "width": 368,
        "height": 560,
        "content": "## more filtering for articles with text classifier model used is (gpt-4.1-mini)"
      },
      "typeVersion": 1
    },
    {
      "id": "1d4c0870-766f-453a-a2cc-dc4f38f433f1",
      "name": "Nota adhesiva6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1696,
        352
      ],
      "parameters": {
        "height": 320,
        "content": "## combile articles in one object to pass into ai agent\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0709856a-1b2e-4c31-97c8-b4546169cf60",
      "name": "Nota adhesiva7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2096,
        192
      ],
      "parameters": {
        "width": 304,
        "height": 544,
        "content": "## generate summaries of all articles into single article with raw notion page format"
      },
      "typeVersion": 1
    },
    {
      "id": "c36eeaae-77ee-4d73-9e2f-6879c9c1801d",
      "name": "Nota adhesiva8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2528,
        272
      ],
      "parameters": {
        "width": 384,
        "height": 288,
        "content": "## format into correct notion page json object to pass into http node"
      },
      "typeVersion": 1
    },
    {
      "id": "5dfb71e3-db06-49a2-b3ce-ff953a00ac50",
      "name": "Nota adhesiva9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3040,
        272
      ],
      "parameters": {
        "width": 320,
        "height": 304,
        "content": "## create notion page\n### here created for specific day"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "13728a28-ba6e-465d-9257-2ec7cbc3a9a7": {
      "main": [
        [
          {
            "node": "d5cd2cc9-5f16-40c7-97c4-68edbee168a3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c61e26d7-22bc-4135-9d9f-49219dbdd36f": {
      "main": [
        [],
        [
          {
            "node": "54ceedf7-a9bf-4a50-a3a8-8cdc37c0b9f8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6caf59be-ed6b-4ac7-8699-28fd3cc0c799": {
      "main": [
        [
          {
            "node": "046cff62-c51c-4568-91e3-b387641a6800",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "64df328e-4a0d-428c-9e6f-26cd378a3371": {
      "ai_languageModel": [
        [
          {
            "node": "c61e26d7-22bc-4135-9d9f-49219dbdd36f",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "6a1e2866-d724-4ddf-92e6-124540e376b6": {
      "main": [
        [
          {
            "node": "c61e26d7-22bc-4135-9d9f-49219dbdd36f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d93debb8-7e57-4117-92fe-64b43501b326": {
      "ai_languageModel": [
        [
          {
            "node": "13728a28-ba6e-465d-9257-2ec7cbc3a9a7",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "54ceedf7-a9bf-4a50-a3a8-8cdc37c0b9f8": {
      "main": [
        [
          {
            "node": "13728a28-ba6e-465d-9257-2ec7cbc3a9a7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d5cd2cc9-5f16-40c7-97c4-68edbee168a3": {
      "main": [
        [
          {
            "node": "b53c4d1d-ea67-4ef8-a637-3ed694d78845",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "046cff62-c51c-4568-91e3-b387641a6800": {
      "main": [
        [
          {
            "node": "6a1e2866-d724-4ddf-92e6-124540e376b6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c6bfc0f0-ba09-47f7-9224-56581124b177": {
      "main": [
        [
          {
            "node": "046cff62-c51c-4568-91e3-b387641a6800",
            "type": "main",
            "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 - Creación de contenido, Resumen de IA

¿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 nodos20
Categoría2
Tipos de nodos9
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