AutomationFlowsAI & RAG › Create Personal Notes with Voice Transcription Using Local Llama and Telegram

Create Personal Notes with Voice Transcription Using Local Llama and Telegram

ByAlberto @albertob12 on n8n.io

Accept voice or text notes via Telegram

Event trigger★★★★☆ complexityAI-powered17 nodesTelegram TriggerTelegramChain LlmLm OllamaHTTP Request
AI & RAG Trigger: Event Nodes: 17 Complexity: ★★★★☆ AI nodes: yes Added:
Create Personal Notes with Voice Transcription Using Local Llama and Telegram — n8n workflow card showing Telegram Trigger, Telegram, Chain Llm integration

This workflow corresponds to n8n.io template #6013 — we link there as the canonical source.

This workflow follows the Chainllm → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "A97E7YWDFrFl5S1k",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "PersonalNotesAssistant",
  "tags": [],
  "nodes": [
    {
      "id": "7871183c-2248-4bb0-a12e-99d5292483bb",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        0,
        280
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {
          "download": true
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "eeec87eb-f23d-45a6-b053-a5667189a695",
      "name": "Get Voice File",
      "type": "n8n-nodes-base.telegram",
      "position": [
        660,
        380
      ],
      "parameters": {
        "fileId": "={{ $json.message.voice.file_id }}",
        "resource": "file"
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "08a2ade9-f7c7-44b5-acfa-463e8f0a3e0e",
      "name": "Basic LLM Chain",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1100,
        -120
      ],
      "parameters": {
        "text": "=You are my personal assistant that helps me note my ideas. Summarize in bullet points this text to be saved in my notes and do not invent anything (give me no introduction or explanation, just the bullet points with the summary): \n'{{ $json.message.text }}'.",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "dc84d96d-5b4e-44c6-932f-5fa2ef5cfe99",
      "name": "Ollama Model",
      "type": "@n8n/n8n-nodes-langchain.lmOllama",
      "position": [
        1188,
        100
      ],
      "parameters": {
        "model": "llama3.2:1b",
        "options": {}
      },
      "credentials": {
        "ollamaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b969e8f8-d467-47e3-8c31-894d67ddd3b7",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        440,
        180
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "text",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "a2d6691c-beed-44d8-a67f-be43b28155df",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.text }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "voice",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6ce5f222-d555-470b-862d-e132b9a5fb72",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.voice.file_id }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "aecff81f-1688-4aa5-9405-d474d2041a27",
      "name": "Basic LLM Chain1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1100,
        380
      ],
      "parameters": {
        "text": "=You are my personal assistant that helps me note my ideas. Summarize in bullet points this text to be saved in my notes and do not invent anything (give me no introduction or explanation, just the bullet points with the summary): \n{{ $json.data }}",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "0e49f038-14e0-4f06-85e8-1fec21a2cca6",
      "name": "Ollama Model1",
      "type": "@n8n/n8n-nodes-langchain.lmOllama",
      "position": [
        1188,
        600
      ],
      "parameters": {
        "model": "llama3.2:1b",
        "options": {}
      },
      "credentials": {
        "ollamaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fbefcf9b-6af5-4a4b-8bed-878e9a4c0b82",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        220,
        280
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d2e36e10-3ffc-47ab-bf1a-3c9639b0106a",
              "operator": {
                "type": "number",
                "operation": "equals"
              },
              "leftValue": "={{ $json.message.from.id }}",
              "rightValue": 1460980649
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3e95c679-b0dd-41bc-861e-e3c11e2be99f",
      "name": "Send a text message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        440,
        380
      ],
      "parameters": {
        "text": "I am sorry, you have no access to my services.",
        "chatId": "={{ json.message.from.id }}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "92fa3ec1-9b9b-49f1-90fb-a825d20f4f68",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        880,
        380
      ],
      "parameters": {
        "url": "http://localhost:9000/asr",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "audio_file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c2abe1ff-805c-443b-af79-f408bd495417",
      "name": "Send a text message1",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1476,
        180
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "chatId": "telegramChatId",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "29aa8c0b-37db-4f27-ac7a-175687529cab",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        100
      ],
      "parameters": {
        "content": "## Telegram Trigger\nStart automation when receiving a Telegram message"
      },
      "typeVersion": 1
    },
    {
      "id": "2f92b3be-f888-41ac-87de-83e8118326f8",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        140,
        440
      ],
      "parameters": {
        "content": "## If\nDetect if message comes from admited user"
      },
      "typeVersion": 1
    },
    {
      "id": "d7e1d568-d28d-49ce-abf2-7e20612d8a92",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        -40
      ],
      "parameters": {
        "content": "## Switch\nCheck if message is a text or audio message"
      },
      "typeVersion": 1
    },
    {
      "id": "b183602b-0a0c-4a2d-9a80-97944b825fe3",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        780,
        560
      ],
      "parameters": {
        "content": "## Transcription\nTranscribe audio locally with Whisper API"
      },
      "typeVersion": 1
    },
    {
      "id": "962f8b82-b2fc-4fd5-8e09-639bacbcbcec",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        200
      ],
      "parameters": {
        "content": "## AI Agent\nGenerate answer from AI Agent"
      },
      "typeVersion": 1
    },
    {
      "id": "e6caefea-909f-4db1-970b-365faafdbc31",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1500,
        -20
      ],
      "parameters": {
        "content": "## Telegram \nSend response with elaborated note to the user"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1"
  },
  "versionId": "bdd5e15f-5374-4329-b45d-b1683d01f454",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send a text message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get Voice File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Basic LLM Chain1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ollama Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Ollama Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get Voice File": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Send a text message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain1": {
      "main": [
        [
          {
            "node": "Send a text message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Accept voice or text notes via Telegram

Source: https://n8n.io/workflows/6013/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow creates a multi-talented AI assistant named Simran that interacts with users via Telegram. It can handle text and voice messages, understand the user's intent, and perform various tasks.

MongoDB, Chain Llm, Google Gemini Chat +11
AI & RAG

A Telegram bot that converts natural-language work descriptions into detailed cost estimates using AI parsing, vector search, and the open-source DDC CWICR database with 55,000+ construction work item

HTTP Request, Telegram, Telegram Trigger +6
AI & RAG

Automatically capture, categorize, and log expenses from receipts, PDFs, voice notes, or text — powered by AI and integrated with Telegram and Google Sheets.

HTTP Request, OpenAI, Chain Llm +6
AI & RAG

Open trades for forex/xauusd/gold with this n8n template. It demonstrates how to automate MetaTrader 5 trading executions through natural language commands via Telegram, enabling hands-free trade mana

Telegram, HTTP Request, Telegram Trigger +2
AI & RAG

With this workflow you can extract data from resume documents uploaded via a Telegram bot. Workflow transform readable content of PDF resume into structured data, using AI nodes and returns PDF with f

OpenAI Chat, Output Parser Autofixing, Output Parser Structured +4