8
n8n 中文网amn8n.com

Telegram 语音消息_音频转录--> AI 摘要和情感分析--> Gmail 投递

高级

这是一个Miscellaneous, AI Summarization, Multimodal AI领域的自动化工作流,包含 17 个节点。主要使用 If, Wait, Gmail, Switch, Telegram 等节点。 使用 AssemblyAI 和 GPT-4.1 转录分析 Telegram 语音消息并发送至 Gmail

前置要求
  • Google 账号和 Gmail API 凭证
  • Telegram Bot Token
  • 可能需要目标 API 的认证凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "x9eRtxMrmt4t7H3o",
  "meta": {
    "instanceId": "c6db2bbd15df605c52b03ec6457f801cfcd738d259ddbb148b61be2fb93e4e29",
    "templateCredsSetupCompleted": true
  },
  "name": "Telegram 语音消息_音频转录--> AI 摘要和情感分析--> Gmail 投递",
  "tags": [],
  "nodes": [
    {
      "id": "4bf65cfa-267e-4250-82dd-fc78c57d3aae",
      "name": "获取文件",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -720,
        -480
      ],
      "webhookId": "b98163bd-602c-441b-9547-574ad91d544e",
      "parameters": {
        "fileId": "={{ $json.message.voice.file_id }}",
        "resource": "file",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "lvdmmBti116WF6Px",
          "name": "<<YOUR BOT NAME>>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b92120d7-5a72-4707-a7df-1aeb4ba15d89",
      "name": "等待",
      "type": "n8n-nodes-base.wait",
      "position": [
        -368,
        -464
      ],
      "webhookId": "8f9d054e-7e59-4356-ab25-e4292c13b504",
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "638cc6ea-60e9-4099-8e7a-6b812aeb93d7",
      "name": "条件判断",
      "type": "n8n-nodes-base.if",
      "position": [
        112,
        -464
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d49d90fa-7138-48b8-a149-7dfcc86a1dd9",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "completed"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ef665440-62d6-4ae5-8041-138990ed6c6c",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1312,
        -624
      ],
      "parameters": {
        "color": 3,
        "width": 784,
        "height": 672,
        "content": "# 从 Telegram 开始的执行流程"
      },
      "typeVersion": 1
    },
    {
      "id": "02782777-cd0c-4a15-be14-777c54dcb8b5",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        -624
      ],
      "parameters": {
        "color": 4,
        "width": 736,
        "height": 496,
        "content": "# 从语音到文本生成转录"
      },
      "typeVersion": 1
    },
    {
      "id": "d3b028c2-a18d-4c17-8c2c-aec10b401fcd",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        336,
        -400
      ],
      "parameters": {
        "color": 6,
        "width": 768,
        "height": 416,
        "content": "# 生成摘要、情感分析并发送电子邮件"
      },
      "typeVersion": 1
    },
    {
      "id": "b7d8de68-ec69-4783-93c0-2f8cdef6cc0e",
      "name": "便利贴5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1120,
        -288
      ],
      "parameters": {
        "color": 5,
        "width": 544,
        "height": 320,
        "content": "### Assembly AI"
      },
      "typeVersion": 1
    },
    {
      "id": "0f8e297b-5576-46d0-925a-c443b51f6d6e",
      "name": "便签 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -176,
        -512
      ],
      "parameters": {
        "color": 5,
        "width": 192,
        "height": 224,
        "content": "### Assembly AI"
      },
      "typeVersion": 1
    },
    {
      "id": "b9b8dd97-fa8b-4b11-a208-1fd0d17d7897",
      "name": "获取转录稿",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -128,
        -464
      ],
      "parameters": {
        "url": "=https://api.assemblyai.com/v2/transcript/{{ $json.id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "authorization",
              "value": "<<YOUR_ASSEMBLYAI_API_KEY>>"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "63c276ef-b591-422a-9c9a-24292f061904",
      "name": "上传音频到 Assembly AI",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1024,
        -208
      ],
      "parameters": {
        "url": "https://api.assemblyai.com/v2/upload",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "authorization",
              "value": "<<YOUR_ASSEMBLYAI_API_KEY>>"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "inputDataFieldName": "data"
      },
      "typeVersion": 4.2
    },
    {
      "id": "077d2d1e-5efb-4b2c-b2e0-10012d8f2650",
      "name": "路由:文本 vs 音频",
      "type": "n8n-nodes-base.switch",
      "position": [
        -960,
        -464
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Voice",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b3324afd-bc0e-4229-8822-f973a143b0a1",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.voice.file_id }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Text message",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8ef0fba3-6691-4f58-9194-93da59599cd8",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message.text }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "ebd661fd-a9e5-4841-826e-b122c20396d0",
      "name": "转录分析 (AI)",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        448,
        -208
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ \"gpt-4.1-mini\" }}"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "You are a precise meeting analyst. Output must be valid JSON only."
            },
            {
              "role": "system",
              "content": "=Analyze the following transcript and return strict JSON:\n\nTranscript:\n{{ $node[\"Get Transcript\"].json[\"text\"] }}\n\nRequirements:\n- summary: 120–180 words, crisp and neutral\n- sentiment_label: one of [\"Positive\",\"Neutral\",\"Negative\"]\n- sentiment_score: number from -1 to 1\n- key_points: 5–8 bullet points (short phrases)\n- action_items: array of {owner, task, due?} if present, else []\n- notable_quotes: array of short verbatim quotes (<=120 chars)\n- topics: 3–6 tags\n\nReturn JSON with keys in snake_case:\n{\n  \"summary\": \"...\",\n  \"sentiment_label\": \"Positive\",\n  \"sentiment_score\": 0.64,\n  \"key_points\": [\"...\"],\n  \"action_items\": [{\"owner\":\"Alice\",\"task\":\"...\",\"due\":\"2025-09-30\"}],\n  \"notable_quotes\": [\"...\"],\n  \"topics\": [\"...\",\"...\"]\n}\nNo preamble or Markdown—JSON only."
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "abJxg6bdFN3Tv87x",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "5a8e489a-44ac-407e-8aae-798ecbcac561",
      "name": "发送分析邮件",
      "type": "n8n-nodes-base.gmail",
      "position": [
        720,
        -208
      ],
      "webhookId": "dce23618-ab6f-4336-9bf8-15754854722e",
      "parameters": {
        "sendTo": "=<<YOUR_EMAIL ID>>",
        "message": "={{\n(() => {\n  const d = $node[\"Transcript Analysis (AI)\"].json.message.content;\n\n  const row = (label, value, i) =>\n    `<tr style=\"background-color:${i % 2 === 0 ? '#f9f9f9' : '#ffffff'};\">\n       <td style=\"padding:12px 16px;border:1px solid #ccc;font-weight:bold;width:220px;background:#f2f2f2;\">${label}</td>\n       <td style=\"padding:12px 16px;border:1px solid #ccc;\">${value || ''}</td>\n     </tr>`;\n\n  const ul = arr => `<ul style=\"margin:0;padding-left:22px;\">${(arr || []).map(x => `<li>${x}</li>`).join('')}</ul>`;\n\n  const actions = (d.action_items || []).length\n    ? `<ol style=\"margin:0;padding-left:22px;\">${d.action_items.map(a =>\n        `<li><strong>${a.owner || '—'}</strong>: ${a.task || ''}${a.due ? ' (Due: ' + a.due + ')' : ''}</li>`\n      ).join('')}</ol>`\n    : \"No explicit action items detected.\";\n\n  let html = `\n  <div style=\"font-family:Arial,sans-serif;font-size:16px;line-height:1.5;\">\n    <h2 style=\"color:#2c3e50;border-bottom:2px solid #2c3e50;padding-bottom:6px;margin-bottom:12px;\">Transcript Analysis</h2>\n    <table style=\"border-collapse:collapse;border:1px solid #ccc;width:100%;font-size:16px;\">\n      <thead>\n        <tr style=\"background:#2c3e50;color:#ffffff;\">\n          <th style=\"padding:12px 16px;text-align:left;width:220px;\">Section</th>\n          <th style=\"padding:12px 16px;text-align:left;\">Details</th>\n        </tr>\n      </thead>\n      <tbody>\n        ${row(\"Executive Summary\", d.summary, 0)}\n        ${row(\"Sentiment\", `<strong>Label:</strong> ${d.sentiment_label || ''}<br/><strong>Score:</strong> ${d.sentiment_score ?? ''}`, 1)}\n        ${row(\"Key Points\", ul(d.key_points), 2)}\n        ${row(\"Action Items\", actions, 3)}\n        ${row(\"Notable Quotes\", ul(d.notable_quotes), 4)}\n        ${row(\"Topics\", (d.topics || []).join(\", \"), 5)}\n      </tbody>\n    </table>\n  </div>\n  `;\n\n  return html;\n})()\n}}\n",
        "options": {},
        "subject": "=Transcript summary & sentiment – \n {{ $now.toISO() }} \n"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "Fy5fuwOcFQfLWPg8",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "40a7b17e-71dd-4c05-ac7f-f522ee0195bb",
      "name": "结束",
      "type": "n8n-nodes-base.noOp",
      "position": [
        944,
        -208
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "400a7f1a-9476-4d91-a6bb-120c77b6d00c",
      "name": "从 AssemblyAI2 请求转录",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -736,
        -208
      ],
      "parameters": {
        "url": "https://api.assemblyai.com/v2/transcript",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "audio_url",
              "value": "={{ $json.upload_url }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "authorization",
              "value": "<<YOUR_ASSEMBLYAI_API_KEY>>"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f690e809-3741-46da-b32d-490fef679062",
      "name": "语音消息",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -1200,
        -464
      ],
      "webhookId": "0489c174-2b3f-492c-bb8a-80ebf2d905ee",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "lvdmmBti116WF6Px",
          "name": "<< YOUR TELEGRAM BOT >>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1de3e707-c2ef-4d1f-88c0-4a2f1658f99b",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2320,
        -800
      ],
      "parameters": {
        "width": 912,
        "height": 1168,
        "content": "# 立即试用!"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "ee80a2d6-9ef7-41d2-8e33-a6b077e77aa0",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Transcript Analysis (AI)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Get Transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get a file": {
      "main": [
        [
          {
            "node": "Upload Audio to Assembly AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Voice Message": {
      "main": [
        [
          {
            "node": "Route: Text vs Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Transcript": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Analysis Email": {
      "main": [
        [
          {
            "node": "The End",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route: Text vs Audio": {
      "main": [
        [
          {
            "node": "Get a file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcript Analysis (AI)": {
      "main": [
        [
          {
            "node": "Send Analysis Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Audio to Assembly AI": {
      "main": [
        [
          {
            "node": "Request Transcript from AssemblyAI2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Request Transcript from AssemblyAI2": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 杂项, AI 摘要总结, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量17
分类3
节点类型10
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Sridevi Edupuganti

Sridevi Edupuganti

@edupuganti

I help customers experience 10x faster ROI through AI Automation. AI Generalist | Pursuing Generative AI & ML(IIT-G) | Google Certified Prompt Engineer | Ex-VP | Ex-Microsoft | ISB Certified CTO & AI Leader | Azure & AI Strategist | 5X Azure | n8n level2 | Wellness Advocate & Cult Ninja

外部链接
在 n8n.io 查看

分享此工作流