---
title: "Telegram stock chart analyst with voice messages"
kind: "Kit"
category: "Business"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/a918ff9c-d835-4191-9ec0-015df0fd11ac"
updated: "2026-11-09"
---

# Telegram stock chart analyst with voice messages

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that turns a Telegram bot into a stock chart analyst. Send a ticker by text or voice note, and it draws a chart with volume, RSI and MACD on Chart-Img, has gpt-4o read it and replies with a seven-part technical report.

Telegram stock chart analyst with voice messages is an n8n workflow in the Business category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-09. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow turns a Telegram bot into a stock chart analyst that takes text or voice. You send a ticker, such as NASDAQ:AAPL, and ask for a reading. A voice note is transcribed first. An AI agent on gpt-4o then calls a chart tool built into the same file. Twelve Data finds the exchange when you leave it out, and Chart-Img draws a dark chart with volume, RSI and MACD. A second gpt-4o call reads that picture and writes a seven-section report. The chart arrives as a photo, and the agent answers with what the report found.

You send a ticker by text or voice note → The agent on gpt-4o calls its chart tool → Twelve Data finds the exchange and Chart-Img draws the chart → gpt-4o reads the chart picture in seven sections → The photo and the agent’s answer arrive in Telegram

### Who it suits

Retail traders and finance learners who want a quick chart reading on their phone, and creators who post market commentary. It knows NASDAQ and India’s NSE best. Skip it if you want figures from price data, because gpt-4o reads values off a picture.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Retail trading | Traders who follow a watchlist | Ask for a daily or weekly reading before the market opens | A trader sends a voice note asking for NSE:TCS on the daily chart and reads the report over breakfast. |
| Finance education | Teachers of technical analysis | Show how MACD, RSI and volume read on a current chart | A tutor asks for three tickers and compares the bot’s MACD notes with the class’s own. |
| Market content | Creators who post about stocks | Get a chart picture and a first reading to check before a post | A creator asks for NASDAQ:NVDA weekly and checks the support levels by eye before writing. |
| Investment clubs | Members who share ideas | Point \`Send Chart\` at the club’s group chat, so every chart lands there | A member asks the bot in private, and the chart appears in the group for the next meeting. |

You need some n8n for this one. The agent’s tool calls this same workflow, and two keys go into node fields. Its author puts setup at about 11 minutes.

### Where to use it

Any n8n that Telegram can reach over HTTPS will run it, since Telegram calls the trigger as a webhook.

- n8n Cloud: import the file, save it once, then point \`Get Chart\` at the same workflow
- Your own n8n server: the same steps, on a public HTTPS address
- Telegram: a private chat with the bot, by text or voice note
- A fixed chat: \`Send Chart\` posts every picture to the chat ID you set, which can be a group

### How to set it up

Get it saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. The file holds two parts, the bot on top and the chart tool it calls below.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server Telegram can reach over HTTPS |
| Telegram | A bot token from BotFather, and the chat ID the chart pictures go to |
| OpenAI | An API key, used by \`OpenAI Chat Model\`, \`Transcribe\` and \`Technical Analysis\` |
| Chart-Img | An API key |
| Twelve Data | An API key, for the exchange lookup |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`. Save once so it has an ID.
2. Add a Telegram API credential and select it in `Telegram Trigger`, `Download File`, `Send Analysis` and `Send Chart`.
3. Add an OpenAI credential and select it in `OpenAI Chat Model`, `Transcribe` and `Technical Analysis`.
4. Open `Get Chart`, the red tool under `AI Agent`, and choose this same workflow from the list.
5. In `Get Chart URL`, replace `YOUR_CHART_IMG_KEY` in the `x-api-key` header with your Chart-Img key.
6. In `Lookup Exchange`, replace `<YOUR_TWELVE_DATA_KEY>`, brackets included, with your Twelve Data key.
7. In `Send Chart`, replace `YOUR_CHAT_ID` with the chat the pictures go to.
8. Restrict `Telegram Trigger` to your own user ID, save and press Publish.

The chart tool gets the ticker and the interval but not the chat, which is why `Send Chart` needs a fixed ID. The README shows how to pass the chat along as a third input, for a bot that several people use.

### How to use it

Message the bot a ticker and the reading you want, typed or spoken. Put the exchange in front, as in NSE:INFY, and name the interval, such as daily. Without an exchange the lookup runs and the chart falls back to weekly. A general finance question gets an answer with no chart, and the agent’s prompt has it decline anything off topic.

What to change for a different result

