SEO-granskningar faller isär i de tråkiga delarna. Någon kopierar in mätvärden i ett dokument, skärmdumpar ett diagram, glömmer att uppdatera en rubrik och skickar ändå iväg PDF:en i all hast.
Den här automatiseringen för DataForSEO Gmail audit slår hårdast mot byråoperatörer, men frilansande SEO-konsulter och marknadsförare inhouse känner av den också. Du lägger ungefär 2 timmar per rapport på formatering och kontroller av typen ”fick vi med allt?” i stället för faktisk analys.
Det här flödet gör om en URL till en strukturerad granskning, konverterar den till en proffsig PDF och mejlar den sedan via Gmail. Du får se vad det gör, vad du behöver och var team vanligtvis går snett.
Så fungerar den här automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: DataForSEO till Gmail, SEO-granskningar som pdf
flowchart LR
subgraph sg0["Structured Output Pa Flow"]
direction LR
n0["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook1"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Website SEO Data1"]
n2@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Wait5", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "PDF_First_Page", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "PDF_Last_Page1", pos: "b", h: 48 }
n6@{ icon: "mdi:web", form: "rounded", label: "PDFco Api", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get_Pdf_File"]
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "Report_Generator_Agent", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Crawler Request"]
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Sample_Code", pos: "b", h: 48 }
n13@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n20@{ icon: "mdi:cog", form: "rounded", label: "Execute Workflow", pos: "b", h: 48 }
n24@{ icon: "mdi:robot", form: "rounded", label: "Business Research", pos: "b", h: 48 }
n25@{ icon: "mdi:robot", form: "rounded", label: "Product Strategy", pos: "b", h: 48 }
n26@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model1", pos: "b", h: 48 }
n27@{ icon: "mdi:swap-vertical", form: "rounded", label: "SET_USER_INPUT", pos: "b", h: 48 }
n28@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set_Prompt", pos: "b", h: 48 }
n3 --> n1
n0 --> n27
n2 --> n4
n6 --> n8
n28 --> n24
n12 --> n10
n8 --> n9
n4 --> n5
n5 --> n12
n27 --> n20
n11 --> n3
n20 --> n28
n25 --> n11
n24 --> n25
n1 --> n2
n13 -.-> n10
n26 -.-> n25
n10 --> n6
n7 -.-> n10
end
subgraph sg1["When Executed by Another Workflow Flow"]
direction LR
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If https?", pos: "b", h: 48 }
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/markdown.dark.svg' width='40' height='40' /></div><br/>Markdown1"]
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields29", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields30", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields31", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields34", pos: "b", h: 48 }
n21["<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/>DATA FOR SEO"]
n22["<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/>DATA FOR SEO1"]
n23@{ icon: "mdi:play-circle", form: "rounded", label: "When Executed by Another Wor..", pos: "b", h: 48 }
n14 --> n16
n14 --> n17
n15 --> n18
n15 --> n19
n21 --> n22
n22 --> n15
n22 --> n19
n16 --> n21
n17 --> n21
n23 --> n14
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 n23 trigger
class n7,n10,n24,n25 ai
class n13,n26 aiModel
class n14 decision
class n0,n1,n6,n8,n11,n21,n22 api
classDef customIcon fill:none,stroke:none
class n0,n1,n8,n11,n15,n21,n22 customIcon
Utmaningen: att göra om SEO-data till en rapport som kunder faktiskt läser
Du kan hämta tekniska SEO-mätvärden från ett dussin olika källor. Huvudvärken är att få det till något konsekvent, kundklart och snabbt. En person exporterar DataForSEO-resultat, en annan samlar on-page-noteringar, en tredje försöker ”göra det snyggt” i ett Google-dokument. Sedan upptäcker du att URL:en saknade https, crawl:en blev inte klar och nu kör du om delar av granskningen medan kunden frågar om den kommer i dag. Det är inte bara tid. Det är mental belastning, kontextbyten och små kopieringsfel som tyst urholkar förtroendet.
Det blir snabbt mycket. Här är var det brukar fallera.
- Data klistras mellan verktyg, och något hinner alltid bli inaktuellt innan PDF:en skickas.
- Rapportstrukturen varierar beroende på vem som byggde den senast, vilket gör att kunder inte kan jämföra månad för månad.
- När du granskar flera prospekt bränner den återkommande rutinen ”samla in, formatera, exportera, bifoga” en hel eftermiddag.
- Manuella PDF:er bjuder in till små misstag (fel domän, gamla siffror, saknad bilaga), och det är de kunderna kommer ihåg.
Lösningen: generera automatiskt varumärkesprofilerade SEO-gransknings-PDF:er från en URL
Det här flödet startar med en enkel inmatning (företagsnamn, e-postmottagare, webbplats-URL) som skickas in i n8n via en webhook. Det validerar URL:en, hämtar webbplatsens råa HTML och konverterar innehållet till korrekt formaterad markdown så att AI kan resonera över det utan att fastna i kod. Därefter kör det ett lager för affärs- och SEO-analys: AI sammanfattar vad företaget gör och föreslår strategiska angreppssätt, medan DataForSEO-endpoints hämtar de tekniska mätvärdena, backlink-signaler, sökordsvisibility och crawl-liknande siddata. Till sist byggs allt ihop till en strukturerad HTML-rapport med omslags- och avslutningssidor, konverteras till en PDF via PDFco, laddas ned och skickas via Gmail till rätt mottagare. Ingen kopiering. Ingen formateringsstress. Och ja, det känns fortfarande som ”din” rapport när du varumärkesanpassar omslagssidorna och promptarna.
Flödet triggas av en inkommande webhook och går sedan vidare genom innehållsextraktion och analys. DataForSEO står för de mätbara SEO-fakta, AI står för narrativet och rekommendationerna, och PDFco gör det till en leverans du kan skicka direkt via Gmail.
Vad som förändras: före vs. efter
| Det här tar bort | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att du gör 5 granskningar i veckan för prospekt. Manuellt tar det oftast runt 2 timmar styck när du räknar in att hämta data, skriva insikter, putsa dokumentet, exportera och sedan mejla, alltså cirka 10 timmar per vecka. Med det här flödet lägger du kanske 5 minuter på att skicka in URL och mottagare, väntar på bearbetning och PDF-generering, och gör sedan en 15-minuters genomgång innan du skickar. Det är ungefär 7 timmar tillbaka en vanlig vecka, och rapporten ser fortfarande konsekvent ut varje gång.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- DataForSEO för SEO-mätvärden och crawl-liknande data.
- Gmail för att mejla färdiga PDF:er automatiskt.
- PDFco API-nyckel (hämtas i din PDFco-dashboard).
Kunskapsnivå: Mellan. Du kopplar några konton, klistrar in API-nycklar och justerar promptar eller mallar utan att skriva kod.
Behöver du hjälp att implementera detta? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Flödet steg för steg
Webhook-anrop med kunduppgifter. Du skickar företagsnamn, webbplats-URL och mottagarens e-post till Incoming Webhook Trigger, och n8n fångar upp och normaliserar fälten för resten av körningen.
Extraktion och upprensning av webbplatsinnehåll. Flödet kontrollerar URL-schemat (http vs https), hämtar rå HTML och konverterar den till markdown så att efterföljande AI-steg kan läsa den tydligt.
Analys med AI + DataForSEO. AI skapar affärskontext och riktning för innehållsstrategin, och DataForSEO HTTP-anrop hämtar de hårda SEO-signalerna (siddata, hälsoliknande indikatorer, ranking- och backlink-typinformation beroende på din konfiguration). Ett merge/aggregate-steg kombinerar allt till en enda payload som blir er ”single source of truth”.
Rapportbygge, PDF-skapande och leverans via Gmail. Flödet bygger ett varumärkesanpassat omslag och en avslutningssida, lägger in allt i en HTML-rapportmall, konverterar HTML till PDF via PDFco, laddar ned filen och skickar sedan PDF:en som e-postbilaga via Gmail.
Du kan enkelt ändra rapportavsnitten så att de matchar dina tjänster, så att PDF:en känns som din leverans och inte en generisk export. Se hela implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-guide för implementation
Steg 1: konfigurera webhook-triggern
Det här arbetsflödet startar när en POST-begäran träffar den inkommande webhooken och fångar upp lead-data för granskningen.
- Lägg till noden Incoming Webhook Trigger och ställ in HTTP Method till
POST. - Ställ in Path till
27ea5610-f693-4370-a0c9-8ceb5253a49doch kopiera produktions-URL:en för ert formulär eller er API-klient. - I Capture User Details mappar ni fälten med uttryck: Full_Name →
{{ $json.body.fullName }}, Email →{{ $json.body.email }}, Phone_Number →{{ $json.body.phoneNumber }}, Compnay_Name →{{ $json.body.companyName }}, Website_URL →{{ $json.body.companyWebsite }}. - Koppla Incoming Webhook Trigger → Capture User Details för att säkerställa att data flödar in i arbetsflödet.
fullName, email, phoneNumber, companyName, companyWebsite) för att undvika tomma fält.Steg 2: koppla in sub-workflow för URL-normalisering
Sub-workflow normaliserar webbplatsens URL och hämtar initial HTML för forskningskontext.
- Öppna Run Sub-Workflow (Configure Required) och välj arbetsflödet i Workflow (fältet är för närvarande tomt).
- Ställ in Workflow Inputs → query till
{{ $json.Website_URL }}så att sub-workflow tar emot sajtens URL. - I sub-workflow ska Subworkflow Trigger gå vidare till Check URL Scheme, som routar till Map Site URL eller Prefix HTTPS URL beroende på om
{{ $json.query }}innehållerhttp. - Bekräfta att Map Site URL sätter site till
{{ $json.query }}och att Prefix HTTPS URL sätter site tillhttps://{{ $json.query }}. - Verifiera att Instant SEO Fetch postar till
https://api.dataforseo.com/v3/on_page/instant_pagesmed JSON-body[{"url":"{{ $json.site }}","enable_javascript":true,"store_raw_html":true,"enable_browser_rendering":true}].
Steg 3: sätt upp AI för research och innehållsstrategi
Den här delen bygger research-prompten, kör AI-baserad analys och genererar en strategisk innehållsplan.
- I Compose Research Prompt behåller ni userprompt-uttrycket så att det inkluderar
{{ $('Capture User Details').item.json.Compnay_Name }},{{ $('Capture User Details').item.json.Website_URL }}och{{ $json.Response }}. - Konfigurera Business Intelligence Search att använda modellen
gpt-4o-search-previewoch skicka prompten med{{ $json.userprompt }}. - Credentials krävs: Koppla era openAiApi-credentials i Business Intelligence Search.
- I Content Strategy Planner behåller ni den strategiska långforms-prompten i text och säkerställer att den tar emot
{{ $json.message.content }}från Business Intelligence Search. - Bekräfta att Secondary LLM Router är kopplad som språkmodell för Content Strategy Planner och ställ in dess model till
google/gemini-2.5-flash.
Steg 4: konfigurera SEO-crawl och dataaggregering
Arbetsflödet triggar en crawl, väntar in resultat och aggregerar siddata till rapporten.
- I SEO Crawl Request ställer ni in URL till
https://api.dataforseo.com/v3/on_page/task_postoch behåller JSON-body med{{ $('Capture User Details').item.json.Website_URL }}. - Credentials krävs: Koppla era httpBasicAuth-credentials i SEO Crawl Request.
- Ställ in Crawl Delay Timer till Amount
3och Unitminutesför att ge DataForSEO tid att slutföra crawlen. - I Retrieve SEO Pages Data ställer ni in URL till
https://api.dataforseo.com/v3/on_page/pagesoch JSON Body till[{"id":"{{ $('SEO Crawl Request').item.json.tasks[0].id }}"}]. - Credentials krävs: Koppla era httpBasicAuth-credentials i Retrieve SEO Pages Data.
- Använd Combine Audit Data med Aggregate satt till
aggregateAllItemDataoch Destination Field Name satt tilloutput_data.
Steg 5: bygg PDF-mallarna och AI-granskningsrapporten
Det här steget sätter ihop mallarna för omslag/avslut, genererar fullständig gransknings-HTML och validerar utdatastrukturen.
- I Build PDF Cover behåller ni PDF_First_Page-HTML-mallen (den långa HTML-strängen som är tilldelad i noden).
- I Build PDF Closing behåller ni PDF_Last_Page-HTML-mallen (CTA-sidans HTML).
- I Report Template Sample behåller ni Sample_Code som den fullständiga HTML-referensmallen.
- Konfigurera Audit Report Generator med de kombinerade indata:
{{ $('Business Intelligence Search').item.json.message.content }},{{ $('Content Strategy Planner').item.json.text }},{{ JSON.stringify($('Combine Audit Data').item.json.output_data) }},{{ $now }}och{{ $json.Sample_Code }}. - Säkerställ att Primary LLM Router är kopplad som språkmodell för Audit Report Generator med model satt till
anthropic/claude-opus-4.1. - I Parse Structured Output behåller ni JSON-schemat som validerar
report_type,formatochcontent. Den här parsern är kopplad till Audit Report Generator.
Steg 6: konvertera granskningen till PDF och mejla rapporten
De sista stegen konverterar HTML till PDF, laddar ner filen och mejlar den till användaren.
- I Convert HTML to PDF ställer ni in Operation till
URL/HTML to PDF, Convert Type tillhtmlToPDFoch HTML till{{ $json.output.content }}. - Credentials krävs: Koppla era pdfcoApi-credentials i Convert HTML to PDF.
- I Download PDF File ställer ni in URL till
{{ $json.url }}så att PDF-filen laddas ner från PDF.co. - I Send Email Report ställer ni in Send To till
{{ $('Capture User Details').item.json.Email }}och behåller HTML-meddelandemallen enligt den som är angiven. - Credentials krävs: Koppla era gmailOAuth2-credentials i Send Email Report.
Steg 7: testa och aktivera ert arbetsflöde
Validera rapportgenereringen från start till mål innan ni slår på arbetsflödet.
- Klicka på Execute Workflow och skicka en test-POST-begäran till Incoming Webhook Trigger-URL:en med exempelvärden i JSON-body-fälten.
- Bekräfta att Capture User Details ger ifyllda värden och att Run Sub-Workflow (Configure Required) returnerar ett svar till Compose Research Prompt.
- Verifiera att crawl-flödet lyckas: SEO Crawl Request → Crawl Delay Timer → Retrieve SEO Pages Data → Combine Audit Data.
- Kontrollera att Audit Report Generator returnerar giltig strukturerad utdata som passerar Parse Structured Output och att Convert HTML to PDF genererar en PDF-URL.
- Bekräfta att Send Email Report skickar ett mejl med PDF:en bifogad till testadressen.
- När ni är nöjda, slå om arbetsflödet till Active för produktionsanvändning.
Se upp för
- Gmail-inloggningar kan löpa ut eller kräva specifika behörigheter. Om saker slutar fungera, börja med att kontrollera den anslutna kontostatusen i Gmail-nodens n8n Credentials.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardpromptar i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera utdata i all evighet.
Vanliga frågor
Cirka 30 minuter om dina API-nycklar är klara.
Ja. Du kopplar främst konton, klistrar in API-nycklar och testar med en webbplats innan du rullar ut det.
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 in DataForSEO-förbrukning och PDFco API-kostnader per genererad PDF.
Två alternativ: n8n Cloud (hanterad, enklaste setup) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och klarar n8n bra. Egen hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Du kan anpassa den på några praktiska ställen. Uppdatera “Compose Research Prompt” och stegen i LLM-kedjan (som Business Intelligence Search och Audit Report Generator) för att fokusera på lokal SEO, e-handel eller B2B SaaS. Om du vill att PDF:en ska matcha dina tjänstenivåer, redigera “Report Template Sample”-HTML så att avsnitt visas eller döljs baserat på indata. Varumärkesprofileringen är också enkel: byt innehållet i omslag/avslut i “Build PDF Cover” och “Build PDF Closing”, eller ladda upp egna white label-sidor.
Oftast beror det på en utgången inloggning eller fel endpoint-konfiguration i HTTP Request-noden. Dubbelkolla dina DataForSEO-autentiseringsuppgifter och bekräfta sedan att request-body matchar API:ets förväntade fält. Om det bara fallerar på vissa domäner kan du slå i rate limits eller få blockerade svar, så att glesa ut körningar (Crawl Delay Timer hjälper) kan stabilisera. Se också till att kontrollen av URL-schemat mappar webbplatsen korrekt innan crawl-anropen triggas.
Det beror mer på dina API-kvoter än på n8n. I n8n Cloud kan du köra många granskningar per månad på betalda planer, och om du hostar själv finns ingen körningsgräns utöver din server. I praktiken kör de flesta team granskningar en och en eller i små batchar eftersom crawls, LLM-bearbetning och PDF-generering tar tid. Om du planerar att processa ett Google Sheet med prospekt, börja med 10 URL:er och skala sedan när du känner dig trygg med rate limits och kostnader.
Ofta, ja, eftersom detta inte är en enkel ”skicka A till B”-zap. Du kombinerar webbhämtningar, villkorlig URL-hantering, strukturerade AI-utdata, merges/aggregeringar och ett steg för PDF-generering, och n8n hanterar den typen av grenlogik utan att bli klumpigt eller dyrt. Egen hosting är också en stor fördel om du vill ha obegränsade körningar och mer kontroll över data. Zapier eller Make kan fortfarande fungera om du bara vill mejla en enkel export, men när du vill ha en riktig narrativ rapport med varumärke är n8n oftast ett renare val. Prata med en automatiseringsexpert om du vill ha hjälp att välja.
När detta väl rullar slutar granskningar att vara ett produktionsteam-jobb och blir en tankeverksamhet igen. Sätt upp det, skicka mer enhetliga PDF:er snabbare och håll teamet fokuserat på beslut i stället för formatering.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.