私のワーキフロー 6
上級
これはMultimodal AI分野の自動化ワークフローで、16個のノードを含みます。主にCode, Merge, Telegram, RssFeedRead, Agentなどのノードを使用。 RSSフィードとGPT-4を使った自動化暗号通貨ニュースのサマリーTelegramへの送信
前提条件
- •Telegram Bot Token
- •OpenAI API Key
カテゴリー
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "76756538d0e97eaf241d3d1243f7a3d2310b1d99252889d76c80d005e2ba5e9c",
"templateCredsSetupCompleted": true
},
"name": "My workflow 6",
"tags": [],
"nodes": [
{
"id": "2a4065e4-81e6-45c8-984c-605d3a7a3752",
"name": "付箋",
"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": "Cryptobriefing",
"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": "スケジューラー",
"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": "マージ",
"type": "n8n-nodes-base.merge",
"position": [
1808,
576
],
"parameters": {
"numberInputs": 5
},
"typeVersion": 3.2
},
{
"id": "09d762cf-11ef-4da0-9d33-96209c75b5e7",
"name": "ニュースフィルター&ソーター",
"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": "ニュースフォーマッター",
"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エディター",
"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": "Crypto 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": "ニュース準備",
"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": "グループに投稿",
"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": "88e0548e-f9d2-4c45-8ce2-3bd54d54a058",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"d802a3bf-9a66-4e28-9e29-63b6596a6ed9": {
"ai_languageModel": [
[
{
"node": "68236c5d-4344-4653-a135-e126f3133405",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"7bf1189a-5ca2-4df1-9ead-065844d703d0": {
"main": [
[
{
"node": "09d762cf-11ef-4da0-9d33-96209c75b5e7",
"type": "main",
"index": 0
}
]
]
},
"6df51a25-e8c1-487b-936d-ef581fdc1145": {
"main": [
[
{
"node": "7bf1189a-5ca2-4df1-9ead-065844d703d0",
"type": "main",
"index": 0
}
]
]
},
"233d8fd9-0668-4065-bee7-43c54ddc2088": {
"main": [
[
{
"node": "7bf1189a-5ca2-4df1-9ead-065844d703d0",
"type": "main",
"index": 2
}
]
]
},
"7454b626-f2d4-448e-bc80-84d01717e9db": {
"main": [
[
{
"node": "7bf1189a-5ca2-4df1-9ead-065844d703d0",
"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": "6af71edd-7cfc-4248-a74a-64dcedd5bc41",
"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": "7bf1189a-5ca2-4df1-9ead-065844d703d0",
"type": "main",
"index": 1
}
]
]
},
"146e66bf-9197-431d-83c5-bd29f7d2df5a": {
"main": [
[
{
"node": "efce0382-d1ce-4feb-bc63-56d2cb9037b6",
"type": "main",
"index": 0
}
]
]
},
"88e0548e-f9d2-4c45-8ce2-3bd54d54a058": {
"main": [
[
{
"node": "68236c5d-4344-4653-a135-e126f3133405",
"type": "main",
"index": 0
}
]
]
},
"6af71edd-7cfc-4248-a74a-64dcedd5bc41": {
"main": [
[
{
"node": "7bf1189a-5ca2-4df1-9ead-065844d703d0",
"type": "main",
"index": 4
}
]
]
},
"740a3cd2-1919-442c-9f19-0968206d60a4": {
"main": [
[
{
"node": "88e0548e-f9d2-4c45-8ce2-3bd54d54a058",
"type": "main",
"index": 0
}
]
]
},
"09d762cf-11ef-4da0-9d33-96209c75b5e7": {
"main": [
[
{
"node": "740a3cd2-1919-442c-9f19-0968206d60a4",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
取引所の流動性AIアジェント
10の取引所の流動性データとGPT-4.1を使用して、ビットコインの取引に関する洞察を自動化
Code
Merge
Telegram
+
Code
Merge
Telegram
50 ノードDon Jayamaha Jr
コンテンツ作成
GPT-4駆動のカールドメールワークフロー(完全カスタマイズされた3本のメールフォロー付き)
GPT-4、Mailgun、Supabaseを使ってパーソナライズされたラグディ冷信Seriesを自動化
If
Set
Code
+
If
Set
Code
100 ノードPaul
リードナーチャリング
完全な B2B セールスフロー:Apollo リード生成、Mailgun 外信、および AI 返信管理
完全なB2Bセールスフロー:Apolloリード生成、Mailgunアウト Reach、AI返信管理
If
Set
Code
+
If
Set
Code
116 ノードPaul
コンテンツ作成
毎日のスポーツ要約
Google Gemini、Kokoro TTS、FFmpegを使用してRSSフィードをポッドキャストに変換
If
Set
Code
+
If
Set
Code
34 ノードJonas
コンテンツ作成
Apify、AIによる募集情報照合でThreadsの募集ポストをTelegramで通知
Apify、AI によるフィルタリングと Telegram 通知で Threads 上の求人募集投稿を発見
If
Set
Code
+
If
Set
Code
19 ノードA Z
コンテンツ作成
GPT-4o、WordPress、LinkedInを使ってRSSから自動でブログ記事を投稿
GPT-4o、WordPress、LinkedInを使ってRSSコンテンツを自動のにブログ記事へ公開
If
Set
Code
+
If
Set
Code
40 ノードImmanuel
人工知能
ワークフロー情報
難易度
上級
ノード数16
カテゴリー1
ノードタイプ8
作成者
Ivan Maksiuta
@zodiacI build production-ready n8n templates—Telegram dashboards, Airtop browser automation, and AI recruiting flows—scalable, compliant, and easy to ship.
外部リンク
n8n.ioで表示 →
このワークフローを共有