Du har flygdata i en CSV, och någon ber alltid om ”ett snabbt diagram” precis när du har som mest att göra. Så du öppnar ett kalkylark, fixar formatering, bygger om samma pivottabell, tar en skärmdump och klistrar in den i chatten. Igen.
Den här automatiseringen med en Telegram-diagrambot träffar marknadsanalytiker först (för rapportförfrågningar tar aldrig slut). Men även operativa chefer och grundare känner av det, eftersom beslut går långsammare när insikter är inlåsta i filer.
Det här flödet gör om ett enkelt Telegram-meddelande till en korrekt formaterad, delbar diagrambild som genereras av QuickChart, med insikter bifogade. Du får lära dig vad som automatiseras, vad du behöver för att köra det och hur du anpassar det för din egen datamängd.
Så fungerar automatiseringen
Här är hela flödet du kommer att sätta upp:
n8n Workflow Template: Telegram + QuickChart: flygdiagram vid begäran
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0["<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 Trigger"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Start", 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 Welcome Message"]
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Extract from File", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Read CSV File", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Process Data & Create Bar Ch.."]
n7["<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/>Fetch Bar Chart Image"]
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/>Send Bar Chart to Telegram"]
n9["<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/code.svg' width='40' height='40' /></div><br/>Process Data & Create Pie Ch.."]
n10["<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/>Fetch Pie Chart Image"]
n11["<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 Pie Chart to Telegram"]
n12["<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/>Fetch Doughnut Chart Image"]
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/telegram.svg' width='40' height='40' /></div><br/>Send Doughnut Chart to Teleg.."]
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/code.svg' width='40' height='40' /></div><br/>Process Data & Create Line C.."]
n15["<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/code.svg' width='40' height='40' /></div><br/>Process Data & Create Doughn.."]
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/>Fetch Line Chart Image"]
n17["<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 Line Chart to Telegram"]
n3 --> n6
n3 --> n9
n3 --> n15
n3 --> n14
n1 --> n2
n1 --> n5
n5 --> n4
n0 --> n1
n4 --> n3
n7 --> n8
n10 --> n11
n16 --> n17
n12 --> n13
n6 --> n7
n9 --> n10
n14 --> n16
n15 --> n12
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 n0 trigger
class n1,n3 decision
class n7,n10,n12,n16 api
class n6,n9,n14,n15 code
classDef customIcon fill:none,stroke:none
class n0,n2,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17 customIcon
Varför det här spelar roll: flygrapportering bromsar beslut
CSV-baserad rapportering är bedrägligt dyr. En person frågar ”toppflygbolag per volym”, en annan vill ha ”pristrender per restid”, och plötsligt gör du fyra olika kalkylarksbyggen från samma råfil. Jobbet är inte svårt, det är bara konstant. Och eftersom det är manuellt får du alla vanliga problem: lite olika filter varje gång, siffror som inte matchar mellan skärmdumpar och ”kan du skicka det där diagrammet igen?” eftersom originalet försvann i en tråd. Ärligt talat är det värsta kontextväxlingarna. Det dödar momentum.
Friktionen byggs på. Här är var det faller isär.
- Att återskapa diagram i Excel eller Sheets kan lätt sluka runt 30 minuter per förfrågan när du räknar in rensning, diagramstil och delning.
- Folk slutar lita på siffrorna när två diagram använder olika filter, även om skillnaden var oavsiktlig.
- Insikter kommer sent, vilket gör att prissättning och ruttbeslut baseras på magkänsla istället för data.
- Diagram hamnar utspridda i chattar och mappar, så team gör om arbete istället för att återanvända det.
Vad du bygger: en Telegram-bot som gör om flyg-CSV:er till diagram
Du sätter upp en Telegram-bot som lyssnar efter ett startkommando, visar en enkel meny och sedan genererar diagrammet ditt team bad om. Under huven laddar flödet din flyg-CSV, tolkar den till strukturerad data och skickar förfrågan till rätt diagrambyggare. Varje diagram byggs som en Chart.js-konfiguration, skickas till QuickChart som en bildrenderingsförfrågan och returneras sedan till Telegram som en skarp PNG som teamet kan vidarebefordra eller lägga in i en slide. Det känns som att ”chatta med din data”, men den stora vinsten är repeterbarhet: samma indata, samma logik, konsekventa visuella resultat.
Flödet startar i Telegram och validerar användarkommandot. Därefter läser och tolkar det CSV:n, och sedan växlar det baserat på användarens menyval (stapel, paj, ring eller linje). Till sist renderar QuickChart bilden och boten postar den tillbaka i samma chatt.
Det här bygger du
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att teamet tar fram fyra diagram i veckan (flygbolag, restidsmix, prisnivåer och en pristrend). Manuellt är det normalt att budgetera cirka 30 minuter per diagram, alltså ungefär 2 timmar i veckan i kalkylarksarbete. Med det här flödet skickar du /start, trycker på ett menyval och QuickChart returnerar bilden på under 3 sekunder. Du lägger fortfarande tid på att tänka på resultatet, men delen ”bygga och formatera” försvinner i princip.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att ta emot förfrågningar och skicka diagrambilder.
- QuickChart för att rendera Chart.js-konfigurationer till PNG:er.
- Telegram-bottoken (hämta den via @BotFather i Telegram)
Kunskapsnivå: Medel. Du kodar ingen app, men du bör vara bekväm med att klistra in inloggningsuppgifter, importera ett flöde och redigera några noder.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Ett Telegram-meddelande triggar flödet. Telegram-triggern lyssnar efter händelser, och sedan avgör en kontroll ”är detta /start?” om välkomstmenyn ska visas och flödet ska fortsätta.
CSV:n laddas och tolkas. n8n läser din /data/flights.csv, extraherar innehållet och konverterar raderna till JSON så att resten av flödet kan filtrera och aggregera pålitligt.
Menyvalet skickar till rätt diagrambyggare. En switch-nod skickar datan till ett av fyra kodblock: flygbolagsvolym (stapel), restidsfördelning (paj), prissegmentering (ring) eller pristrend per restid (linje). Varje block output:ar en Chart.js-konfiguration som innehåller etiketter, dataset, färger och alternativ.
QuickChart renderar bilden och Telegram postar den. En HTTP Request-nod anropar QuickChart, tar emot en PNG, och sedan skickar en Telegram-nod den binära bilden tillbaka till användaren i chatten.
Du kan enkelt ändra diagrammenyn för att inkludera nya KPI:er (som mellanlandningar, klassmix eller ruttpar) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera Telegram-triggern
Det här arbetsflödet startar när en användare skickar ett meddelande i Telegram och kontrollerar direkt efter kommandot /start för att visa en meny.
- Lägg till och konfigurera Telegram Event Listener för att lyssna efter uppdateringar (message och callback_query).
- I Validate Start Command ställer ni in villkoret så att Left Value kontrolleras som
={{ $json.message.text }}och Right Value som/start. - Koppla Validate Start Command till Dispatch Welcome Menu på “true”-utgången.
- I Dispatch Welcome Menu ställer ni in Chat ID till
={{$json.message.chat.id}}och Text till hela meny-meddelandet som börjar med✈️ Welcome to Flight Data Analytics Bot!. - Aktivera Reply Markup som replyKeyboard och konfigurera knapparna exakt som visas i noden (Top Airlines, Flight Duration Categories, Price Distribution, Price Trends).
Steg 2: Anslut datakällan med flight-CSV
Arbetsflödet läser in en lokal CSV-fil och tolkar den till strukturerade objekt för att generera diagram.
- I Load CSV Dataset ställer ni in File Selector till
/data/flights.csv. - Koppla Load CSV Dataset till Parse File Contents för att extrahera data från filen.
- Koppla Parse File Contents till Route Menu Choice så att de tolkade raderna är tillgängliga för alla diagramgrenar.
airline, duration och price.Steg 3: Sätt upp menyroutning och diagrambyggare
Menyalternativet routar till en specifik nod för att bygga diagram som skapar en QuickChart-URL och insikter.
- I Route Menu Choice skapar ni fyra regler för att matcha Telegram-texten med
={{ $('Telegram Event Listener').item.json.message.text }}med right values:1️⃣ Top Airlines (Bar Chart),2️⃣ Flight Duration Categories (Pie Chart),3️⃣ Price Distribution (Doughnut Chart)och4️⃣ Price Trends (Line Plot). - Koppla bar-utgången från Route Menu Choice till Build Airline Bar Chart.
- Koppla pie-utgången från Route Menu Choice till Generate Duration Pie Chart.
- Koppla doughnut-utgången från Route Menu Choice till Assemble Price Doughnut.
- Koppla line-utgången från Route Menu Choice till Create Price Trend Line.
chatId och de tolkade CSV-raderna från Parse File Contents som input.Steg 4: Konfigurera noderna för output och mediainhämtning
Varje diagrambyggare returnerar en QuickChart-URL, som hämtas och publiceras som en Telegram-bild.
- I Retrieve Bar Chart Image ställer ni in URL till
={{ $json.quickChartUrl }}och kopplar den sedan till Post Bar Chart to Telegram. - I Post Bar Chart to Telegram ställer ni in Chat ID till
={{ $('Build Airline Bar Chart').first().json.chatId }}, aktiverar Binary Data och behåller Operation som sendPhoto. - Upprepa samma struktur för de andra tre paren: Retrieve Pie Chart Image → Post Pie Chart to Telegram, Retrieve Doughnut Chart → Post Doughnut Chart och Retrieve Line Chart Image → Post Line Chart to Telegram, med URL inställd på
={{ $json.quickChartUrl }}i varje fall. - Säkerställ att varje Telegram-sändarnod använder korrekt chat ID-mappning:
={{ $('Generate Duration Pie Chart').first().json.chatId }},={{ $('Assemble Price Doughnut').first().json.chatId }}och={{ $('Create Price Trend Line').first().json.chatId }}.
Steg 5: Testa och aktivera ert arbetsflöde
Verifiera flödet från start till mål genom att trigga boten i Telegram och bekräfta att diagram levereras.
- Klicka på Execute Workflow i n8n och skicka
/starttill er bot för att trigga Telegram Event Listener. - Välj ett menyalternativ och verifiera att Route Menu Choice routar till rätt diagrambyggare.
- Bekräfta att varje diagram genereras, hämtas och publiceras som en bild i Telegram (t.ex. ett stapeldiagram från Build Airline Bar Chart).
- När ni är nöjda, växla arbetsflödet till Active så att det lyssnar på Telegram-uppdateringar i produktion.
Felsökningstips
- Telegram-uppgifter kan gå ut eller kopieras fel. Om det slutar fungera, kontrollera bottoken i Telegram Trigger och säkerställ först att webhooken är korrekt satt i din Telegram-bots inställningar.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder misslyckas på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera outputs för alltid.
Snabba svar
Cirka 30 minuter om din CSV är klar och du redan har skapat Telegram-boten.
Nej. Flödet innehåller redan koden som bygger diagrammen, och du konfigurerar främst inloggningsuppgifter och filsökvägar.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på $20/månad för högre volym. Du behöver också räkna in QuickChart-användning (ofta gratis för grundläggande förfrågningar) och eventuell OpenAI API-användning om du aktiverar AI-genererade insikter.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det är oftast okomplicerat. Du kan byta ut steget ”Load CSV Dataset” mot en databasfråga (t.ex. Microsoft SQL) och behålla samma diagrambyggare. Vanliga justeringar är att lägga till ett nytt menyval i ”Route Menu Choice”, ändra aggregeringarna i diagramkod-noderna och uppdatera QuickChart-förfrågan så att den matchar din önskade branding.
Oftast är det bottoken eller webhooken. Generera en ny token i @BotFather vid behov och uppdatera sedan Telegram Trigger-inloggningsuppgifterna i n8n. Om flödet kör men du inte får några meddelanden, bekräfta att din n8n-instans är nåbar från publika internet så att Telegram kan leverera webhook-händelser. Rate limits är ovanliga här, men gruppchattar med mycket bottrafik kan trigga dem.
För de flesta team fungerar det bra för vardagsanvändning: dussintals till hundratals diagramförfrågningar per dag. På n8n Cloud beror din gräns på din månatliga körningskvot, medan egen hosting inte har något fast tak (det beror främst på serverresurser). Den tunga delen är att tolka CSV:n och rendera via QuickChart, så väldigt stora filer kan behöva optimering eller en databaskälla.
Ofta, ja. Det här flödet bygger på förgreningslogik (en meny som routar till flera diagrambyggare), filtolkning och anpassad diagramkonfiguration, vilket är krångligt eller dyrt i många no-code-verktyg. n8n ger dig också möjligheten till egen hosting för obegränsade körningar, plus fin kontroll över hur diagram-JSON byggs och skickas till QuickChart. Zapier eller Make kan fortfarande fungera om du bara behöver en enda diagramtyp och en enkel trigger. Om du vill ha en snabb rekommendation för din setup, prata med en automationsexpert.
När detta väl är igång blir ”kan du göra ett diagram på det här?” ett snabbt tryck i Telegram istället för en till omväg via kalkylark. Sätt upp det en gång och låt sedan flödet hålla dina visualiseringar konsekventa.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.