| To change | Where |
| --- | --- |
| Default interval | The agent’s system message and \`Parse Interval\`, both set to 1W |
| Chart look | The body of \`Get Chart URL\`: the theme, the three studies and the MACD signal line’s color |
| Report sections | The prompt in \`Technical Analysis\` |
| Topics it accepts | The guard at the top of the agent’s system message |
| Exchanges | The prefix rules in \`Parse Interval\`, which know NASDAQ and NSE |

### Example

You send the bot a voice note asking for Apple on the daily chart, on NASDAQ. `Transcribe` turns it into text, and the agent calls `Get Chart` with values like these:

```json
{ "ticker": "NASDAQ:AAPL", "interval": "daily" }
```

The ticker has its exchange, so the lookup is skipped and `Parse Interval` sends `1D`. Chart-Img stores a dark daily chart with volume, RSI and MACD, and `Send Chart` posts it. The report has seven `###` sections, from Candlestick Analysis to Other Observations. The agent sums it up in its reply.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This file holds two workflows in one. The top row is the bot, and the bottom row is a tool its agent can call, with a trigger of its own. That is why `Get Chart` must point at this same workflow. Publish, send a ticker, then open Executions to follow both rows.

**For experts.** Two gpt-4o calls do the thinking. The code between them decides which chart you get.

The nodes that shape the answer

| Node | What it does | What to know |
| --- | --- | --- |
| \`AI Agent\` | gpt-4o, with five exchanges of memory for each chat | Defaults to 1W and assumes NSE for well-known Indian names |
| \`Parse Interval\` | Maps words to interval codes and builds \`EXCHANGE:SYMBOL\` | After a lookup it reads Twelve Data’s reply, which has no interval, so the chart is weekly |
| \`Get Chart URL\` | POSTs to Chart-Img’s advanced-chart storage endpoint | Returns the stored picture’s \`url\` |
| \`Technical Analysis\` | gpt-4o image analysis on the downloaded chart | Reads values off the picture, not from price data |
| \`response\` | Returns the report to the agent | The chart’s address is not in it |

Chart-Img’s documentation, read on 2 November 2026, lists intraday intervals as `5m`, `15m`, `30m` and `1h`. `Parse Interval` sends `5`, `30` and `60` for those, and a request for 15m becomes `5` because the 5m rule matches it first. Daily and longer codes match the list.

### Good to know

The fixes worth making first are where the chart goes and how tickers are read.

- One chat for every chart: \`Send Chart\` posts to the chat ID you set, whoever asked
- Lost interval: a ticker without its exchange always gets a weekly chart
- Exchange guess: a NASDAQ match gets \`NASDAQ:\`, every other exchange gets \`NSE:\`, NYSE included, and a lookup with no match charts NSE:RELIANCE
- No link for the agent: the tool returns the report alone, so a chart link in the agent’s answer points nowhere. The photo is the chart
- Picture reading: RSI values and levels are read off an image and can be wrong, and nothing the bot says is financial advice
- Open bot: anyone who finds it spends your OpenAI, Chart-Img and Twelve Data calls until you restrict the trigger
- Billing: two gpt-4o calls for each chart, a transcription for each voice note, and one call each to Chart-Img and Twelve Data
- Long replies: Telegram takes 4,096 characters a message, and a longer answer fails at \`Send Analysis\`
- Where data goes: messages and voice notes go to OpenAI, tickers to Twelve Data and Chart-Img, and Chart-Img keeps each picture at a public address for a time your plan sets
- Credentials: the JSON holds none, and nothing from its author’s account

## README

```markdown
# Telegram stock chart analyst with voice messages

An n8n workflow. Send a Telegram bot a stock ticker by text or voice note. An AI agent has Chart-Img draw the chart with
volume, RSI and MACD, gpt-4o reads the picture, and the bot replies with a technical reading and the chart.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 22 nodes in two parts, two of them sticky notes. The top part is the
  bot and its agent. The bottom part, which starts at `Workflow Input Trigger`, is the chart tool the agent calls. The
  file holds no credential. The two API keys and the chat ID are placeholders, and the agent's tool `Get Chart` arrives
  empty, so n8n marks it red until you point it at this workflow.
- `README.md`: these notes.

## Before you start

