Du kollar en konkurrents sida, ser att deras budskap har ändrats och inser sedan att det hände för två veckor sedan. Nu gissar du vad som ändrades, när det ändrades och vad de testar. Det är frustrerande. Och det går att undvika med Sheets Slack alerts.
SEO-ansvariga känner av det här under veckovisa granskningar. En growth marketer märker det när CTR plötsligt dippar. Och en byråledare får den fruktade kundfrågan: “Varför fångade vi inte det här tidigare?” Det här flödet ger dig en levande ändringslogg, plus snabba Slack-notiser när titlar, H1:or, H2:or eller metabeskrivningar ändras.
Nedan ser du exakt hur automatiseringen fungerar, vad du behöver för att köra den och hur mycket tid du får tillbaka när den väl är schemalagd.
Så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets + Slack: upptäck SEO-ä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:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Update row in sheet", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "CustomJS Scraper – Fetch HTML", 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/>Code – Extract SEO Elements"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If – Check for SEO Changes", pos: "b", h: 48 }
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/slack.svg' width='40' height='40' /></div><br/>Slack Notification – Alert o.."]
n0 --> n1
n1 --> n3
n2 --> n5
n5 --> n6
n4 --> n2
n3 --> n4
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 n5 decision
class n1,n2 database
class n4 code
classDef customIcon fill:none,stroke:none
class n4,n6 customIcon
Problemet: SEO-ändringar sker i det tysta
Konkurrenter meddelar inte när de skriver om en title tag, byter ut en H1 eller strukturerar om H2:or för att sikta på ett nytt kluster. De bara publicerar. Om du bara upptäcker det under en månadsgenomgång (eller när rankingar svänger) har du redan tappat fördelen med “tidiga signaler”. Manuella kontroller blir också röriga: du öppnar flikar, kopierar text till ett dokument, glömmer vilken version som var “före” och står till slut med anteckningar du inte litar på. Ärligt talat är den värsta delen den mentala belastningen. Du försöker jobba strategiskt medan hjärnan fastnar i admin.
Friktionen byggs på. Här är var det faller isär.
- Att kontrollera 20 konkurrent-URL:er för hand kan sluka cirka 2 timmar, och det är innan du ens loggar något.
- Copy-paste-spårning är skör, så du missar små men viktiga ändringar som att “gratis provperiod” läggs till i en titel.
- Du kan inte bygga en strukturerad tidslinje när uppdateringar ligger utspridda i dokument, skärmdumpar och webbhistorik.
- När du väl ser ett mönster har konkurrenten redan itererat två gånger.
Lösningen: spåra konkurrenters SEO-ändringar automatiskt
Det här n8n-flödet övervakar konkurrenters sidor enligt schema och skriver de viktiga SEO-elementen till Google Sheets så att du alltid har en pålitlig “senaste ögonblicksbild”. Det börjar med att läsa en lista med konkurrent-URL:er från ett ark och använder sedan CustomJS Scraper för att hämta rå HTML för varje sida. Ett kodsteg tolkar HTML:en och plockar ut sidtiteln, H1:or, H2:or och metabeskrivning. Därefter uppdaterar flödet ditt Google-ark med de nya värdena och en tidsstämpel så att du ser historiken direkt. Sedan jämför det de nyhämtade fälten med föregående version och avgör om något faktiskt ändrades. När det hittar en skillnad skickar det en Slack-notis som berättar vad som ändrades och vilken den nya texten är.
Flödet startar med en schemalagd körning. Det samlar in HTML, extraherar de SEO-fält du bryr dig om och uppdaterar ditt ark som källa till sanning. Till sist involveras Slack bara när något har ändrats, så du slipper spam med “inga uppdateringar”.
Det du får: automatisering vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du spårar 25 konkurrent-URL:er. Manuellt tar även en snabb kontroll kanske 5 minuter per sida för att öppna den, bekräfta titel/meta/H1/H2:or och logga det, vilket blir cirka 2 timmar per körning. Med det här flödet behåller du samma URL-ark, den schemalagda körningen startar automatiskt och du lägger bara tid när Slack flaggar en verklig ändring. De flesta veckor är det några minuters genomgång i stället för en hel granskningssession.
Det du behöver
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för URL-listan och ändringshistorik.
- Slack för att ta emot ändringsnotiser i en kanal.
- CustomJS API-nyckel (hämta den från din profilsida i CustomJS).
Kunskapsnivå: Medel. Du kopplar konton, lägger till inloggningsuppgifter och är bekväm med att justera kolumner i ett ark.
Vill du inte sätta upp detta själv? Prata med en automations-expert (gratis 15-minuters konsultation).
Så fungerar det
En schemalagd körning startar allt. Som standard körs den veckovis, men du kan ändra till dagligen om din marknad rör sig snabbt (eller månadsvis om du bara behöver lätt övervakning).
Din konkurrentlista kommer från Google Sheets. Flödet läser varje URL från en kolumn som heter “Websites”, vilket håller systemet enkelt: lägg till en ny konkurrent genom att lägga till en ny rad.
CustomJS hämtar HTML:en, sedan extraherar ett script SEO-fält. Scrapern hämtar sidans råinnehåll och kodsteget plockar ut titel, H1:or, H2:or och metabeskrivning så att du spårar det faktiska budskapet på sidan.
Google Sheets sparar senaste ögonblicksbilden och Slack triggas bara vid ändring. När arket uppdaterats med en tidsstämpel jämför en “If”-kontroll gamla och nya värden och postar ett Slack-meddelande när något har ändrats.
Du kan enkelt anpassa scraping-frekvensen efter din nisch utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera schematriggern
Ställ in arbetsflödet så att det körs varje vecka med den inbyggda schematriggern.
- Lägg till noden Scheduled Run Starter som din trigger.
- I Rule → Interval, ställ in Field på
weeks. - Lämna övriga alternativ på standardvärdena om ni inte behöver en anpassad körtid.
days eller hours, men behåll samma nodnamn för kompatibilitet.Steg 2: Anslut Google Sheets
Hämta konkurrenters URL:er och uppdatera senare arket med extraherad SEO-data.
- Konfigurera Retrieve Sheet Rows med ert kalkylark: ställ in Document till
YOUR_SHEET_ID_HERE-x-ooch Sheet tillgid=0. - Inloggning krävs: Anslut era
googleSheetsOAuth2Api-uppgifter i Retrieve Sheet Rows. - Öppna Modify Sheet Record och ställ in Operation till
update. - Mappa kolumnerna i Modify Sheet Record exakt enligt följande: Websites →
{{ $('Retrieve Sheet Rows').item.json.Websites }}, Title →{{ $json.title }}, Meta Description →{{ $json.metaDescription }}, H1s →{{ $json.h1s }}, H2s →{{ $json.h2s }}, Date →{{new Date()}}. - Inloggning krävs: Anslut era
googleSheetsOAuth2Api-uppgifter i Modify Sheet Record.
Websites, Title, Meta Description, H1s och H2s, annars kommer uppdateringen att misslyckas.Steg 3: Sätt upp HTML-insamling och SEO-extrahering
Hämta HTML för varje webbplats och parsa centrala SEO-fält för jämförelse och uppdateringar.
- Konfigurera CustomJS HTML Collector med URL satt till
{{ $json.Websites }}och Return Value Type satt tilltext. - Inloggning krävs: Anslut era
customJsApi-uppgifter i CustomJS HTML Collector. - I Script Extract SEO Fields, behåll Mode inställt på
runOnceForEachItem. - Klistra in den tillhandahållna JavaScript-koden i Code för att extrahera
title,metaDescription,h1sochh2sfrån HTML:en.
Websites är giltiga och åtkomliga utan autentisering.Steg 4: Konfigurera ändringsdetektering och aviseringar
Jämför befintliga värden i arket mot nya värden och skicka en Slack-avisering om något ändras.
- I SEO Change Validation, bekräfta att varje villkor använder Not Equals med följande uttryck:
{{ $('Retrieve Sheet Rows').item.json.Title }}vs{{ $json.Title }},{{ $('Retrieve Sheet Rows').item.json["Meta Description"] }}vs{{ $json["Meta Description"] }},{{ $('Retrieve Sheet Rows').item.json.H1s }}vs{{ $json.H1s }}och{{ $('Retrieve Sheet Rows').item.json.H2s }}vs{{ $json.H2s }}. - Konfigurera Slack Change Alert med Select inställt på
useroch User inställt på ert Slack-ID (t.ex.[YOUR_ID]). - Ställ in Text till den angivna mallen så att den refererar till både gamla och nya värden, inklusive
{{ $('Modify Sheet Record').item.json.Date }}. - Inloggning krävs: Anslut era
slackApi-uppgifter i Slack Change Alert.
Steg 5: Testa och aktivera ert arbetsflöde
Kör ett fullständigt test för att bekräfta datahämtning, extrahering, ark-uppdateringar och Slack-notiser.
- Klicka på Execute Workflow och bevaka lyckade körningar från Scheduled Run Starter till Slack Change Alert.
- Bekräfta att Retrieve Sheet Rows returnerar rader med giltiga
Websites-värden. - Verifiera att Modify Sheet Record uppdaterar arket med nya värden för
Title,Meta Description,H1s,H2sochDate. - Trigga en ändring på en test-URL och kontrollera att Slack Change Alert publicerar varningsmeddelandet till den valda användaren.
- När allt är verifierat, växla arbetsflödet till Active för veckovis övervakning.
slackApi-uppgifterna har behörighet att skicka meddelanden till den användaren.Vanliga fallgropar
- Google Sheets-inloggningar kan gå ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först statusen för inloggningsuppgifterna i n8n och delningsinställningarna för arket.
- Om du använder schemalagda körningar på en hårt belastad egenhostad server varierar processtider. Öka eventuell vänt-/retry-logik du lägger till senare om efterföljande noder fallerar på tomma svar.
- Scraping via CustomJS kan returnera annan HTML än din webbläsare om sajten är starkt JavaScript-driven. Om dina extraherade fält kommer tillbaka tomma, testa URL:en i CustomJS och justera extraktionslogiken i kodnoden.
Vanliga frågor
Cirka 30 minuter om dina konton och arket är redo.
Nej. Du kopplar främst inloggningsuppgifter och mappar kolumner i arket. Kodnoden är redan byggd och du kan använda den som den är.
Ja. n8n har ett gratis alternativ för egen hosting 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 kostnader för CustomJS API-användning (de varierar per plan och scrape-volym).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsat antal körningar men kräver grundläggande serveradministration.
Ja, och det är den vanligaste justeringen. Ändra schematriggaren till att köra dagligen och strama sedan upp Slack-meddelandet så att det bara postar de fält du bryr dig mest om (till exempel titel + metabeskrivning). Du kan också bygga ut extraktionskoden för att fånga canonical-taggar eller robots-direktiv om det är viktigt i din nisch.
Oftast beror det på utgångna OAuth-behörigheter eller att arket inte är delat med det anslutna Google-kontot. Anslut Google Sheets-inloggningen igen i n8n och bekräfta sedan att kalkylarkets ID och fliknamn fortfarande stämmer. Om det bara misslyckas vid uppdateringar, kontrollera att arket har de förväntade kolumnerna (som “Websites”) och att skyddade intervall inte blockerar ändringar.
Ett par dussin till några hundra är vanligt, så länge din scraper-plan och server klarar belastningen.
Ofta, ja, eftersom scraping + parsning + jämförelser är där enklare automationsverktyg snabbt blir klumpiga. n8n hanterar loopar, villkorslogik och flöden av typen “spara det gamla värdet, jämför med det nya” utan att bli en 20-stegsnota. Egen hosting spelar också roll här, eftersom sidövervakning kan ge många körningar. Med det sagt: om du bara bevakar ett par sidor och du inte behöver strukturerad extraktion (title/H1/H2/meta) kan Zapier eller Make gå snabbare att klicka ihop. Vill du ha hjälp att välja? Prata med en automations-expert.
När detta väl rullar slutar konkurrenters SEO-ändringar vara överraskningar och blir i stället ett enkelt Slack-meddelande du kan agera på. Sätt upp det, låt arket samla historiken och gå vidare till jobbet som faktiskt ökar trafiken.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.