Du börjar med en enkel fråga. Sedan blir det 27 flikar, tre halvfärdiga dokument och en krypande känsla av att du fortfarande inte litar på dina källor.
Den här typen av automatisering för Oxylabs Sheets briefs drabbar content marketers och SEO-ansvariga hårdast, men produktteam som gör konkurrensscanning känner av det också. Resultatet är tydligt: en källunderbyggd research-brief som är organiserad, repeterbar och redo att delas.
Det här arbetsflödet omvandlar din chattprompt till skrapade källor, sid-sammanfattningar och en slutrapport. Du ser vad som automatiseras, vad du får tillbaka och vad du ska tänka på när du sätter upp det.
Problemet: research blir snabbt flikkaos
Djup research är sällan “svår” för att informationen inte finns. Den är svår för att insamlingen är stökig. Du söker, öppnar resultat, skummar, kopierar citat till ett dokument och tappar sedan bort var allt kom ifrån. Två timmar senare har du massor av anteckningar men ingen korrekt formaterad berättelse, och så fort någon frågar “Vilken källa är det här påståendet från?” är du tillbaka i jaktläget. Ännu värre: du använder ofta det som var lättast att hitta, inte det som var mest trovärdigt, för att tiden tar slut.
Friktionen byggs på. Här är var det oftast brister.
- Du kör om sökningar manuellt och missar ändå hela vinklar eftersom du bara sökte på de mest uppenbara termerna.
- Att bedöma trovärdighet tar tid, så lågkvalitativa källor smyger sig in i briefar och försvagar hela rapporten.
- Copy-paste-sammanfattningar blir inkonsekventa, vilket gör att du lägger mer tid på att redigera än på att tänka.
- Inget är centraliserat, så att återanvända research senare blir ännu ett “börja från början”-projekt.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Oxylabs + Google Sheets: researchbriefar klara
flowchart LR
subgraph sg0["When chat message received Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Search Google", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split URLs", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split queries", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Get number of URLs", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Get all data", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Get current data for polling", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If all data exists", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Extract IDs", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Wait 60s", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Wait 10s", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "Create search queries", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "Pick URLs", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Scrape content", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Insert row", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Summarize content", pos: "b", h: 48 }
n16@{ icon: "mdi:robot", form: "rounded", label: "Final analysis", pos: "b", h: 48 }
n10 --> n6
n9 --> n4
n12 --> n2
n14 --> n9
n2 --> n13
n8 --> n7
n5 --> n16
n1 --> n12
n3 --> n1
n13 --> n15
n15 --> n14
n4 --> n6
n7 --> n5
n7 --> n10
n11 --> n3
n0 --> n11
n6 --> n8
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 n11,n12,n15,n16 ai
class n7 decision
Lösningen: gör en fråga till en källunderbyggd brief
Du ställer din researchfråga i n8n:s chatt-trigger, med så mycket kontext du har. Flödet använder en AI-agent (OpenAI-chatmodell i mallen) för att skapa smartare sökprompter, så att researchen inte fastnar i en formulering. Oxylabs skrapar sedan Google-sökresultat för varje fråga, och AI:n filtrerar listan till de källor som är mest relevanta och auktoritativa. Därefter skrapas och sammanfattas varje vald URL parallellt, och sammanfattningarna lagras i en tabell-liknande datalagring som flödet kan hämta från senare. Till sist syntetiserar AI:n alla sammanfattningar till en enda researchrapport som läser som en riktig brief, inte som en hög med punktlistor.
Arbetsflödet börjar med ditt chattmeddelande. Det förgrenar sig till sökfrågor, samlar in och utvärderar källor och kör sedan extraktion och sammanfattning sida vid sida så att du inte väntar på en sida i taget. I slutet sätter det ihop en heltäckande rapport från de insamlade sammanfattningarna och ger dig ett strukturerat resultat som du kan klistra in i ett dokument eller logga i Sheets.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du behöver en brief till en landningssida och normalt öppnar cirka 20 resultat. Om du lägger kanske 6 minuter per sida på att skumma, plocka ett citat och klistra in anteckningar, är det runt 2 timmar innan du ens börjar skriva. Med det här flödet lägger du in frågan i chatten (2 minuter), låter Oxylabs hämta upp till 50 resultat per sökfråga och systemet sammanfattar utvalda källor parallellt. Även med ett par korta väntetider inbyggda hamnar du vanligtvis på “granska och slipa”-tid i stället för “samla in allt”-tid.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Självhostat alternativ om du föredrar det (Hostinger fungerar bra)
- Oxylabs AI Studio för Google SERP + sidskrapning.
- Google Sheets för att logga briefar och källsammanfattningar.
- Oxylabs AI Studio API-nyckel (hämta den i din Oxylabs-dashboard).
Kompetensnivå: Medel. Du kopplar in autentiseringar, väljer ett tabellnamn och justerar prompter utan att skriva kod.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Du triggar det med en fråga i chatten. Arbetsflödet startar när du skickar in en researchprompt via n8n:s chattgränssnitt, inklusive eventuella ramar som målgrupp, bransch eller vad du vill att resultatet ska fokusera på.
Det gör en prompt till flera sökvinklar. En OpenAI-driven agent genererar strategiska sökfrågor och delar sedan upp dem i en lista så att varje fråga kan sökas separat. Så får du bredd utan att manuellt brainstorma sökordsvarianter.
Oxylabs samlar resultat och AI:n väljer källor. Oxylabs skrapar Google-resultaten för varje sökfråga och AI:n utvärderar kandidaterna för att välja de länkar som är mest relevanta och trovärdiga. Därefter distribuerar den dessa URL:er så att innehållsextraktion kan ske parallellt.
Sammanfattningar lagras och slås sedan ihop till en slutlig brief. Varje sida skrapas, sammanfattas och läggs till i en datatabell. Efter en kort väntan och en snabb kontroll för att bekräfta att data finns på plats hämtar flödet alla sammanfattningar och skapar din slutrapport (som du sedan kan skriva till Google Sheets, Excel eller mappar i Drive).
Du kan enkelt ändra antalet sökfrågor och antalet resultat per sökfråga utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera chattriggern
Det här arbetsflödet startar från ett chattmeddelande och använder det för att generera researchfrågor.
- Lägg till noden Incoming Chat Trigger som trigger för arbetsflödet.
- Lämna standardinställningen options tom om ni inte behöver anpassade chattinställningar.
- Säkerställ att Incoming Chat Trigger kopplas direkt till Generate Search Prompts för att matcha körflödet.
Steg 2: Sätt upp AI-generering av promptar
Dessa noder genererar sökpromptar och väljer pålitliga källänkar baserat på sökresultat.
- Öppna Generate Search Prompts och ställ in Model till
gpt-5-mini. - I Generate Search Prompts, behåll det första svarets innehåll som
{{$json.chatInput}}och behåll systemprompten som instruerar frågegeneration. - Konfigurera Separate Query List med Field to Split Out inställt på
output[0].content[0].text.queriesoch Destination Field Name inställt påquery. - Öppna Select Source Links och ställ in Model till
gpt-5-minimed det första svarets innehåll{{ JSON.stringify($input.all().flatMap(item => item.json.data || [])) }}.
Credential Required: Anslut era OpenAI-uppgifter i Generate Search Prompts och Select Source Links.
Steg 3: Konfigurera sökning och extrahering av källor
Den här delen skickar de genererade frågorna till sök och distribuerar valda URL:er för scraping.
- Ställ in Web Search Request till Resource
searchoch Search Query till{{$json.query}}. - Säkerställ att Web Search Request har Search Return Content inställt på
false. - I Distribute URL Items, ställ in Field to Split Out till
output[0].content[0].text.urlsoch Destination Field Name tillurl.
Credential Required: Anslut era Oxylabs Ai Studio-uppgifter i Web Search Request.
Steg 4: Extrahera och sammanfatta sidinnehåll
Varje vald URL skrapas och sammanfattas och lagras sedan i en datatabell.
- I Extract Page Content, ställ in Scrape URL till
{{$json.url}}. - Konfigurera Summarize Page Data med Model inställt på
gpt-5och behåll det första svarets innehåll som{{$json.data}}. - I Append Summary Row, mappa kolumnen summary till
{{$json.output[0].content[0].text}}. - Ställ in dataTableId i Append Summary Row till er faktiska datatabell (ersätt
[YOUR_ID]). - Bekräfta att Append Summary Row går vidare till Pause 60 Seconds för att strypa polling.
Credential Required: Anslut era Oxylabs Ai Studio-uppgifter i Extract Page Content.
Credential Required: Anslut era OpenAI-uppgifter i Summarize Page Data.
[YOUR_ID]. Ersätt den i Append Summary Row, Retrieve Polling Data och Fetch All Summaries, annars kommer arbetsflödet inte att kunna lagra och hämta sammanfattningar.Steg 5: Polla efter slutförande och sammanställ rapporten
Det här steget räknar förväntade sammanfattningar, pollar datatabellen, verifierar att allt är klart och sammanställer slutrapporten.
- I Count URL Items, ställ in tilldelningsvärdet för length till
{{$('Distribute URL Items').all().length}}. - Konfigurera Retrieve Polling Data med Operation
getoch Return All inställt påtrue. - I Collect Row Identifiers, aggregera fältet id för att samla in rad-ID:n för jämförelse.
- I Verify Data Presence, ställ in villkoret för att jämföra
{{$json.id.last()}}lika med{{$('Count URL Items').item.json.length}}. - Säkerställ att Verify Data Presence går till Fetch All Summaries vid lyckat resultat och till Pause 10 Seconds vid misslyckande, och sedan tillbaka till Retrieve Polling Data för polling.
- Ställ in Fetch All Summaries till Operation
getoch Return Alltrue. - Konfigurera Compose Final Report med Model
gpt-5och det första svarets innehåll{{ JSON.stringify($input.all().flatMap(item => item.json.summary || [])) }}.
Credential Required: Anslut era OpenAI-uppgifter i Compose Final Report.
Steg 6: Testa och aktivera ert arbetsflöde
Validera arbetsflödet från början till slut innan ni aktiverar det i produktion.
- Klicka på Execute Workflow och skicka ett exempelmeddelande till Incoming Chat Trigger.
- Bekräfta att Generate Search Prompts producerar en JSON-lista med frågor och att Web Search Request returnerar SERP-resultat.
- Verifiera att Append Summary Row skapar rader i er datatabell och att Verify Data Presence till slut går vidare till Fetch All Summaries.
- Kontrollera att Compose Final Report returnerar en strukturerad rapport som enbart baseras på de insamlade sammanfattningarna.
- När resultatet ser korrekt ut, ändra arbetsflödets status till Active för att köra det i produktion.
Vanliga fallgropar
- Autentiseringsuppgifter för Oxylabs AI Studio kan löpa ut eller ha fel scope. Om skrapningen plötsligt ger tomma resultat, kontrollera först status för din API-nyckel i Oxylabs-dashboarden.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i OpenAI-noder är generiska. Lägg in er tonalitet och “så här ser bra ut” tidigt, annars kommer du redigera output i all evighet.
Vanliga frågor
Cirka 30 minuter när dina API-nycklar är klara.
Nej. Du kopplar mest konton och klistrar in API-nycklar. Det mesta av “arbetet” är att justera prompter och välja hur många källor som ska ingå.
Ja. n8n har ett gratis självhostat 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 kostnader för användning av OpenAI- och Oxylabs-API:erna.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och klarar n8n bra. Självhosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det är en av de bästa anpassningarna. Öka antalet frågor i noden “Generate Search Prompts” och justera hur många resultat du behåller efter “Web Search Request” innan “Select Source Links” filtrerar dem. Du kan också aktivera JavaScript-rendering i Oxylabs-noden “Extract Page Content” när du hanterar moderna sajter som inte laddar korrekt formaterat. Om du skalar upp hårt, höj Wait-tiderna så att datatabellen hinner fyllas.
Oftast är det en ogiltig eller utgången API-nyckel. Uppdatera Oxylabs-autentiseringen i n8n och kör om en enskild fråga för att bekräfta att resultaten kommer tillbaka. Om det ser bra ut, kontrollera om de skrapade sidorna kräver JavaScript-rendering eller om du slår i rate limits när du kör för många URL:er samtidigt.
Många, så länge dina API-gränser och n8n-kapacitet hänger med. Mallen kan skrapa upp till 50 Google-resultat per sökfråga och sedan sammanfatta valda URL:er parallellt, så dussintals källor per körning är realistiskt. På n8n Cloud beror din månatliga körningsgräns på plan; på självhostat begränsas du främst av din server och uppströms-API:erna. Om du vill trycka volym, minska antalet URL:er per körning och schemalägg flera körningar.
För det här flödet är n8n oftast bättre, eftersom du kan köra parallell bearbetning, förgreningslogik och polling utan att göra det till en skör kedja av zaps. Självhosting ändrar också kalkylen om du planerar att köra många researchjobb. Zapier eller Make kan fungera bra för lätta “sök → logga en rad”-uppgifter, men end-to-end-briefar blir snabbt komplexa. Om du är osäker, prata med en automationsexpert och kartlägg volym och krav på output först.
När det här väl rullar slutar research att vara en skattjakt. Du får mer strukturerade briefar, bättre källor och ett arbetsflöde du kan återanvända varje gång nästa “snabba fråga” dyker upp.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.