Du hittar en låtsida, kopierar texten, klistrar in den någonstans, tar bort annonser och konstiga radbrytningar och ber sedan AI att översätta och förklara. Det är inte svårt. Det är bara konstant.
Språklärare märker det när elever frågar “vad betyder den här raden?” mitt i lektionen. Musikbloggare stöter på det när de researchar teman mellan låtar. Och om du skriver texter vet du redan hur irriterande det är att tappa originalformateringen. Den här Telegram-automation för låttexter gör ett chattkommando till strukturerade låttexter, översättningar och analys.
Nedan ser du exakt vad arbetsflödet gör, vad du får tillbaka i Telegram och hur du kör det stabilt utan att behöva vakta prompts eller städa copy-paste manuellt.
Så fungerar automationen
Hela n8n-arbetsflödet, från trigger till slutlig output:
n8n Workflow Template: Telegram + OpenAI: rensad låttext och snabb analys
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send error message"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook que recebe as mensag.."]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Text reply"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>CleanUp"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Download_URL"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Extract_URL"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Settings", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Message_Filter", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/openAi.dark.svg' width='40' height='40' /></div><br/>/start"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/openAi.dark.svg' width='40' height='40' /></div><br/>/get_lyrics"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/openAi.dark.svg' width='40' height='40' /></div><br/>/interpret_lyrics"]
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/openAi.dark.svg' width='40' height='40' /></div><br/>/study_lyrics"]
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/openAi.dark.svg' width='40' height='40' /></div><br/>/summarize_lyrics"]
n15@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/openAi.dark.svg' width='40' height='40' /></div><br/>/vocabulary_lyrics"]
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/openAi.dark.svg' width='40' height='40' /></div><br/>/lyrics_poetic_analysis"]
n18@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If1", pos: "b", h: 48 }
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Incomplete_Command"]
n8 --> n10
n8 --> n5
n18 --> n4
n18 --> n19
n10 --> n2
n15 --> n11
n15 --> n12
n15 --> n13
n15 --> n14
n15 --> n16
n15 --> n17
n15 --> n0
n3 --> n15
n6 --> n8
n11 --> n2
n5 --> n18
n4 --> n3
n13 --> n2
n7 --> n6
n7 --> n9
n12 --> n2
n14 --> n2
n16 --> n2
n17 --> n2
n1 --> n7
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n7,n8,n15,n18 decision
class n1,n4 api
class n3,n5 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n3,n4,n5,n10,n11,n12,n13,n14,n16,n17,n19 customIcon
Problemet: rensning och analys av låttexter är tidsödande
Låttexter finns överallt, men de är sällan “klara”. En sajt kapslar in varje rad i stökig HTML. En annan trycker in cookie-banners och script-skräp i det du kopierar. Sedan klistrar du in i ChatGPT, inser att versbrytningarna blivit förstörda och frågar igen. Om du gör det här för en lektion, ett blogginlägg eller egen studie hamnar du i samma rutin flera gånger i veckan. Tidskostnaden är påtaglig, men den större kostnaden är inkonsekvens. Olika prompts, olika format, olika kvalitet i output.
Det går fort att det blir mycket. Här brukar det oftast fallera.
- Du lägger runt 10 minuter per låt bara på att få fram strukturerad text du litar på.
- Översättningar och tolkningar varierar kraftigt när prompts inte är standardiserade.
- Långa svar kapas i chattappar, så du tappar delar av analysen.
- När en elev eller kund skickar ett halvfärdigt meddelande måste du ändå leka detektiv.
Lösningen: en Telegram-bot som hämtar, rensar och förklarar låttexter
Det här arbetsflödet gör Telegram till en låttextassistent av typen “skicka länk, få svar”. En användare skickar ett meddelande till din bot med ett kommando som /get_lyrics plus en publik URL till låttexten. n8n validerar meddelandet, plockar ut länken, laddar ner sidan och sanerar innehållet så att du får läsbara låttexter i stället för webbbrus. Sedan genererar OpenAI den output som matchar kommandot du skickade: rad-för-rad-översättning, en kort sammanfattning, en vokabulärlista, stilistiska grepp eller en mer övergripande tolkning. Till sist svarar boten i Telegram med Markdown/MarkdownV2 och delar upp långa svar i chunkar så att inget försvinner.
Arbetsflödet startar när Telegram träffar din webhook. Därifrån routas kommandot, låttextsidan hämtas via HTTP Request, texten rensas och skickas till rätt OpenAI-prompt. Svaret kommer tillbaka till Telegram redan formaterat, även när det är långt.
Vad du får: automation vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du går igenom 10 låtar i veckan för lektioner eller content. Manuellt är det oftast runt 10 minuter per låt för att kopiera låttexter, rensa formateringen, klistra in i AI, justera prompten och skicka om när outputen blir för lång. Det är ungefär 100 minuter per vecka. Med det här arbetsflödet skickar du ett Telegram-kommando per låt (säg 1 minut), väntar på att boten hämtar och genererar svaret, och sen är du klar. Du får tillbaka runt 90 minuter i veckan, och stilen i outputen är konsekvent.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Telegram-bot för att ta emot kommandon och skicka svar
- OpenAI för att skapa översättningar, sammanfattningar och analys
- Telegram-bottoken + OpenAI API-nyckel (från @BotFather och OpenAI-dashboarden)
Kunskapsnivå: medel. Du kopplar in credentials, publicerar en webhook och testar några Telegram-kommandon.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett Telegram-meddelande triggar arbetsflödet. Din bot tar emot ett kommando som /start eller /get_lyrics <URL>, och n8n fångar det via en inkommande webhook.
Meddelandet valideras och routas. Arbetsflödet kontrollerar att meddelandet går att använda, tillämpar standardinställningar och hanterar välkomstflödet för /start. Om kommandot är ofullständigt svarar det med tydlig vägledning i stället för att misslyckas tyst.
Låttextsidan hämtas och rensas. n8n extraherar URL:en, laddar ner sidan med en HTTP Request och ett kodsteg sanerar innehållet så att du jobbar med läsbar text, inte HTML-brus.
OpenAI genererar den output du bad om och Telegram tar emot den. En switch routar de rensade låttexterna till rätt OpenAI-prompt (översättning, sammanfattning, vokabulär, stilistiska grepp eller tolkning), och sedan svarar boten i Telegram med Markdown/MarkdownV2 och delar upp långa meddelanden i chunkar.
Du kan enkelt justera kommandona för att stötta nya studielägen (som “förhör mig” eller “extrahera idiom”) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsmöjligheter.
Steg-för-steg-guide för implementation
Steg 1: konfigurera webhook-triggern
Det här arbetsflödet startar när en Telegram-webhook-payload träffar den inkommande endpointen.
- Lägg till en Incoming Webhook Trigger-nod och ställ in HTTP Method till
POST. - Ställ in Path till
lyrics-botså att Telegram kan posta uppdateringar till den här routen. - Bekräfta att exekveringsflödet börjar med Incoming Webhook Trigger → Validate Incoming Message.
Steg 2: anslut Telegram för svar och notiser
Telegram används för att svara användare med analysresultat och vägledande meddelanden.
- I Send Telegram Reply, ställ in Text till
{{ $json.message.content }}och Chat ID till{{ $('Configure Defaults').first().json.chat_id }}. - I Notify Incomplete Command, behåll standardvarningsmeddelandet och ställ in Chat ID till
{{ $('Configure Defaults').first().json.chat_id }}. - I Dispatch Error Notice, behåll meddelandet om att kommandot inte stöds och ställ in Chat ID till
{{ $('Configure Defaults').first().json.chat_id }}. - Credential Required: Anslut era Telegram-credentials för Send Telegram Reply, Notify Incomplete Command och Dispatch Error Notice (de här noderna kräver credentials, men inga är konfigurerade).
Steg 3: sätt upp standardvärden och validering av indata
Dessa noder normaliserar inkommande data och skickar användare till rätt hanteringsgren.
- I Validate Incoming Message, behåll villkoret
{{ $json.body.message.text !== undefined }}för att säkerställa att endast meddelandeuppdateringar går vidare. - I Configure Defaults, lägg till numeriska fält för model_temperature =
0.8, token_length =4096och chat_id ={{ $json.body.message.chat.id }}. - I Check Start Command, ställ in villkoret så att
{{ $json.body.message.text }}är lika med/start, så att välkomstprompten endast triggar på startkommandot. - Säkerställ att flödet är Validate Incoming Message → Configure Defaults → Check Start Command.
Steg 4: tolka URL:en och hämta låttextinnehåll
Det här steget extraherar låttextens URL från användarens kommando och laddar ned den råa sidan.
- I Parse Link Input, behåll JavaScript-koden som delar upp meddelandet och tilldelar
urlfrån den andra token. - I Verify URL Present, behåll
notEmpty-kontrollen på{{ $json.url }}för att säkerställa att en URL finns innan ni går vidare. - I Fetch URL Content, ställ in URL till
{{ $json.url }}för att hämta låttextsidan. - Se till att flödet är Parse Link Input → Verify URL Present → Fetch URL Content, och att false-grenen från Verify URL Present går till Notify Incomplete Command.
Steg 5: rensa och routa låttexten för AI-bearbetning
HTML:en rensas till ren text och routas till rätt analysuppgift.
- I Sanitize Text Content, behåll den medföljande JavaScript-koden för att ta bort HTML och returnera
clean_text,previewochlength. - I Route Command Options, behåll de sex
startsWith-reglerna på{{ $('Configure Defaults').first().json.body.message.text }}för/get_lyrics,/interpret_lyrics,/study_lyrics,/summarize_lyrics,/vocabulary_lyricsoch/lyrics_poetic_analysis. - Säkerställ att fallback-utgången för Route Command Options är inställd på
extraoch kopplad till Dispatch Error Notice.
⚠️ Common Pitfall: Om kommandot inte innehåller en URL kommer Verify URL Present att skicka Notify Incomplete Command och ingen av AI-grenarna kommer att köras.
Steg 6: konfigurera AI-analysvar
Sju OpenAI-chatnoder genererar välkomst- och låttextanalysutdata.
- I Start Welcome Prompt, behåll chatprompten och ställ in Max Tokens till
{{ $('Configure Defaults').first().json.token_length }}och Temperature till{{ $('Configure Defaults').first().json.model_temperature }}. - För analysnoderna (Generate Lyrics Translation, Interpret Lyrics Meaning, Study Lyrics Language, Summarize Lyrics, Extract Vocabulary List, Analyze Poetic Devices), behåll prompterna och mappa Max Tokens och Temperature till samma uttryck som ovan.
- Säkerställ att varje AI-nod routar till Send Telegram Reply enligt exekveringsflödet.
- Credential Required: Anslut era OpenAI-credentials till Start Welcome Prompt och alla andra OpenAI-noder (de här noderna kräver credentials, men inga är konfigurerade).
⚠️ Common Pitfall: Om Configure Defaults inte sätter token_length eller model_temperature kommer OpenAI-noderna att misslyckas eftersom uttrycken refererar till dessa värden.
Steg 7: testa och aktivera ert arbetsflöde
Verifiera hela flödet från webhook till Telegram-svar innan ni aktiverar i produktion.
- Klicka på Execute Workflow och skicka en Telegram-uppdatering till webhook-URL:en med ett testmeddelande som
/get_lyrics https://www.letras.mus.br/lana-del-rey/summertime-sadness/. - Bekräfta att meddelandet passerar Validate Incoming Message, Configure Defaults och Parse Link Input innan det når Fetch URL Content och Sanitize Text Content.
- Verifiera att en lyckad körning slutar vid Send Telegram Reply med ett formaterat svar från den valda AI-noden.
- Slå om arbetsflödet till Active för produktionsanvändning efter att testutdata är korrekta.
Vanliga fallgropar
- Telegram-credentials kan gå ut eller så roteras bottoken. Om svar plötsligt slutar komma: kontrollera Telegram-credential i n8n och bekräfta att webhooken fortfarande pekar på rätt URL.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstider. Öka väntetiden om noder längre ner misslyckas på grund av tomma svar.
- OpenAI-prompts som lämnas på “default” låter generiska och missar ibland din önskade formatering. Lägg in din tonalitet och tydliga outputregler tidigt (ton, rubriker, MarkdownV2-säkerhet) annars kommer du redigera outputs för alltid.
Vanliga frågor
Cirka 30 minuter om du redan har din Telegram-bottoken och OpenAI-nyckel.
Nej. Du kopplar mest konton och klistrar in credentials. Den enda “tekniska” delen är att sätta Telegram-webhookens URL, och arbetsflödesdokumentationen guidar dig steg för steg.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med OpenAI API-kostnader (ofta bara några cent per låt, beroende på längd).
Två alternativ: n8n Cloud (managed, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det är den roliga delen. Du kan lägga till ett nytt kommando i switchen Route Command Options och sedan skapa en till OpenAI-nod som använder de rensade låttexterna som input. Vanliga anpassningar är “förklara slang och idiom,” “skapa quizfrågor” och “skriv om på enklare engelska.” Håll ditt outputformat strikt (rubriker, punktlistor, längdgränser) så att Telegram-meddelandena förblir lättlästa.
Oftast är det bottoken eller webhook-URL:en, ärligt talat. Bekräfta att Telegram-credential i n8n fortfarande matchar den aktuella token, och dubbelkolla sedan att Telegram pekar på rätt webhook-sökväg på din domän. Om du kör self-hosted kan blockerade inkommande anrop (brandvägg, reverse proxy-regler eller SSL-problem) hindra Telegram från att leverera uppdateringar. Det kan också vara MarkdownV2-formateringsfel om specialtecken inte är escapade, vilket gör att Telegram nekar ett meddelande även om allt uppströms fungerade.
Väldigt många för mindre team. På n8n Cloud Starter klarar du dig normalt för lätt daglig användning, och högre planer hanterar mer volym. Om du kör self-hosted finns ingen körningsgräns, så din praktiska gräns blir serverresurser och OpenAI:s rate limits när flera personer begär långa låttexter samtidigt.
För just det här use caset är n8n oftast ett bättre val eftersom du behöver routing, textrensning och flexibel branching utan att betala extra per “path”. Det gör också webhook-baserade Telegram-botar enkla, och du kan köra self-hosted om du vill ha obegränsade körningar. Zapier eller Make kan fungera, men hantering av långa texter och kommandologik med flera grenar blir snabbt krångligt. Om du bara gör en enkel grej (som “skicka länk, få sammanfattning”) kan de verktygen kännas snabbare i början. Prata med en automationsexpert om du vill ha hjälp att välja den mest robusta lösningen.
När det här väl rullar blir rensning och analys av låttexter ett snabbt meddelande, inte ett miniprojekt. Arbetsflödet tar hand om det repetitiva så att du kan fokusera på undervisning, skrivande eller att faktiskt njuta av musiken.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.