Att skrapa en sajt “snabbt” brukar sluta i kaos. En trasig layout, en saknad sida, och plötsligt är ditt kalkylark fullt av luckor du inte litar på.
Oavsett om du är en marknadschef som vill följa konkurrentpriser, en grundare som validerar en marknad, eller en ops-person som bygger interna rapporter, tar den här Zyte Sheets-automationen dig till användbar data utan att du behöver sitta barnvakt åt skrapor.
Du får en felfri CSV exporterad till Google Sheets, med ett arbetsflöde som hanterar paginering, omförsök och aggregering så att du kan fatta beslut snabbare.
Så fungerar den här automatiseringen
Här är hela arbetsflödet som du kommer att sätta upp:
n8n Workflow Template: Zyte till Google Sheets – rensad webbdata direkt
flowchart LR
subgraph sg0["Main form submission 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/form.svg' width='40' height='40' /></div><br/>Main form submission"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Product Extraction Goal", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Format Output Single || List ", pos: "b", h: 48 }
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/>HTTP Node: List Get Current .."]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Node: Current Page Get .."]
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Current Page Split Items", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Current Page Item Loop", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Node: Current Page Get .."]
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Details-All Init State", 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/merge.svg' width='40' height='40' /></div><br/>Details-All Merge Pages"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Node: Details-All Crawl.."]
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/>Details-All URL Collector"]
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Details-All More Pages?", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Details-All Set Next URL", 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/code.svg' width='40' height='40' /></div><br/>Details-All Unpack List (Pha.."]
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Details-All Batch Processor", 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/>HTTP Node: Details-All Get D.."]
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/>Details-All Accumulator"]
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/code.svg' width='40' height='40' /></div><br/>Details-All Final Output"]
n19["<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/>HTTP Node: Single Item Get D.."]
n20@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route by Category", 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/code.svg' width='40' height='40' /></div><br/>Zyte Config Generator"]
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/>List-All Get Item List"]
n23["<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/>List-All List Accumulator"]
n24@{ icon: "mdi:swap-vertical", form: "rounded", label: "List-All Init State", pos: "b", h: 48 }
n25["<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/merge.svg' width='40' height='40' /></div><br/>List-All Merge Pages"]
n26["<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/>HTTP Node: List-All Get Page.."]
n27["<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/>List-All Page Controller"]
n28@{ icon: "mdi:swap-horizontal", form: "rounded", label: "List-All Check Next Page", pos: "b", h: 48 }
n29["<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/>List-All Final Output"]
n30@{ icon: "mdi:swap-vertical", form: "rounded", label: "List-All Set Next URL", pos: "b", h: 48 }
n31["<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/>HTTP BrowserHtml"]
n32["<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/>HTTP Node: SERP Extraction"]
n33["<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/>HTTP Response Body"]
n34["<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/>HTTP Node: Capture Page Scre.."]
n35["<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/>HTTP Node: Capture Network API"]
n36@{ icon: "mdi:cog", form: "rounded", label: "Convert to File ( Image )", pos: "b", h: 48 }
n37@{ icon: "mdi:swap-vertical", form: "rounded", label: "Custom Output", pos: "b", h: 48 }
n38["<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/>HTTP Node: Infinite Scroll"]
n39@{ icon: "mdi:swap-vertical", form: "rounded", label: "serp response", pos: "b", h: 48 }
n40@{ icon: "mdi:cog", form: "rounded", label: "Extracted AI Output", pos: "b", h: 48 }
n41@{ icon: "mdi:swap-horizontal", form: "rounded", label: "General Extract Goal", pos: "b", h: 48 }
n42["<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/form.svg' width='40' height='40' /></div><br/>General Extraction Goal Form"]
n43["<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/form.svg' width='40' height='40' /></div><br/>AI Extraction Goal Form"]
n31 --> n37
n20 --> n43
n20 --> n32
n20 --> n42
n33 --> n37
n41 --> n31
n41 --> n33
n41 --> n35
n41 --> n38
n41 --> n34
n0 --> n20
n21 --> n1
n24 --> n25
n25 --> n26
n43 --> n21
n1 --> n19
n1 --> n3
n1 --> n4
n1 --> n24
n1 --> n8
n29 --> n40
n30 --> n25
n6 --> n40
n6 --> n7
n8 --> n9
n22 --> n23
n17 --> n15
n9 --> n10
n12 --> n14
n12 --> n13
n38 --> n37
n32 --> n39
n5 --> n6
n18 --> n40
n13 --> n9
n28 --> n29
n28 --> n22
n27 --> n28
n11 --> n12
n23 --> n30
n42 --> n41
n15 --> n18
n15 --> n16
n35 --> n37
n2 --> n40
n34 --> n36
n3 --> n2
n26 --> n27
n14 --> n15
n16 --> n17
n19 --> n2
n4 --> n5
n7 --> n6
n10 --> n11
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 n1,n12,n20,n28,n41 decision
class n3,n4,n7,n10,n16,n19,n22,n26,n31,n32,n33,n34,n35,n38 api
class n11,n14,n17,n18,n21,n23,n27,n29 code
classDef customIcon fill:none,stroke:none
class n0,n3,n4,n7,n9,n10,n11,n14,n16,n17,n18,n19,n21,n22,n23,n25,n26,n27,n29,n31,n32,n33,n34,n35,n38,n42,n43 customIcon
Varför det här spelar roll: göra webbsidor till pålitliga rader
Webbplatsdata ser enkelt ut tills du ska göra det operativt. En kategorisida har paginering. Produktsidor saknar fält. Jobbportaler byter layout. SERP:ar laddar olika varje gång. När du skrapar manuellt (eller med ett skört selector-baserat verktyg) lägger du mer tid på att laga exporten än på att använda den. Och det värsta är osäkerheten: du vet inte vad du missade, så du tvekar att agera. Den tvekan kostar dig lanseringar, prisuppdateringar, outreach-listor och innehållsbeslut.
Friktionen byggs på. Här är var det brukar fallera i riktiga team.
- Du får “vissa” resultat, men pagineringsluckor gör att ditt ark är ofullständigt och du märker det inte förrän det verkligen gäller.
- En layoutändring flyttar fält i tysthet, vilket gör att kolumner slutar linjera och du slösar tid på omformatering.
- Omförsök hanteras dåligt, så några tillfälliga fel blir till saknade datasegment.
- Även när data exporteras är den inte redo att använda, så du måste fortfarande rensa innan någon kan agera.
Vad du bygger: Zyte-extraktion till en felfri CSV för Sheets
Det här arbetsflödet gör en enkel input (en URL plus ditt mål) till strukturerad data som du faktiskt kan arbeta med i Google Sheets. Du börjar i ett användarvänligt formulär, väljer vad du vill extrahera (enskild sida, listsidor, “skrapa alla sidor”, SERP-resultat eller ett manuellt/råläge), och automatiseringen skickar din begäran till rätt Zyte-extraktionsmetod. För “skrapa alla sidor” kör den en tvåfasprocess: först crawl:ar den för att hitta alla relevanta URL:er, sedan skrapar den detaljer för varje sida samtidigt som den filtrerar fel och gör omförsök vid behov. Till sist aggregerar den allt och exporterar en felfri CSV som är redo att lägga in i ett ark och dela med teamet.
Arbetsflödet startar med en formulärinsändning och vid behov ett AI-assisterat målval. Sedan hämtar det sidor via Zyte, loopar igenom paginering eller item-länkar och slår ihop resultaten till en konsekvent datamängd. I slutet får du en CSV-fil som är tillräckligt korrekt formaterad för att använda direkt i Google Sheets (och enkel att granska om du behöver).
Det du bygger
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du behöver veckovis konkurrentprissättning från en kategori med cirka 200 produkter över 10 paginerade listsidor. Manuellt kanske du lägger 10 minuter på att samla URL:er, ytterligare en timme på att hämta produktdetaljer och ungefär 30 minuter på att rensa arket. Med det här arbetsflödet skickar du in URL:en på en minut, låter crawl:ern hitta alla produktsidor och väntar medan skrapningen körs i batchar. Du granskar fortfarande resultatet, men det brukar ligga närmare 10 minuters stickprovskontroll än en hel rensningssession.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Zyte API för strukturerad webbextraktion.
- Google Sheets för att lagra och arbeta vidare med resultatet.
- Zyte API-nyckel (hämta den i din Zyte-dashboard).
Kunskapsnivå: Medel. Du kopplar konton, klistrar in en API-nyckel och gör lätt mapping så att output matchar det du förväntar dig i ditt ark.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Skicka in din mål-URL och avsikt. Arbetsflödet börjar i ett formulär där du anger sajten (eller sidan) och väljer ett mål som “enskild detalj”, “skrapa lista”, “skrapa alla sidor” eller en rå/manuell insamling.
Smart routning väljer rätt extraktionsspår. Baserat på sajtkategori (e-handel, artiklar, jobbannonser, SERP) skapar arbetsflödet en lämplig Zyte-konfiguration och skickar anrop via HTTP.
Tvåfas-crawling kickar in vid behov. För helsajt- eller “skrapa alla sidor”-jobb crawl:ar fas 1 och hittar URL:er via pagineringsloopar, och fas 2 skrapar detaljerad data i batchar och samlar poster samtidigt som den filtrerar fel.
En felfri fil skapas för enkel användning. Resultaten aggregeras och konverteras till en nedladdningsbar CSV så att du kan öppna den i Google Sheets och börja arbeta direkt.
Du kan enkelt ändra extraktionsmålet för att växla från “alla sidor” till “enskild sida” beroende på behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: konfigurera webhook-triggern
Konfigurera intagsformuläret som startar arbetsflödet och samlar in URL, webbplatskategori och Zyte API-nyckel.
- Lägg till och öppna Primary Intake Form.
- Ställ in Form Title på
AI Web Scraper. - Bekräfta att Form Fields inkluderar Target URL, Select Site Category och Zyte API Key med obligatoriska fält aktiverade.
- Behåll beskrivningstexten som den är för att förklara routningslogiken.
- Spara noden för att generera dess webhook-URL.
Steg 2: konfigurera routningsformulär och kategorilogik
Det här steget routar användare till rätt målvalsformulär baserat på webbplatskategori.
- Öppna Route by Site Category och verifiera att reglerna jämför
{{$json["Select Site Category"]}}mot de fem kategorialternativen. - Säkerställ att utgångarna routar till AI Goal Selection Form för produkt-/artikel-/jobb-kategorier, till API Fetch SERP Data för SERP och till Manual Goal Form för generella webbplatser.
- Öppna AI Goal Selection Form och bekräfta att de dolda fälten mappar URL till
{{$json["Target URL"]}}och Site Type till{{$json["Select Site Category"]}}. - Öppna Manual Goal Form och bekräfta samma dolda fält samt rullgardinsalternativen (BrowserHtml, httpResponseBody, Capture Network API, Infinite Scroll, Screenshot).
- Bekräfta att AI Goal Selection Form kopplar till Generate Zyte Config och att Manual Goal Form kopplar till Select Manual Extraction.
Steg 3: konfigurera AI-målmappning och routning för extrahering
Konfigurera hur extraheringsmål översätts till Zyte-scheman och vilken gren som körs härnäst.
- Öppna Generate Zyte Config och behåll koden som mappar Site Type och What is your extraction goal? till target_schema och navigation_schema.
- Verifiera att Generate Zyte Config skickar ut
extraction_goal,target_schemaochnavigation_schema. - Öppna Select Extraction Goal och bekräfta att alla regler kontrollerar
{{$json.extraction_goal}}försingle,list,details_current,crawl_listochcrawl_all. - Bekräfta att grenarna från Select Extraction Goal går till API Fetch Single Detail, API Fetch List Page, API Fetch Page Item Links, Init List Crawl State och Init Full Details State.
$input.first().json["What is your extraction goal?"]) att sluta fungera.Steg 4: konfigurera extrahering för enstaka sida och aktuell sida
Dessa noder hanterar engångsextraheringar och extrahering av objektdetaljer på sidnivå.
- Öppna API Fetch Single Detail och bekräfta att URL är
https://api.zyte.com/v1/extractoch att Method är POST. - Säkerställ att body innehåller url satt till
{{$json.url}}och att schema-fältet är satt till{{$json.target_schema}}. - Verifiera att headern authorization använder
Basic {{ ($('Primary Intake Form').item.json["Zyte API Key"] + ":").base64Encode() }}. - Öppna API Fetch List Page och behåll samma Zyte-upplägg med
{{$json.url}}och{{$json.target_schema}}. - Öppna Format Single/List Output och bekräfta att fältet data använder
{{$json.productNavigation || $json.product || $json.productList || $json.browserHtml || $json.articleList?.articles || $json.jobPosting || $json.jobPostingNavigation}}.
Steg 5: konfigurera crawl-loop för listor (alla sidor)
Den här loopen samlar in listobjekt över paginerade sidor och returnerar ett sammanställt dataset.
- Öppna Init List Crawl State och bekräfta att den sätter url till
{{$json.url}}, target_schema till{{$json.target_schema}}och navigation_schema till{{$json.navigation_schema}}. - Verifiera att Merge List Pages är kopplad till API Fetch List Page URLs och att Assign Next List URL loopar tillbaka in i merge-noden.
- Öppna API Fetch List Page URLs och bekräfta att schema-fältet är
{{$('Generate Zyte Config').item.json.navigation_schema}}. - Öppna List Crawl Controller och behåll koden som skickar ut
currentScrapeUrl,nextLoopUrlochstopLoop. - Öppna API Fetch Full Item List och bekräfta att url är
{{$json.currentScrapeUrl}}och att schemat använder{{$('Init List Crawl State').item.json.target_schema}}. - Öppna Accumulate List Items och behåll ackumulatorlogiken som sparar listobjekt i static data-backpack.
- Säkerställ att Check Next List Page routar till Finalize List Output när
{{$json.stopLoop}}är true, annars till API Fetch Full Item List.
visited-sidor för att undvika oändliga loopar.Steg 6: konfigurera fullständig detalj-crawl (alla sidor)
Den här vägen crawlar flera sidor, samlar in objekt-URL:er och hämtar sedan fullständiga detaljer i batchar.
- Öppna Init Full Details State och verifiera att target_url är
{{$json.url}}och att schema-fälten refererar till{{$json.target_schema}}och{{$json.navigation_schema}}. - Säkerställ att Merge Full Detail Pages kopplar till API Crawl Pages Phase1 och loopar tillbaka från Assign Next Page URL.
- Öppna API Crawl Pages Phase1 och bekräfta att schemat använder
{{$('Generate Zyte Config').item.json.navigation_schema}}. - Öppna Collect Detail URLs och behåll koden som sparar
allItemUrlsoch skickar utnextPageUrlsamtstop. - Kontrollera att Check More Pages skickar true till Unpack URL List Phase2 och false till Assign Next Page URL.
- Öppna Batch Detail Processor och bekräfta att Batch Size är
100. - Öppna API Fetch Full Details och bekräfta att url är
{{$json.url}}och att schemat är{{$('Init Full Details State').item.json.target_schema}}. - Öppna Accumulate Detail Records och behåll ackumulatorlogiken som sparar
finalResultstill static data. - Öppna Finalize Detail Output för att säkerställa att den återställer minne och skickar ut giltiga objekt.
Steg 7: konfigurera manuella extraheringsalternativ
Dessa noder hanterar val för rådataextrahering såsom HTML, response body, nätverksfångst, infinite scroll och skärmdump.
- Öppna Select Manual Extraction och bekräfta att reglerna jämför
{{$json["What is your extraction goal?"]}}med varje manuellt alternativ. - Verifiera att varje gren routar till rätt API-nod: API Fetch Browser HTML, API Fetch Response Body, API Capture Network Calls, API Capture Infinite Scroll eller API Capture Screenshot.
- Öppna API Capture Network Calls och bekräfta att JSON Body är den angivna payloaden med
networkCapture-filtrering på/api/. - Öppna API Capture Infinite Scroll och behåll åtgärden
scrollBottomi JSON body. - Öppna Assemble Raw Output och behåll data satt till
{{$json.browserHtml || $json.httpResponseBody || $json.networkCapture}}. - Öppna Convert Screenshot File och säkerställ att Operation är
toBinarymed Source Property satt tillscreenshot.
Steg 8: konfigurera utdatafiler
Alla lyckade datavägar konvergerar till filkonvertering för hantering av utdata.
- Öppna Convert AI Output File och behåll standardinställningarna för filkonvertering.
- Bekräfta att Format Single/List Output, Finalize List Output, Finalize Detail Output och Iterate Page Items alla kopplar till Convert AI Output File.
- Bekräfta att API Fetch SERP Data routar till Format SERP Response med data satt till
{{$json.serp}}.
Steg 9: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att bekräfta att varje väg fungerar innan ni aktiverar arbetsflödet.
- Klicka på Execute Workflow och skicka in Primary Intake Form med en exempel-URL och Zyte API-nyckel.
- Välj ett mål i AI Goal Selection Form eller Manual Goal Form för att trigga motsvarande extraheringsväg.
- Följ exekveringsflödet för att bekräfta att utdata når Convert AI Output File eller Convert Screenshot File.
- Verifiera att en lyckad exekvering visar data i Format Single/List Output, Finalize List Output, Finalize Detail Output eller Assemble Raw Output beroende på vald väg.
- När allt är validerat, ställ om arbetsflödet till Active för användning i produktion.
Felsökningstips
- Zyte-inloggning kan gå ut eller klistras in fel. Om anropen börjar fallera, kontrollera API-nyckeln som är sparad i n8n-autentiseringsuppgifterna och bekräfta att den är aktiv i din Zyte-dashboard.
- 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 i all evighet.
Snabba svar
Cirka 30 minuter om din Zyte-nyckel och Google-åtkomst är redo.
Nej. Du kopplar mest konton och väljer extraktionsmål i formulären. Det finns valfri finjustering, men det krävs inte för att få en felfri CSV.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Molnplaner startar på 20 USD/månad för högre volym. Du behöver också räkna in Zyte API-användning, som beror på hur många sidor du crawl:ar och skrapar.
Två alternativ: n8n Cloud (managed, 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 serverhantering.
Ja, men håll avsikten tydlig. Du kan växla mellan “enskild detalj”, listextraktion och “skrapa alla sidor” via logiken Select Extraction Goal, och du kan välja rå/manuell insamling via Manual Goal Form när du vill ha HTML, svarskroppar, nätverksanrop eller skärmdumpar. Vanliga anpassningar är att justera vilka fält du behåller i den slutliga CSV:n, ändra batchstorlekar för stora sajter och att fokusera crawl:ern på specifika sektioner så att du inte hämtar irrelevanta sidor.
Oftast är det en ogiltig eller utgången API-nyckel. Skapa en ny Zyte-nyckel, uppdatera den i n8n och kör sedan om ett test för en enskild sida för att bekräfta att anropet lyckas. Om det fungerar för en sida men fallerar vid stora crawl:ar kan du slå i rate limits eller stöta på blockerade sidor som kräver ett annat extraktionsläge.
Hundratals till tusentals sidor per körning är typiskt, så länge din Zyte-plan och n8n-resurser klarar det.
Ofta, ja. Det här arbetsflödet använder flerstegslogik (routning efter sajttyp, loopar för paginering, batchning, sammanslagning och villkorskontroller), och den typen av förgrening blir dyr eller klumpig i många no-code-verktyg. n8n ger dig också ett self-hosting-alternativ, vilket spelar roll när du kör många exekveringar. Zapier eller Make kan fortfarande fungera bra för en enkel “hämta en URL, skriv en rad”-uppgift, men det här är mer av en datapipeline än en enskild zap. Om du är osäker, prata med en automationsexpert så får du en rak rekommendation.
När det här väl rullar slutar ditt kalkylark vara ett rensningsprojekt och blir något du kan lita på. Arbetsflödet sköter den repetitiva hämtningen och formateringen, så att du kan fokusera på besluten.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.