Du märker ofta förändringar i certifieringskrav först när det redan är ett problem. En förnyelse blir nekad, ett förslag spårar ur eller en teammedlem dyker upp oförberedd eftersom ”reglerna ändrades” och ingen fångade det.
Compliance-ansvariga känner stressen först. Men HR-chefer som följer tjänstekrav och byråer som lämnar anbud på reglerade uppdrag hamnar i samma röra. Den här GitHub e-postvarningar-automationen gör spridda uppdateringar till en tydlig ändringslogg som landar i din inkorg.
Nedan ser du hur flödet bevakar dina valda sidor, sparar ögonblicksbilder i GitHub och mejlar dig bara när något faktiskt ändras.
Så här fungerar automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: GitHub + e-postlarm vid ändrade certifieringsregler
flowchart LR
subgraph sg0["Start Manual Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Start Manual", 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/code.svg' width='40' height='40' /></div><br/>Define Certification URLs"]
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split In Batches", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Scrape Certification Page", 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/code.svg' width='40' height='40' /></div><br/>Format Scraped Data"]
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/github.dark.svg' width='40' height='40' /></div><br/>GitHub – Get Previous Snapshot"]
n6["<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/merge.svg' width='40' height='40' /></div><br/>Merge Current & Previous"]
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/code.svg' width='40' height='40' /></div><br/>Detect Changes"]
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Changes Detected?", 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/github.dark.svg' width='40' height='40' /></div><br/>GitHub – Upsert Snapshot"]
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/code.svg' width='40' height='40' /></div><br/>Prepare Summary Email"]
n11@{ icon: "mdi:message-outline", form: "rounded", label: "Email Send Notification", pos: "b", h: 48 }
n0 --> n1
n7 --> n8
n2 --> n3
n8 --> n9
n4 --> n5
n4 --> n6
n10 --> n11
n6 --> n7
n1 --> n2
n3 --> n4
n9 --> n10
n5 --> n6
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 decision
class n1,n4,n7,n10 code
classDef customIcon fill:none,stroke:none
class n1,n4,n5,n6,n7,n9,n10 customIcon
Problemet: certifieringskrav ändras i det tysta
De flesta certifieringsorgan skickar inte tydliga, snabba ”det här har ändrats”-notiser. De uppdaterar en sida i det tysta, justerar en PDF eller redigerar en punktlista på ett sätt som är svårt att upptäcka om du inte gör jämförelser sida vid sida. Så folk skapar ett kalkylark, sätter en kalenderpåminnelse och lägger sedan en eftermiddag på att dubbelkolla allt en gång per kvartal (eller en gång per år). Det handlar inte bara om tid. Det är fokus, kontextbyten och den där gnagande känslan av att du kan missa något viktigt.
Det blir snabbt mycket. Här är var processen oftast fallerar i verkligheten.
- Någon ”äger” kontrollen, blir sedan upptagen och hoppar över den tills deadline närmar sig.
- Du läser samma sidor varje cykel, även när inget har ändrats.
- Små justeringar missas, vilket leder till felaktiga platsannonser, fel intern vägledning eller överraskningar vid förnyelse.
- Det finns ingen pålitlig revisionsspårning, så du kan inte bevisa vad kravet var förra året när frågor dyker upp.
Lösningen: GitHub-ögonblicksbilder + e-postbaserade ändringsloggar
Det här flödet övervakar de certifieringssidor du bryr dig om, fångar aktuell kravtext och jämför den med din senast sparade ögonblicksbild i GitHub. I stället för att be dig ”komma ihåg att kolla” gör det kontrollerna åt dig. När en förändring upptäcks skapar det en kort sammanfattning och skickar en e-postvarning till din distributionslista, och committar sedan den uppdaterade ögonblicksbilden tillbaka till GitHub så att du nästa gång jämför mot senaste kända läge. Om det inte finns någon meningsfull förändring är det tyst. Ärligt talat är det hela poängen.
Flödet startar med en trigger (manuell i dag, schemalagd senare om du vill). Det läser en bevakningslista med URL:er och selektorer, skrapar varje sida, normaliserar data till en konsekvent JSON-struktur och slår ihop den med den föregående ögonblicksbilden som hämtas från GitHub. Efter en passering för ändringsdetektering skickar det antingen ett mejl och uppdaterar repot, eller avslutar utan att störa någon.
Det du får: automatisering vs. resultat
| Det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du följer 12 certifieringssidor för ditt team. Manuellt kan du lägga cirka 10 minuter per sida på att öppna webbplatsen, hitta kravavsnittet och kontrollera anteckningar, vilket blir ungefär 2 timmar per granskningscykel (och det är innan du skriver någon sammanfattning). Med det här flödet startar du det på en minut, låter det skrapa och jämföra i bakgrunden och läser bara ett mejl när något har ändrats. I cykler med ”ingen förändring” får du tillbaka hela tidsblocket.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- GitHub för att lagra och versionshantera ögonblicksbilder
- E-post (SMTP eller n8n Email Send) för att leverera ändringsvarningar
- ScrapeGraphAI API-nyckel (hämta den i din ScrapeGraphAI-kontos instrumentpanel)
Kunskapsnivå: Medel. Du kopplar autentiseringsuppgifter, redigerar en bevakningslista i en JSON-fil och testar en körning end-to-end.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En körning triggas. I mallen startar den med en manuell trigger, vilket är perfekt för test. Många team byter senare till ett Cron-schema (kvartalsvis, månadsvis eller en gång per år den 1 januari).
Din bevakningslista laddas och batchas. Flödet bygger certifieringslänkar från en watchList.json (URL plus selektor) och bearbetar dem i små batchar så att du minskar risken att nå rate limits eller bli blockerad.
Skrapning och normalisering sker. ScrapeGraphAI extraherar kravavsnittet och därefter normaliserar ett kodsteg utdata så att det går att jämföra mellan källor. Det är här stökigt webbinnehåll blir en korrekt formaterad JSON-ögonblicksbild.
Jämförelse, avisering och versionshantering. Det hämtar föregående ögonblicksbild från GitHub, slår ihop ”nuvarande vs föregående”, kör logik för ändringsdetektering och skickar sedan en e-postsammanfattning om ändringar finns. Slutligen upsertar det den nya JSON:en tillbaka till GitHub så att baslinjen hålls uppdaterad.
Du kan enkelt ändra bevakningslistan för att lägga till nya certifieringsorgan eller justera selektorer utifrån dina behov. Se den fullständiga implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera manuell trigger
Konfigurera den manuella triggern så att ni kan köra certifieringsövervakningen vid behov under testning.
- Lägg till Manual Execution Start som trigger-nod.
- Lämna alla fält på standardvärden eftersom denna nod använder manuell körning utan parametrar.
- (Valfritt) Behåll Flowpast Branding som en visuell anteckning i arbetsytan; den påverkar inte körningen.
Steg 2: Anslut GitHub
Konfigurera GitHub-lagring för att hämta och uppdatera certifieringssnapshots för spårning av ändringar.
- Öppna Retrieve Prior Snapshot och ställ in Owner till
YOUR_GITHUB_USERNAME. - Ställ in Repository till
certification-requirements-trackeroch Operation till Get. - Ställ in File Path till
{{ 'data/' + $json.slug + '.json' }}. - Öppna Update Snapshot in GitHub och ställ in Owner till
YOUR_GITHUB_USERNAMEoch Repository tillcertification-requirements-tracker. - Ställ in File Path till
{{ 'data/' + $json.slug + '.json' }}, File Content till{{ Buffer.from(JSON.stringify($json.snapshot, null, 2)).toString('base64') }}och Commit Message till{{ 'Update requirements for ' + $json.certification + ' on ' + new Date().toISOString() }}.
Inloggningsuppgifter krävs: Anslut era GitHub-inloggningsuppgifter i både Retrieve Prior Snapshot och Update Snapshot in GitHub.
Steg 3: Sätt upp insamling av certifieringslänkar och scraping
Definiera certifierings-URL:er, iterera över dem och skrapa varje sida efter förnyelsekrav.
- Öppna Compose Certification Links och redigera JavaScript så att det inkluderar era certifierings-URL:er, till exempel
{ json: { url: 'https://example.com/certification-a', name: 'Certification A' } }. - Använd Batch Item Splitter för att bearbeta varje certifieringslänk en i taget (standardalternativen fungerar bra).
- I Certification Page Scraper ställer ni in User Prompt till
You are extracting certification renewal details for professionals. Return JSON: {"certification":"string","requirements":"string","credits":"number","cost":"string","effective_date":"YYYY-MM-DD"}. Pull only publicly available data.. - Ställ in Website URL till
{{ $json.url }}så att varje batch-item skrapas. - I Normalize Scrape Output behåller ni JavaScript-koden som bygger
slug, normaliserar fält och lägger tillscraped_at.
Inloggningsuppgifter krävs: Anslut era scrapegraphAi-inloggningsuppgifter i Certification Page Scraper.
Normalize Scrape Output skickar utdata till både Retrieve Prior Snapshot och Combine Current and Past parallellt.
Steg 4: Konfigurera logik för ändringsdetektering
Slå ihop aktuell och historisk data och identifiera sedan om en certifiering har förändrats.
- I Combine Current and Past ställer ni in Mode till
combineför att slå ihop aktuell scrape-data med GitHub-filens metadata. - I Change Detection Logic behåller ni JavaScript-koden som tolkar tidigare innehåll, bygger
snapshotoch sätterhasChanges. - I Changes Present Check ställer ni in det booleska villkoret att kontrollera att
{{ $json.hasChanges }}är lika med true.
Steg 5: Konfigurera noder för utdata/åtgärder
Skriv tillbaka uppdateringar till GitHub och skicka e-postaviseringar när ändringar upptäcks.
- Säkerställ att Changes Present Check endast routar till Update Snapshot in GitHub när ändringar har upptäckts.
- I Draft Email Summary behåller ni JavaScript-koden som bygger
emailSubjectochemailBodybaserat på tidigare kontra aktuell data. - I Dispatch Email Alert ställer ni in Subject till
{{ $json.emailSubject }}, To Email till[YOUR_EMAIL]och From Email till[YOUR_EMAIL].
Inloggningsuppgifter krävs: Anslut era emailSend-inloggningsuppgifter i Dispatch Email Alert.
Steg 6: Testa och aktivera ert workflow
Kör ett manuellt test för att bekräfta att scraping, jämförelse, uppdatering av snapshot och e-postavisering fungerar som förväntat.
- Klicka på Execute Workflow från Manual Execution Start för att köra ett test.
- Bekräfta att Certification Page Scraper returnerar data och att Normalize Scrape Output genererar en giltig
slug. - Verifiera att Retrieve Prior Snapshot antingen hittar en GitHub-fil eller returnerar tomt innehåll vid första körningen.
- Kontrollera att Changes Present Check routar till Update Snapshot in GitHub och att en commit skapas.
- Bekräfta att Dispatch Email Alert skickar ett e-postmeddelande med sammanfattningen som byggs av Draft Email Summary.
- När ni är nöjda, växla workflowet till Active för användning i produktion.
Vanliga fallgropar
- GitHub-autentisering kan gå ut eller kräva specifika behörigheter. Om saker slutar fungera, kontrollera scopes för din Personal Access Token (du behöver vanligtvis repo) och bekräfta token i n8n Credentials först.
- Om du använder Wait-noder eller extern skrapning varierar processtiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
- ScrapeGraphAI-utdata kan bli tom om en selektor är ens lite fel. Verifiera CSS/XPath-selektorn på den aktuella sidan och spara en exempel-snutt bredvid varje bevakningspost så att du snabbt kan fixa det senare.
Vanliga frågor
Cirka 15–25 minuter om du redan har repot och autentiseringsuppgifter redo.
Nej. Du kopplar mest konton och redigerar en enkel bevakningslistefil. Lite JSON-redigering hjälper, men du behöver inte skriva ”riktig kod” för att få värde.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Molnplaner börjar på 20 USD/månad för högre volymer. Du behöver också räkna in ScrapeGraphAI API-användning samt vad din e-postleverantör tar betalt (ofta inget vid normala volymer).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och kör n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, men håll det enkelt. Byt ut Manual Trigger mot en Cron-nod och justera sedan batchstorleken så att du inte belastar dina källor. Vanliga anpassningar är att lägga till en Telegram-notis efter mejlet, ändra e-postmallen så att den matchar ert interna format och utöka watchList.json med fler källor.
Oftast beror det på en Personal Access Token som har gått ut eller har för snäva scopes. Skapa en ny token med repo-åtkomst och uppdatera autentiseringen som används av båda GitHub-noderna (läs och upsert). Om det fortfarande fallerar, bekräfta att repots sökväg är korrekt (owner/repo) och att token-kontot faktiskt har skrivbehörighet till det repot.
Dussintals är normalt, och hundratals kan fungera om du batchar det noggrant.
Ofta, ja, eftersom det här flödet bygger på skrapning, normalisering och jämförelselogik som blir klumpig (och dyr) i enklare automatiseringsverktyg. n8n ger dig också greningar och kodsteg utan att varje extra steg blir en ny prisnivå, vilket spelar roll när du skrapar flera URL:er. En annan praktisk fördel är versionshantering: att skriva ögonblicksbilder till GitHub är rakt på här, och det är enkelt att granska vad som hände i efterhand. Zapier eller Make kan fortfarande vara bra om dina källor redan erbjuder korrekta API:er och du bara bevakar en eller två sidor. Om du vill ha en snabb rekommendation för din setup, Prata med en automationsexpert.
När detta väl rullar slutar certifieringsuppdateringar att vara en återkommande brandövning. Flödet hanterar den repetitiva kontrollen, och du kliver bara in när det finns något som är värt att agera på.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.