Mi flujo de trabajo 6
Este es unMultimodal AIflujo de automatización del dominio deautomatización que contiene 16 nodos.Utiliza principalmente nodos como Code, Merge, Telegram, RssFeedRead, Agent. Envío automatizado de resúmenes de noticias cripto usando fuentes RSS y GPT-4 a Telegram
- •Bot Token de Telegram
- •Clave de API de OpenAI
Nodos utilizados (16)
Categoría
{
"meta": {
"instanceId": "76756538d0e97eaf241d3d1243f7a3d2310b1d99252889d76c80d005e2ba5e9c",
"templateCredsSetupCompleted": true
},
"name": "My workflow 6",
"tags": [],
"nodes": [
{
"id": "2a4065e4-81e6-45c8-984c-605d3a7a3752",
"name": "Nota adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
368
],
"parameters": {
"color": 7,
"width": 736,
"height": 608,
"content": "## Description\nThis workflow automatically collects crypto news from multiple RSS feeds, analyzes them with OpenAI GPT-4, translates and summarizes them into Russian, and posts a digest to a Telegram channel or group.\n\n## How it works\n• Fetches fresh news from Coindesk, Cointelegraph, Decrypt, Cryptobriefing, and Nulltx via RSS \n• Filters, deduplicates, and selects only the most relevant articles \n• Uses OpenAI GPT-4 (mini / 4.1-mini) to analyze, summarize, and translate into Russian \n• Prepares a digest with HTML formatting suitable for Telegram \n• Sends the digest automatically to your chosen Telegram channel/group every 3 hours \n\n## Setup steps\n1. Add your OpenAI and Telegram Bot credentials \n2. In the Telegram node “Post to Group”, set your `chatId` (e.g., @your_channel or numeric ID) \n3. Adjust the scheduler interval if needed (default: every 3 hours) \n4. Run once manually to verify, then activate \n"
},
"typeVersion": 1
},
{
"id": "7454b626-f2d4-448e-bc80-84d01717e9db",
"name": "Coindesk",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
1632,
416
],
"parameters": {
"url": "https://www.coindesk.com/arc/outboundfeeds/rss/",
"options": {}
},
"typeVersion": 1
},
{
"id": "e922b90e-b969-43ee-a720-024ad530f30d",
"name": "Cointelegraph",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
1632,
624
],
"parameters": {
"url": "https://cointelegraph.com/rss",
"options": {}
},
"typeVersion": 1
},
{
"id": "233d8fd9-0668-4065-bee7-43c54ddc2088",
"name": "Decrypt",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
1632,
784
],
"parameters": {
"url": "https://decrypt.co/feed",
"options": {}
},
"typeVersion": 1
},
{
"id": "6af71edd-7cfc-4248-a74a-64dcedd5bc41",
"name": "Cifradobriefing",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
1632,
960
],
"parameters": {
"url": "https://cryptobriefing.com/feed/",
"options": {}
},
"typeVersion": 1.2
},
{
"id": "6df51a25-e8c1-487b-936d-ef581fdc1145",
"name": "Nulltx",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
1632,
256
],
"parameters": {
"url": "https://nulltx.com/feed/",
"options": {}
},
"typeVersion": 1.2
},
{
"id": "5b8057b3-0a26-4d36-b4b1-c0e70e70a932",
"name": "Scheduler",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
1440,
608
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 3
}
]
}
},
"typeVersion": 1.1
},
{
"id": "7bf1189a-5ca2-4df1-9ead-065844d703d0",
"name": "Fusionar",
"type": "n8n-nodes-base.merge",
"position": [
1808,
576
],
"parameters": {
"numberInputs": 5
},
"typeVersion": 3.2
},
{
"id": "09d762cf-11ef-4da0-9d33-96209c75b5e7",
"name": "News Filtrar & Sorter",
"type": "n8n-nodes-base.code",
"position": [
1936,
624
],
"parameters": {
"jsCode": "// Фильтрация и дедупликация новостей\nconst items = $input.all();\nconst now = new Date();\nconst yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000);\n\n// Убираем дубликаты и фильтруем по времени\nconst uniqueNews = [];\nconst seenUrls = new Set();\n\nfor (const item of items) {\n const data = item.json;\n \n // Проверяем дату публикации\n const pubDate = new Date(data.pubDate || data.isoDate);\n if (pubDate < yesterday) continue;\n \n // Проверяем на дубликаты\n if (seenUrls.has(data.link)) continue;\n seenUrls.add(data.link);\n \n // Берем все доступные поля контента\n const rssContent = data['content:encodedSnippet'] || data.content || data.contentSnippet || data.summary || '';\n \n // Очищаем RSS контент от HTML\n const cleanRssContent = rssContent\n .replace(/<[^>]*>/g, '')\n .replace(/&[^;]+;/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n \n // Создаем новый объект, теперь с сохранением contentSnippet\n uniqueNews.push({\n title: data.title,\n link: data.link,\n rssContent: cleanRssContent,\n contentSnippet: data.contentSnippet, // Сохраняем оригинальный contentSnippet\n pubDate: data.pubDate,\n source: data['dc:creator'] || data.meta?.title || 'Unknown',\n guid: data.guid\n });\n}\n\nconsole.log(`Filtered ${uniqueNews.length} unique news from ${items.length} total`);\n\nreturn uniqueNews.map(item => ({ json: item }));"
},
"typeVersion": 2
},
{
"id": "740a3cd2-1919-442c-9f19-0968206d60a4",
"name": "News Formatter",
"type": "n8n-nodes-base.code",
"position": [
2080,
624
],
"parameters": {
"jsCode": "// 1. Получаем все входящие элементы в виде массива\nconst allItems = $input.all();\n\n// 2. Из каждого элемента забираем только его 'json' часть (саму новость)\n// и складываем в новый массив.\nconst newsArray = allItems.map(item => item.json);\n\n// 3. Возвращаем ОДИН-ЕДИНСТВЕННЫЙ новый элемент.\n// У этого элемента будет поле 'data', которое содержит массив всех новостей.\n// Имя 'data' важно, так как оно используется в промте: {{$json.data}}\nreturn [{\n json: {\n data: newsArray\n }\n}];"
},
"typeVersion": 2
},
{
"id": "68236c5d-4344-4653-a135-e126f3133405",
"name": "SMM Editor",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2256,
560
],
"parameters": {
"text": "=You are an SMM editor and the author of a leading Telegram channel about AI. Your task is to create an engaging, stylish, and easy-to-read digest using exclusively HTML tags compatible with Telegram.\n\n**MAIN RULE: It is STRICTLY FORBIDDEN to use any Markdown formatting (symbols , _, , []()). All formatting, especially bold text, must ONLY be done with the HTML <b>` tag. This is the most important rule.\n\nOther rules:\n\nProcess each news item: Go through every object in the provided JSON array sequentially.\n\nDetailed summary with highlights: Write a meaningful summary of 3–5 sentences. Within this text, highlight the <b>key concept of the news</b> — usually the product name, technology, or main announcement. Try to highlight the phrase at the beginning of the text.\n\nFlawless HTML formatting:\n\nThe news headline (from the title field) must be translated into Russian and made bold and underlined, wrapped in <b> and <u> tags.\n\nThe publication date (pubDate) should be formatted as “DD month YYYY, HH:MM” and wrapped in a <code> tag.\n\nThe source link (link) must be formatted as an HTML hyperlink <a href=\"URL\">Read more</a>.\n\nStructure and separators:\n\nDisplay the news items as a numbered list.\n\nSeparate each news item in the list clearly with two line breaks (\\n\\n).\n\nStrictly follow the example structure.\n\nExample structure for ONE news item:\n\n📰 <b><u>[Here the headline translated into Russian]</u></b>\n📝 [Here is a detailed Russian summary where the <b>key phrase of the news</b> is highlighted in bold.]\n📅 <code>28 July 2025, 15:29</code>\n🔗 <a href=\"https://example.com/news-article-url\">Read more</a>\n\nAt the end of each news block, add a line with hashtags that reflect the key concepts of the news. Use tags without spaces and punctuation, always starting with #. Always include a universal tag such as #CryptoDigest to brand the digest.\n\nInput data (news array):\n{{ $json.output }}",
"options": {},
"promptType": "define"
},
"retryOnFail": true,
"typeVersion": 2.1,
"alwaysOutputData": false
},
{
"id": "88e0548e-f9d2-4c45-8ce2-3bd54d54a058",
"name": "Cifrado Analyst",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2256,
784
],
"parameters": {
"text": "=You are a senior analyst at a leading crypto and blockchain media outlet (such as CoinDesk or The Block). Your specialization is identifying the most significant and influential events in the world of crypto and blockchain technologies.\n\nYour task is to analyze the provided array of news articles and identify the 10 most important events or topics of the day. For each of the 10 selected events, you must choose the single best and most informative article that covers it.\n\nStrictly follow this process:\n\nAnalysis: Read all articles to compile a complete list of unique events and topics of the day.\n\nEvaluation: Assess the importance of each event using the criteria below.\n\nSelection: Choose the 10 most important events.\n\nBest article choice: For each of the 10 events, if it is covered by multiple articles, select the one that is the most comprehensive and comes from the most authoritative source.\n\nCriteria for evaluating importance (in order of priority):\n\nFinance and Business:\n\nMajor deals, mergers and acquisitions (M&A) in the crypto industry.\n\nLarge funding rounds for crypto startups (especially over $20M).\n\nStrategic partnerships and contracts with major market players.\n\nProducts and Technology:\n\nLaunch of breakthrough blockchain protocols, cryptocurrencies, DeFi platforms, or NFT projects.\n\nImportant network and protocol updates affecting scalability, security, or functionality.\n\nSignificant changes in APIs, limits, or operational rules of major crypto services.\n\nPolicy and Regulation:\n\nNews about new government laws, regulations, or sanctions directly impacting the crypto market and blockchain technologies.\n\nScientific and Technical Breakthroughs:\n\nPublication of research or new technological solutions that set a new standard in the crypto industry.\n\nOutput format:\nYour answer must be ONLY a valid JSON array containing the full objects of the 10 selected news items (one per event). Do not add any explanations, comments, or text before or after the JSON array.\n\nInput data (news array):\n{{ JSON.stringify($json.data, null, 2) }}",
"options": {},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "146e66bf-9197-431d-83c5-bd29f7d2df5a",
"name": "News Preparer",
"type": "n8n-nodes-base.code",
"position": [
2544,
528
],
"parameters": {
"jsCode": "// Получаем длинный текст из предыдущего узла (AI-агента)\nconst longText = $json.output;\n\n// Устанавливаем максимальную длину сообщения в Telegram\nconst maxLength = 4096;\n\n// Место, где мы будем хранить готовые куски сообщения\nconst chunks = [];\n\nlet remainingText = longText;\n\n// Запускаем цикл, который будет работать, пока не \"нарежем\" весь текст\nwhile (remainingText.length > 0) {\n // Если оставшийся текст уже помещается в одно сообщение, просто добавляем его и выходим\n if (remainingText.length <= maxLength) {\n chunks.push(remainingText);\n break;\n }\n\n // Если текст слишком длинный, ищем последнее \"красивое\" место для разрыва\n // (двойной перенос строки) в пределах лимита\n let splitAt = remainingText.lastIndexOf('\\n\\n', maxLength);\n\n // Если не нашли двойного переноса (например, одна новость сама по себе > 4096 символов),\n // то просто ищем последний перенос строки\n if (splitAt === -1) {\n splitAt = remainingText.lastIndexOf('\\n', maxLength);\n }\n \n // Если даже обычного переноса не нашли, режем \"по живому\", чтобы избежать бесконечного цикла\n if (splitAt === -1) {\n splitAt = maxLength;\n }\n\n // \"Откусываем\" кусок и добавляем его в наш массив\n chunks.push(remainingText.substring(0, splitAt));\n \n // Обновляем оставшийся текст\n remainingText = remainingText.substring(splitAt).trim();\n}\n\n// На выходе мы получаем массив из нескольких элементов,\n// каждый из которых содержит кусок текста для отправки.\n// Мы должны вернуть их в формате, который n8n сможет обработать по одному.\nreturn chunks.map(chunk => ({\n json: {\n // Узел Telegram по умолчанию ищет текст в поле 'text'.\n // Мы сразу кладем наш кусок в это поле.\n text: chunk\n }\n}));"
},
"typeVersion": 2
},
{
"id": "efce0382-d1ce-4feb-bc63-56d2cb9037b6",
"name": "Post to Group",
"type": "n8n-nodes-base.telegram",
"position": [
2720,
528
],
"webhookId": "4006def9-f960-4fb1-a30e-d5f0f7302f5a",
"parameters": {
"text": "={{ $json.text }}",
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"additionalFields": {
"parse_mode": "HTML",
"appendAttribution": false
}
},
"typeVersion": 1.2
},
{
"id": "7dee3286-3bff-493d-8dbe-f251a861d107",
"name": "GPT",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1920,
448
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "RTqRt3IxjOB1wgBx",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "d802a3bf-9a66-4e28-9e29-63b6596a6ed9",
"name": "GPT 2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2064,
448
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "RTqRt3IxjOB1wgBx",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "",
"connections": {
"7dee3286-3bff-493d-8dbe-f251a861d107": {
"ai_languageModel": [
[
{
"node": "Crypto Analyst",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"d802a3bf-9a66-4e28-9e29-63b6596a6ed9": {
"ai_languageModel": [
[
{
"node": "68236c5d-4344-4653-a135-e126f3133405",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "News Filter & Sorter",
"type": "main",
"index": 0
}
]
]
},
"6df51a25-e8c1-487b-936d-ef581fdc1145": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"233d8fd9-0668-4065-bee7-43c54ddc2088": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 2
}
]
]
},
"7454b626-f2d4-448e-bc80-84d01717e9db": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"5b8057b3-0a26-4d36-b4b1-c0e70e70a932": {
"main": [
[
{
"node": "7454b626-f2d4-448e-bc80-84d01717e9db",
"type": "main",
"index": 0
},
{
"node": "e922b90e-b969-43ee-a720-024ad530f30d",
"type": "main",
"index": 0
},
{
"node": "233d8fd9-0668-4065-bee7-43c54ddc2088",
"type": "main",
"index": 0
},
{
"node": "Cryptobriefing",
"type": "main",
"index": 0
},
{
"node": "6df51a25-e8c1-487b-936d-ef581fdc1145",
"type": "main",
"index": 0
}
]
]
},
"68236c5d-4344-4653-a135-e126f3133405": {
"main": [
[
{
"node": "146e66bf-9197-431d-83c5-bd29f7d2df5a",
"type": "main",
"index": 0
}
]
]
},
"e922b90e-b969-43ee-a720-024ad530f30d": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"146e66bf-9197-431d-83c5-bd29f7d2df5a": {
"main": [
[
{
"node": "efce0382-d1ce-4feb-bc63-56d2cb9037b6",
"type": "main",
"index": 0
}
]
]
},
"Crypto Analyst": {
"main": [
[
{
"node": "68236c5d-4344-4653-a135-e126f3133405",
"type": "main",
"index": 0
}
]
]
},
"Cryptobriefing": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 4
}
]
]
},
"740a3cd2-1919-442c-9f19-0968206d60a4": {
"main": [
[
{
"node": "Crypto Analyst",
"type": "main",
"index": 0
}
]
]
},
"News Filter & Sorter": {
"main": [
[
{
"node": "740a3cd2-1919-442c-9f19-0968206d60a4",
"type": "main",
"index": 0
}
]
]
}
}
}¿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 - 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.
Flujos de trabajo relacionados recomendados
Ivan Maksiuta
@zodiacI build production-ready n8n templates—Telegram dashboards, Airtop browser automation, and AI recruiting flows—scalable, compliant, and easy to ship.
Compartir este flujo de trabajo