Dina kvitton finns ”någonstans” i en chatttråd. En kontrakts-PDF ligger i en annan tråd. Och den enda bilden du behöver är begravd under sex månader av memes. Att hitta något i efterhand blir snabbt ett frustrerande scrollmaraton.
Det här är den typen av röra som drabbar småföretagare först, men även en driftansvarig som håller leverantörer organiserade och en bokförare som jagar fakturor känner av det. Med automatisering för Telegram receipt search slutar du lägga tid på manuell arkivering och börjar plocka fram filer igen med ett enkelt kommando.
Det här flödet sparar varje Telegram-fil till Google Drive, kör OCR på filer som passar, lagrar texten i Airtable och låter dig sedan söka från Telegram med /search. Du får se vad det gör, vad du behöver och hur det beter sig i verkligheten.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Telegram + Google Drive: hitta kvitton snabbt
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 if File/Image", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract File Metadata", pos: "b", h: 48 }
n3["<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/>Download File from Telegram"]
n4@{ icon: "mdi:cog", form: "rounded", label: "Upload to Google Drive", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if OCR Eligible", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Google Vision OCR"]
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract OCR Text", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "No OCR Needed", pos: "b", h: 48 }
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/merge.svg' width='40' height='40' /></div><br/>Merge OCR Paths"]
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/airtable.svg' width='40' height='40' /></div><br/>Index in Airtable"]
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 Success Message"]
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/telegram.svg' width='40' height='40' /></div><br/>Send Error Message"]
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Search Command", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract Search Query", pos: "b", h: 48 }
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/airtable.svg' width='40' height='40' /></div><br/>Search in Index"]
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/>Send Search Results"]
n8 --> n9
n8 --> n12
n9 --> n10
n15 --> n16
n7 --> n9
n0 --> n1
n0 --> n13
n6 --> n7
n10 --> n11
n1 --> n2
n13 --> n14
n14 --> n15
n5 --> n6
n5 --> n8
n2 --> n3
n4 --> n5
n3 --> n4
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,n5,n13 decision
class n10,n15 database
class n6 api
classDef customIcon fill:none,stroke:none
class n0,n3,n6,n9,n10,n11,n12,n15,n16 customIcon
Problemet: Telegram blir ett arkivskåp du inte kan söka i
Telegram är perfekt för snabb delning, men uselt som långsiktigt dokumentsystem. Du får en bild på ett kvitto, en PDF-faktura, kanske ett signerat avtal, och det känns ”hanterat” eftersom det ligger i chatten. Sedan, en månad senare, behöver du kvittot för en återbetalning eller måste bekräfta en rad för skatten, och då är du tillbaka i scrollande och gissande. Vissa filer visar inte ens en vettig förhandsvisning, så du öppnar fem PDF:er innan du hittar rätt. Det är mental friktion som alltid dyker upp vid sämsta möjliga tillfälle.
Friktionen byggs på. Några små missar blir snabbt till riktigt arbete.
- Du laddar ner samma fil flera gånger eftersom du inte kan hitta den pålitligt igen.
- Manuell namnändring och uppladdning till Drive ”sen” blir sällan av, så ditt Drive-arkiv förblir ofullständigt.
- Kvitton som bilder och skannade PDF:er kan inte textsökas, vilket gör att ditt enda alternativ blir minnet.
- När en kollega frågar ”har vi det där avtalet?”, blir svaret en tidskrävande jakt.
Lösningen: spara varje Telegram-fil, OCR:a den och sök sedan från chatten
Det här flödet gör Telegram till en enkel ”dokumentinkorg” som automatiskt arkiverar och indexerar det du skickar. När någon lägger in en bild, PDF eller ett dokument i din Telegram-chatt hämtar n8n filen, fångar metadata (filnamn, typ, avsändare) och laddar upp den till Google Drive så att den lagras korrekt. Om filen är lämplig för OCR skickas innehållet till Google Vision för att extrahera text från kvittobilder eller skannade PDF:er. Till sist skriver flödet en sökbar post i Airtable som inkluderar Drive-länken och den extraherade texten, så att du kan fråga efter den senare. När du använder /search invoice (eller valfritt nyckelord) returnerar Telegram matchande filer med ett utdrag och Drive-länken.
Flödet startar med ett Telegram-meddelande (antingen en filuppladdning eller kommandot /search). Filer sparas i Drive, OCR körs när det ska, och Airtable blir indexet. Sökresultaten kommer tillbaka till Telegram som strukturerade, lättlästa svar – och det är ärligt talat den delen som gör att det känns ”direkt.”
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 tar emot 25 kvitton och PDF:er i veckan via Telegram. Manuellt kanske du lägger cirka 5 minuter per fil på att ladda ner den, byta namn, ladda upp till Drive och skriva en notering till dig själv. Det blir ungefär 2 timmar varje vecka, och det är fortfarande inte textsökbart om det är en bild. Med det här flödet: att skicka filen tar sekunder, OCR och indexering kör i bakgrunden (oftast ett par minuter), och senare plockar /search uber fram matchen med en Drive-länk.
Det här behöver du
- 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 filer och kommandon.
- Google Drive för att lagra filer och dela länkar.
- Google Vision API-nyckel (hämtas i Google Cloud Console).
- Airtable för att lagra det sökbara textindexet.
Kunskapsnivå: medel. Du kopplar konton, lägger till API-nycklar och mappar några fält, men du behöver inte skriva kod.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett Telegram-meddelande triggar allt. Flödet lyssnar efter inkommande dokument/bilder och bevakar också kommandot /search i samma chatt.
Fildetaljer fångas och filen laddas ner. n8n läser grundläggande metadata (namn, MIME-typ, avsändare) och hämtar sedan själva filen via Telegram API så att den kan lagras och bearbetas.
Google Drive blir sanningskällan. Filen laddas upp till Drive direkt, vilket innebär att du inte längre förlitar dig på en chatttråd som arkiv.
OCR körs bara när det är rimligt. Om filtypen stödjer OCR extraherar Google Vision text från bilder och PDF:er; om inte, lagrar flödet vettiga standardvärden så att indexeringen inte fallerar.
Airtable lagrar det sökbara indexet och Telegram levererar svaren. Varje uppladdning blir en post med Drive-länken och OCR-texten. När du skickar /search frågas Airtable och Telegram svarar med träffar och förhandsutdrag.
Du kan enkelt justera lagringsreglerna (som Drive-mappar eller Airtable-fält) så att de matchar hur ditt team jobbar. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Telegram-triggern
Ställ in den inkommande Telegram-webhooken för att fånga filuppladdningar och sökkommandon.
- Lägg till och öppna Telegram Inbound Trigger.
- Ställ in Updates så att den inkluderar
messageochedited_message. - Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter.
Steg 2: Koppla Telegrams filintag och Drive-lagring
Validera inkommande meddelanden, mappa metadata, ladda ner filen och lagra den i Drive.
- I Validate File or Image behåller ni villkoren som kontrollerar
{{ $json.message.document }}eller{{ $json.message.photo }}för att tillåta filer eller bilder. - I Map File Details bekräftar ni att tilldelningarna använder uttryck som
{{ $json.message.document?.file_id || $json.message.photo?.slice(-1)[0].file_id }}och{{ $json.message.document?.file_name || 'image_' + $json.message.date + '.jpg' }}. - Öppna Retrieve Telegram File och ersätt File ID med det mappade värdet från det inkommande meddelandet. (Den nuvarande platshållaren
[YOUR_ID]måste ersättas eller mappas dynamiskt.) - Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter i Retrieve Telegram File.
- Öppna Store in Drive, ställ in Drive till
My Driveoch Folder tillroot(eller er målmapp). - Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter.
Steg 3: Ställ in OCR-bearbetning och sammanslagning
Kör OCR för filtyper som stöds och slå ihop OCR-resultat med standardvärden för icke-OCR.
- I Assess OCR Support behåller ni MIME-kontrollerna för
image/ochapplication/pdf. - I Run Vision OCR ställer ni URL till
=https://vision.googleapis.com/v1/images:annotateoch behåller Authentication somoAuth2. - Behåll värdet för request body i Run Vision OCR som
=[{"image":{"content":"{{ $('Retrieve Telegram File').item.binary.data.data }}"},"features":[{"type":"TEXT_DETECTION"}]}]. - Inloggningsuppgifter krävs: Anslut en OAuth2-inloggning för Google Vision i Run Vision OCR (ingen är konfigurerad ännu).
- I Parse OCR Output behåller ni tilldelningar för extractedText och confidence med uttryck som
{{ $json.responses[0]?.fullTextAnnotation?.text || 'No text detected' }}. - I Set Non-OCR Defaults behåller ni standardvärdena
Not applicable for this file typeochN/A. - Bekräfta att Set Non-OCR Defaults skickar output till både Combine OCR Results och Dispatch Failure Notice parallellt.
Steg 4: Konfigurera Airtable-loggning och uppladdningsbekräftelse
Lagra den indexerade fildatan i Airtable och meddela användaren med en Telegram-bekräftelse.
- Öppna Log to Airtable och ställ in Operation till
create. - Ställ in Base och Table till era Airtable-ID:n (ersätt
[YOUR_ID]-värden). - Inloggningsuppgifter krävs: Anslut era airtableTokenApi-inloggningsuppgifter.
- I Send Upload Confirmation behåller ni Text som det formaterade meddelandet med uttryck som
{{ $json.fileName }}och{{ $('Store in Drive').item.json.webViewLink }}. - Ställ in Chat ID till
{{ $json.chatId }}och behåll Parse Mode somMarkdown. - Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter i Send Upload Confirmation.
Notering om nodflöde: Combine OCR Results skickar output till Log to Airtable, som sedan skickar output till Send Upload Confirmation.
Steg 5: Konfigurera sökförfrågningar och svar
Låt användare söka i lagrade filer med kommandot /search och returnera sedan matchningar från Airtable.
- I Detect Search Request behåller ni villkoret som kontrollerar
{{ $json.message.text }}och att det startsWith/search. - I Parse Search Terms ställer ni searchQuery till
{{ $json.message.text.replace('/search ', '').trim() }}och chatId till{{ $json.message.chat.id }}. - I Query Airtable Index ställer ni Operation till
searchoch Filter By Formula till=SEARCH(LOWER("{{ $json.searchQuery }}"), LOWER({extracted_text})). - Inloggningsuppgifter krävs: Anslut era airtableTokenApi-inloggningsuppgifter i Query Airtable Index.
- I Return Search Matches behåller ni Text inställt på resultatmallen som mappar över resultaten från Query Airtable Index.
- Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter i Return Search Matches.
Parallell körning: Telegram Inbound Trigger skickar output till både Validate File or Image och Detect Search Request parallellt.
Steg 6: Konfigurera flödet för felmeddelande
Skicka ett vänligt felmeddelande när icke-OCR- eller felvägar triggas.
- Öppna Dispatch Failure Notice och behåll Text inställd på
❌ **Error Processing File**samt uppföljningsmeddelandet. - Ställ in Chat ID till
{{ $json.chatId }}. - Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter i Dispatch Failure Notice.
Parallell körning: Set Non-OCR Defaults skickar output till både Combine OCR Results och Dispatch Failure Notice parallellt.
Steg 7: Testa och aktivera ert workflow
Verifiera både uppladdnings- och sökflöden innan ni slår på automatiseringen.
- Klicka på Execute Workflow och skicka en fil eller bild till er Telegram-bot för att trigga Telegram Inbound Trigger.
- Bekräfta att en lyckad körning lagrar filen i Drive, loggar en post i Airtable och skickar meddelandet Send Upload Confirmation med en Drive-länk.
- Skicka ett meddelande som
/search invoiceoch verifiera att Return Search Matches svarar med matchande Airtable-poster. - Om allt ser korrekt ut, växla workflowet till Active för användning i produktion.
Vanliga fallgropar
- Google Drive-inloggningar kan gå ut eller sakna mapprättigheter. Om uppladdningar misslyckas, kontrollera statusen för inloggningsuppgifterna i n8n och bekräfta att Drive-mappen är åtkomlig för det anslutna kontot.
- Om du använder OCR via Google Vision varierar behandlingstiden för stora PDF:er. Om Telegram svarar innan OCR är klar, öka eventuella vänt-/timeout-inställningar i HTTP Request och hantera tomma OCR-svar på ett robust sätt.
- Airtable-sökningar beror på hur du lagrar och indexerar text. Om
/searchinte returnerar något, bekräfta att fältet ”OCR-text” fylls i och att dina Airtable-base/tabellbehörigheter tillåter läsning och sökning.
Vanliga frågor
Cirka en timme om dina Google- och Airtable-konton är redo.
Nej. Du klistrar mest in API-nycklar, kopplar konton och mappar några fält.
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 användningen av Google Vision API (ofta några dollar i månaden för lätt kvitto-OCR, mer om du processar många sidor).
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 hanterar n8n bra. Egen hosting ger obegränsat antal körningar men kräver grundläggande serveradministration.
Ja, och det är en vanlig justering. Du kan styra uppladdningar till olika Google Drive-mappar genom att ändra steget ”Store in Drive” så att en mapp väljs baserat på Telegram-användare, chatt eller ett nyckelord i bildtexten. Många team lägger också till ett Airtable-fält för ”Kund” och fyller det utifrån samma regel, så att sökresultaten förblir organiserade.
Oftast är det en utgången Google OAuth-token eller att det anslutna kontot inte längre har behörighet att skriva till målmappen. Återanslut Google Drive-inloggningen i n8n och verifiera sedan mappens delningsinställningar. Om det bara misslyckas ibland, kontrollera Drive-rate limits eller filstorleksproblem när Telegram skickar större dokument.
På n8n Cloud Starter kan du köra några tusen flödeskörningar per månad, vilket räcker för de flesta små team. Om du hostar själv finns ingen körningsgräns, så begränsningen blir din server och hur snabbt OCR-svaren kommer tillbaka. I praktiken klarar flödet löpande dagliga uppladdningar utan problem; OCR-tunga batcher (som att skanna en hög med långa PDF:er) tar längre tid eftersom Google Vision gör jobbet.
Ofta, ja. Det här flödet har förgrenad logik (fil vs. /search), villkorlig OCR och en ”lagra + indexera + fråga”-loop, vilket är precis där Zapier-liknande prissättning per task kan bli dyrt och krångligt. n8n är också enklare att hosta själv, så du kan köra hög volym utan att oroa dig för kostnad per task. Samtidigt: om allt du vill ha är ”Telegram-fil → Google Drive-mapp” kan Zapier eller Make gå snabbare att sätta upp. Prata med en automationsexpert om du vill ha den enklaste vägen för just ditt användningsfall.
När detta väl körs slutar dina Telegram-filer att vara ”försvunna i chatten” och börjar fungera som ett riktigt arkiv du kan söka i. Sätt upp det en gång, så gör flödet det tråkiga jobbet därefter.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.