AutomationFlowsAI & RAG › Crypto Market Analysis with Chart-img, Browserai & Gpt Insights to Telegram

Crypto Market Analysis with Chart-img, Browserai & Gpt Insights to Telegram

ByAlex Gurinovich @alexg on n8n.io

AI powered Automated Crypto Insights with Chart-img and BrowserAI

Cron / scheduled trigger★★★★★ complexityAI-powered34 nodesHTTP RequestOutput Parser StructuredOpenRouter ChatAgentTelegram
AI & RAG Trigger: Cron / scheduled Nodes: 34 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #8252 — we link there as the canonical source.

This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "id": "12656cc8-66d8-4327-9bfb-a542635d371a",
      "name": "Get yesterday's date",
      "type": "n8n-nodes-base.code",
      "position": [
        -208,
        576
      ],
      "parameters": {
        "jsCode": "return $input.all().map(item => {\n    const timestamp = item.json.timestamp;\n\n    // Create a Date object using the timestamp\n    const triggerDate = new Date(timestamp);\n\n    // Array of month names\n    const monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n                        \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n\n    // Calculate yesterday's date\n    const yesterday = new Date(triggerDate);\n    yesterday.setDate(triggerDate.getDate() - 1);\n\n    // Format today's date\n    const todayDay = String(triggerDate.getDate()).padStart(2, '0');\n    const todayMonth = triggerDate.getMonth();\n    const todayYear = triggerDate.getFullYear();\n    const formattedToday = `${todayDay}-${monthNames[todayMonth]}-${todayYear}`;\n    const isoToday = `${todayYear}-${String(todayMonth + 1).padStart(2, '0')}-${todayDay}`;\n\n    // Format yesterday's date\n    const day = String(yesterday.getDate()).padStart(2, '0');\n    const month = yesterday.getMonth();\n    const year = yesterday.getFullYear();\n    const formattedYesterday = `${day}-${monthNames[month]}-${year}`;\n    const isoYesterday = `${year}-${String(month + 1).padStart(2, '0')}-${day}`;\n\n    // Return the result as an object\n    return {\n        json: {\n            formattedToday: formattedToday,\n            isoToday: isoToday,\n            formattedYesterday: formattedYesterday,\n            isoYesterday: isoYesterday,\n        }\n    };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "5339fd78-4176-4aa6-981f-4ee1b86ee3d2",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -432,
        576
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 1,13 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b5a080c0-b282-4271-84be-3f8b4c94ae0f",
      "name": "BTCUSD chart",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        16,
        192
      ],
      "parameters": {
        "url": "https://api.chart-img.com/v2/tradingview/advanced-chart",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"symbol\": \"BINANCE:BTCUSD\",\n  \"interval\": \"1h\",\n  \"width\": 800,\n  \"height\": 600,\n  \"style\": \"candle\",\n  \"theme\": \"dark\",\n  \"scale\": \"regular\",\n  \"session\": \"regular\",\n  \"timezone\": \"Etc/UTC\",\n  \"format\": \"png\",\n  \"range\": {\n    \"from\": \"{{ $json.isoYesterday }}T00:00:00.000Z\",\n    \"to\": \"{{ $json.isoToday }}T00:00:00.000Z\"\n  }\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5351056f-67ea-45fa-a3ad-2b41c91f77f4",
      "name": "ETHUSD chart",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        16,
        384
      ],
      "parameters": {
        "url": "https://api.chart-img.com/v2/tradingview/advanced-chart",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"symbol\": \"BINANCE:ETHUSD\",\n  \"interval\": \"1h\",\n  \"width\": 800,\n  \"height\": 600,\n  \"style\": \"candle\",\n  \"theme\": \"dark\",\n  \"scale\": \"regular\",\n  \"session\": \"regular\",\n  \"timezone\": \"Etc/UTC\",\n  \"format\": \"png\",\n  \"range\": {\n    \"from\": \"{{ $json.isoYesterday }}T00:00:00.000Z\",\n    \"to\": \"{{ $json.isoToday }}T00:00:00.000Z\"\n  }\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "78a74ffd-7c20-419b-8f6e-cf7803ec23fa",
      "name": "SOLUSD chart",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        16,
        576
      ],
      "parameters": {
        "url": "https://api.chart-img.com/v2/tradingview/advanced-chart",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"symbol\": \"BINANCE:SOLUSD\",\n  \"interval\": \"1h\",\n  \"width\": 800,\n  \"height\": 600,\n  \"style\": \"candle\",\n  \"theme\": \"dark\",\n  \"scale\": \"regular\",\n  \"session\": \"regular\",\n  \"timezone\": \"Etc/UTC\",\n  \"format\": \"png\",\n  \"range\": {\n    \"from\": \"{{ $json.isoYesterday }}T00:00:00.000Z\",\n    \"to\": \"{{ $json.isoToday }}T00:00:00.000Z\"\n  }\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8e971aa4-5e38-4e35-b349-2ef9a6ed005a",
      "name": "XRPUSD chart",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        16,
        768
      ],
      "parameters": {
        "url": "https://api.chart-img.com/v2/tradingview/advanced-chart",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"symbol\": \"BINANCE:XRPUSD\",\n  \"interval\": \"1h\",\n  \"width\": 800,\n  \"height\": 600,\n  \"style\": \"candle\",\n  \"theme\": \"dark\",\n  \"scale\": \"regular\",\n  \"session\": \"regular\",\n  \"timezone\": \"Etc/UTC\",\n  \"format\": \"png\",\n  \"range\": {\n    \"from\": \"{{ $json.isoYesterday }}T00:00:00.000Z\",\n    \"to\": \"{{ $json.isoToday }}T00:00:00.000Z\"\n  }\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a657bb19-e3dd-45cf-9b01-1b62fd660788",
      "name": "BTCUSD image converter",
      "type": "n8n-nodes-base.code",
      "position": [
        240,
        192
      ],
      "parameters": {
        "jsCode": "// Get binary data from the previous node\nconst imageBinaryData = items[0].binary.data;\n\n// Convert binary data to base64 string\nconst base64BTC = imageBinaryData.data;\n\n// Output the base64 string\nreturn [\n  {\n    json: {\n      base64BTC,\n    },\n  },\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f9939c01-12a2-482b-af7f-ba62ae76eed5",
      "name": "ETHUSD image converter",
      "type": "n8n-nodes-base.code",
      "position": [
        240,
        384
      ],
      "parameters": {
        "jsCode": "// Get binary data from the previous node\nconst imageBinaryData = items[0].binary.data;\n\n// Convert binary data to base64 string\nconst base64ETH = imageBinaryData.data;\n\n// Output the base64 string\nreturn [\n  {\n    json: {\n      base64ETH,\n    },\n  },\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ff9bcc7a-ea3b-41c6-916c-000afc687b3d",
      "name": "SOLUSD image converter",
      "type": "n8n-nodes-base.code",
      "position": [
        240,
        576
      ],
      "parameters": {
        "jsCode": "// Get binary data from the previous node\nconst imageBinaryData = items[0].binary.data;\n\n// Convert binary data to base64 string\nconst base64SOL = imageBinaryData.data;\n\n// Output the base64 string\nreturn [\n  {\n    json: {\n      base64SOL,\n    },\n  },\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "c2e62960-24cb-49c9-83c2-9659e0544021",
      "name": "XRPUSD image converter",
      "type": "n8n-nodes-base.code",
      "position": [
        240,
        768
      ],
      "parameters": {
        "jsCode": "// Get binary data from the previous node\nconst imageBinaryData = items[0].binary.data;\n\n// Convert binary data to base64 string\nconst base64XRP = imageBinaryData.data;\n\n// Output the base64 string\nreturn [\n  {\n    json: {\n      base64XRP,\n    },\n  },\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "eb8895b5-bc85-4034-af4d-0bb1f181949f",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        464,
        288
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "01f259be-4554-4277-b4e2-3d91c6aeef91",
      "name": "Structured Output Parser2",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1040,
        704
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"BTC\": {\n    \"description\": \"...\"\n  },\n  \"ETH\": {\n    \"description\": \"...\"\n  },\n  \"SOL\": {\n    \"description\": \"...\"\n  },\n  \"XRP\": {\n    \"description\": \"...\"\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "00ae7615-3f93-406d-97aa-bf8f964235ca",
      "name": "OpenRouter Chat Model4",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1120,
        912
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e87803b1-e02c-46be-b356-1b1ca4bff6c9",
      "name": "OpenRouter Chat Model5",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        912,
        704
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fbdb0433-a8eb-4754-ba08-72107b3a70bd",
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        464,
        672
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "a55f3b88-6759-4f1a-a299-762ee83e14fa",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1840,
        976
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"BTC\": {\n    \"information\": \"...\"\n  },\n  \"ETH\": {\n    \"information\": \"...\"\n  },\n  \"SOL\": {\n    \"information\": \"...\"\n  },\n  \"XRP\": {\n    \"information\": \"...\"\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "2c61bbaa-7ccd-4de4-8fd5-dfe25d52ca07",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1920,
        1184
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2045a65a-9b59-449b-88a7-6fa9aa66e262",
      "name": "OpenRouter Chat Model6",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1712,
        976
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "928ca775-b693-486b-9c42-83743a216103",
      "name": "Get task results",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        240,
        1184
      ],
      "parameters": {
        "url": "=https://browser.ai/api/v1/tasks/{{ $json.executionId }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ffab2bac-83ee-46f4-bbda-6c9f3923c2d4",
      "name": "Check if finalized",
      "type": "n8n-nodes-base.switch",
      "position": [
        464,
        1136
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Finalized",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8dba0195-1f71-47b0-9446-efe66c53c5d8",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "finalized"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Running",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "c6342cee-39f5-46c7-9944-903334d3185a",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "running"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Queued",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "ab1849c1-86a7-4ee2-a6b5-54e7f67790ce",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "queued"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Failed",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "ef7c0700-3742-4a15-a0f3-44a5d85ef13b",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "failed"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Stopped",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6311899b-f093-4717-833d-837c2fdf58bd",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "stopped"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "a7bb1a77-55a7-4404-bbde-95e0f3049f1a",
      "name": "Wait if not finished",
      "type": "n8n-nodes-base.wait",
      "position": [
        688,
        1184
      ],
      "parameters": {
        "amount": 45
      },
      "typeVersion": 1.1
    },
    {
      "id": "5566640b-8efd-4875-8463-e32be9823fad",
      "name": "Create BrowserAI task",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        16,
        1184
      ],
      "parameters": {
        "url": "https://browser.ai/api/v1/tasks",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"geoLocation\": {\n    \"country\": \"us\"\n  },\n  \"project\": \"Project_1\",\n  \"type\": \"crawler_automation\",\n  \"inspect\": true,\n  \"instructions\": [\n    {\n      \"action\": \"Please gather and summarize the latest news and updates regarding cryptocurrency. The summary should include key developments and insights about BTC, ETH, SOL, and XRP up to the date of {{ $json.formattedYesterday }}.\"\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c7945019-65cc-42d9-93e3-0fc1dfb129e7",
      "name": "Merge all graphs",
      "type": "n8n-nodes-base.merge",
      "position": [
        688,
        480
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "2b7405c8-c0a5-457c-bb2d-0a0c3b6e4f53",
      "name": "Merge graphs and BrowserAI",
      "type": "n8n-nodes-base.merge",
      "position": [
        1488,
        752
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "2a7e0868-8f1b-47a1-8895-fad13540db33",
      "name": "AI graph analyzer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        944,
        480
      ],
      "parameters": {
        "text": "=Please take a look at these base64-encoded images of BTC, ETH, SOL, and XRP graphs from the last 24 hours. Write a simple, 40-word description for each.\n\nbtc: {{ $json.base64BTC }}\neth: {{ $json.base64ETH }}\nsol: {{ $json.base64SOL }}\nxrp: {{ $json.base64XRP }}",
        "options": {
          "systemMessage": "The AI agent will convert the base64 strings into images and check them out. Craft easy-to-understand, 40-word descriptions for each, highlighting trends, big moves, and any interesting patterns in the graphs.\n\nReturn your analysis in the following JSON format:\n{\n  \"BTC\": {\n    \"description\": \"...\"\n  },\n  \"ETH\": {\n    \"description\": \"...\"\n  },\n  \"SOL\": {\n    \"description\": \"...\"\n  },\n  \"XRP\": {\n    \"description\": \"...\"\n  }\n}"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "f10721dd-0e3e-4608-a50b-9ea2eb6cda09",
      "name": "AI crypto summarizer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1744,
        752
      ],
      "parameters": {
        "text": "=Combine the graph descriptions with the web summary for BTC, ETH, SOL, and XRP. Make a simple, boosted description for each coin.\n\nGraph Descriptions:\nBTC: {{ $json.output.BTC.description }}\nETH: {{ $json.output.ETH.description }}\nSOL: {{ $json.output.SOL.description }}\nXRP: {{ $json.output.XRP.description }}\n\nWeb Summary: {{ $json.result }}\n",
        "options": {
          "systemMessage": "Mix the graph descriptions with the web summary to create better information for BTC, ETH, SOL, and XRP. Use easy words, focus on key trends and changes, and keep it under 60 words.\n\nReturn the new information like this:\n{\n  \"BTC\": {\n    \"information\": \"...\"\n  },\n  \"ETH\": {\n    \"information\": \"...\"\n  },\n  \"SOL\": {\n    \"information\": \"...\"\n  },\n  \"XRP\": {\n    \"information\": \"...\"\n  }\n}"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "1114e588-4c00-4015-bb07-b04232e17195",
      "name": "Send a text message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2208,
        752
      ],
      "parameters": {
        "text": "=Here's your half-day crypto update as of {{ $('Get yesterday\\'s date').item.json.formattedYesterday }}:\n\n\ud83d\udcb8 Bitcoin - {{ $json.output.BTC.information }}\n\n\ud83d\udcb8 Ethereum - {{ $json.output.ETH.information }}\n\n\ud83d\udcb8 Solana - {{ $json.output.SOL.information }}\n\n\ud83d\udcb8 XRP - {{ $json.output.XRP.information }}",
        "chatId": "YOUR_CHAT_ID",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "3e373cdd-663b-4a33-b81f-912de7f5f14c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1680,
        592
      ],
      "parameters": {
        "width": 416,
        "height": 352,
        "content": "## Merge the last 24-hour analyses from both [Chart-img](https://chart-img.com/) and [BrowserAI](https://browser.ai/) for a comprehensive summary"
      },
      "typeVersion": 1
    },
    {
      "id": "541040dc-c190-411a-b964-c73fa334ee1e",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        352
      ],
      "parameters": {
        "color": 3,
        "width": 416,
        "height": 320,
        "content": "## Review and merge all [Chart-img](https://chart-img.com/) graph analyses into one cohesive message"
      },
      "typeVersion": 1
    },
    {
      "id": "ccb50462-5115-46b5-be86-529805761ce8",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "color": 2,
        "width": 816,
        "height": 912,
        "content": "## Utilize [Chart-img](https://chart-img.com/)'s API to capture screenshots of the coin's graphs from the past 24 hours and convert them into base64 strings\n\n- Use the basic free tier of Chart-img.\n- [Get your API key](https://chart-img.com/account/api) and specify which coin you want to capture.\n- Convert the result image into a base64 string to seamlessly feed it to the AI model."
      },
      "typeVersion": 1
    },
    {
      "id": "0482ccde-64fd-43fc-b986-c1e8b50988a1",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        928
      ],
      "parameters": {
        "color": 4,
        "width": 816,
        "height": 448,
        "content": "## Leverage [BrowserAI](https://browser.ai/)'s web scraping capabilities to search, extract, analyze, and gather essential information about those coins from the last 24 hours\n\n- Sign up for BrowserAI for free, obtain your [API key](https://browser.ai/dashboard/page/account/tab/api_key), and assign it a task to find the necessary information.\n- Launch and monitor the task until completion.\n- If it fails or stops, relaunch the task automatically."
      },
      "typeVersion": 1
    },
    {
      "id": "254b9aca-b5aa-4bef-be5f-5c62b0870069",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        480
      ],
      "parameters": {
        "color": 5,
        "width": 368,
        "height": 224,
        "content": "## Run the analyst twice daily at 8AM and 8PM"
      },
      "typeVersion": 1
    },
    {
      "id": "7fadae28-7bf3-4dfd-b03d-2db3ae477af8",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        592
      ],
      "parameters": {
        "color": 6,
        "width": 256,
        "height": 304,
        "content": "## Send the results to your Telegram chat\n\nAlternatively,  WhatsApp, email, or other platforms can work as well."
      },
      "typeVersion": 1
    },
    {
      "id": "080f2859-88d7-474a-83c6-f038a0e828bc",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        912,
        1104
      ],
      "parameters": {
        "color": 7,
        "width": 736,
        "height": 224,
        "content": "# WARNING: This template is intended for personal use only and does not constitute financial advice. Any actions taken using this tool are solely the user's responsibility."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Merge all graphs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "Merge all graphs",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "BTCUSD chart": {
      "main": [
        [
          {
            "node": "BTCUSD image converter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ETHUSD chart": {
      "main": [
        [
          {
            "node": "ETHUSD image converter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SOLUSD chart": {
      "main": [
        [
          {
            "node": "SOLUSD image converter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "XRPUSD chart": {
      "main": [
        [
          {
            "node": "XRPUSD image converter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get task results": {
      "main": [
        [
          {
            "node": "Check if finalized",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge all graphs": {
      "main": [
        [
          {
            "node": "AI graph analyzer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get yesterday's date",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI graph analyzer": {
      "main": [
        [
          {
            "node": "Merge graphs and BrowserAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if finalized": {
      "main": [
        [
          {
            "node": "Merge graphs and BrowserAI",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "Wait if not finished",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait if not finished",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create BrowserAI task",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create BrowserAI task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI crypto summarizer": {
      "main": [
        [
          {
            "node": "Send a text message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get yesterday's date": {
      "main": [
        [
          {
            "node": "BTCUSD chart",
            "type": "main",
            "index": 0
          },
          {
            "node": "ETHUSD chart",
            "type": "main",
            "index": 0
          },
          {
            "node": "SOLUSD chart",
            "type": "main",
            "index": 0
          },
          {
            "node": "XRPUSD chart",
            "type": "main",
            "index": 0
          },
          {
            "node": "Create BrowserAI task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait if not finished": {
      "main": [
        [
          {
            "node": "Get task results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create BrowserAI task": {
      "main": [
        [
          {
            "node": "Get task results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "BTCUSD image converter": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ETHUSD image converter": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "OpenRouter Chat Model4": {
      "ai_languageModel": [
        [
          {
            "node": "Structured Output Parser2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model5": {
      "ai_languageModel": [
        [
          {
            "node": "AI graph analyzer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model6": {
      "ai_languageModel": [
        [
          {
            "node": "AI crypto summarizer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "SOLUSD image converter": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "XRPUSD image converter": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI crypto summarizer",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser2": {
      "ai_outputParser": [
        [
          {
            "node": "AI graph analyzer",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Merge graphs and BrowserAI": {
      "main": [
        [
          {
            "node": "AI crypto summarizer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

AI powered Automated Crypto Insights with Chart-img and BrowserAI

Source: https://n8n.io/workflows/8252/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This cutting-edge n8n workflow is a comprehensive automation solution designed to streamline various Instagram operations. It combines an intelligent AI chatbot for direct message management, automate

Agent, OpenRouter Chat, Output Parser Structured +4
AI & RAG

This workflow automatically generates stock market insights for selected tickers (e.g. GAZP, SBER, LKOH) using historical data, technical indicators, and an AI model. The results are then sent to Tele

Agent, OpenRouter Chat, Telegram Trigger +5
AI & RAG

Complete PostgreSQL-backed system: Keyword scoring → AI research → Multi-part content generation → fal.ai Nano Banana image generation → WordPress publishing

WordPress, OpenAI, Perplexity +8
AI & RAG

RAG CHATBOT Main. Uses telegram, telegramTrigger, lmChatOpenAi, n8n-nodes-mcp. Event-driven trigger; 87 nodes.

Telegram, Telegram Trigger, OpenAI Chat +8
AI & RAG

Author: Nguyen Thieu Toan Category: Community & Knowledge Automation Tags: Telegram, Reddit, n8n Forum, AI Summarization, Gemini, Groq

Groq Chat, Output Parser Structured, Memory Mongo Db Chat +5