Tesseract - 재정 도우미 X
고급
이것은Finance, AI분야의자동화 워크플로우로, 27개의 노드를 포함합니다.주로 If, Set, Code, Telegram, HttpRequest 등의 노드를 사용하며인공지능 기술을 결합하여 스마트 자동화를 구현합니다. 통해Telegram사용Tesseract및Llama에서收据中추출详细信息
사전 요구사항
- •Telegram Bot Token
- •대상 API의 인증 정보가 필요할 수 있음
사용된 노드 (27)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "V2s5idMq9qNtiMP9",
"meta": {
"instanceId": "c2650793f644091dc80fb900fe63448ad1f4b774008de9608064d67294f8307c",
"templateCredsSetupCompleted": true
},
"name": "Tesseract - Money MateX",
"tags": [],
"nodes": [
{
"id": "42a12e32-36e3-40c1-9f33-9947c0e263a1",
"name": "요약 메시지 형식화",
"type": "n8n-nodes-base.code",
"position": [
120,
200
],
"parameters": {
"jsCode": "// Get input data from Parser node\nconst inputData = $input.all()[0].json.output || {};\n\n// Default values if data is incomplete\nconst store = inputData.store || { store_name: 'not available', store_location: 'not available' };\nconst transaction = inputData.transaction || { date: 'not available', time: 'not available' };\nconst items = inputData.items || [];\nconst summary = inputData.summary || { total: 'not available', payment_method: 'not available', expense_category: 'not available' };\n\n// Create message with available information\nlet message = '';\n\nif (store.store_name !== 'not available') {\n message += `📋 Store: ${store.store_name}\\n`;\n}\nif (store.store_location !== 'not available') {\n message += `📍 Location: ${store.store_location}\\n`;\n}\nif (transaction.date !== 'not available' || transaction.time !== 'not available') {\n message += `📅 Date: ${transaction.date} ${transaction.time}\\n`;\n}\n\nif (items.length > 0) {\n message += `\\n🛒 Items:\\n`;\n items.forEach(item => {\n message += `- ${item.description || 'not available'}: ${item.total_price || 'not available'}\\n`;\n });\n}\n\nif (summary.total !== 'not available') {\n if (parseFloat(summary.total) === 0) {\n message = 'Looks like an input error, total is 0? Did you get this for free? Please check again.';\n } else {\n message += `\\n💸 Total: Rp ${summary.total}\\n`;\n }\n}\n\nif (summary.expense_category !== 'not available' && parseFloat(summary.total) !== 0) {\n message += `📌 Category: ${summary.expense_category}\\n`;\n}\n\n// Default message if no information is available\nif (!message) {\n message = 'No information available from the input.';\n}\n\n// Return message as output\nreturn [\n {\n json: {\n message: message\n }\n }\n];"
},
"typeVersion": 2
},
{
"id": "4078e97c-debf-4216-8c18-c9e1d8b76fd5",
"name": "Telegram 파일 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
-600,
-180
],
"parameters": {
"url": "=https://api.telegram.org/bot<your_bot_token_here>/getFile?file_id={{ $json.message.photo[3].file_id }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "819b724d-7ab5-4a59-b3d0-52a77013c311",
"name": "이미지 다운로드",
"type": "n8n-nodes-base.httpRequest",
"position": [
-300,
-180
],
"parameters": {
"url": "=https://api.telegram.org/file/bot<your_bot_token_here>/{{ $node['Get Telegram File'].json['result']['file_path'] }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "9e7d33c8-42d1-4870-8626-087aae8375c6",
"name": "Telegram 트리거",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-1280,
0
],
"webhookId": "56161a53-5b4d-46fb-9a9b-d65cdd9a7070",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "UAvyFVvuZ3qtAjBR",
"name": "motun8nmoney"
}
},
"typeVersion": 1.2
},
{
"id": "094293ee-dcdc-4a19-b33a-5361e12177db",
"name": "고정 - Telegram 트리거",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1280,
-140
],
"parameters": {
"color": null,
"width": 260,
"height": 180,
"content": "## 📲 **Telegram Trigger**\nReceives user messages (text or photo) from Telegram to start the expense tracking flow."
},
"typeVersion": 1
},
{
"id": "49a51aa2-0a1c-417e-868e-d6a5f9284846",
"name": "AI 분류기",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-200,
200
],
"parameters": {
"text": "={{ $json.text }}",
"messages": {
"messageValues": [
{
"message": "=You are a financial planner expert with a robust parser algorithm. Category options are:\n- Income\n- Expense\n\nExpense options are:\n- Food & Beverages\n- Household\n- Transport\n\nInput may be in English, or Bahasa Indonesia. Always generate output in Input Language.\n\nAnalyze the input. If no expenses or income detected, return 'not found' and 0 for the total. If date is not specified, use {{ $('Telegram Trigger').item.json.message.date}}. For relative dates (e.g., yesterday, tomorrow), use {{ $('Telegram Trigger').item.json.message.date}} as the base. Example: yesterday is {{ $('Telegram Trigger').item.json.message.date}} - 1."
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.6
},
{
"id": "15feb90d-e82f-4c45-8785-2fa9a26e98b7",
"name": "잘못된 입력 확인",
"type": "n8n-nodes-base.if",
"position": [
380,
200
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b8408eb5-502b-48bf-b85d-3cea897f60b9",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.message }}",
"rightValue": "Looks like an input error, total is 0? Did you get this for free? Please check again."
}
]
}
},
"typeVersion": 2.2
},
{
"id": "cc4cf545-6ef9-455b-a5b6-9876bc2e3866",
"name": "텍스트 입력 추출",
"type": "n8n-nodes-base.set",
"position": [
-600,
200
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "aa52b49e-1087-4623-83cb-905500c36d3c",
"name": "message",
"type": "string",
"value": "={{ $json.message.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "b6dc7831-994c-4539-a456-cbfde3c009a8",
"name": "이미지 확인",
"type": "n8n-nodes-base.if",
"position": [
-980,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "c5999c0e-853d-45e6-bec6-f446defe909d",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.message.photo }}",
"rightValue": "="
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "ea0c351f-8cae-4252-a3b9-34a1d03d3ef2",
"name": "고정 - 이미지 확인",
"type": "n8n-nodes-base.stickyNote",
"position": [
-980,
-140
],
"parameters": {
"color": null,
"height": 180,
"content": "## 🔍 **Check for Image**\nDetermines whether the input is an image or text to route accordingly."
},
"typeVersion": 1
},
{
"id": "0e3d255e-69e7-4b78-82c4-1077a3ea91f4",
"name": "영수증 파서",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-40,
380
],
"parameters": {
"jsonSchemaExample": "{\n \"store\": {\n \"store_name\": \"Store A\",\n \"store_location\": \"Store location\"\n },\n \"transaction\": {\n \"date\": \"Transaction date\",\n \"time\": \"Transaction time\",\n \"receipt_number\": \"Receipt number\"\n },\n \"items\": [\n {\n \"description\": \"Item name\",\n \"quantity\": \"Quantity\",\n \"unit_price\": \"Unit price\",\n \"total_price\": \"Item total price\"\n }\n ],\n \"summary\": {\n \"total\": \"Total (number)\",\n \"payment_method\": \"Payment method\",\n \"expense_category\": \"Household\"\n }\n}"
},
"typeVersion": 1.2
},
{
"id": "675093cf-68b1-47b1-a2c5-aeda2e1b5360",
"name": "AI 분석기",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
-200,
380
],
"parameters": {
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "DPrHlBN0s5WFDxi9",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "ffed21ef-2aed-4d63-b17e-df83bd4e6c9d",
"name": "오류 메시지 전송",
"type": "n8n-nodes-base.telegram",
"position": [
700,
180
],
"webhookId": "6c7df749-2bb0-4dff-95f8-8980325158e1",
"parameters": {
"text": "=hello {{ $('Telegram Trigger').item.json.message.from.first_name }}\n\n{{ $json.message }}",
"chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "UAvyFVvuZ3qtAjBR",
"name": "motun8nmoney"
}
},
"typeVersion": 1.2
},
{
"id": "af0f7caa-f746-4eb3-bf57-4c345e448c23",
"name": "지출 요약 전송",
"type": "n8n-nodes-base.telegram",
"position": [
700,
460
],
"webhookId": "f7a56f02-1aa8-4caa-9ccb-e4006a98db69",
"parameters": {
"text": "=hello {{ $('Telegram Trigger').item.json.message.from.first_name }}\n\nIni Rekap Belanjamu\n{{ $json.message }}",
"chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "UAvyFVvuZ3qtAjBR",
"name": "motun8nmoney"
}
},
"typeVersion": 1.2
},
{
"id": "9ebee364-9df5-4e05-acee-dad2e3f02d07",
"name": "고정 - 영수증 데이터 파싱1",
"type": "n8n-nodes-base.stickyNote",
"position": [
680,
-300
],
"parameters": {
"color": 4,
"width": 360,
"height": 200,
"content": "## **MoneyMate is free to use!**\nGot feedback, ideas, or just wanna chat? Find me at [khmuhtadin.com](https://khmuhtadin.com). \n\nWanna buy me a coffee to fuel more workflows? Head to [buymeacoffee.com/khmuhtadin](https://buymeacoffee.com/khmuhtadin)! ☕"
},
"typeVersion": 1
},
{
"id": "13a31b33-3ccc-4680-a2c6-cd8255a827e0",
"name": "이미지에서 값 추출",
"type": "n8n-nodes-tesseractjs.tesseractNode",
"position": [
20,
-180
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "297c9837-890b-42a2-9234-3d808ada6850",
"name": "고정 - 지출 요약 전송1",
"type": "n8n-nodes-base.stickyNote",
"position": [
700,
360
],
"parameters": {
"color": null,
"width": 340,
"content": "## 📬 **Send Expense Summary**\nSends a summary of the recognized receipt or input to the user's Telegram chat."
},
"typeVersion": 1
},
{
"id": "32f7368a-cac0-4b4e-b944-9a3453a78118",
"name": "고정 - 텍스트 입력 추출1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-600,
100
],
"parameters": {
"color": null,
"width": 260,
"content": "## 📝 **Extract Text Input**\nHandles plain text inputs when no image is provided by the user."
},
"typeVersion": 1
},
{
"id": "c7c9d1cd-368b-4374-9533-e3e76fb48c08",
"name": "고정 - 영수증 데이터 파싱2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
500
],
"parameters": {
"color": null,
"width": 300,
"content": "## 📊 **Parse Receipt Data**\nConverts AI output into structured JSON with store, transaction, items, and totals."
},
"typeVersion": 1
},
{
"id": "4b3b0887-e3a7-4365-a41b-6773d2009d71",
"name": "고정 - Telegram 파일 가져오기1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-600,
-280
],
"parameters": {
"color": null,
"width": 260,
"content": "## 📦 **Get Telegram File**\nFetches the file ID of a receipt image uploaded via Telegram."
},
"typeVersion": 1
},
{
"id": "b1edb77f-6425-47f3-ba63-ed1b00dd6219",
"name": "고정 - 이미지 다운로드2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-300,
-280
],
"parameters": {
"color": null,
"width": 260,
"content": "## ⬇️ **Download Image**\nDownloads the receipt photo and prepares it for text extraction."
},
"typeVersion": 1
},
{
"id": "d7437f5c-276d-46b5-956b-72d89809ebc9",
"name": "고정 - 이미지 다운로드3",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-280
],
"parameters": {
"color": null,
"width": 260,
"content": "## 🖼️ **Text Extractor**\nExtract text from given image "
},
"typeVersion": 1
},
{
"id": "a381a022-9675-4e22-8bb5-b27992cfc3b8",
"name": "고정 - 요약 메시지 형식화1",
"type": "n8n-nodes-base.stickyNote",
"position": [
100,
80
],
"parameters": {
"color": null,
"width": 260,
"content": "## 🧾 **Format Message**\nCreates a clear summary of expenses with store, date, items, total, and category."
},
"typeVersion": 1
},
{
"id": "5234e9fe-0202-460a-8a26-4dbf64ef3141",
"name": "고정 - AI 분류기1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-200,
80
],
"parameters": {
"color": null,
"width": 280,
"content": "## 🧠 **AI Categorizer**\nUses AI to classify input into categories like income or expenses, handling dates and languages."
},
"typeVersion": 1
},
{
"id": "1a7c3a49-a08c-4260-a393-04803a96aa02",
"name": "고정 - 오류 메시지 전송1",
"type": "n8n-nodes-base.stickyNote",
"position": [
700,
80
],
"parameters": {
"color": null,
"width": 340,
"content": "## ❗ **Send Error Message**\nSends a warning to the user if the input is invalid or incomplete."
},
"typeVersion": 1
},
{
"id": "912961cb-4ce1-41ea-9007-876ad3478a09",
"name": "고정 - 잘못된 입력 확인1",
"type": "n8n-nodes-base.stickyNote",
"position": [
380,
80
],
"parameters": {
"color": null,
"width": 280,
"content": "## 🚫 **Check Invalid Input**\nDetects and flags incorrect or zero-value entries before sending a response."
},
"typeVersion": 1
},
{
"id": "56dfbcb7-b04c-41ba-b1e8-c7ad273a8bb4",
"name": "고정 - OpenRouter AI 모델1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
500
],
"parameters": {
"color": null,
"width": 300,
"content": "## 🤖 **OpenRouter AI Model**\nConfigures the language model to extract structured information from natural language input."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "3c1c7a80-0901-4dcb-a8ce-caa9331ca8c3",
"connections": {
"675093cf-68b1-47b1-a2c5-aeda2e1b5360": {
"ai_languageModel": [
[
{
"node": "49a51aa2-0a1c-417e-868e-d6a5f9284846",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"49a51aa2-0a1c-417e-868e-d6a5f9284846": {
"main": [
[
{
"node": "42a12e32-36e3-40c1-9f33-9947c0e263a1",
"type": "main",
"index": 0
}
]
]
},
"819b724d-7ab5-4a59-b3d0-52a77013c311": {
"main": [
[
{
"node": "13a31b33-3ccc-4680-a2c6-cd8255a827e0",
"type": "main",
"index": 0
}
]
]
},
"0e3d255e-69e7-4b78-82c4-1077a3ea91f4": {
"ai_outputParser": [
[
{
"node": "49a51aa2-0a1c-417e-868e-d6a5f9284846",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"b6dc7831-994c-4539-a456-cbfde3c009a8": {
"main": [
[
{
"node": "4078e97c-debf-4216-8c18-c9e1d8b76fd5",
"type": "main",
"index": 0
}
],
[
{
"node": "cc4cf545-6ef9-455b-a5b6-9876bc2e3866",
"type": "main",
"index": 0
}
]
]
},
"9e7d33c8-42d1-4870-8626-087aae8375c6": {
"main": [
[
{
"node": "b6dc7831-994c-4539-a456-cbfde3c009a8",
"type": "main",
"index": 0
}
]
]
},
"4078e97c-debf-4216-8c18-c9e1d8b76fd5": {
"main": [
[
{
"node": "819b724d-7ab5-4a59-b3d0-52a77013c311",
"type": "main",
"index": 0
}
]
]
},
"cc4cf545-6ef9-455b-a5b6-9876bc2e3866": {
"main": [
[
{
"node": "49a51aa2-0a1c-417e-868e-d6a5f9284846",
"type": "main",
"index": 0
}
]
]
},
"15feb90d-e82f-4c45-8785-2fa9a26e98b7": {
"main": [
[
{
"node": "ffed21ef-2aed-4d63-b17e-df83bd4e6c9d",
"type": "main",
"index": 0
}
],
[
{
"node": "af0f7caa-f746-4eb3-bf57-4c345e448c23",
"type": "main",
"index": 0
}
]
]
},
"42a12e32-36e3-40c1-9f33-9947c0e263a1": {
"main": [
[
{
"node": "15feb90d-e82f-4c45-8785-2fa9a26e98b7",
"type": "main",
"index": 0
}
]
]
},
"13a31b33-3ccc-4680-a2c6-cd8255a827e0": {
"main": [
[
{
"node": "49a51aa2-0a1c-417e-868e-d6a5f9284846",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 금융, 인공지능
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
스마트资金관리器
基于Telegram、Google Sheets및OpenAI의AI驱动收据및支出追踪器
If
Set
Code
+
If
Set
Code
50 노드Khairul Muhtadin
금융
WP - 업데이트됨
AI를 사용하여 SEO 최적화된 WordPress 블로그 기사를 생성하고 게시합니다.
If
Discord
Telegram
+
If
Discord
Telegram
16 노드Khairul Muhtadin
인공지능
블로그 랜덤 전쟁: 블로거 버전
OpenAI와 DALL-E를 사용하여 SEO 최적화된 블로그 기사 생성并发송
Set
Code
Telegram
+
Set
Code
Telegram
19 노드Khairul Muhtadin
인공지능
SEO 친화적 - WordPress 기사 생성기
SEO 최적화된 블로그 기사 생성 및 WordPress에 게시
If
Discord
Telegram
+
If
Discord
Telegram
18 노드Khairul Muhtadin
인공지능
개인 - TRM 신청
Telegram 로봇과 AI 날짜 인식을 사용하여 코리아 페소兑 미국 달러 환율 가져오기
If
Set
Code
+
If
Set
Code
31 노드Juan Sanchez
금융
📊 WhatsApp와 Telegram의 AI 토큰 추적기 - AI 사용 현황을 Google 스프레드시트에 저장
📊 WhatsApp과 Telegram의 AI 토큰 추적기 - AI 사용 상황을 Google 스프레드시트에 저장
If
Set
Code
+
If
Set
Code
37 노드Amanda Benks
금융