8
n8n 中文网amn8n.com

Telegram AI歌词学习机器人 — 翻译、摘要、词汇

高级

这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 30 个节点。主要使用 If, Set, Code, OpenAi, Switch 等节点。 Telegram AI歌词学习机器人 — 翻译、摘要、词汇

前置要求
  • OpenAI API Key
  • HTTP Webhook 端点(n8n 会自动生成)
  • Telegram Bot Token
  • 可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "48882713bdea5994c47278ba42c20f3f79f92fdccb4bcd0af89b63737b5ab96c"
  },
  "nodes": [
    {
      "id": "347d3502-3620-4b03-bb13-ab2e25fbf020",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        272,
        1360
      ],
      "parameters": {
        "width": 572,
        "height": 375,
        "content": "## 不支持命令的回退"
      },
      "typeVersion": 1
    },
    {
      "id": "2865a11c-4eae-4fa6-9e39-94daf3383ff7",
      "name": "发送错误消息",
      "type": "n8n-nodes-base.telegram",
      "position": [
        512,
        1584
      ],
      "webhookId": "b697b8f4-63c4-4ee9-b6ec-76e76f3110ee",
      "parameters": {
        "text": "=⚠️ Opa\\! Esse comando ainda não é suportado\\.\n\nPara ver a lista completa de comandos disponíveis, digite\\:\n\\/start\n\nOu envie um dos comandos válidos seguidos da URL da letra da música\\.\n\nExemplo\\:\n\\/get\\_lyrics https:\\/\\/www\\.letras\\.mus\\.br\\/lana\\-del\\-rey\\/summertime\\-sadness\\/\n",
        "chatId": "={{ $('Settings').first().json.chat_id }}",
        "additionalFields": {
          "parse_mode": "MarkdownV2"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "307ddb89-1fc0-4d2e-be60-23f528187142",
      "name": "接收消息的 Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -2592,
        496
      ],
      "webhookId": "0b53cbd6-3316-4450-ae39-048e7b7d242e",
      "parameters": {
        "path": "lyrics-bot",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "bba60d2f-2f57-4379-8d3f-c62f32a00df0",
      "name": "文本回复",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1104,
        464
      ],
      "webhookId": "e7be2f8b-b831-4046-a684-cb87253d6ee5",
      "parameters": {
        "text": "={{ $json.message.content }}",
        "chatId": "={{ $('Settings').first().json.chat_id }}",
        "additionalFields": {
          "parse_mode": "Markdown"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "11c69d81-0095-4ce8-a1d6-4e4b2640f86b",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1136,
        240
      ],
      "parameters": {
        "color": 4,
        "width": 731,
        "height": 516,
        "content": "## 下载与清理 (ETL)"
      },
      "typeVersion": 1
    },
    {
      "id": "cec43e23-395e-4207-b65f-7a8432bbeead",
      "name": "CleanUp",
      "type": "n8n-nodes-base.code",
      "position": [
        -544,
        528
      ],
      "parameters": {
        "jsCode": "// HTML bruto da página\nconst html = $input.item.json.data;\n\n// Limpa comentários, scripts e estilos\nlet clean = html\n  .replace(/<!--[\\s\\S]*?-->/g, '')                        // Remove comentários\n  .replace(/<script[\\s\\S]*?<\\/script>/gi, '')             // Remove <script>\n  .replace(/<style[\\s\\S]*?<\\/style>/gi, '')               // Remove <style>\n  .replace(/<\\/?(head|meta|link|iframe|noscript)[^>]*>/gi, '') // Remove head/meta/etc\n  .replace(/<[^>]+>/g, '')                                // Remove todas as tags HTML\n  .replace(/\\s{2,}/g, ' ')                                // Reduz múltiplos espaços\n  .replace(/\\n{2,}/g, '\\n')                               // Reduz múltiplas quebras\n  .trim();\n\n// Opcional: manter quebras de linha coerentes\nclean = clean.replace(/\\r\\n|\\r/g, '\\n');\n\nreturn [\n  {\n    json: {\n      clean_text: clean,\n      preview: clean.slice(0, 300) + '...',\n      length: clean.length\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "969da478-569f-4158-bb7d-3d5d1339d9c2",
      "name": "Download_URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -704,
        528
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "067ffcb3-5310-4bfd-8a99-5593cda7792a",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        240
      ],
      "parameters": {
        "color": 4,
        "width": 411,
        "height": 388,
        "content": "## 发送到 Telegram"
      },
      "typeVersion": 1
    },
    {
      "id": "9fd83667-b874-458d-8c20-e74394369f4a",
      "name": "Extract_URL",
      "type": "n8n-nodes-base.code",
      "position": [
        -1088,
        528
      ],
      "parameters": {
        "jsCode": "const message = $json.body.message.text;\nconst parts = message.split(\" \");\nconst url = parts[1];\n\nreturn [\n  {\n    json: {\n      url: url\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f5736ecf-b3d1-4634-ade7-c5e3a05e7767",
      "name": "Settings",
      "type": "n8n-nodes-base.set",
      "position": [
        -1856,
        480
      ],
      "parameters": {
        "values": {
          "number": [
            {
              "name": "model_temperature",
              "value": 0.8
            },
            {
              "name": "token_length",
              "value": "=4096"
            },
            {
              "name": "chat_id",
              "value": "={{ $json.body.message.chat.id }}"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "45b4bedf-4201-4161-8682-478bdcfbe9e6",
      "name": "Message_Filter",
      "type": "n8n-nodes-base.if",
      "position": [
        -2400,
        496
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "fb710608-960b-4b73-9f83-b512a85e5c4f",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.body.message.text !== undefined }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "118c5813-5918-4af0-b7e4-44358ca3aa39",
      "name": "如果",
      "type": "n8n-nodes-base.if",
      "position": [
        -1424,
        480
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "0cd737c4-e0d4-4e39-b1e7-d0ebf3d616db",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.body.message.text }}",
              "rightValue": "/start"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "f81bff82-0402-4ab0-87ac-8c56e4a40e81",
      "name": "无操作,不执行任何动作",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -2192,
        608
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "bc2c18fa-57a9-4135-8674-3b3c96522967",
      "name": "便签5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        272,
        -320
      ],
      "parameters": {
        "color": 4,
        "width": 567,
        "height": 1636,
        "content": "## AI 交互 (OpenAI Chat)"
      },
      "typeVersion": 1
    },
    {
      "id": "33460650-dbf0-481f-ae75-a25759c6319a",
      "name": "/start",
      "type": "n8n-nodes-base.openAi",
      "position": [
        512,
        32
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "content": "=Este é o primeiro contato do usuário `{{ $json.body.message.from.first_name }}`.  Gere uma mensagem de boas-vindas amigável e curta, no idioma `{{ $json.body.message.from.language_code }}`, explicando que este é o *Lyrics Assistant Bot*, com foco em análise de letras de músicas.  Inclua a mensagem abaixo no mesmo idioma, formatada em **Markdown V2** para renderizar corretamente no Telegram:  👋 Olá\\\\! {{ $json.body.message.from.first_name }} Seja bem\\-vindo ao *Lyrics Assistant Bot* 🎶  Com este bot você pode **analisar letras de músicas** de forma completa, seja para entender melhor a mensagem, estudar um idioma ou apenas se emocionar com as palavras\\\\.    *️⃣ *Como usar*:  Basta enviar um dos comandos abaixo seguido da **URL da letra da música** \\(em qualquer idioma\\)\\:  *Exemplo:*   \\- \\`\\/get_lyrics https:\\/\\/www\\.letras\\.mus\\.br\\/lana\\-del\\-rey\\/summertime\\-sadness\\/\\`   \\- \\`\\/interpret_lyrics https:\\/\\/genius\\.com\\/Eminem\\-lose\\-yourself\\-lyrics\\`  🧠 *Comandos disponíveis*: \\- \\`\\/start\\`: Exibe a Saudação e orientações de uso com exemplos de comandos. \\- \\`\\/get_lyrics\\`: Retorna a letra completa da música com tradução em PT-BR, se estiver em outro idioma.   \\- \\`\\/interpret_lyrics\\`: Fornece uma interpretação emocional e simbólica da música.   \\- \\`\\/study_lyrics\\`: Retorna um estudo linguístico com gírias, expressões idiomáticas e figuras de linguagem.   \\- \\`\\/summarize_lyrics\\`: Gera um resumo curto da letra da música. \\- \\`\\/vocabulary_lyrics\\`: Lista palavras difíceis ou relevantes com explicações simples.  \\- \\`\\/lyrics_poetic_analysis\\`: Analisa os recursos poéticos e literários da letra, como rimas, metáforas e aliterações.   🎧 Use músicas para aprender, sentir e crescer\\\\\\!"
            }
          ]
        },
        "options": {
          "maxTokens": "={{ $('Settings').first().json.token_length }}",
          "temperature": "={{ $('Settings').first().json.model_temperature }}"
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "19eb1700-85d6-426f-9e0c-78ef3d5febe1",
      "name": "/get_lyrics",
      "type": "n8n-nodes-base.openAi",
      "position": [
        512,
        208
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "content": "=> Você é um especialista em idiomas e tradução de letras musicais.\n> Sua função é analisar letras de músicas enviadas em qualquer idioma e apresentar o resultado com a seguinte estrutura:\n>\n> * Mantenha a letra da música no idioma original, linha por linha, respeitando a ordem e a formatação originais.\n> * Abaixo de cada linha, adicione a tradução correspondente para o idioma **\\[Português / ou outro idioma-alvo se necessário]**.\n> * Preserve expressões idiomáticas e figuras de linguagem sempre que possível, oferecendo uma tradução que mantenha o sentido e o tom original.\n> * **Não modifique** o conteúdo original, apenas traduza de forma contextualizada e fiel.\n>\n> Exemplo de formatação esperada:\n>\n> ```\n> Original line 1  \n> Tradução linha 1\n>\n> Original line 2  \n> Tradução linha 2\n> ```\n\n{{ $json.clean_text }}"
            }
          ]
        },
        "options": {
          "maxTokens": "={{ $('Settings').first().json.token_length }}",
          "temperature": "={{ $('Settings').first().json.model_temperature }}"
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "078d4df3-ec9a-498a-94ab-8c920f0e8c12",
      "name": "/interpret_lyrics",
      "type": "n8n-nodes-base.openAi",
      "position": [
        512,
        384
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "content": "=Você é um especialista em análise literária, semiótica e interpretação de letras de músicas. Receberá abaixo a letra completa de uma música (pode estar em qualquer idioma). Sua tarefa é:\n\n1. Apresentar uma **interpretação emocional e simbólica** da música, explicando:\n   - Quais sentimentos ela transmite?\n   - Qual a possível **mensagem central** da letra?\n   - Existe uma **história implícita** sendo contada?\n   - Quais eventos, metáforas ou símbolos são importantes para a interpretação?\n\n2. Caso a letra esteja em outro idioma, **considere a tradução para PT-BR** ao interpretar.\n\n3. Mantenha um tom **profundo, reflexivo e acessível**, como um crítico musical que conversa com o público geral.\n\n### Letra da música:\n{{ $json.clean_text }}\n"
            }
          ]
        },
        "options": {
          "maxTokens": "={{ $('Settings').first().json.token_length }}",
          "temperature": "={{ $('Settings').first().json.model_temperature }}"
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "a1316152-7eb7-49dc-b07f-d1b8ecfdc79f",
      "name": "/study_lyrics",
      "type": "n8n-nodes-base.openAi",
      "position": [
        512,
        560
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "content": "=Você é um especialista em linguística aplicada ao ensino de idiomas e análise de letras de músicas. Receberá abaixo a letra de uma música (em qualquer idioma). Sua tarefa é ajudar um estudante de idiomas a aprender com essa música, explicando os elementos linguísticos relevantes.\n\n1. **Identifique e explique gírias, expressões idiomáticas e figuras de linguagem** encontradas na letra. Para cada item, forneça:\n   - A **frase original**\n   - Uma **tradução literal** (se aplicável)\n   - Uma **explicação do significado** ou uso cultural\n\n2. Destaque **expressões úteis para estudantes de idioma**, mesmo que não sejam gírias.\n\n3. Caso a letra esteja em outro idioma, forneça os exemplos com tradução para **PT-BR** e mantenha a explicação nesse idioma.\n\n4. Organize a resposta em tópicos numerados ou uma tabela, para facilitar a leitura e o estudo.\n\n### Letra da música:\n{{ $json.clean_text }}\n"
            }
          ]
        },
        "options": {
          "maxTokens": "={{ $('Settings').first().json.token_length }}",
          "temperature": "={{ $('Settings').first().json.model_temperature }}"
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "75a78819-a978-4159-b3a3-ab305a7d3ac3",
      "name": "/summarize_lyrics",
      "type": "n8n-nodes-base.openAi",
      "position": [
        512,
        752
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "content": "=Você é um especialista em análise musical e linguagem. Receberá a letra completa de uma música e deve produzir um **resumo conciso**, destacando a ideia central e os principais temas abordados.\n\n1. Resuma o **conteúdo da letra** de forma clara, objetiva e com no máximo **5 frases curtas**.\n2. Evite repetir a letra; use **suas próprias palavras** para transmitir a mensagem.\n3. Se a música contar uma história, indique os **principais eventos ou sentimentos envolvidos**.\n4. Caso a letra esteja em outro idioma, considere a tradução para PT-BR ao elaborar o resumo.\n\n### Letra da música:\n{{ $json.clean_text }}\n"
            }
          ]
        },
        "options": {
          "maxTokens": "={{ $('Settings').first().json.token_length }}",
          "temperature": "={{ $('Settings').first().json.model_temperature }}"
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "087d78ae-7a87-4c56-99cd-60f11ba52513",
      "name": "切换",
      "type": "n8n-nodes-base.switch",
      "position": [
        -144,
        448
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "c303e78e-8d8e-4fbb-8827-f5601fb17876",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Settings').first().json.body.message.text }}",
                    "rightValue": "/get_lyrics"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6a1368ea-dbe4-4dc5-9457-e39e0ebb9325",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Settings').first().json.body.message.text }}",
                    "rightValue": "/interpret_lyrics"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6d4b8947-4396-487a-8f57-8eb0c94d085e",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Settings').first().json.body.message.text }}",
                    "rightValue": "/study_lyrics"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "58ca41e8-9a90-4229-84f0-257bc24afcee",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Settings').first().json.body.message.text }}",
                    "rightValue": "/summarize_lyrics"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "99d7d69f-0506-4acf-8480-4fc9f5f2ff65",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Settings').first().json.body.message.text }}",
                    "rightValue": "/vocabulary_lyrics"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "cedca88b-7397-400f-a316-b173003f1fa0",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Settings').first().json.body.message.text }}",
                    "rightValue": "/lyrics_poetic_analysis"
                  }
                ]
              }
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        },
        "looseTypeValidation": true
      },
      "typeVersion": 3.2
    },
    {
      "id": "a421483e-55f9-4000-8b1f-1cf2772c61d1",
      "name": "/vocabulary_lyrics",
      "type": "n8n-nodes-base.openAi",
      "position": [
        512,
        944
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "content": "=Você é um especialista em ensino de idiomas e aquisição de vocabulário por meio de músicas. Receberá a letra completa de uma música (em qualquer idioma). Seu objetivo é ajudar um estudante brasileiro a aprender **novas palavras e expressões** com base nessa letra.\n\n1. Identifique e selecione de **5 a 15 palavras ou expressões relevantes**, com base nos seguintes critérios:\n   - Vocabulário de uso comum, mas **útil para estudantes**\n   - Palavras **desafiadoras** ou com **múltiplos significados**\n   - Expressões idiomáticas ou **verbos frasais** (se aplicável)\n\n2. Para cada item, forneça:\n   - A **palavra ou expressão original**\n   - A **tradução para o português (PT-BR)**\n   - Uma **definição clara e breve**\n   - (Opcional) Um **exemplo de uso simples**\n\n3. Caso a música esteja em inglês (ou outro idioma), escreva as definições e exemplos em **português**.\n\n4. Organize a resposta em formato de lista ou tabela, adequada para revisão e estudo.\n\n### Letra da música:\n{{ $json.clean_text }}\n"
            }
          ]
        },
        "options": {
          "maxTokens": "={{ $('Settings').first().json.token_length }}",
          "temperature": "={{ $('Settings').first().json.model_temperature }}"
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "d1c4c7d3-b352-4881-98cd-6ff509fb473e",
      "name": "/lyrics_poetic_analysis",
      "type": "n8n-nodes-base.openAi",
      "position": [
        512,
        1152
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "content": "=Você é um especialista em literatura, poesia e análise estilística de textos. Receberá a letra completa de uma música e deverá identificar os **recursos poéticos e literários** utilizados pelo(a) compositor(a).\n\n1. Analise a letra destacando:\n   - **Metáforas** e comparações\n   - **Rimas** (se presentes)\n   - **Aliterações**, **assonâncias** ou repetições sonoras\n   - **Paralelismos**, **anáforas**, **hipérboles**, **personificações** ou outras figuras de linguagem\n   - Uso de **ritmo**, **estrutura poética** ou repetições que contribuam para a estética do texto\n\n2. Para cada recurso encontrado, forneça:\n   - O **verso ou trecho** onde aparece\n   - O **nome do recurso** identificado\n   - Uma **breve explicação** do efeito literário ou simbólico causado\n\n3. Se a letra estiver em outro idioma, use a **tradução em PT-BR como base para análise** e mantenha a explicação em português.\n\n4. Apresente a análise de forma organizada e compreensível mesmo para quem não é especialista, com tom educativo.\n\n### Letra da música:\n{{ $json.clean_text }}\n"
            }
          ]
        },
        "options": {
          "maxTokens": "={{ $('Settings').first().json.token_length }}",
          "temperature": "={{ $('Settings').first().json.model_temperature }}"
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "049d20b1-1a84-4879-be79-ae0350061bbb",
      "name": "条件判断1",
      "type": "n8n-nodes-base.if",
      "position": [
        -896,
        528
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "0cd737c4-e0d4-4e39-b1e7-d0ebf3d616db",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.url }}",
              "rightValue": "/start"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "489c9b4c-97e9-40c1-b56f-792c8eafb2ff",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1136,
        784
      ],
      "parameters": {
        "width": 736,
        "height": 311,
        "content": "## 错误 — 不完整/无效命令"
      },
      "typeVersion": 1
    },
    {
      "id": "d244263a-91d9-42a6-a5a7-bce0fea89b76",
      "name": "Incomplete_Command",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -704,
        944
      ],
      "webhookId": "b697b8f4-63c4-4ee9-b6ec-76e76f3110ee",
      "parameters": {
        "text": "=⚠️ O comando está incompleto ou incorreto\\.\n\nVerifique se você escreveu o comando corretamente e incluiu a URL da letra da música\\.\n\nExemplo de uso correto:  \n\\/get\\_lyrics https:\\/\\/www\\.letras\\.mus\\.br\\/lana\\-del\\-rey\\/summertime\\-sadness\\/\n\nSe tiver dúvidas, digite:  \n\\/start  \npara ver todos os comandos disponíveis e como usá\\-los\\.",
        "chatId": "={{ $('Settings').first().json.chat_id }}",
        "additionalFields": {
          "parse_mode": "MarkdownV2"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "11a61da7-7fb6-4684-81e0-6ccb0286069b",
      "name": "便签7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3600,
        240
      ],
      "parameters": {
        "color": 5,
        "width": 848,
        "height": 2816,
        "content": "## 此模板的功能"
      },
      "typeVersion": 1
    },
    {
      "id": "cf33261a-b9dd-41ed-8ac9-94fc31eb3379",
      "name": "便签6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1568,
        240
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 512,
        "content": "## 路由 (If)"
      },
      "typeVersion": 1
    },
    {
      "id": "cb3f71b1-93b3-49ec-a761-bb3b065657fb",
      "name": "便签9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        240
      ],
      "parameters": {
        "color": 4,
        "width": 496,
        "height": 512,
        "content": "## 路由 (Switch)"
      },
      "typeVersion": 1
    },
    {
      "id": "0a32c476-7084-474f-9e07-d7b5f13c0e0f",
      "name": "便签 10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2000,
        240
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 512,
        "content": "## 设置与凭据"
      },
      "typeVersion": 1
    },
    {
      "id": "9ddf823e-5ba0-490e-a1b7-6142abfa5091",
      "name": "便签 11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2672,
        240
      ],
      "parameters": {
        "color": 4,
        "width": 640,
        "height": 512,
        "content": "## 触发与接收 (Webhook + Telegram)"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "/start",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract_URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If1": {
      "main": [
        [
          {
            "node": "Download_URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Incomplete_Command",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "/start": {
      "main": [
        [
          {
            "node": "Text reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "/get_lyrics",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "/interpret_lyrics",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "/study_lyrics",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "/summarize_lyrics",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "/vocabulary_lyrics",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "/lyrics_poetic_analysis",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send error message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CleanUp": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Settings": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "/get_lyrics": {
      "main": [
        [
          {
            "node": "Text reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract_URL": {
      "main": [
        [
          {
            "node": "If1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download_URL": {
      "main": [
        [
          {
            "node": "CleanUp",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "/study_lyrics": {
      "main": [
        [
          {
            "node": "Text reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message_Filter": {
      "main": [
        [
          {
            "node": "Settings",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "/interpret_lyrics": {
      "main": [
        [
          {
            "node": "Text reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "/summarize_lyrics": {
      "main": [
        [
          {
            "node": "Text reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "/vocabulary_lyrics": {
      "main": [
        [
          {
            "node": "Text reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "/lyrics_poetic_analysis": {
      "main": [
        [
          {
            "node": "Text reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook que recebe as mensagens": {
      "main": [
        [
          {
            "node": "Message_Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

高级 - 内容创作, 多模态 AI

需要付费吗?

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

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

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

作者
Raphael De Carvalho Florencio

Raphael De Carvalho Florencio

@followdrabbit

Senior Information Security Architect transitioning into AI/RPA and productized workflows. I love to innovate and test ideas—prototyping with n8n, lovable, ChatGPT, and CrewAI to turn repetitive tasks into reusable, documented templates.

外部链接
在 n8n.io 查看

分享此工作流