Telegram + OpenAI: chart replies that stay consistent
Chart questions come in fast, and the replies don’t always keep up. One person answers with a clean structure, the next improvises, and suddenly you’re stuck in a long thread clarifying what “support” even means.
This is where Telegram chart automation helps. Trading community managers feel it first, but financial advisors and product teams at fintech apps run into the same problem: inconsistent analysis creates extra back-and-forth and erodes trust.
This workflow turns a Telegram message (and optional chart request) into a consistent, structured response using OpenAI vision and an “analyst” persona, so you can scale support without scaling chaos.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Telegram + OpenAI: chart replies that stay consistent
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0@{ icon: "mdi:wrench", form: "rounded", label: "Get Chart", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Analysis"]
n3@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Settings", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Typing action"]
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "PreProcessing", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Trigger1"]
n9@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n6 --> n1
n1 --> n2
n4 --> n5
n4 --> n6
n0 -.-> n1
n7 --> n4
n9 -.-> n1
n8 --> n7
n5 --> n6
n3 -.-> n1
end
subgraph sg1["Workflow Input Flow"]
direction LR
n10@{ icon: "mdi:play-circle", form: "rounded", label: "Workflow Input Trigger", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "response", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "Technical Analysis", pos: "b", h: 48 }
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Download Chart"]
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Chart"]
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Stock Ticker", pos: "b", h: 48 }
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Chart1"]
n16 --> n13
n14 --> n11
n13 --> n12
n15 --> n16
n12 --> n14
n10 --> n15
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n8,n10 trigger
class n1,n12 ai
class n3 aiModel
class n0 ai
class n9 ai
class n13,n16 api
classDef customIcon fill:none,stroke:none
class n2,n5,n6,n8,n13,n14,n16 customIcon
Why This Matters: Inconsistent chart replies create support drag
If you’ve ever tried to answer chart questions in Telegram at scale, you know the trap. The first reply is thoughtful. The next is rushed. Then someone asks for “MACD confirmation,” another wants “volume context,” and now you’re rewriting the same explanation five different ways. Even when you’re right, inconsistency makes you look unsure. Worse, people start treating your chat like a guessing game: “So is it bullish or not?” That kind of ambiguity turns one simple chart request into a long, messy thread.
It adds up fast. Here’s where it breaks down in real operations.
- Replies vary by person and mood, so users keep asking follow-ups to “confirm” what you meant.
- Chart screenshots and symbols get misread, which leads to embarrassing corrections later.
- Technical indicators are explained differently every time, so your “house style” never sticks.
- When volume spikes (news, volatility, launches), response quality drops right when trust matters most.
What You’ll Build: Telegram chart analysis that stays on-script
This workflow creates a Telegram-based analyst assistant that can handle normal conversation and chart analysis without drifting into random formats. A user messages your Telegram bot with a ticker, a timeframe, or a chart request. The workflow then generates a chart image via a TradingView-style chart service (Chart-IMG) with professional indicators like MACD and volume. Next, OpenAI vision reviews that chart image and extracts the technical context (trend, levels, momentum, key patterns) using a consistent response structure. Finally, the assistant posts a clear, templated reply back into Telegram, optionally logging the interaction for later review and sending notifications when needed.
The workflow starts in Telegram, then branches based on what the user asked (chat vs. chart). From there, it builds or fetches the chart, runs visual analysis, and responds in a predictable “analyst voice” that stays consistent across conversations.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say your Telegram community gets about 20 chart questions per day. Manually, even a “quick” answer is maybe 10 minutes once you open a chart, add indicators, write levels, and handle follow-ups, so that’s about 3 hours daily. With this workflow, the user sends the request in Telegram, the chart is generated and analyzed in a couple minutes, and you only step in for edge cases (maybe 1 minute each). That’s roughly 2 hours back on a normal day, and more when markets get wild.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram Bot for receiving requests and sending replies
- OpenAI API to run GPT-4o vision chart analysis
- Chart-IMG API key (get it from your Chart-IMG dashboard)
Skill level: Intermediate. You’ll be comfortable adding credentials, editing prompts, and testing a Telegram webhook.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A Telegram message triggers the workflow. Your bot receives a user message (like “BTC 4H, what’s the trend?”) and passes it into n8n through a webhook-connected Telegram node.
The request is interpreted and routed. A switch/if branch decides if this is normal conversation, a chart request, or a follow-up that needs prior context. The workflow also uses session-based memory so the assistant can reference earlier levels or the user’s last timeframe.
The chart is generated and analyzed. An HTTP Request node calls the chart image service (TradingView-style via Chart-IMG) and returns an image with MACD and volume. OpenAI vision then reviews that image and produces a structured technical read, keeping the same format each time.
A consistent answer goes back to Telegram (and can be logged). The final response is posted to Telegram, and you can also store key fields in Google Sheets or notify someone by email for compliance review or high-stakes users.
You can easily modify the response template to match your brand voice, or change the indicators and timeframes you support based on your needs. See the full implementation guide below for customization options.
Troubleshooting Tips
- Telegram credentials and webhook settings are picky. If updates suddenly stop, confirm the webhook URL and bot token in n8n credentials first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- OpenAI and OpenRouter prompts drift if you keep them generic. Add your tone rules and disclaimer language early or you’ll be cleaning up replies every day.
Quick Answers
About 45 minutes if you already have your API keys.
No. You’ll mainly connect credentials and adjust prompts. The “hard part” is testing with a few real chart requests until the format feels right.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI and chart-image API usage (usually a few cents per request, depending on your prompts and image size).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. You can swap the chart provider in the HTTP Request node, change the indicators (MACD/volume) in the chart URL parameters, and rewrite the AI Agent prompt to match your brand voice. Common tweaks include adding a mandatory disclaimer, enforcing a fixed response template (levels, bias, invalidation, risk note), and restricting supported timeframes to reduce weird edge cases.
Usually it’s a bad bot token or a webhook mismatch. Regenerate the Telegram bot token if needed, then re-check the webhook URL and that n8n is reachable publicly (common issue on self-hosted setups). If it works sometimes and fails under load, you may also be hitting Telegram rate limits or your server is timing out while waiting for chart rendering.
On a typical small VPS, teams often handle a few hundred requests per day comfortably, assuming chart generation and vision analysis aren’t queued. n8n Cloud limits depend on your plan executions, while self-hosting has no fixed execution cap (it’s mainly CPU, memory, and API rate limits). If you expect spikes, add a queue strategy and longer waits around chart rendering so you don’t respond with empty images.
Often, yes, because this kind of workflow needs branching logic, memory/context, and a few “glue” steps around chart rendering and vision analysis. Zapier and Make can do parts of it, but they tend to get awkward (and expensive) when you add multi-step AI logic and state. n8n also gives you the self-hosting option, which matters when you’re running lots of Telegram messages. That said, if you only need a simple “message in, message out” flow with no chart image analysis, the simpler tools may be fine. Talk to an automation expert if you’re not sure which fits.
Once this is running, your Telegram replies stop feeling improvised. The workflow handles the repeatable structure, and you keep control over the judgment calls.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.