Workflow: Crypto News & Sentiment
Integrations: code, merge, rssFeedRead, set, stickyNote, telegram, telegramTrigger

{"id": "8v4dynjkHSLVGJSG", "meta": {"instanceId": "a5283507e1917a33cc3ae615b2e7d5ad2c1e50955e6f831272ddd5ab816f3fb6", "templateCredsSetupCompleted": true}, "name": "Crypto News & Sentiment", "tags": [], "nodes": [{"id": "e10ed4da-ab3e-4ff0-b489-a3ed9e88e042", "name": "OpenAI Chat Model", "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", "position": [-1340, 1520], "parameters": {"model": {"__rl": true, "mode": "list", "value": "gpt-4o-mini"}, "options": {}}, "credentials": {"openAiApi": {"id": "yUizd8t0sD5wMYVG", "name": "OpenAi account"}}, "typeVersion": 1.2}, {"id": "edb76989-766a-43e6-bf49-3896a1d257dd", "name": "Set Query", "type": "n8n-nodes-base.set", "position": [-780, 1340], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "9128e9e7-d1b8-4e89-8422-849b8dd519d8", "name": "query", "type": "string", "value": "={{ $json.output }}"}, {"id": "b6adc989-7d3c-4dbb-a659-603591cf1f58", "name": "sessionId", "type": "string", "value": "={{ $('Adds the sessionId').item.json.sessionId }}"}]}}, "typeVersion": 3.4}, {"id": "0ef0571a-d0c2-4f05-898e-1aed56b02d56", "name": "Crypto News & Sentiment Agent", "type": "@n8n/n8n-nodes-langchain.agent", "position": [-1280, 1340], "parameters": {"text": "={{ $('Send Crypto or Company Name for Analysis').item.json.message.text }}", "options": {"systemMessage": "Your job is to analyze the keyword of the question and output it as a single word."}, "promptType": "define"}, "typeVersion": 1.8}, {"id": "8f7859fa-e80c-4c0e-b8b5-5593d5108f5f", "name": "RSS Cointelegraph", "type": "n8n-nodes-base.rssFeedRead", "position": [-160, 500], "parameters": {"url": "https://cointelegraph.com/rss", "options": {}}, "typeVersion": 1.1}, {"id": "5ce9dc61-de8e-4b3a-a0e2-4c077a28e0d4", "name": "RSS Bitcoinmagazine", "type": "n8n-nodes-base.rssFeedRead", "position": [-160, 660], "parameters": {"url": "https://bitcoinmagazine.com/.rss/full/", "options": {}}, "typeVersion": 1.1}, {"id": "d2491728-8a51-4384-adfa-8636f8d8cacd", "name": "RSS Coindesk", "type": "n8n-nodes-base.rssFeedRead", "position": [-160, 820], "parameters": {"url": "https://www.coindesk.com/arc/outboundfeeds/rss/", "options": {}}, "typeVersion": 1.1}, {"id": "60b17a68-b7b0-444f-8bbc-4d9ccfba6892", "name": "RSS Bitcoinist", "type": "n8n-nodes-base.rssFeedRead", "position": [-160, 980], "parameters": {"url": "https://bitcoinist.com/feed/", "options": {}}, "typeVersion": 1.1}, {"id": "82b50de0-68a7-4660-b6d9-fa01922c2492", "name": "RSS Newsbtc", "type": "n8n-nodes-base.rssFeedRead", "position": [-160, 1140], "parameters": {"url": "https://www.newsbtc.com/feed/", "options": {}}, "typeVersion": 1.1}, {"id": "90f9a5be-8eb2-4073-9c18-50478ba4890b", "name": "RSS Cryptopotato", "type": "n8n-nodes-base.rssFeedRead", "position": [-160, 1500], "parameters": {"url": "https://cryptopotato.com/feed/", "options": {}}, "typeVersion": 1.1}, {"id": "6428c19d-c66c-4577-b6ca-8c0c82a757fa", "name": "RSS 99bitcoins", "type": "n8n-nodes-base.rssFeedRead", "position": [-160, 1680], "parameters": {"url": "https://99bitcoins.com/feed/", "options": {}}, "typeVersion": 1.1}, {"id": "b2fc6584-cd64-4b90-91cf-b9bfdc483203", "name": "RSS Cryptobriefing", "type": "n8n-nodes-base.rssFeedRead", "position": [-160, 1860], "parameters": {"url": "https://cryptobriefing.com/feed/", "options": {}}, "typeVersion": 1.1}, {"id": "8be5859b-bb82-4ece-9aa5-5bfbc27e4cca", "name": "RSS Crypto.news", "type": "n8n-nodes-base.rssFeedRead", "position": [-160, 2020], "parameters": {"url": "https://crypto.news/feed/", "options": {}}, "typeVersion": 1.1}, {"id": "b5f393de-a3da-47a4-8a19-ebf53c29051d", "name": "Merge All Articles", "type": "n8n-nodes-base.merge", "position": [520, 1180], "parameters": {"numberInputs": 10}, "typeVersion": 3.1}, {"id": "ce4da50f-ecff-4d13-a90d-e62db6bc3ef9", "name": "Filter by Query", "type": "n8n-nodes-base.code", "position": [760, 1320], "parameters": {"jsCode": "const term = $node[\"Set Query\"].json.query.toLowerCase();\nreturn items.filter(item => {\n  const j            = item.json;\n  const title        = (j.title || \"\").toLowerCase();\n  const snippet      = (j.contentSnippet || j.description || \"\").toLowerCase();\n  const fullContent  = (j.content || \"\").toLowerCase();\n  return title.includes(term)\n      || snippet.includes(term)\n      || fullContent.includes(term);\n});"}, "typeVersion": 2}, {"id": "566e842f-8e2c-491c-87b5-5f1d322a9de8", "name": "Build Prompt", "type": "n8n-nodes-base.code", "position": [1080, 1320], "parameters": {"jsCode": "const q   = $node[\"Set Query\"].json.query;\nconst list = items\n  .map(i => `- ${i.json.title} (${i.json.link})`)\n  .join(\"\\n\");\nconst prompt = `\nYou are a crypto-industry news analyst.\nSummarize current news and market sentiment for **${q}** based on these articles:\n${list}\n\nAnswer in 3 parts:\n1. Summary of News\n2. Market Sentiment\n3. Links to reference news articles\n`;\nreturn [{ json: { prompt } }];"}, "typeVersion": 2}, {"id": "2f5b2eb5-bc2e-432d-b0c8-44c6822b831b", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [2080, 1020], "parameters": {"color": 3, "width": 300, "height": 580, "content": "## Send Telegram Response\n\nSends the final AI-generated summary to the user.\n\u26a0\ufe0f Replace chatId with a dynamic value like << Telegram ID here >> to ensure it sends to the right user."}, "typeVersion": 1}, {"id": "d9f178d6-b834-4a18-b8a5-ab1261b99ca6", "name": "Adds the sessionId", "type": "n8n-nodes-base.set", "position": [-1740, 1340], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "87c63e75-94e4-432c-b15f-8762aa340215", "name": "sessionId", "type": "string", "value": "={{ $json.message.chat.id }}"}]}}, "typeVersion": 3.4}, {"id": "4dd3e531-ab2a-4930-a127-08adb5bde409", "name": "Summarize News & Sentiment (GPT-4o)", "type": "@n8n/n8n-nodes-langchain.openAi", "position": [1360, 1320], "parameters": {"modelId": {"__rl": true, "mode": "list", "value": "gpt-4o", "cachedResultName": "GPT-4O"}, "options": {}, "messages": {"values": [{"content": "={{ $node[\"Build Prompt\"].json.prompt }}"}, {"role": "assistant", "content": "You are a crypto\u2010industry news analyst. Summarize sentiment clearly and concisely."}]}}, "credentials": {"openAiApi": {"id": "yUizd8t0sD5wMYVG", "name": "OpenAi account"}}, "typeVersion": 1.8}, {"id": "b0da1d25-9c17-49a1-85f4-82425e7c9f91", "name": "Prepare Telegram Message", "type": "n8n-nodes-base.set", "position": [1780, 1320], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "565fb705-ac83-4a96-9343-2e29e348cc4f", "name": "summary", "type": "string", "value": "={{ $json.message.content }}"}]}}, "typeVersion": 3.4}, {"id": "95cb909b-51f4-4661-9db5-e8181a7efffe", "name": "Sends Response", "type": "n8n-nodes-base.telegram", "position": [2180, 1320], "webhookId": "8018c16f-426e-4a8b-8fbf-55cc013d1226", "parameters": {"text": "={{ $json.summary }}", "chatId": "<< Add Telegram ID here >>", "additionalFields": {"appendAttribution": false}}, "credentials": {"telegramApi": {"id": "YDlV4LtcNcmNqk4y", "name": "Crypto_News_and_Sentiment_bot"}}, "typeVersion": 1.2}, {"id": "a783bddf-7d70-4345-88f3-c474a50bdea0", "name": "Send Crypto or Company Name for Analysis", "type": "n8n-nodes-base.telegramTrigger", "position": [-2180, 1340], "webhookId": "37a1f055-1670-472d-9850-d89555b7ed47", "parameters": {"updates": ["message"], "additionalFields": {}}, "credentials": {"telegramApi": {"id": "YDlV4LtcNcmNqk4y", "name": "Crypto_News_and_Sentiment_bot"}}, "typeVersion": 1.2}, {"id": "d847a178-c0f2-482b-8773-ac0362435dfd", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [-2320, 1200], "parameters": {"color": 4, "width": 380, "height": 360, "content": "## Telegram Setup \nThis bot listens for incoming messages in Telegram. To use it, create a bot with @BotFather and paste your bot token into the credentials."}, "typeVersion": 1}, {"id": "75ee14cf-6236-4f45-b864-b422f18c8214", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [-1860, 1220], "parameters": {"width": 360, "height": 320, "content": "## Initialize Chat Session\nStores the user's chat ID as sessionId, which is used to manage conversation memory across steps."}, "typeVersion": 1}, {"id": "674f2555-752d-4ffc-894c-efd705f32887", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [-1440, 1200], "parameters": {"color": 6, "width": 600, "height": 460, "content": "##  Extract Keyword \nThis AI agent parses the user input and returns a single-word keyword to help match relevant news articles."}, "typeVersion": 1}, {"id": "bece27b1-bc60-44f7-bdc9-6ec61f7a2e5b", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [-320, 300], "parameters": {"color": 5, "width": 460, "height": 1980, "content": "## News Aggregators\nPulls articles from major crypto news sources. You can add more RSS feeds here to expand coverage."}, "typeVersion": 1}, {"id": "7f7a2949-4147-4ab9-bb52-99c1bb2205ed", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [440, 980], "parameters": {"color": 2, "width": 480, "height": 760, "content": "## Merge & Filter News\nCombines all RSS articles and filters them using the extracted keyword to match only relevant results."}, "typeVersion": 1}, {"id": "d19d53c0-7d23-4ccb-9a68-dc2855e5b73d", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [1000, 1140], "parameters": {"color": 7, "width": 260, "height": 360, "content": "## Prepare AI Prompt\nConstructs the input prompt for GPT-4o with a list of filtered articles. Output includes summary, sentiment, and article links."}, "typeVersion": 1}, {"id": "17607891-ed84-4cca-ad3d-c398e5652a8c", "name": "Sticky Note7", "type": "n8n-nodes-base.stickyNote", "position": [1320, 1100], "parameters": {"color": 3, "width": 340, "height": 440, "content": "## Summarize News & Sentiment (GPT-4o)\nUses OpenAI GPT-4o to generate a concise summary of the news, analyze market sentiment, and return formatted results.\n\n"}, "typeVersion": 1}, {"id": "9d47eb56-4469-4f42-84a1-6f76bb7fa598", "name": "Sticky Note8", "type": "n8n-nodes-base.stickyNote", "position": [1720, 1060], "parameters": {"color": 6, "height": 460, "content": "## Format for Telegram\n\nExtracts the AI summary and prepares it for Telegram delivery. Change the variable if you want to include other data.\n\n\n"}, "typeVersion": 1}, {"id": "7c02860b-f865-4ff9-baeb-0903a76278d9", "name": "Sticky Note9", "type": "n8n-nodes-base.stickyNote", "position": [1140, 320], "parameters": {"width": 520, "content": "## \u2705 How to Use This Template\n \n\ud83d\udee0 1. Connect your Telegram bot\n\ud83e\udd16 2. Add your OpenAI credentials\n\ud83d\udcf0 3. Customize the RSS feeds (optional)\n\u2705 4. Start your bot and send a query like \u201cBitcoin\u201d or \u201cNFT\u201d"}, "typeVersion": 1}], "active": false, "pinData": {}, "settings": {"executionOrder": "v1"}, "versionId": "ae250264-5df8-4341-b198-5272baeadc38", "connections": {"Set Query": {"main": [[{"node": "RSS Cointelegraph", "type": "main", "index": 0}, {"node": "RSS Bitcoinmagazine", "type": "main", "index": 0}, {"node": "RSS Coindesk", "type": "main", "index": 0}, {"node": "RSS Bitcoinist", "type": "main", "index": 0}, {"node": "RSS Newsbtc", "type": "main", "index": 0}, {"node": "RSS Cryptopotato", "type": "main", "index": 0}, {"node": "RSS 99bitcoins", "type": "main", "index": 0}, {"node": "RSS Cryptobriefing", "type": "main", "index": 0}, {"node": "RSS Crypto.news", "type": "main", "index": 0}]]}, "RSS Newsbtc": {"main": [[{"node": "Merge All Articles", "type": "main", "index": 4}]]}, "Build Prompt": {"main": [[{"node": "Summarize News & Sentiment (GPT-4o)", "type": "main", "index": 0}]]}, "RSS Coindesk": {"main": [[{"node": "Merge All Articles", "type": "main", "index": 2}]]}, "RSS 99bitcoins": {"main": [[{"node": "Merge All Articles", "type": "main", "index": 7}]]}, "RSS Bitcoinist": {"main": [[{"node": "Merge All Articles", "type": "main", "index": 3}]]}, "Filter by Query": {"main": [[{"node": "Build Prompt", "type": "main", "index": 0}]]}, "RSS Crypto.news": {"main": [[{"node": "Merge All Articles", "type": "main", "index": 9}]]}, "RSS Cryptopotato": {"main": [[{"node": "Merge All Articles", "type": "main", "index": 6}]]}, "OpenAI Chat Model": {"ai_languageModel": [[{"node": "Crypto News & Sentiment Agent", "type": "ai_languageModel", "index": 0}]]}, "RSS Cointelegraph": {"main": [[{"node": "Merge All Articles", "type": "main", "index": 0}]]}, "Adds the sessionId": {"main": [[{"node": "Crypto News & Sentiment Agent", "type": "main", "index": 0}]]}, "Merge All Articles": {"main": [[{"node": "Filter by Query", "type": "main", "index": 0}]]}, "RSS Cryptobriefing": {"main": [[{"node": "Merge All Articles", "type": "main", "index": 8}]]}, "RSS Bitcoinmagazine": {"main": [[{"node": "Merge All Articles", "type": "main", "index": 1}]]}, "Prepare Telegram Message": {"main": [[{"node": "Sends Response", "type": "main", "index": 0}]]}, "Crypto News & Sentiment Agent": {"main": [[{"node": "Set Query", "type": "main", "index": 0}]]}, "Summarize News & Sentiment (GPT-4o)": {"main": [[{"node": "Prepare Telegram Message", "type": "main", "index": 0}]]}, "Send Crypto or Company Name for Analysis": {"main": [[{"node": "Adds the sessionId", "type": "main", "index": 0}]]}}}