- An n8n instance that Telegram can reach over HTTPS, on n8n Cloud or your own server.
- A Telegram bot token from BotFather, and the chat ID the chart pictures should go to.
- An OpenAI API key.
- A Chart-Img API key.
- A Twelve Data API key.

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`, then save once so the
   workflow has an ID.
2. Add a Telegram API credential with the bot token and select it in `Telegram Trigger`, `Download File`,
   `Send Analysis` and `Send Chart`.
3. Add an OpenAI credential and select it in `OpenAI Chat Model`, `Transcribe` and `Technical Analysis`.
4. Open `Get Chart`, the red tool under `AI Agent`, and choose this same workflow from the list. Its call starts the
   bottom part at `Workflow Input Trigger`.
5. In `Get Chart URL`, replace `YOUR_CHART_IMG_KEY` in the `x-api-key` header with your Chart-Img key.
6. In `Lookup Exchange`, replace `<YOUR_TWELVE_DATA_KEY>` at the end of the address with your Twelve Data key, brackets
   included.
7. In `Send Chart`, replace `YOUR_CHAT_ID` with the chat the pictures go to (below).
8. In `Telegram Trigger`, set Restrict to User IDs under Additional Fields to your own ID, unless others should use it.
9. Save, press Publish and send the bot a ticker.

## Where the chart picture goes

`Send Chart` sits in the bottom part, which receives the ticker and the interval but not the chat. Every picture goes to
the one chat ID you type in, whoever asked. For a bot only you use, put your own ID there: message the bot once while you
test and read `message.chat.id` in the output of `Telegram Trigger`.

For a bot several people use, pass the chat along. Add a third input, `chatId`, to `Workflow Input Trigger`. In
`Get Chart`, set it to `{{ $('Telegram Trigger').item.json.message.chat.id }}`. Then set the Chat ID of `Send Chart` to
`{{ $('Workflow Input Trigger').item.json.chatId }}`.

## What happens to a message

| Step | Nodes | What happens |
|---|---|---|
| Voice or text | `Switch` | A voice note goes to `Download File` and `Transcribe`, and a text message to `Set Text` |
| The agent | `AI Agent`, `OpenAI Chat Model`, `Window Buffer Memory` | gpt-4o reads the text with the chat's last five exchanges and calls `Get Chart` for a ticker |
| The ticker | `Check Ticker Format`, `Lookup Exchange`, `Parse Interval` | A ticker without an exchange, such as `AAPL`, is looked up on Twelve Data. One with it, such as `NASDAQ:AAPL`, goes straight on |
| The chart | `Get Chart URL`, `Download Chart` | Chart-Img draws a dark chart with volume, RSI and MACD, stores it and returns its address |
| The reading | `Technical Analysis` | gpt-4o reads the picture and writes a report in seven sections |
| The replies | `Send Chart`, `response`, `Send Analysis` | The picture goes to the chat in `Send Chart`, the report returns to the agent, and the agent's answer goes to the chat that asked |

The seven sections cover candlesticks, MACD, volume, RSI, support and resistance, short-term takeaways and anything else
the chart shows. The agent also answers general finance questions without a chart, and its prompt has it decline
anything off the topic of markets.

## Intervals and exchanges

The agent asks for a weekly chart unless you name an interval. `Parse Interval` turns your words into a code for
Chart-Img, checking them in this order:

| You say | Code sent |
|---|---|
| 1d or daily | `1D` |
| 1w or weekly | `1W` |
| 1m, monthly or 1 month | `1M` |
| 3m or quarter | `3M` |
| 6m or half year | `6M` |
| 1y, 1 year or yearly | `1Y` |
| 5m, and also 15m, which contains it | `5` |
| 30m | `30` |
| 1h, hourly or 60 | `60` |

Chart-Img's documentation, read on 2 November 2026, lists intraday intervals as `5m`, `15m`, `30m` and `1h`. The codes
`5`, `30` and `60` are not on that list, so an intraday chart may be refused. Daily and longer intervals match it.

Exchanges follow three rules in the code. A ticker that already has a prefix keeps it. After a lookup, Twelve Data's
first match gets `NASDAQ:` when it trades on NASDAQ and `NSE:` for any other exchange, NYSE included. A lookup with no
match falls back to `NSE:RELIANCE`.

## Change the result

- Default interval: the agent's system message and `Parse Interval`, both set to `1W`.
- Chart look: the body of `Get Chart URL`, with its dark theme, its three studies and the MACD signal line's color.
- Report sections: the prompt in `Technical Analysis`.
- Topics: the guard at the top of the agent's system message.
- Exchanges: the prefix rules near the end of `Parse Interval`.

## Good to know

- Lost interval: when a ticker has no exchange, `Parse Interval` reads Twelve Data's reply, which carries no interval,
  so the chart is weekly whatever you asked for. Write the exchange in front, as in `NSE:INFY`, to get the interval.
- No link for the agent: `response` returns only the report, so a chart link in the agent's answer points nowhere. The
  photo from `Send Chart` is the chart.
- Picture reading: gpt-4o reads RSI values and price levels off an image, not from price data, and can misread them.
  Nothing the bot says is financial advice.
- Open bot: anyone who finds it spends your OpenAI, Chart-Img and Twelve Data calls until you restrict the trigger.
- Costs: two gpt-4o calls for each chart, a transcription for each voice note, and one Chart-Img and one Twelve Data
  call.
- Long replies: Telegram takes up to 4,096 characters a message, and a longer answer fails at `Send Analysis`.
- Where the data goes: messages and voice notes go to OpenAI, and tickers go to Twelve Data and Chart-Img. Chart-Img
  keeps each picture at a public address until it expires, after a time set by your plan.
```

## What is in it

2 files, 33 KB, downloaded as a zip.

```text
README.md  6 KB
workflow.json  27 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 17 steps, starting when another workflow calls it or on a Telegram event
- AI: 3 steps call an AI model: Technical Analysis, Transcribe and AI Agent
- Sign-ins: Signs in to: OpenAI, Telegram and Chart-Img
- API keys: No API key is left in the file; 1 blank in it for your own key
- Step types: Mindket’s checker reads all 9 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/a918ff9c-d835-4191-9ec0-015df0fd11ac)
- [Its page on Mindket](https://mindket.com/p/a918ff9c-d835-4191-9ec0-015df0fd11ac)
