Kostnadsspårning fallerar oftast av en trist anledning. Du glömmer inte att spendera pengar – du glömmer att skriva ner det, och så slutar det med att du “kommer ikapp” en söndagskväll med en hög kvitton.
Marknadschefer som hanterar kunders utlägg känner av det. Småföretagare känner av det ännu mer. Och om du är frilansare som jonglerar verktyg är automatiserad utgiftsloggning i Telegram det första som får uppföljningen att kännas smidig i stället för irriterande.
Det här n8n-flödet gör om dina Telegram-meddelanden (text, röst, foton, PDF:er) till felfria, kategoriserade rader i Google Sheets, och låter dig sedan ställa frågor som “Hur mycket på matvaror den här månaden?” utan att bygga ett kalkylbladsmonster.
Så här fungerar automatiseringen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Telegram + Google Sheets – utgifter loggas och kategoriseras
flowchart LR
subgraph sg0["JsonStorageMcp 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/>Trigger"]
n1@{ icon: "mdi:wrench", form: "rounded", label: "JsonStorageMcp", pos: "b", h: 48 }
n2@{ icon: "mdi:wrench", form: "rounded", label: "Calculator", pos: "b", h: 48 }
n3@{ icon: "mdi:wrench", form: "rounded", label: "ExpenseAssistant", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "Gpt4o", pos: "b", h: 48 }
n5@{ icon: "mdi:wrench", form: "rounded", label: "Think", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "TextOutput", 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/>WelcomeMessage"]
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "AudioOutput", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "AgentInput", pos: "b", h: 48 }
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/>NotAuthorizedMessage"]
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "IfAccessAllowed", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "IfFirstRun", pos: "b", h: 48 }
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/>ReplyText"]
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "FileOutput", 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/telegram.svg' width='40' height='40' /></div><br/>GetAudioFile"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>ExtractFileText"]
n18@{ icon: "mdi:memory", form: "rounded", label: "AssitantMemory", pos: "b", h: 48 }
n19@{ icon: "mdi:memory", form: "rounded", label: "SimpleMemory", pos: "b", h: 48 }
n20@{ icon: "mdi:robot", form: "rounded", label: "AIAgent", pos: "b", h: 48 }
n21["<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/>TranscribeAudio"]
n22@{ icon: "mdi:swap-vertical", form: "rounded", label: "Input", pos: "b", h: 48 }
n23["<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/>GetAttachedFile"]
n24@{ icon: "mdi:swap-horizontal", form: "rounded", label: "IfStateExist", pos: "b", h: 48 }
n25["<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/>DeleteProcessing"]
n26@{ icon: "mdi:wrench", form: "rounded", label: "Think1", pos: "b", h: 48 }
n31["<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/>GetAttachedPhoto"]
n32@{ icon: "mdi:swap-vertical", form: "rounded", label: "ImageOutput", pos: "b", h: 48 }
n33["<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/>ExtractImageText"]
n34["<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/>SendProcessing"]
n35["<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/>GetExecutionState"]
n36@{ icon: "mdi:brain", form: "rounded", label: "Sonnet45", pos: "b", h: 48 }
n37["<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/>GetAppSettings"]
n38["<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/>SaveAppSettings"]
n39["<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/>SaveExecutionState"]
n4 -.-> n20
n22 --> n37
n5 -.-> n3
n6 --> n8
n6 --> n7
n6 --> n16
n6 --> n23
n6 --> n31
n26 -.-> n20
n20 --> n14
n0 --> n22
n36 -.-> n3
n10 --> n20
n2 -.-> n3
n15 --> n10
n13 --> n38
n7 --> n10
n9 --> n10
n32 --> n10
n16 --> n21
n24 --> n25
n19 -.-> n20
n18 -.-> n3
n37 --> n13
n37 --> n12
n1 -.-> n3
n34 --> n39
n17 --> n15
n23 --> n17
n12 --> n6
n12 --> n34
n12 --> n35
n12 --> n11
n21 --> n9
n3 -.-> n20
n33 --> n32
n31 --> n33
n35 --> n24
end
subgraph sg1["Cleanup Flow"]
direction LR
n27@{ icon: "mdi:play-circle", form: "rounded", label: "Cleanup", pos: "b", h: 48 }
n28["<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/>ForEachCategory"]
n29["<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/>ForEachCategoryItem"]
n30["<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/>DeleteItem"]
n27 --> n28
n28 --> n29
n29 --> n30
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,n27 trigger
class n20 ai
class n4,n36 aiModel
class n1,n2,n3,n5,n26 ai
class n18,n19 ai
class n6,n12,n13,n24 decision
class n17,n21,n33,n35,n37,n38,n39,n28,n29,n30 api
classDef customIcon fill:none,stroke:none
class n0,n8,n11,n14,n16,n17,n21,n23,n25,n31,n33,n34,n35,n37,n38,n39,n28,n29,n30 customIcon
Problemet: utgiftsspårning går sönder så fort du får mycket att göra
Du har redan intentionen att följa upp utgifter. Det som fallerar är det lilla glappet mellan “jag betalade precis” och “jag borde logga det”. Kvitton hamnar i fickan, skärmdumpar försvinner i kamerarullen och röstanteckningar stannar i huvudet tills de inte gör det. Sedan sitter du fast och måste backa fram datum, leverantörer och kategorier från röriga kontoutdrag. Ärligt talat är det värsta inte tiden. Det är den där ständiga mentala fliken som ligger öppen eftersom du vet att siffrorna inte är aktuella.
Det byggs upp snabbt. Här är var det brukar spåra ur.
- Manuell inmatning blir ett veckogöra, så du skjuter på det och din data blir opålitlig.
- Kvitton kommer i olika format (foton, PDF:er, skrynkligt papper), vilket gör “en process” omöjlig.
- Kategorier glider över tid, så “Äta ute” blir “Mat”, “Måltider” och “Restauranger” samma månad.
- Du kan inte svara snabbt på grundfrågor, eftersom totalsummor och uppdelningar kräver extra kalkylbladsjobb.
Lösningen: logga utgifter från Telegram (text, röst, kvitton)
Det här flödet ger dig en privat Telegram-bot som beter sig som en utgiftsassistent. Du skickar ett kvittofoto, en PDF-faktura, ett röstmeddelande (“Köpte kaffe för fem euro”) eller en snabb text (“50 uber”). Flödet hämtar innehållet från Telegram, omvandlar det till användbar text (OCR för bilder och dokument, transkribering för ljud) och skickar det till en AI-agent som extraherar det viktiga: belopp, datum, leverantör, valuta och kategori. Sedan sparar det det strukturerade resultatet i din utgiftslagring och skriver en felfri, konsekvent logg i Google Sheets så att du kan filtrera, sortera och sammanfatta när du vill.
Det börjar med en Telegram-meddelandetrigger. Därifrån routar n8n meddelandetypen, kör OCR eller transkribering vid behov och skickar ett standardiserat payload till AI-routern. Till sist svarar boten i Telegram med en bekräftelse i stil med “Tillagd: 45,50 EUR – Matvaror (Lidl)”, och ditt ark hålls uppdaterat i bakgrunden.
Det du får: automatisering vs. resultat
| Det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du loggar 5 utgifter per dag. Manuellt tar det oftast runt 5 minuter per utgift när du ska hitta kvittot, komma ihåg kategorin och skriva in det, så du landar på ungefär 25 minuter per dag (och mer när du missar en dag). Med det här flödet vidarebefordrar du ett kvittofoto eller en röstnotis i Telegram på cirka 1 minut, och sen är du klar. AI-bearbetningen kör medan du går vidare, och ditt Google-ark är redan uppdaterat inför månadens totalsummor.
Det du behöver
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Telegram-bot för att ta emot meddelanden och svara.
- Google Sheets för att lagra en felfri utgiftsjournal.
- OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard).
Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och justerar ett par AI-prompter för kategorier och valuta.
Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett Telegram-meddelande kommer in. Flödet triggar på vilket meddelande som helst till din bot och fångar kontext (chatt-ID, bilagor, meddelandetyp) så att svaren hamnar rätt.
Sekretesslås och routing sker direkt. Vid första användningen “claimar” boten en enda användare och sparar preferenser. Efter det avvisas obehöriga chattar, vilket håller din utgiftsdata privat.
Röst, kvittofoton och PDF:er konverteras till text. Ljudfiler hämtas från Telegram och transkriberas. Dokument och bilder hämtas och körs genom OCR så att AI:n kan läsa totalsummor, datum och leverantörsnamn.
AI-agenten extraherar och kategoriserar, och sparar sedan resultatet. Routern skickar det standardiserade payloadet till utgiftsassistenten, som validerar strukturen, tillämpar kategorier, räknar fram statistik när du frågar och skriver utdata till Google Sheets och Telegram.
Du kan enkelt ändra standardvaluta och kategorilista så att det matchar din bokföring. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera Telegram-triggern
Sätt upp arbetsflödets startpunkt för att fånga Telegram-meddelanden och bilagor.
- Lägg till och öppna Telegram Intake Trigger.
- Ställ in Updates på
message. - I Additional Fields aktiverar ni Download och ställer in Image Size på
extraLarge. - Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter.
Steg 2: Anslut appinställningar och behörighet
Fånga språkkontext, hämta appinställningar och kontrollera vem som kan använda boten.
- Öppna Capture Message Context och sätt tilldelningen document_language till
{{ $json.message.from.language_code ?? "en" }}med Include Other Fields aktiverat. - Öppna Fetch App Preferences och ställ in URL till
https://api.ainoflow.io/api/v1/storage/json/config/expense-app-settings. - Autentiseringsuppgifter krävs: Anslut era httpBearerAuth-autentiseringsuppgifter i Fetch App Preferences.
- Konfigurera Authorize Chat Access för att jämföra
{{ $('Telegram Intake Trigger').item.json.message.chat.id }}med{{ $json.chat_id ?? $('Telegram Intake Trigger').item.json.message.chat.id }}, och tillåt statusen404för förstagångssetup. - Säkerställ att Fetch App Preferences matar ut till både Detect First Use och Authorize Chat Access parallellt.
- I Detect First Use behåller ni villkoret som kontrollerar att
{{ $json.error.status }}är lika med404, och kopplar sedan vidare till Store App Preferences. - Öppna Store App Preferences och mappa fält:
{{ $('Telegram Intake Trigger').item.json.message.chat.id }},{{ $('Telegram Intake Trigger').item.json.message.date }}och{{ $('Telegram Intake Trigger').item.json.message.chat.first_name }}. - Autentiseringsuppgifter krävs: Anslut era httpBearerAuth-autentiseringsuppgifter i Store App Preferences.
Steg 3: Konfigurera meddelanderouting och input-mappning
Routa Telegram-meddelanden till flöden för text, röst, dokument och foto och normalisera allt innehåll till ett gemensamt input-format för agenten.
- Öppna Route Message Type och behåll utgångarna för
/start, text, röst, dokument och foto med uttryck som{{ $('Telegram Intake Trigger').item.json.message.text }}och{{ $('Telegram Intake Trigger').item.json.message.voice.file_id }}. - Authorize Chat Access matar ut till Route Message Type, Post Processing Notice och Fetch Processing State parallellt.
- Konfigurera Send Welcome Note att använda Chat ID
{{ $('Telegram Intake Trigger').item.json.message.chat.id }}och den angivna välkomsttexten. - Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter i Send Welcome Note.
- För textmeddelanden öppnar ni Map Text Payload och mappar text till
{{ $('Telegram Intake Trigger').item.json.message.text }}och chat_id till{{ $('Telegram Intake Trigger').item.json.message.chat.id }}. - För röstmeddelanden konfigurerar ni Retrieve Voice File med
{{ $('Telegram Intake Trigger').item.json.message.voice.file_id }}, och därefter Transcribe Voice med fältet languages satt till{{ $('Capture Message Context').item.json.document_language }}. - Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter i Retrieve Voice File och httpBearerAuth-autentiseringsuppgifter i Transcribe Voice.
- Mappa transkriptioner i Map Voice Payload med
{{ $json.content[0].text }}och{{ $('Telegram Intake Trigger').item.json.message.chat.id }}. - För dokument och foton konfigurerar ni Retrieve Document File och Retrieve Photo File med fil-id:n från triggern, och kör sedan Extract Document Text och Extract Image Text med
multipart-form-dataoch{{ $('Capture Message Context').item.json.document_language }}. - Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter till noderna för filhämtning och httpBearerAuth-autentiseringsuppgifter till extraktionsnoderna.
- Normalisera alla dokument-/foto-utdata i Map File Payload och Map Image Payload med den kombinerade textmallen:
User uploaded document / photo: {{ $('Capture Message Context').item.json.message.caption ?? "" }} {{ $json.content ? $json.content[0].text : "The uploaded file does not contain text content." }}. - Avslutningsvis öppnar ni Prepare Agent Input och mappar text till
{{ $json.text }}och chat_id till{{ $json.chat_id }}.
Steg 4: Sätt upp ai-routing och verktyg
Konfigurera den primära ai-routern och dess specialiserade verktyg för att tolka och lagra utgifter.
- Öppna Primary AI Router och ställ in Text till
{{ $('Prepare Agent Input').item.json.text }}med den angivna systemprompten. - Koppla Main Memory Buffer till Primary AI Router med Session Key
agent_{{ $('Prepare Agent Input').item.json.chat_id }}och Context Window Length30. - Koppla Reflection Tool som ett verktyg för Primary AI Router.
- Anslut OpenAI Model som språkmodell med Model satt till
openai/gpt-4o. - Autentiseringsuppgifter krävs: Anslut era openRouterApi-autentiseringsuppgifter i OpenAI Model.
- Öppna Expense Specialist och behåll verktygsbeskrivningen och systemmeddelandet oförändrade för lagringsregler och kategorier.
- Koppla Assistant Memory Buffer till Expense Specialist med Session Key
expense_assitant_{{ $('Prepare Agent Input').item.json.chat_id }}. - Anslut Sonnet Model som språkmodell för Expense Specialist med Model
anthropic/claude-sonnet-4.5. - Autentiseringsuppgifter krävs: Anslut era openRouterApi-autentiseringsuppgifter i Sonnet Model.
- Koppla Reasoning Tool, JSON Storage Tool och Math Helper till Expense Specialist som verktyg.
- Autentiseringsuppgifter krävs: Anslut era httpBearerAuth-autentiseringsuppgifter i JSON Storage Tool.
Steg 5: Konfigurera bearbetningsnotiser och städning av status
Använd Telegram-notiser och http-lagring för att visa bearbetningsstatus och ta bort temporära meddelanden när allt är klart.
- Öppna Post Processing Notice och ställ in Chat ID till
{{ $('Telegram Intake Trigger').item.json.message.chat.id }}. - Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter i Post Processing Notice.
- Öppna Record Processing State och ställ in URL till
https://api.ainoflow.io/api/v1/storage/json/expense-app-processing/{{ $('Telegram Intake Trigger').item.json.update_id }}. - Mappa Body Parameters till
{{ $json.result.chat.id }}och{{ $json.result.message_id }}, och ställ in expiresMs till3600000. - Autentiseringsuppgifter krävs: Anslut era httpBearerAuth-autentiseringsuppgifter i Record Processing State.
- Öppna Fetch Processing State med samma url-mönster och koppla till Check State Presence, som sedan tar bort statusen via Remove Processing Note.
- Autentiseringsuppgifter krävs: Anslut era httpBearerAuth-autentiseringsuppgifter i Fetch Processing State och telegramApi-autentiseringsuppgifter i Remove Processing Note.
- Behåll Send Unauthorized Alert kopplad till den falska vägen från Authorize Chat Access med meddelandet
You are not authorized to use this bot.. - Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter i Send Unauthorized Alert.
Steg 6: Konfigurera leverans av agentens output
Leverera ai-svar tillbaka till användaren efter att inputen har bearbetats.
- Öppna Send Agent Reply och ställ in Text till
{{ $json.output }}. - Ställ in Chat ID till
{{ $('Prepare Agent Input').item.json.chat_id }}. - Säkerställ att Additional Fields inkluderar parse_mode satt till
Markdown. - Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter i Send Agent Reply.
Steg 7: Konfigurera manuella städverktyg
Använd den manuella städvägen för att rensa lagrad utgiftsdata vid behov.
- Öppna Manual Cleanup Trigger för att tillåta körning vid behov.
- Konfigurera Iterate Categories med URL
https://api.ainoflow.io/api/v1/storage/json. - Konfigurera Iterate Category Items med URL
https://api.ainoflow.io/api/v1/storage/json/{{ $json.category }}. - Konfigurera Delete Stored Item med URL
https://api.ainoflow.io/api/v1/storage/json/{{ $json.category }}/{{ $json.key }}och MethodDELETE. - Autentiseringsuppgifter krävs: Anslut era httpBearerAuth-autentiseringsuppgifter i Iterate Categories, Iterate Category Items och Delete Stored Item.
Steg 8: Testa och aktivera ert arbetsflöde
Verifiera alla flöden och aktivera arbetsflödet för användning i produktion.
- Klicka på Execute Workflow och skicka en Telegram-text som
spent 50 on groceriesför att bekräfta att Send Agent Reply returnerar ett formaterat svar. - Testa ett röstmeddelande och ett kvittofoto för att bekräfta att Transcribe Voice och Extract Image Text flödar in i Prepare Agent Input.
- Verifiera att bearbetningsnotisen visas från Post Processing Notice och tas bort av Remove Processing Note.
- Om en chatt inte är behörig, bekräfta att Send Unauthorized Alert skickas.
- När alla tester passerar, växla arbetsflödet till Active för att aktivera körning i produktion.
Vanliga fallgropar
- Telegram-botens autentiseringsuppgifter kan gå ut eller få fel scope. Om svaren slutar fungera, kontrollera först BotFather-token och autentiseringsuppgifterna för Telegram-noden i n8n.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre ned i flödet fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera utdata för alltid.
Vanliga frågor
Cirka 30 minuter om du redan har din Telegram-bottoken och dina API-nycklar redo.
Ingen kodning krävs. Du kommer främst att koppla konton och klistra in API-nycklar i n8n.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in OpenRouter API-användning för AI-bearbetning samt kostnader för OCR/transkriberings-API.
Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och kör n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Du kan uppdatera kategorilistan i prompten för Expense Assistant och även ändra standardvalutan där (standard är EUR). Om du föredrar andra AI-modeller byter du ut OpenRouter-chatmodellnoderna som används för huvudbearbetningen och assistentsvaren. Många justerar också svarsformateringen så att Google Sheets får korta beskrivningar medan Telegram får en snyggare sammanfattning.
Oftast handlar det om en ogiltig eller roterad bottoken i dina Telegram-autentiseringsuppgifter. Det kan också vara en mismatch i sekretessinställningar (fel chatt, fel bot) eller saknade behörigheter för att hämta filer, vilket märks när noder för hämtning av ljud/foto/dokument börjar fallera. Kontrollera autentiseringsuppgiften för Telegram-noden i n8n, skicka sedan ett enkelt textmeddelande för att bekräfta att triggern fortfarande triggar innan du testar kvitton igen.
En typisk setup kan hantera hundratals utgifter per månad utan problem; de verkliga begränsningarna kommer från din n8n-plan och dina hastighetsgränser för OCR/transkribering/AI-API.
Det beror på vad du gör. Om du bara vill ha “Telegram-meddelande → lägg till en rad” kan Zapier eller Make gå snabbare att klicka ihop. Det här flödet är mer än så: det routar meddelandetyper, hämtar Telegram-filer, kör OCR och transkribering och använder en AI-agent med minne för att både logga utgifter och svara på frågor som “jämför senaste 3 månaderna”. n8n ger dig också möjlighet till egen hosting, vilket är användbart om du inte vill ha prissättning per uppgift varje gång du loggar ett kvitto. Om du vill att någon kvalitetssäkrar din setup, Prata med en automatiseringsexpert.
När detta väl rullar hålls ditt ark uppdaterat utan att du behöver tänka på det. Boten sköter den repetitiva insamlingen, och du får äntligen felfria månadstotaler när du behöver dem.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.