Du kollar en sida ”bara snabbt”, sedan igen, och igen. Plötsligt har du tappat tråden kring vad som faktiskt ändrades — och du har fortfarande ingen strukturerad logg du kan dela.
Den här automatiseringen för ändringsspårning i Notion slår hårdast mot marknadsförare när landningssidor ändras mitt i aktiva kampanjer. Konkurrentanalytiker känner också av det, liksom byråansvariga som behöver underlag till kunder. Resultatet är enkelt: en tillförlitlig historik över uppdateringar, plus valfria Gmail-notiser när något meningsfullt förändras.
Du sätter upp ett n8n-flöde som övervakar mål-URL:er dagligen, tar snapshots (text och skärmbilder), sammanfattar skillnader med GPT och loggar allt i Notion så att du kan söka i det senare.
Så fungerar automatiseringen
Här är hela flödet du kommer att sätta upp:
n8n Workflow Template: Notion + Gmail: aviseringar vid webbändringar
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Define Target URLs", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Define What Matters To You", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", 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/>Construct Notion Blocks"]
n5@{ icon: "mdi:location-exit", form: "rounded", label: "Capture Screenshots", pos: "b", h: 48 }
n6@{ icon: "mdi:location-exit", form: "rounded", label: "Scrape Target URLs", 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/notion.dark.svg' width='40' height='40' /></div><br/>Save Snapshots"]
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out Blocks", 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/notion.dark.svg' width='40' height='40' /></div><br/>Append Blocks"]
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/notion.dark.svg' width='40' height='40' /></div><br/>Get Last Snapshots"]
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/code.svg' width='40' height='40' /></div><br/>Combine Website Data"]
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out Data", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out Updates", pos: "b", h: 48 }
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/notion.dark.svg' width='40' height='40' /></div><br/>Get Many Blocks"]
n15@{ icon: "mdi:robot", form: "rounded", label: "Compare Snapshots", 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/code.svg' width='40' height='40' /></div><br/>Combine Snapshots and AI Ana.."]
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/notion.dark.svg' width='40' height='40' /></div><br/>Create Updates"]
n18["<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/>Construct Update Pages"]
n19@{ icon: "mdi:message-outline", form: "rounded", label: "Send Email Updates", pos: "b", h: 48 }
n3 --> n2
n17 --> n18
n7 --> n4
n12 --> n15
n14 --> n11
n0 --> n1
n8 --> n9
n15 --> n16
n13 --> n17
n13 --> n19
n1 --> n3
n10 --> n14
n6 --> n5
n5 --> n7
n5 --> n10
n11 --> n12
n4 --> n8
n2 --> n6
n16 --> n13
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 n15 ai
class n7,n9,n10,n14,n17 database
class n18 api
class n4,n11,n16 code
classDef customIcon fill:none,stroke:none
class n4,n7,n9,n10,n11,n14,n16,n17,n18 customIcon
Därför spelar det roll: du kan inte spåra det du inte har fångat
Webbplatsförändringar är hala. En konkurrent uppdaterar priser, en changelog smyger in en ny begränsning, eller ditt eget team justerar en rubrik och ingen minns hur ”före” såg ut. Att manuellt kontrollera sidor låter enkelt tills det blir en rutin: öppna flikar, scrolla, kisa, kopiera utdrag till ett dokument och sedan försöka förklara ändringen för någon som inte var med. Det handlar inte bara om tid. Det är den mentala belastningen av att undra vad du missade, och frustrationen i att sakna ett revisionsspår när någon frågar: ”När ändrades det där?”
Det eskalerar snabbt. Så här faller det isär i verkligheten.
- Du slutar med att kontrollera samma sidor om och om igen eftersom det inte finns något pålitligt alerts-system.
- Små ändringar försvinner i bruset, så du överreagerar eller missar den enda ändringen som spelade roll.
- Skärmbilder hamnar i slumpmässiga mappar, och ingen kan söka i dem när du behöver bevis.
- När en kollega ber om sammanhang kan du inte snabbt visa ”före vs efter” med en tydlig sammanfattning.
Det du bygger: daglig webbövervakning loggad i Notion (med e-postnotiser)
Det här flödet gör webbövervakning till en tyst bakgrundsprocess som ger riktig dokumentation. Det startar på ett schema (dagligen som standard), hämtar en lista med mål-URL:er som du anger och använder sedan Firecrawl för att skrapa sidinnehåll och ta en skärmbild samtidigt. De snapshotsen sparas i Notion, som blir din ”single source of truth” för hur sidan såg ut en viss dag. Därefter hämtar flödet föregående snapshot, ber GPT-5-mini (via OpenAI-chatmodellnoden) jämföra de två versionerna och generera en kort, lättläst sammanfattning av de viktiga skillnaderna. Om ändringen matchar dina kriterier skapar det en ny Notion-post för uppdateringen och skickar valfritt en Gmail-notis så att du slipper kontrollera manuellt.
Flödet börjar med din URL-lista och ändringsregler. Sedan fångar det den senaste texten och det visuella, jämför med föregående post och skriver en strukturerad uppdatering i Notion. Till sist kan Gmail pinga dig (eller teamet) endast när något värt att uppmärksamma dyker upp.
Det du bygger
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du spårar 10 sidor: en konkurrents prissättning, två funktionssidor, en hjälpartikel och några landningssidor. Manuellt tar även en snabbkoll kanske 5 minuter per sida, så du lägger cirka 50 minuter varje dag på att bara ”kolla”. Med det här flödet lägger du ungefär 10 minuter vid ett tillfälle på att uppdatera din URL-lista eller dina ändringskriterier, och sedan kör det i bakgrunden. De flesta dagar gör du ingenting alls, och du granskar bara Notion-posten (och Gmail-notisen) när en faktisk förändring upptäcks.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Notion för att lagra snapshots, sammanfattningar och historik
- Gmail för att skicka valfria uppdateringsnotiser
- Firecrawl API-nyckel (hämta den i din Firecrawl-dashboard)
- OpenAI API-nyckel (hämta den på sidan för dina OpenAI API-nycklar)
Svårighetsgrad: Nybörjare. Du kommer främst att klistra in API-nycklar, koppla Notion/Gmail och redigera en URL-lista samt några regler för ”vad som räknas som en ändring”.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Ett dagligt schema sätter igång. Flödet körs via en schematrigger (dagligen som standard), så du behöver inte komma ihåg att göra något. Om du vill kan du också köra det vid begäran medan du testar.
Din URL-lista och ”ändringsregler” tillämpas. Du anger en eller flera URL:er (flödet kan expandera en lista), plus kriterier som hjälper systemet att fokusera på det som är viktigt. Du kan till exempel bry dig om pristext men ignorera en roterande sektion med testimonials.
Firecrawl fångar nuläget. Det skrapar webbplatsinnehåll och tar en skärmbild, och flödet sparar sedan en strukturerad snapshot-sida i Notion. Det ger dig ett permanent ”det här såg vi på det här datumet”-underlag.
GPT jämför idag med förra gången. Flödet hämtar tidigare snapshots från Notion, sätter ihop före-/efter-data och kör ett steg med OpenAI-chatmodell för att sammanfatta viktiga skillnader. Om ändringen matchar dina kriterier skapar det en tydlig uppdateringspost och kan skicka en Gmail-notis till rätt inkorg.
Du kan enkelt ändra formatet på URL-listan eller formuleringen av ändringskriterierna utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den schemalagda triggern
Det här arbetsflödet körs enligt ett schema för att övervaka förändringar på webbplatser. Börja med att konfigurera triggern och den initiala URL-listan.
- Öppna Scheduled Automation Trigger och ställ in önskat intervall under Rule (t.ex. dagligen).
- I Set Target Links, ställ in Mode på
raw. - Klistra in er URL-lista i JSON Output exakt som en array, till exempel:
{ "target_urls": [ "https://randomtextgenerator.com", "https://randomuser.me/" ] }. - Säkerställ att Set Target Links är kopplad till Expand URL List och därefter till Set Change Rules.
Tips: Håll URL-listan ren och giltig. Trasiga URL:er gör att efterföljande noder misslyckas.
Steg 2: Anslut Notion för lagring av snapshots
Notion lagrar snapshots, block och uppdateringssidor. Konfigurera Notion-noderna och deras databasmål.
- Öppna Store Snapshot Pages och välj snapshots-databasen i Database ID (för närvarande inställt på
[YOUR_ID]). - Bekräfta egenskapsmappningarna i Store Snapshot Pages, inklusive Name inställt på
{{ new Date().toISOString().split('T')[0] + '_' + $('Expand URL List').item.json.target_urls.replace(/^https?:\/\//, '') }}och URL inställt på{{ $('Expand URL List').item.json.target_urls }}. - I Fetch Prior Snapshots, ställ in Database ID till er snapshots-databas och behåll filtren som använder
{{ $('Expand URL List').item.json.target_urls }}och{{ new Date(Date.now() - 86400000).toISOString().split('T')[0] }}. - Verifiera att Retrieve Page Blocks använder Block ID inställt på
{{ $json.id }}och att Return All är aktiverat. - För uppdateringar, öppna Create Update Entries och ställ in Database ID till er uppdateringsdatabas (för närvarande
[YOUR_ID]).
Inloggningsuppgifter krävs: Anslut era notionApi-inloggningsuppgifter för alla Notion-noder (5 noder hanterar snapshots, block och uppdateringssidor).
Steg 3: Konfigurera scraping och snapshot-insamling
Dessa noder skrapar sidinnehåll och tar skärmbilder för varje URL, och lagrar sedan resultatet i Notion.
- I Set Change Rules, behåll eller redigera change_criteria så att det matchar er övervakningslogik, t.ex.
Either a visible text change or an image source update should be considered a change. - Konfigurera Scrape Site Content med URL inställt på
{{ $('Expand URL List').item.json.target_urls }}och Operation inställt påscrape. - Konfigurera Grab Page Screenshots med URL inställt på
{{ $('Expand URL List').item.json.target_urls }}och Operation inställt påscrape. - Bekräfta den parallella grenen: Grab Page Screenshots skickar output till både Store Snapshot Pages och Fetch Prior Snapshots parallellt.
Inloggningsuppgifter krävs: Anslut era firecrawlApi-inloggningsuppgifter i Scrape Site Content och Grab Page Screenshots.
Steg 4: Bygg och appendera Notion-block
Skrapat innehåll delas upp i block och appenderas till snapshot-sidorna.
- I Build Notion Blocks, behåll den medföljande JavaScript-koden som delar upp innehållet i segment om 1500 tecken och ger output
blocks. - Säkerställ att Store Snapshot Pages går vidare till Build Notion Blocks och därefter till Expand Block Items.
- I Expand Block Items, ställ in Field to Split Out på
blocks. - I Append Notion Blocks, ställ in Block ID till
{{ $json.pageId }}och Text Content till{{ $json.chunk }}.
Tips: Stora sidor kan skapa många block. Håll chunk-storleken i Build Notion Blocks i linje med Notions begränsningar.
Steg 5: Sätt upp AI-analys av förändringar
I det här steget sammanställs nuvarande jämfört med tidigare data och AI används för att avgöra om förändringar är betydande.
- I Assemble Website Data, behåll JavaScript-koden som sammanfogar URL:er, skärmbilder och tidigare innehåll till
websites. - I Expand Website Records, ställ in Field to Split Out på
websites. - Konfigurera Analyze Snapshot Differences att använda modellen
gpt-5-minioch behåll prompten som innehåller{{ $json.currentContent }},{{ $json.lastContent }}och{{ $('Set Change Rules').item.json.change_criteria }}. - I Merge Analysis Results, behåll logiken som filtrerar bort
NO_CHANGEoch ger outputupdates.
Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter i Analyze Snapshot Differences.
Steg 6: Konfigurera Notion-uppdateringar och e-postaviseringar
När förändringar upptäcks skapar arbetsflödet uppdateringssidor i Notion och skickar e-postaviseringar parallellt.
- Bekräfta att Merge Analysis Results går vidare till Expand Update Items med Field to Split Out inställt på
updates. - Notera den parallella körningen: Expand Update Items skickar output till både Create Update Entries och Dispatch Email Alerts parallellt.
- I Create Update Entries, verifiera att Name är inställt på
{{ new Date().toISOString().split('T')[0] + '_' + $json.url.replace(/^https?:\/\//, '') }}och URL på{{ $json.url }}. - I Compose Update Layout, behåll URL som
https://api.notion.com/v1/blocks/{{ $json.id }}/childrenoch Method somPATCH. - I Dispatch Email Alerts, ställ in Send To till er mottagare och behåll HTML-uttrycken för Message och Subject, inklusive
{{ $json.url }}och{{ $json.summary }}.
Inloggningsuppgifter krävs: Anslut era notionApi-inloggningsuppgifter i Create Update Entries och Compose Update Layout, samt era gmailOAuth2-inloggningsuppgifter i Dispatch Email Alerts.
Steg 7: Testa och aktivera ert arbetsflöde
Kör ett fullständigt test för att validera scraping, AI-analys och outputs innan ni aktiverar automatiseringen.
- Klicka på Execute Workflow och se hur Scheduled Automation Trigger skickar data till Set Target Links.
- Verifiera att en ny snapshot skapas i Notion och att Append Notion Blocks lägger till innehållsblock.
- Bekräfta att Analyze Snapshot Differences returnerar antingen en kortfattad sammanfattning eller
NO_CHANGE. - När förändringar finns, kontrollera att Create Update Entries och Compose Update Layout fyller i uppdateringssidan och att Dispatch Email Alerts skickar ett e-postmeddelande.
- Slå på arbetsflödet Active för att köra enligt schemat i produktion.
⚠️ Vanlig fallgrop: Om Notion-sidor inte skapas, kontrollera databaserna igen ([YOUR_ID]) och säkerställ att Notion-integrationen har åtkomst till dessa databaser.
Felsökningstips
- Notion-uppgifter kan löpa ut eller sakna åtkomst till rätt databas. Om poster inte dyker upp, kontrollera behörigheterna för Notion-integrationen och bekräfta att databasen/sidan är delad med din n8n-anslutning.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera output för alltid.
Snabba svar
Cirka 30 minuter om du redan har din Notion-databas och API-nycklar redo.
Nej. Du kopplar konton, klistrar in nycklar och redigerar några fält. Flödets logik är redan byggd; du konfigurerar främst indata.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna med OpenAI API-användning (ofta några dollar i månaden för små bevakningslistor) och Firecrawl API-användning baserat på hur många sidor du skrapar.
Två alternativ: n8n Cloud (hanterad tjänst, enklast uppsättning) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det bör du. De flesta anpassar steget ”Set Target Links” (för att ändra vilka URL:er som övervakas) och steget ”Set Change Rules” (för att avgöra vad som är meningsfullt). Du kan också stänga av Gmail helt genom att stänga av noden ”Dispatch Email Alerts”, eller ändra den så att den notiserar en delad inkorg. Om du föredrar ett annat lagringslager kan du byta ut Notion-noderna mot Google Sheets eller Excel 365 eftersom flödet redan har de integrationerna.
Oftast beror det på behörigheter. Säkerställ att Notion-integrationen du kopplade i n8n har åtkomst till exakt den databas eller sida du skriver till, och att databasen inte har flyttats eller duplicerats sedan du satte upp den. Kontrollera också databasens egenskaper: om en obligatorisk fälttyp ändrades (till exempel att ett textfält blev en select) kan skapa-/uppdateringssteget börja fallera. Slutligen kan Notions rate limits dyka upp om du skalar till många URL:er samtidigt, så batchning kan hjälpa.
I n8n Cloud beror din månatliga körningsgräns på din plan; self-hosting har ingen plattformsgräns, bara vad din server klarar. I praktiken övervakar team ofta 10 till 50 URL:er dagligen utan problem. Om du går upp till hundratals sidor, planera för längre körningar, högre Firecrawl-användning och fler Notion-skrivningar.
Ofta, ja. Det här flödet gör mer än ”om sidan ändras, skicka e-post”: det skrapar, sparar snapshots, hämtar tidigare versioner, kör en AI-jämförelse och skriver sedan en strukturerad uppdateringspost. Den typen av flerstegslogik med förgreningar kan bli dyr eller klumpig i Zapier/Make, särskilt när du expanderar en lista med URL:er. n8n ger dig också ett self-host-alternativ, vilket är smidigt om du vill köra många kontroller utan att räkna varje uppgift. Nackdelen är att du kan behöva lägga lite mer tid på att konfigurera det första gången. Om du är osäker, prata med en automationsexpert så pekar vi dig mot det enklaste alternativet.
När det här väl rullar slutar webbövervakning att vara en återkommande syssla och blir en tydlig tidslinje du faktiskt kan använda. Du kommer att undra varför du någonsin gjorde det manuellt.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.