{
  "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⚠️ 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‐industry 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": "## ✅ How to Use This Template\n \n🛠 1. Connect your Telegram bot\n🤖 2. Add your OpenAI credentials\n📰 3. Customize the RSS feeds (optional)\n✅ 4. Start your bot and send a query like “Bitcoin” or “NFT”"
      },
      "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
          }
        ]
      ]
    }
  }
}