{ "id": "okMME97B70fXzK5U", "meta": { "instanceId": "workflow-c5b36195", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:50.958823", "updatedAt": "2025-09-29T07:07:50.958836", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "name": "send file to kindle through telegram bot", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "nodes": [ { "id": "6e581437-28dc-4573-88f2-ce44ec497819", "name": "receive file message from telegram bot", "type": "n8n-nodes-base.telegramTrigger", "position": [ 460, 520 ], "webhookId": "5d8d9b97-672d-461a-83c5-1665136494dd", "parameters": { "updates": [ "message" ], "additionalFields": { "download": true } }, "typeVersion": 1.1, "notes": "This telegramTrigger node performs automated tasks as part of the workflow." }, { "id": "6eb48c62-69a9-4bd2-a6ab-cffb5cde03df", "name": "check if there is a file in the message", "type": "n8n-nodes-base.if", "position": [ 680, 520 ], "parameters": { "options": { "ignoreCase": false }, "conditions": { "options": { "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "4ad69b1f-c19f-436d-8af3-203722f4dd4c", "operator": { "type": "object", "operation": "exists", "singleValue": true }, "leftValue": "={{ $json.message.document }}", "rightValue": "" } ] } }, "typeVersion": 2, "alwaysOutputData": false, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "5dec7f0b-e650-4249-a5fb-e31cebda8e81", "name": "reply to warn that file is missing", "type": "n8n-nodes-base.telegram", "position": [ 900, 720 ], "parameters": { "text": "There is no file in message.Please check.", "chatId": "={{ $('receive file message from telegram bot').item.json.message.chat.id }}", "additionalFields": { "reply_to_message_id": "={{ $('receive file message from telegram bot').item.json.message.message_id }}" } }, "typeVersion": 1.1, "notes": "This telegram node performs automated tasks as part of the workflow." }, { "id": "79f49881-6cb0-4207-8143-11f021e71083", "name": "rename file to as attachment out email", "type": "n8n-nodes-base.code", "position": [ 900, 320 ], "parameters": { "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n item.binary.data.fileName = item.json.message.document.file_name;\n}\n\nreturn $input.all();" }, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow." }, { "id": "059babdc-eb35-416a-9ff4-31a34bd6a4f9", "name": "send email with the file as attchament to kindle", "type": "n8n-nodes-base.microsoftOutlook", "position": [ 1160, 320 ], "parameters": { "subject": "book from telegram bot", "bodyContent": "=This is a book named {{ $json.message.document.file_name }} from telegram bot.", "toRecipients": "hulb.kindle11@kindle.com", "additionalFields": { "attachments": { "attachments": [ { "binaryPropertyName": "data" } ] } } }, "notesInFlow": false, "typeVersion": 2, "notes": "This microsoftOutlook node performs automated tasks as part of the workflow." }, { "id": "8c927ee3-5b65-4aeb-861c-fe459db1e4c9", "name": "reply to telegram chat that the file has been sent successfully", "type": "n8n-nodes-base.telegram", "position": [ 1380, 320 ], "parameters": { "text": "file is sent to kindle successfully!", "chatId": "={{ $('receive file message from telegram bot').item.json.message.chat.id }}", "additionalFields": { "reply_to_message_id": "={{ $('receive file message from telegram bot').item.json.message.message_id }}" } }, "typeVersion": 1.1, "notes": "This telegram node performs automated tasks as part of the workflow." }, { "id": "ceba7af1-b23c-426e-a1e7-5fd996021ffe", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 360, 200 ], "parameters": { "width": 252, "height": 229, "content": "## preparations\n1. create a new telegram bot through bot father and save the credential on n8n\n2. save your email credential on n8n\n3. setup your kindle on amazon to allow your email address send to your kindle." }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "989939ec-b7ea-4903-b375-6f0fc6c4cee1", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 1080, 140 ], "parameters": { "content": "## email setup\nmake sure you have allowed your email address as the sender to kindle on amazon. And use the kindle address as the email receiver" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "error-1259ae25", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [ 1000, 400 ], "parameters": { "message": "Workflow execution error", "options": {} } } ], "active": false, "pinData": {}, "settings": { "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "executionOrder": "v1", "saveManualExecutions": true, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "versionId": "624798e9-5f62-4c14-9bf3-5ad92b8713e6", "connections": { "6e581437-28dc-4573-88f2-ce44ec497819": { "main": [ [ { "node": "error-handler-6e581437-28dc-4573-88f2-ce44ec497819-3e42840a", "type": "main", "index": 0 } ] ] }, "5dec7f0b-e650-4249-a5fb-e31cebda8e81": { "main": [ [ { "node": "error-handler-5dec7f0b-e650-4249-a5fb-e31cebda8e81-8e9b5a59", "type": "main", "index": 0 } ] ] }, "8c927ee3-5b65-4aeb-861c-fe459db1e4c9": { "main": [ [ { "node": "error-handler-8c927ee3-5b65-4aeb-861c-fe459db1e4c9-0b986fc6", "type": "main", "index": 0 } ] ] } }, "description": "Automated workflow: send file to kindle through telegram bot. This workflow integrates 7 different services: telegramTrigger, microsoftOutlook, stickyNote, telegram, code. It contains 11 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: send file to kindle through telegram bot. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }