Att kolla Udemy-priser för hand låter enkelt tills du gör det i en vecka. Flikarna blir fler, ”tidsbegränsade” timers återställs, och du missar ändå de bästa rabatterna eftersom du tittade en timme för sent.
Den här uppsättningen för Udemy deal alerts träffar främst kursjägare, men marknadsteam som följer konkurrenters utbildningar och byråägare som köper kurser till personalen märker också effekten. Utfallet är enkelt: deals loggas automatiskt, och du får en ping i Telegram när en kurs prisdumpas rejält.
Du får se vad arbetsflödet gör, vad du behöver för att köra det och hur det förvandlar ”jag kollar senare” till realtidsnotiser som du faktiskt kan agera på.
så fungerar den här automatiseringen
Se hur det här löser problemet:
n8n Workflow Template: Telegram + Google Sheets för Udemy-reavarningar
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
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/airtop.svg' width='40' height='40' /></div><br/>Create a session"]
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/airtop.svg' width='40' height='40' /></div><br/>Create a window"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
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/airtop.svg' width='40' height='40' /></div><br/>Close a window"]
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/airtop.svg' width='40' height='40' /></div><br/>Terminate a session"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split course data", pos: "b", h: 48 }
n7["<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/airtop.svg' width='40' height='40' /></div><br/>Scrape course"]
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check offer available or not", pos: "b", h: 48 }
n9["<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/>Find discount"]
n10@{ icon: "mdi:database", form: "rounded", label: "Append 50% up disc data", pos: "b", h: 48 }
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/telegram.svg' width='40' height='40' /></div><br/>Send notify course deal"]
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check discount percentage 50%", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n9 --> n12
n7 --> n6
n4 --> n5
n2 --> n7
n3 --> n4
n3 --> n9
n1 --> n2
n0 --> n1
n6 --> n8
n10 --> n11
n11 --> n3
n8 --> n3
n8 --> n13
n12 --> n10
n12 --> n3
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 n0 trigger
class n8,n12 decision
class n10 database
class n9 code
classDef customIcon fill:none,stroke:none
class n1,n2,n4,n5,n7,n9,n11 customIcon
utmaningen: fånga Udemy-rabatter innan de försvinner
Udemys prissättning är ett rörligt mål. En kurs kan kosta 120 $ på morgonen, 15 $ efter lunch och vara tillbaka på ordinarie pris nästa dag. Att följa det manuellt innebär upprepade sökningar, att öppna dussintals listningar och att försöka minnas vad du såg förra gången. Det är också mentalt dränerande eftersom varje koll känns brådskande (”tänk om det här går ut i kväll?”). Och om du följer flera ämnen (n8n, SEO, annonser, analys) slutar det med att du lägger runt en timme om dagen på att bara verifiera priser i stället för att lära dig, planera eller leverera faktiskt arbete.
Det blir mycket snabbt. Här är var det faller isär när du gör det här konsekvent.
- Du kollar samma kurser om och om igen eftersom det inte finns någon strukturerad historik över vad som ändrats.
- Rabatter går ut utan att det märks, så den ”bra dealen” du bokmärkte är borta när du väl klickar.
- Att kopiera och klistra in titlar, priser och URL:er i ett kalkylark leder till stavfel och saknade fält.
- Du upptäcker deals först när du kommer ihåg att titta, vilket är sämsta möjliga trigger.
lösningen: Airtop kollar Udemy, Sheets loggar, Telegram varnar
Det här arbetsflödet körs enligt schema (varje timme eller dagligen, du väljer) och öppnar en riktig webbläsarsession via Airtop. Det söker på Udemy efter ett nyckelord du bryr dig om (till exempel ”n8n”) och extraherar sedan live-detaljer från varje kurslistning: titel, instruktör, aktuellt pris, ordinarie pris, betyg, när erbjudandet går ut och kurslänken. Varje resultat utvärderas ett i taget. Om det inte finns något erbjudande hoppar det över. Om det finns ett erbjudande räknar det ut rabatten och filtrerar fram deals på 50 % eller bättre. När en deal kvalar in lägger det till en prydlig rad i Google Sheets och skickar direkt ett formaterat Telegram-meddelande så att du kan slå till innan timern tar slut.
Arbetsflödet startar med en schemalagd trigger och därefter hanterar Airtop webbläsarjobbet som annars brukar vara irriterande att automatisera pålitligt. Efter rabattkontrollen blir Google Sheets din löpande deal-historik och Telegram blir ”missa inte detta”-larmet.
vad förändras: före vs. efter
| detta eliminerar | effekten du märker |
|---|---|
|
|
effekt i verkligheten
Säg att du följer 3 kursämnen och kollar dem två gånger om dagen. Om varje koll tar cirka 10 minuter per ämne (sök, öppna listningar, jämföra priser) blir det ungefär 1 timme per dag. Med det här arbetsflödet lägger du kanske 5 minuter på att sätta nyckelordet och arket en gång, sedan gör den schemalagda körningen surfandet och loggningen automatiskt. Du lägger bara tid när en Telegram-notis kommer in, vilket oftast är ett snabbt beslut och ett klick.
krav
- n8n-instans (prova n8n Cloud gratis)
- alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Airtop för webbläsarbaserad Udemy-sökning och extraktion
- Google Sheets för att lagra din deal-historik
- Telegram Bot API-token (hämta den från BotFather i Telegram)
- OpenAI API-nyckel (hämta den från din OpenAI-dashboard)
nivå: Mellan. Du kopplar konton, klistrar in API-nycklar och justerar ett sökord samt en sheet-mappning.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
arbetsflödets flöde
En schemalagd körning drar igång. Du bestämmer hur ofta det ska köras, och sedan startar n8n arbetsflödet automatiskt utan att någon behöver komma ihåg att ”gå och kolla Udemy”.
Airtop öppnar en riktig webbläsarsession och söker på Udemy. Arbetsflödet laddar sökresultatsidan för ditt nyckelord och extraherar listningsdetaljer som pris, ordinarie pris, betyg och kursens URL.
Varje kurs utvärderas för en riktig deal. Arbetsflödet kontrollerar om ett erbjudande finns, räknar ut rabattprocenten och behåller bara resultat som når 50 %-nivån eller högre.
Deals loggas och du får en notis. Kvalificerade erbjudanden läggs till i Google Sheets och därefter skickas ett Telegram-meddelande med rätt kontext, så att du slipper öppna tio flikar igen.
Du kan enkelt ändra sökordet så att det matchar din nisch, eller justera rabatttröskeln om du bara vill ha de största prisdumpningarna. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den schemalagda triggern
Ställ in arbetsflödets schema så att det körs med önskad frekvens.
- Lägg till och öppna Scheduled Run Trigger.
- I Rule konfigurerar ni ert intervall (t.ex. dagligen eller varje timme) baserat på hur ofta ni vill att bevakningen av erbjudanden ska köras.
- Bekräfta att Scheduled Run Trigger är kopplad till Initialize Browser Session.
Steg 2: Anslut Airtop och ladda kurslistningar
Initiera Airtop, öppna Udemys söksida och extrahera strukturerad kursdata.
- Öppna Initialize Browser Session och ställ in Profile Name till
udemyoch Timeout Minutes till30. - Öppna Open Browser Window och ställ in URL till
https://www.udemy.com/courses/search/?q=n8n&src=sacoch aktivera Get Live View. - Öppna Extract Course Listings och ställ in Prompt till
title, Current price, Original price, url, instructors name, rating, offerLeftTime(provided offerLeftTime is e.g,20 hours left at this price!)och behåll Operation somquery. - Verifiera att Extract Course Listings har Parse JSON Output aktiverat och att det angivna outputschema finns på plats.
Inloggningsuppgifter krävs: Anslut era Airtop-inloggningsuppgifter i Initialize Browser Session. Alla Airtop-noder (inklusive Open Browser Window, Extract Course Listings, Close Browser Window och End Browser Session) använder samma anslutning.
⚠️ Vanlig fallgrop: Om Airtop-profilnamnet inte finns kommer sessionen att misslyckas. Säkerställ att Airtop-profilen udemy är skapad i ert Airtop-konto.
Steg 3: Dela upp och validera kursposter
Dela upp den extraherade arrayen i enskilda items och säkerställ att varje kurs har ett ordinarie pris innan ni går vidare.
- Öppna Separate Course Items och ställ in Field to Split Out till
output.products. - Öppna Validate Offer Presence och bekräfta att villkoret använder
{{ $json.original_price }}med operatorn notEmpty. - Låt No-Op Placeholder vara ansluten till den falska grenen för felsökning eller framtida användning.
- Verifiera att båda grenarna från Validate Offer Presence flödar till Iterate Course Records respektive No-Op Placeholder.
⚠️ Vanlig fallgrop: Om Extract Course Listings returnerar tomma eller felaktigt formaterade original_price-värden kommer villkoret i Validate Offer Presence att routa items till No-Op Placeholder och hoppa över bearbetningen.
Steg 4: Beräkna rabatter och filtrera erbjudanden
Beräkna rabatt i procent och behåll endast kurser med minst 50 % rabatt.
- Öppna Iterate Course Records för att batcha igenom varje kurspost.
- Öppna Compute Discount Rate och låt den angivna JavaScript-koden i JS Code vara oförändrad för att beräkna
discount_percentage. - Öppna Check 50 Percent Threshold och säkerställ att villkoret kontrollerar
{{ $json.discount_percentage }}med Greater Than or Equal satt till50. - Iterate Course Records skickar output parallellt till både Close Browser Window och Compute Discount Rate.
⚠️ Vanlig fallgrop: Koden förutsätter att både aktuellt pris och ordinarie pris har en valutasymbol och ett numeriskt värde. Om webbplatsen returnerar ett annat format, uppdatera parslogiken i Compute Discount Rate.
Steg 5: Lägg till erbjudanden i Google Sheets och avisera via Telegram
Logga kvalificerade erbjudanden i Google Sheets och skicka en Telegram-avisering.
- Öppna Append Deals to Sheet och ställ in Operation till
append. - Ställ in Document ID till ert kalkylark och Sheet Name till
Sheet1. - Bekräfta att kolumnmappningarna använder de angivna uttrycken, inklusive
{{ $('Iterate Course Records').item.json.url }},{{ $json.discount_percentage }}% OFFoch{{ $json.current_price }}. - Öppna Send Deal Notification och ställ in Chat ID till ert Telegram-användar- eller grupp-ID (ersätt
[YOUR_ID]). - Behåll Text-mallen enligt angiven version:
=🧠 Top Udemy Course Deal ...med de inbäddade uttrycken.
Inloggningsuppgifter krävs: Anslut era Google Sheets-inloggningsuppgifter i Append Deals to Sheet.
Inloggningsuppgifter krävs: Anslut era Telegram-inloggningsuppgifter i Send Deal Notification.
Steg 6: Stäng Airtop-resurser
Stäng webbläsarfönstret korrekt och avsluta Airtop-sessionen efter bearbetningen.
- Öppna Close Browser Window och bekräfta att Window ID är satt till
{{ $('Open Browser Window').item.json.data.windowId }}. - Ställ in Session ID till
{{ $('Initialize Browser Session').item.json.sessionId }}i Close Browser Window. - Öppna End Browser Session och ställ in Session ID till
{{ $('Initialize Browser Session').item.json.sessionId }}.
⚠️ Vanlig fallgrop: Om ni hoppar över att avsluta sessionen kan Airtop-sessioner förbli öppna och förbruka användningsgränser. Se alltid till att Close Browser Window och End Browser Session är anslutna.
Steg 7: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att bekräfta att scraping, filtrering och aviseringar fungerar innan ni går live.
- Klicka på Execute Workflow för att köra flödet från Scheduled Run Trigger.
- Bekräfta att Extract Course Listings returnerar en
products-array och att Separate Course Items skickar ut enskilda items. - Verifiera att Append Deals to Sheet lägger till rader och att Send Deal Notification levererar ett meddelande till er Telegram-chatt.
- När ni är nöjda, växla arbetsflödet till Active för att aktivera schemalagda körningar.
håll utkik efter
- Airtop-inloggningar kan gå ut eller kräva specifika behörigheter. Om något skapar fel, kontrollera först anslutningsstatusen för Airtop och inställningarna för sessionåtkomst.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om noder nedströms misslyckas på grund av tomma svar.
- Standardprompter i AI Agent- eller OpenAI Chat Model-noderna är generiska. Lägg in ditt föredragna alertformat och ton tidigt, annars kommer du fortsätta skriva om Telegram-meddelanden.
vanliga frågor
Oftast cirka 30 minuter om du redan har Airtop, Sheets och Telegram klart.
Ja. Du behöver inte skriva kod, men du kopplar konton och klistrar in ett par API-nycklar.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 $/månad för högre volym. Du behöver också räkna in Airtop-användning plus OpenAI API-kostnader (ofta några cent per körning, beroende på prompter och volym).
Två alternativ: n8n Cloud (hanterat, 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 serverhantering.
Börja med att ändra Udemy-sökordet som används när Airtop öppnar sökresultaten, eftersom det styr vilka listningar som extraheras. Om du vill ha färre notiser, höj tröskeln i logiken ”Check 50 Percent Threshold” så att den bara larmar vid större rabatter. Du kan också byta destination i Google Sheets (en ny flik per ämne är vanligt) och justera formatet på Telegram-meddelandet så att det matchar hur ditt team läser alerts.
Oftast handlar det om utgångna inloggningsuppgifter eller en session som inte stängdes korrekt. Anslut Airtop på nytt i n8n, kör sedan igen och bekräfta att webbläsarsessionen faktiskt startar och öppnar Udemy-sidan. Om den öppnar men inte extraherar något kan Udemy ha laddat en annan layout, så extraktionssteget behöver en snabb justering.
Det beror på hur många listningar du hämtar per körning och hur ofta du schemalägger den. Med n8n Cloud Starter kan du köra gott om dagliga kontroller för ett enskilt sökord, och med self-hosting försvinner körningsbegränsningar (din server blir gränsen). I praktiken kör de flesta team detta varje timme eller dagligen och bearbetar en resultatsida utan problem, så länge Airtop-sessioner stängs korrekt.
Ofta ja, eftersom det här arbetsflödet bygger på webbläsarautomation (Airtop) plus villkorsfiltrering och loopning över många listningar. n8n hanterar den typen av logik snyggt utan att tvinga in dig i dyra task-räkningar för varje gren. Zapier och Make kan fortfarande fungera, men du kan nå gränser snabbare, och webbläsardrivna kontroller kan bli krångliga. Om du redan lever i de verktygen och bara vill ha en enkel ”skicka mig något en gång om dagen”-variant är de okej. Om du vill ha tillförlitlighet, deal-historik i Sheets och utrymme att bygga vidare är n8n oftast det lugnare valet. Prata med en automationsexpert om du vill ha hjälp att välja den enklaste vägen.
Du sätter upp det här en gång, sedan kör din deal-bevakning i bakgrunden. Ärligt talat är det svårt att gå tillbaka till manuell koll när du väl har haft Telegram som kommer ihåg åt dig.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.