Du publicerar en sida, uppdaterar webbplatskartan och sedan väntar du. Och väntar. Sedan börjar du med den irriterande loopen: kolla Google Search Console, inspektera en URL, skicka in den igen ”för säkerhets skull” och hoppas att du inte slösade din indexeringskvot.
Det här drabbar SEO-konsulter först, ärligt talat. Men marknadschefer som ansvarar för innehållsprestanda och sajtägarna som försöker växa organisk trafik känner av det också. Med den här GSC-indexeringsautomationen slutar du dubbelkolla samma URL:er och begär bara indexering när det faktiskt behövs.
Nedan ser du hur arbetsflödet övervakar din webbplatskarta, validerar indexstatus via GSC och bara skickar rätt URL:er till Indexing API, samtidigt som det håller koll på ett 7-dagars ”skicka inte in igen”-fönster.
Så fungerar den här automationen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Google Search Console + indexing API: färre kontroller
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Configuration", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Sitemap XML"]
n3@{ icon: "mdi:cog", form: "rounded", label: "Convert XML to JSON", 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/>Parse Sitemap Structure"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is Sitemap Index?", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Format URL Data", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter: Recent URLs Only", pos: "b", h: 48 }
n8["<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/>Check Submission History"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>GSC: Inspect URL Status"]
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/>Logic: Should Index?"]
n11@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter: Only Not Indexed", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Batch Processing", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Delay (Rate Limiting)", pos: "b", h: 48 }
n14@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter: Valid for Submission", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>GSC: Request Indexing"]
n1 --> n2
n6 --> n7
n12 --> n16
n14 --> n1
n2 --> n3
n5 --> n2
n5 --> n6
n3 --> n4
n10 --> n11
n13 --> n12
n16 --> n13
n9 --> n10
n4 --> n5
n8 --> n15
n11 --> n12
n7 --> n8
n15 --> n9
n0 --> n1
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,n14 trigger
class n5,n7,n11,n15 decision
class n2,n9,n16 api
class n4,n8,n10 code
classDef customIcon fill:none,stroke:none
class n2,n4,n8,n9,n10,n16 customIcon
Problemet: indexeringskontroller blir en veckovis tidstjuv
Indexeringsarbete misslyckas sällan på ett dramatiskt sätt. Det misslyckas tyst. Ett nytt blogginlägg förblir oindexerat i flera dagar, en uppdaterad landningssida blir inte omcrawlad, och plötsligt stirrar du på rankingar som ”borde” ha rört sig men inte gjorde det. Så du börjar med manuell inspektion i Google Search Console, en URL i taget, plus att du skickar in URL:er igen som du redan skickade in förra veckan eftersom du inte kommer ihåg vad som hände. Om du hanterar mer än en handfull URL:er blir det här en återkommande syssla som stjäl fokus från arbetet som faktiskt driver trafik: innehåll, internlänkning och tekniska åtgärder.
Friktionen byggs på. Här är var det faller isär.
- Manuell inspektion av ens 30 URL:er kan ta runt en timme, och det är innan du ens bestämmer vad som ska skickas in.
- Du skickar till slut in samma URL:er igen eftersom det saknas en enkel ”senast inskickad”-historik du litar på.
- Kvoten slösas på sidor som redan är indexerade, så sidorna som verkligen behöver hjälp får vänta längre.
- Sitemap-index (kapslade webbplatskartor) lägger till extra steg, så övervakning blir ett miniprojekt.
Lösningen: övervakning av webbplatskarta + logik för ”skicka bara in vid behov”
Det här arbetsflödet automatiserar URL-övervakning och indexeringsförfrågningar med en enkel idé: behandla din webbplatskarta som sanningskällan och verifiera sedan verkligheten i Google Search Console innan du förbrukar kvot. Det börjar med att hämta din XML-webbplatskarta (inklusive sitemap-index som pekar på andra webbplatskartor), konverterar den till strukturerad data och extraherar URL:erna samt deras lastmod-datum. Därefter behåller det bara nyligt innehåll så att du inte går igenom tusentals äldre sidor. Sedan kontrollerar det en lokal inskickningshistorik (lagrad som statisk data) för att undvika att skicka in URL:er igen inom de senaste 7 dagarna. Först efter de filtren kör det GSC URL Inspection-kontrollen och skickar sedan bara de URL:er som faktiskt inte är indexerade till Google Indexing API, i små batchar med inbyggda pauser.
Arbetsflödet startar enligt schema (eller manuellt när du vill). Det hämtar och tolkar webbplatskartan, tillämpar inskickningsregler och validerar indexstatus via GSC. Till sist skickar det in oindexerade URL:er i en hastighetsbegränsad batch-loop så att du håller dig inom API:ets genomströmningsgränser.
Det du får: automation vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du publicerar eller uppdaterar 20 URL:er i veckan, fördelat på blogginlägg, lokala sidor och landningssidor. Manuellt kan du lägga cirka 2 minuter per URL på att inspektera och bestämma vad du ska göra, plus ytterligare en minut för att skicka in förfrågningar, alltså ungefär en timmes repetitiv kontroll (och det är lätt att råka kontrollera samma URL två gånger). Med det här arbetsflödet lägger du kanske 10 minuter en gång för att ställa in din sitemap-URL och GSC-egendom, sedan sköter schemalagda körningar den veckovisa övervakningen. Enda gången du rör det är när du vill granska vad som skickades in eller justera filtret för ”nyligt innehåll”.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Google Search Console API för statuskontroller via URL-inspektion.
- Google Indexing API för att begära indexering för oindexerade URL:er.
- JSON-nyckel för servicekonto (hämta den från autentiseringsuppgifter i Google Cloud Console).
Kunskapsnivå: Medel. Du kopierar autentiseringsuppgifter, ställer in API-scope och klistrar in dina sitemap-/egendoms-URL:er.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (kostnadsfri 15-minuters konsultation).
Så fungerar det
En schemalagd (eller manuell) körning drar igång. Arbetsflödet kan köras via Scheduled Run Trigger för löpande övervakning, eller så kan du använda Manual Launch Trigger när du precis har publicerat ett gäng nya sidor.
Din webbplatskarta hämtas och tolkas. En HTTP Request hämtar XML:en, den konverteras till JSON och ett kort steg för att ”tolka sitemap-strukturen” hanterar både vanliga webbplatskartor och sitemap-index så att kapslade filer inte ställer till det.
Bara rätt URL:er går vidare. Arbetsflödet sätter ihop URL-fält, filtrerar till nyliga URL:er (baserat på lastmod), kontrollerar sedan inskickningshistoriken som lagras lokalt i n8n static data och tillämpar regeln ”ingen upprepning inom 7 dagar”.
GSC validerar, sedan skickar Indexing API in. Google Search Console URL Inspection bekräftar om en URL faktiskt inte är indexerad, och bara de URL:erna går vidare till en batch-loop med väntan/paus mellan anrop innan HTTP request skickar indexeringsbegäran.
Du kan enkelt justera fönstret för ”nyligt innehåll” så att det matchar din publiceringstakt utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera triggern för manuell start
Konfigurera arbetsflödets startpunkter så att ni kan köra det manuellt för testning eller enligt ett schema för löpande indexering.
- Lägg till noden Manual Launch Trigger som första trigger för körningar vid behov.
- Konfigurera Scheduled Run Trigger med ett veckoschema; regeln ställs in till
weeksi Interval. - Koppla både Manual Launch Trigger och Scheduled Run Trigger till Setup Parameters.
Steg 2: anslut Google Search Console
Åtkomst till Google Search Console API krävs för URL-inspektion och indexeringsbegäranden.
- Öppna GSC URL Inspection och ställ in URL till
https://searchconsole.googleapis.com/v1/urlInspection/index:inspect. - Ställ in JSON Body till
{ "inspectionUrl": "{{ $json.url }}", "siteUrl": "{{ $('Setup Parameters').item.json.gsc_property }}" }. - Inloggningsuppgifter krävs: Anslut era googleApi-inloggningsuppgifter i GSC URL Inspection.
- Öppna GSC Submit Indexing och ställ in URL till
https://indexing.googleapis.com/v3/urlNotifications:publish. - Ställ in JSON Body till
{ "url": "{{ $json.originalData.inspectionResult.indexStatusResult.userCanonical }}", "type": "URL_UPDATED" }. - Inloggningsuppgifter krävs: Anslut era googleApi-inloggningsuppgifter i GSC Submit Indexing.
Steg 3: konfigurera hämtning och tolkning av sitemap
Definiera sitemap-källan och normalisera den så att arbetsflödet kan hantera sitemap-index eller direkta URL-uppsättningar.
- I Setup Parameters ställer ni in sitemap till
https://gamelandvn.com/sitemap_index.xmloch gsc_property tillhttps://gamelandvn.com/. - I Retrieve Sitemap XML ställer ni in URL till
{{ $json.url || $node["Setup Parameters"].json.sitemap }}så att den kan följa länkar i sitemap-index. - I XML to JSON Converter behåller ni alternativen aktiverade för trim, normalize, mergeAttrs och normalizeTags för att standardisera tolkningen.
- I Interpret Sitemap Layout behåller ni JavaScript-logiken som outputar antingen
url-poster (sitemap-index) ellerurlData-poster (en enskild sitemap). - I Sitemap Index Check ställer ni in villkoret till att
{{ $json.isSitemapIndex }}är lika medtrueför att förgrena för nästlade sitemaps.
Tips: Om er sitemap inte är ett index kommer den falska grenen i Sitemap Index Check att routa direkt till Assemble URL Fields.
Steg 4: konfigurera URL-filtrering och regler för inskick
Filtrera URL:er baserat på aktualitet och undvik att skicka in URL:er på nytt för ofta.
- I Assemble URL Fields ställer ni in url till
{{ $json.urlData.loc }}, lastmod till{{ $json.urlData.lastmod || '' }}och currentDate till{{ $now.toISO() }}. - I Keep Recent URLs kräver ni att lastmod inte är tom och är efter
{{ $now.minus({ days: 90 }).toISO() }}. - Lämna Review Submission History som den är för att kontrollera arbetsflödets statiska data och upprätthålla 7-dagarsregeln för återinskick.
- I Validate Submission Rules behåller ni det booleska villkoret
{{ $json.shouldSubmit }}är lika medtrue.
⚠️ Vanlig fallgrop: Om era sitemap-URL:er inte innehåller lastmod kommer filtret Keep Recent URLs att filtrera bort alla objekt. Ta bort villkoret om ”inte tomt” vid behov.
Steg 5: konfigurera indexkontroll, batchning och hastighetsbegränsningar
Inspektera aktuell indexstatus, välj URL:er som inte är indexerade och stryp inskick till Google.
- I GSC URL Inspection behåller ni Method som
POSToch batchalternativen inställda påbatchSize: 1ochbatchInterval: 2000. - I Determine Index Need behåller ni logiken som sätter
needsIndexingbaserat påcoverageState-värden. - I Select Non-Indexed behåller ni villkoren
{{ $json.needsIndexing }}är lika medtrueoch{{ $json.originalData.inspectionResult.indexStatusResult.indexingState }}inte är lika medINDEXING_STATE_UNSPECIFIED. - I Batching Loop använder ni standardbeteendet för batchning för att iterera igenom kvalificerade URL:er.
- I GSC Submit Indexing behåller ni Method som
POSToch aviseringstypen somURL_UPDATED. - I Rate Limit Pause ställer ni in Unit till
secondsoch Amount till2för att förhindra API-strypning.
Tips: Exekveringsflödet använder en loop: Batching Loop → GSC Submit Indexing → Rate Limit Pause → Batching Loop. Detta stryper inskick på ett säkert sätt.
Steg 6: testa och aktivera ert arbetsflöde
Validera dataflödet från början till slut och aktivera sedan automatiska körningar.
- Klicka på Execute Workflow med Manual Launch Trigger för att bekräfta att sitemap:en laddas och att URL:erna passerar genom Keep Recent URLs.
- Verifiera att GSC URL Inspection returnerar inspektionsresultat och att Determine Index Need endast flaggar URL:er som inte är indexerade.
- Bekräfta att GSC Submit Indexing tar emot giltiga kanoniska URL:er och att Rate Limit Pause introducerar en fördröjning på 2 sekunder mellan inskick.
- När allt fungerar växlar ni arbetsflödet till Active så att Scheduled Run Trigger körs automatiskt.
Vanliga fallgropar
- Autentiseringsuppgifter för Googles servicekonto kan löpa ut eller sakna rätt behörigheter. Om något slutar fungera, kolla först Google Search Console → Inställningar → Användare och behörigheter.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om efterföljande noder misslyckas på grund av tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera utdata i all oändlighet.
Vanliga frågor
Cirka en timme om ditt Google Cloud-projekt och servicekonto är klara.
Nej. Du klistrar främst in autentiseringsuppgifter, URL:er och scopes. Arbetsflödeslogiken är redan byggd.
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 Googles API-användning (den största ”kostnaden” här är kvotgränser, inte pengar).
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 serveradministration.
Ja, det är en av de enklaste justeringarna. Ändra filtret ”Keep Recent URLs” så att det behåller de senaste dagarna, den senaste månaden eller bara URL:er med ett specifikt lastmod-mönster. Du kan också justera logiken ”Review Submission History” om du vill ha ett 3-dagarsfönster i stället för 7 dagar, eller om du vill skicka in igen endast när lastmod har ändrats sedan senaste inskick.
Oftast handlar det om behörigheter. Din servicekonto-e-post måste läggas till på exakt rätt GSC-egendom som Ägare, och egendoms-URL:en i arbetsflödet måste matcha din egendomstyp (URL-prefix-egendomar kräver ofta ett avslutande snedstreck). Bekräfta också att OAuth-scopes inkluderar både Indexing-scope och webmasters read-only-scope. Om det fortfarande misslyckas, generera om JSON-nyckeln och klistra in client_email och private_key på nytt i dina n8n-autentiseringsuppgifter.
Det beror mer på Googles kvoter än på n8n. n8n Clouds körningsgränser varierar per plan, och om du self-hostar finns ingen fast körningsgräns. I praktiken kör de flesta team detta med en liten batchstorlek och låter det jobba jämnt över tid, vilket gör att du följer reglerna och undviker plötsliga kvottoppar.
Ofta, ja, eftersom det här arbetsflödet behöver förgrening, filtrering, batching och lite tillstånd (inskickningshistoriken på 7 dagar). Zapier och Make kan göra delar av det, men du kommer ofta att slåss med plattformen när du lägger till ”skicka inte in igen”, hantering av sitemap-index och hastighetsbegränsning. n8n ger dig också self-host-spåret, vilket är en stor grej om du kör schemalagda kontroller ofta. Med det sagt, om du bara behöver ett enkelt flöde ”ny URL → skicka in en gång” kan Zapier gå snabbare att klicka ihop. Prata med en automationsexpert om du vill ha hjälp att välja.
När det här väl rullar blir indexering bakgrundsunderhåll i stället för ett återkommande mentalt gnag. Sätt upp det, lita på kontrollerna och lägg tiden du får tillbaka på arbete som faktiskt ger klick.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.