Du kan det här. En “snabb” innehållsgranskning slutar med fem öppna flikar, exporter som inte matchar, och en rapport du skriver om vid midnatt för att siffrorna känns fel.
Det här är smärtan SEO-konsulter hanterar hela tiden. Det drabbar också byråansvariga som försöker standardisera leveranser, och in-house-marknadsförare som behöver en pålitlig GSC-auditautomation utan att bygga ett kalkylbladsmonster.
Det här arbetsflödet kombinerar en DataForSEO-crawl med Google Search Console-mått och genererar sedan en varumärkesanpassad HTML-audit som du kan skicka till en kund. Du ser vad det automatiserar, vilka resultat du kan förvänta dig och vad du behöver för att köra det.
Så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: DataForSEO + Search Console: kundklara SEO-audits
flowchart LR
subgraph sg0["When clicking ‘Start’ Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Fields", pos: "b", h: 48 }
n1@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Start’", 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/>Check Task Status"]
n3["<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/>Create Task"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Wait", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get RAW Audit Data"]
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/>Extract URLs"]
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Query GSC API"]
n10@{ icon: "mdi:cog", form: "rounded", label: "Wait1", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map GSC Data to URL", pos: "b", h: 48 }
n12["<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/>Merge GSC Data with RAW Data"]
n13["<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/>Build Report Structure"]
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/code.svg' width='40' height='40' /></div><br/>Generate HTML Report"]
n15["<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/>Extract 404 & 301"]
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Map URLs Data"]
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/>Get Source URLs Data"]
n19@{ icon: "mdi:cog", form: "rounded", label: "Download Report", pos: "b", h: 48 }
n4 --> n6
n4 --> n5
n5 --> n2
n10 --> n11
n0 --> n3
n3 --> n2
n7 --> n8
n17 --> n16
n9 --> n10
n8 --> n12
n8 --> n9
n16 --> n13
n16 --> n18
n2 --> n4
n15 --> n16
n6 --> n7
n11 --> n8
n14 --> n19
n18 --> n17
n13 --> n14
n1 --> n0
n12 --> n15
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 n1 trigger
class n4 decision
class n2,n3,n6,n9,n18 api
class n7,n12,n13,n14,n15,n17 code
classDef customIcon fill:none,stroke:none
class n2,n3,n6,n7,n9,n12,n13,n14,n15,n17,n18 customIcon
Problemet: SEO-audits tar för lång tid att göra om till kundklara rapporter
En innehållsgranskning ska skapa tydlighet. I stället skapar den ofta mer jobb. Du crawlar en webbplats i ett verktyg, hämtar prestanda från Google Search Console i ett annat och lägger sedan timmar på att få URL:er att matcha, normalisera data och förklara vad som spelar roll på ett sätt som kunden faktiskt förstår. Och om du gör det här varje månad blir grovjobbet en permanent skatt i kalendern. Ännu värre: manuella audits driver iväg. Du ändrar tröskelvärden, hoppar över kontroller när det är stressigt, och “metoden” beror på vem som gjorde auditen den veckan.
Det går fort att det blir mycket. Här brukar det oftast börja fallera.
- Att hämta crawldata och GSC-mått separat leder till URL:er som inte matchar och förvirrande slutsatser.
- Manuell problemidentifiering (tunt innehåll, duplicerad metadata, orphan-sidor) tar lång tid, och du slutar med att ta stickprov i stället för att granska allt.
- Att göra fynden till en snygg, varumärkesanpassad leverans tar ofta lika lång tid som själva analysen.
- Att skala förbi några hundra sidor blir ett slit, så större sajter får “good enough”-audits.
Lösningen: en automatiserad crawl + GSC-sammanslagning, levererad som en varumärkesanpassad HTML-audit
Det här n8n-arbetsflödet kör en crawl i DataForSEO, väntar tills uppgiften är klar och hämtar tillbaka rå auditdata in i din automation. Därifrån plockar det ut de URL:er du bryr dig om (till exempel sidor med status 200) och kör dem i batchar för att hämta klick och exponeringar från Google Search Console. När båda datamängderna finns på samma ställe slår arbetsflödet ihop crawl-fynd med prestandasignaler, bygger en strukturerad rapportmodell och renderar en varumärkesanpassad HTML-rapport med sammanfattningar, uppdelning av problem och prioriterade rekommendationer. Till sist exporteras rapporten som en nedladdningsbar HTML-fil, så att du kan dela den direkt eller lägga den i din leveransprocess.
Arbetsflödet börjar med att du anger domänen, crawlgränsen (upp till 1 000 sidor) och varumärkesfält. DataForSEO kör crawlen medan n8n regelbundet kontrollerar status. När den är klar berikar flödet crawlen med GSC-data och skapar sedan en kundvänlig HTML-rapport som inte behöver “en sista formateringsrunda”.
Det du får: automation kontra resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du kör en månatlig audit för en kundsajt med cirka 500 indexerbara sidor. Manuellt kanske du lägger runt 2 timmar på att hämta en crawl-export, ytterligare en timme på att rensa URL-format och cirka 2 timmar till på att hämta GSC-data, slå ihop den och paketera allt till något kundklart. Med det här arbetsflödet anger du domän och varumärke en gång, startar det och väntar cirka 20 minuter på att crawl/rapportkörningen blir klar. Resultatet är en varumärkesanpassad HTML-audit du kan skicka samma dag, utan att bygga om rapporten varje gång.
Det du behöver
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- DataForSEO för webbplats-crawling och auditdata.
- Google Search Console för att hämta klick och exponeringar per URL.
- API-uppgifter för DataForSEO (hämta dem från sidan DataForSEO API Access).
Svårighetsnivå: Medel. Du kopplar API-uppgifter, justerar några fält och kör batchar på ett säkert sätt.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Du startar arbetsflödet och anger indata. I steget “Assign Input Values” väljer du måldomän, max antal crawlade sidor (upp till 1 000), preferens för JavaScript-rendering och dina varumärkesdetaljer som logotyp-URL och färger.
Arbetsflödet kör crawlen och följer upp status. n8n skapar DataForSEO-uppgiften och loopar sedan med en kort väntan och en statuskontroll tills crawlen är klar. Ingen barnpassning.
Det berikar crawl-URL:er med prestanda från Google Search Console. URL:er tolkas, hanteras i batchar och varje batch får GSC-klick och exponeringar via en HTTP-förfrågan till Search Console API. Om ett API-anrop behöver en stund pausar arbetsflödet och försöker igen.
Din audit blir en varumärkesanpassad HTML-rapport. Arbetsflödet slår ihop datamängder, identifierar problemkategorier (statusproblem, metadata, innehållskvalitet, internlänkning, prestanda) och renderar sedan en HTML-rapport och exporterar den som en nedladdningsbar fil.
Du kan enkelt ändra crawlgränser och tröskelvärden för problem utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den manuella triggern
Starta arbetsflödet med den manuella triggern så att ni kan köra granskningen vid behov under uppsättning och testning.
- Lägg till noden Manual Launch Trigger som startpunkt.
- Behåll standardinställningarna (inga parametrar krävs) för att möjliggöra manuell körning från editorn.
Steg 2: Anslut datainmatningar och varumärkesprofilering
Definiera crawl-målet, företagsuppgifter och varumärkesprofilering som används genom hela granskningen och HTML-rapporten.
- Öppna Assign Input Values och ställ in dfs_domain till
example.com. - Ställ in dfs_max_crawl_pages till
1000och dfs_enable_javascript tillfalse. - Fyll i varumärkesfälten: company_name
Example Company, company_websitehttps://example.com, company_logo_urlhttps://example.com/logo.png. - Ställ in brand_primary_color till
#252946och brand_secondary_color till#0fd393. - Ställ in gsc_property_type till
domainför att använda Search Console-data på domännivå.
url-prefix om ni vill ha egendomsspecifika mätvärden i stället för data för hela domänen.Steg 3: Konfigurera DataForSEO-crawl och polling-loop
Dessa noder skickar in en crawl-uppgift, kontrollerar status och hämtar rå granskingsdata när crawlen är klar.
- I Initiate Crawl Task, behåll URL som
https://api.dataforseo.com/v3/on_page/task_postoch ställ in JSON Body till det angivna uttrycket:=[{"target":"{{ $json.dfs_domain }}","max_crawl_pages": {{ $json.dfs_max_crawl_pages }},"load_resources": false,"enable_javascript": {{ $json.dfs_enable_javascript }},"custom_js":"meta = {}; meta.url = document.URL; meta;","tag":"{{ $json.dfs_domain + Math.floor(10000 + Math.random() * 90000) }}"}]. - Autentisering krävs: Anslut era httpBasicAuth-uppgifter i Initiate Crawl Task, Verify Task Progress, Retrieve Raw Audit Data och Retrieve Link Sources.
- I Verify Task Progress, ställ in URL till
=https://api.dataforseo.com/v3/on_page/summary/{{ $json.tasks[0].id }}och behåll headern Content-Type somapplication/json. - I Branch Completion Check, ställ in villkoret så att det kontrollerar att
{{ $json.tasks[0].result[0].crawl_progress }}är lika medfinished. - Ställ in Pause Interval till att vänta 1 minutes för att polla status om crawlen inte är klar.
- Konfigurera Retrieve Raw Audit Data med URL
https://api.dataforseo.com/v3/on_page/pagesoch JSON Body=[{"id":"{{ $json.tasks[0].id }}","limit":"1000"}].
Steg 4: Berika URL:er med Search Console-mätvärden
Den här delen extraherar URL:er med status 200, batchar dem och hämtar 90-dagars Search Console-mätvärden för varje sida.
- I Parse Page URLs, behåll koden som filtrerar fram endast
status_code === 200och som output:ar{ url: page.url }. - Ställ in Batch Iterate URLs till batchSize
100för skalbar bearbetning. - I Fetch GSC Metrics, behåll det dynamiska URL-uttrycket som växlar mellan domain- och URL-prefix-egenskaper:
{{ $('Assign Input Values').first().json.gsc_property_type === 'domain' ? 'https://searchconsole.googleapis.com/webmasters/v3/sites/' + 'sc-domain:' + $node["Batch Iterate URLs"].json.url.replace(/https?:\/\/(www\.)?([^\/]+).*/, '$2') + '/searchAnalytics/query' : 'https://searchconsole.googleapis.com/webmasters/v3/sites/' + encodeURIComponent($node["Batch Iterate URLs"].json.url.replace(/(https?:\/\/(?:www\.)?[^\/]+).*/, '$1')) + '/searchAnalytics/query' }}. - Behåll Body-uttrycket som sätter ett 90-dagarsintervall och filtrerar på sidans URL:
{"startDate":"{{ new Date(new Date().setDate(new Date().getDate() - 90)).toISOString().split('T')[0] }}","endDate":"{{ new Date().toISOString().split('T')[0] }}","dimensionFilterGroups":[{"filters":[{"dimension":"page","operator":"equals","expression":"{{ $node['Batch Iterate URLs'].json.url }}"}]}],"aggregationType":"auto","rowLimit":100}. - Autentisering krävs: Anslut era googleOAuth2Api-uppgifter i Fetch GSC Metrics.
- Ställ in Pause Retry till att vänta 1 minutes innan resultaten mappas om Google API:et stryper.
- I Map GSC Metrics to URL, ställ in URL till
{{ $('Batch Iterate URLs').item.json.url }}, Clicks till{{ $('Fetch GSC Metrics').item.json.rows[0].clicks }}och Impressions till{{ $('Fetch GSC Metrics').item.json.rows[0].impressions }}. - Batch Iterate URLs skickar output både till Combine GSC with Audit och Fetch GSC Metrics parallellt för att berika granskningen medan batch-loopen körs.
Steg 5: Bygg rapportmodellen och HTML-output
Dessa noder slår ihop granskningsdata med GSC-mätvärden, samlar in länkkällor för 404/301-sidor och renderar den varumärkesanpassade HTML-rapporten.
- I Combine GSC with Audit, behåll JavaScript-koden som slår ihop GSC-mätvärden i varje sidas
googleSearchConsoleData. - Använd Filter 404 and 301 för att isolera fel- och omdirigerings-URL:er från Retrieve Raw Audit Data.
- Batch Link Sources skickar output både till Assemble Report Model och Retrieve Link Sources parallellt för att berika 404/301-sidor med källänkar.
- I Retrieve Link Sources, behåll URL som
https://api.dataforseo.com/v3/on_page/linksoch JSON Body som=[{"id":"{{ $('Retrieve Raw Audit Data').first().json.tasks[0].id }}","page_to":"{{ $json.url }}"}]. - I Format Link Source Data, behåll mappningen av
link_from,typeochtexttill en strukturerad käll-array. - I Assemble Report Model, behåll den längre JavaScript-koden som kategoriserar problem och bygger output för
summary,issuesochpages. - I Render HTML Report, behåll HTML-mallogiken som refererar till Assign Input Values och Assemble Report Model.
- I Export HTML File, ställ in Operation till
toText, Source Property tillhtmloch Binary Property Name tillcontent audit report.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera datainsamlingen och verifiera att HTML-rapporten genereras korrekt.
- Klicka på Execute Workflow med start från Manual Launch Trigger för att köra granskningen från början till slut.
- Bekräfta att Retrieve Raw Audit Data returnerar crawl-objekt och att Fetch GSC Metrics returnerar rader för varje URL.
- Verifiera att Render HTML Report output:ar en fullständig HTML-sträng och att Export HTML File genererar en nedladdningsbar fil.
- När resultaten ser korrekta ut, växla arbetsflödet till Active för att använda det i produktionskörningar.
Vanliga fallgropar
- DataForSEO-uppgifter kan löpa ut eller kräva specifika behörigheter. Om något skapar fel, kontrollera först din DataForSEO API-åtkomststatus och att n8n-uppgifterna är tilldelade på alla crawl-relaterade HTTP Request-noder.
- Om du använder Wait-noder eller extern bearbetning varierar timing. Öka väntetiden om efterföljande noder fallerar på tomma svar medan crawl-uppgiften fortfarande håller på att slutföras.
- Standardprompter för AI kan bli generiska. Lägg in din audit-ton och rekommendationsstil tidigt i AI Agent/OpenAI-stegen, annars kommer du att redigera output i all evighet.
Vanliga frågor
Cirka 30 minuter om du redan har DataForSEO- och Search Console-åtkomst klar.
Nej. Du kopplar uppgifter och justerar några fält i n8n. Arbetsflödets logik är redan byggd.
Ja. n8n har ett gratis alternativ för egen drift 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 in DataForSEO API-användning (de inkluderar en liten testkredit) och eventuella Google API-gränser på ditt konto.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Uppdatera varumärkesfält (företagsnamn, logotyp-URL, primär/sekundär färg) i steget “Assign Input Values” och justera sedan tröskelvärden i logiken som bygger rapporten, till exempel ordantal för tunt innehåll (just nu 1500), markering för klickdjup (just nu djupare än 4) och läsbarhet (just nu under 55). Om du vill ha en annan policy för titel/beskrivning, ändra även kontrollerna för titel- och beskrivningslängd. Många team lägger också till ett extra leveranssteg efter outputen “Export HTML File” för att mejla rapporten eller ladda upp den till lagring.
Oftast beror det på felaktiga Basic Auth-uppgifter eller att uppgiften inte är tilldelad till varje DataForSEO HTTP Request-nod. Dubbelkolla noderna “Initiate Crawl Task” och “Retrieve Raw Audit Data” först och bekräfta sedan att din DataForSEO API-åtkomst är aktiv. Om det fortfarande misslyckas kan det vara rate limiting vid större körningar, så att sänka batchtrycket och förlänga väntetider kan hjälpa.
Upp till 1 000 crawlade sidor per körning, och den batchar GSC-uppslagen så att berikningen håller sig hanterbar.
Ofta, ja. Det här arbetsflödet bygger på looping, batching, att vänta på långkörande crawl-uppgifter och att slå ihop datamängder på ett tillförlitligt sätt, vilket är där n8n brukar vara mer flexibelt (och billigare att köra i volym om du kör egen drift). Zapier eller Make kan fungera för enkla “skicka mig en rapport”-flöden, men den här typen av auditbygge blir ofta klumpigt när du lägger till batching och retries. Dessutom är det enklare att generera en full varumärkesanpassad HTML-rapport när du kontrollerar logiken från början till slut. Om du är osäker, prata med en automationsexpert så får du en rak rekommendation baserad på din volym och dina leveransbehov.
Sätt upp det en gång så slutar dina audits vara en återkommande brandkårsutryckning. Arbetsflödet tar hand om det repetitiva jobbet så att du kan fokusera på beslut, inte datahantering.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.