Att kopiera stycken från webbsidor till dokument eller kalkylark känns snabbt. Sedan försöker du hitta det där citatet senare, inser att du tappat käll-URL:en, och “researchen” blir en rörig hög.
Marknadsansvariga som gör konkurrentanalys drabbas hårdast, men byråägare som bygger kunders kunskapsbaser och operations-team som underhåller interna wikis kör in i samma vägg. Den här Scrapeless Qdrant-automationen förvandlar webbsidor till sökbar data, så att du kan hämta svar på sekunder i stället för att återläsa flikar i en timme.
Du får se hur flödet hämtar pålitlig HTML, rensar den med AI, skapar embeddings och lagrar allt i Qdrant med status-webhooks för insyn.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Scrapeless till Qdrant: sidor blir sökbar data
flowchart LR
subgraph sg0["When clicking 'Test workflow' Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking 'Test workflow'", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Fields - URL and Webhook..", 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/>Scrapeless Web Request"]
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/code.svg' width='40' height='40' /></div><br/>Format Claude Output"]
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/>Check Collection Exists"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Collection Exists Check", 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/>Create Qdrant Collection"]
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/>Claude Data extractor"]
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/>Ollama Embeddings"]
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/code.svg' width='40' height='40' /></div><br/>Qdrant Vector store"]
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/>Claude AI Agent"]
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/>Webhook for structured AI ag.."]
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/>Expot data webhook"]
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/>AI Data Checker"]
n13 --> n12
n10 --> n3
n8 --> n9
n9 --> n11
n3 --> n8
n7 --> n10
n2 --> n13
n2 --> n7
n4 --> n5
n5 --> n1
n5 --> n6
n6 --> n1
n0 --> n4
n1 --> n2
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 n5 decision
class n2,n4,n6 api
class n3,n7,n8,n9,n10,n11,n12,n13 code
classDef customIcon fill:none,stroke:none
class n2,n3,n4,n6,n7,n8,n9,n10,n11,n12,n13 customIcon
Problemet: webbresearch förblir inte sökbar
Webbsidor är ett uselt långtidsformat för allt du behöver återanvända. De ändras, laddar konstigt, blockerar scrapers och gömmer den enda nyckelmeningen du faktiskt brydde dig om. Så team bygger ett “manuellt skyddsnät”: kopiera, klistra in, städa upp, märka upp och hoppas att framtids-du minns var det kom ifrån. Det handlar inte bara om tid. Det är mental belastning, dubbelarbete och misstag som i tysthet sprids in i briefs, presentationer och kundrekommendationer.
Det eskalerar snabbt. Här är var det faller isär i verkligheten.
- Du tappar kontext när käll-URL, sidtitel och tidsstämpel inte sparas tillsammans med anteckningarna.
- Tunga JavaScript-sajter och antibot-skydd gör “snabb scraping” opålitlig, så flödet dör redan i starten.
- Även när du fångar sidan får du ostrukturerad text, vilket betyder att sökning i praktiken blir Ctrl+F och tur.
- Team samlar in samma info varje månad eftersom inget indexeras på ett sätt som en agent eller kollega kan fråga mot.
Lösningen: gör webbsidor till ett återanvändbart vektorbibliotek
Det här flödet skapar en felfri pipeline från “URL:en jag behöver förstå” till “sökbar kunskap jag kan återanvända”. Det börjar när du manuellt startar flödet i n8n (perfekt för ad hoc-researchsprintar), och sätter sedan en mål-URL och en webhook-destination för uppdateringar. Scrapeless hämtar sidans HTML på ett sätt som hanterar svåra sajter mer pålitligt än enkla scrapers. Därefter säkerställer ett AI-steg att du faktiskt fick meningsfullt innehåll, och ett AI-extraktionsskript gör rörig HTML till strukturerad JSON du kan lita på.
Sedan förbättrar och formaterar flödet det extraherade innehållet, och genererar embeddings med en lokal Ollama-modell (all-minilm). Till sist kontrollerar det Qdrant för rätt collection, skapar den vid behov, sparar vektorerna och notifierar dig via webhook när körningen lyckas eller misslyckas. Resultatet blir en sökbar vektordatabas som är redo för semantisk sökning, interna verktyg eller RAG-agenter.
Det du får: automation vs. resultat
| Det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du samlar 20 konkurrent-sidor varje vecka. Manuellt kan du lägga cirka 10 minuter per sida på att kopiera avsnitt, städa upp och märka upp källor, alltså ungefär 3 timmar. Med det här flödet klistrar du in en URL en gång och låter pipelinen jobba: en minut för att starta, några minuter för att hämta och extrahera, och sedan hamnar vektorerna i Qdrant automatiskt. Du granskar fortfarande resultatet, men det repetitiva arbetet försvinner till stor del.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Scrapeless för att hämta pålitlig webbsides-HTML
- Qdrant för att lagra och söka i vektor-embeddings
- Scrapeless API-token (hämta den i din Scrapeless-dashboard)
Kunskapsnivå: Medel. Du klistrar in API-nycklar, kör Qdrant/Ollama och redigerar ett par fält som collections-namn och webhook-URL.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Manuell start med en mål-URL. Du startar flödet, och det sätter URL:en du vill fånga samt en webhook-destination för uppdateringar.
Pålitlig extraktion från öppna webben. Scrapeless hämtar HTML:en, vilket hjälper när sajter är JavaScript-tunga eller försöker blockera enklare scrapers. En innehållsvalidator kontrollerar sedan att scrapingen gav riktigt innehåll, inte en felsida eller ett tomt skal.
AI gör HTML till strukturerad data. Extraktionsskriptet och förbättringsagenten formar om råsidan till strukturerad JSON och läsbar text, så att du inte embedddar slumpmässiga navigationsmenyer och cookie-banners. Ärligt talat är det här de flesta gör-det-själv-pipelines faller.
Vektorer lagras (och du blir notifierad). Ollama genererar embeddings lokalt, Qdrant lagrar dem i rätt collection (skapar den om den inte finns), och en webhook-notifierare skickar status för klar eller fel så att du slipper gissa.
Du kan enkelt ändra extraktionsschemat för att fånga andra fält 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 en manuell trigger så att ni kan testa hela pipelinen vid behov.
- Lägg till noden Manual Launch Trigger som er workflow-trigger.
- Lämna alla inställningar på standardvärden i Manual Launch Trigger.
- Koppla Manual Launch Trigger till Verify Collection Presence.
Steg 2: koppla kontroller för Qdrant-collection
Det här steget säkerställer att vector-collectionen finns innan ni skickar några embeddings.
- Öppna Verify Collection Presence och ställ in URL till
http://localhost:6333/collections/hacker-news. - I Verify Collection Presence, behåll Send Headers aktiverat och ställ in headern Content-Type till
application/json. - Konfigurera Collection Presence Gate med villkoret där Left Value är satt till
{{ $node['Verify Collection Presence'].json.result ? $node['Verify Collection Presence'].json.status : 'not_found' }}och Right Value är satt tillok. - Från Collection Presence Gate, koppla grenen true till Assign URL & Webhook och grenen false till Provision Qdrant Collection.
- I Provision Qdrant Collection, ställ in URL till
http://localhost:6333/collections/hacker-newsoch Method tillPUT. - Koppla Provision Qdrant Collection till Assign URL & Webhook.
⚠️ Vanlig fallgrop: Om Qdrant inte körs på localhost:6333 kommer den här gate:en alltid att fallera. Uppdatera URL:erna i både Verify Collection Presence och Provision Qdrant Collection om er Qdrant-host är en annan.
Steg 3: koppla scraping-requesten
Konfigurera det externa scraping-anropet som hämtar webbsidans HTML.
- Öppna Assign URL & Webhook och behåll standardinställningarna (noden fungerar som en platshållare för framtida tilldelningar).
- Öppna External Scrape Request och ställ in URL till
https://api.scrapeless.com/api/v1/unlocker/request. - Ställ in Method till
POSToch Specify Body tilljson. - Ställ in JSON Body till den angivna payloaden (innehåller
"url": "https://news.ycombinator.com/"och renderingsalternativ). - I External Scrape Request, ställ in headern x-api-token till ert API-nyckelvärde (just nu
[CONFIGURE_YOUR_API_KEY]).
⚠️ Vanlig fallgrop: Om ni lämnar [CONFIGURE_YOUR_API_KEY] i headern kommer scrapingen att misslyckas. Ersätt den med en giltig Scrapeless API-token.
Steg 4: sätt upp AI-extrahering och valideringsflöde
Arbetsflödet förgrenas efter scraping för att hantera AI-validering och AI-förstärkt extrahering. External Scrape Request skickar output till både AI Content Validator och Claude Extraction Script parallellt.
- Öppna AI Content Validator och säkerställ att Claude API-anropet använder endpointen
https://api.anthropic.com/v1/messagesmed headernx-api-keysatt till er Anthropic-nyckel (just nu[CONFIGURE_YOUR_API_KEY]). - Koppla AI Content Validator till Export Data Webhook för att skicka ut en formaterad fil med extraherad data.
- Öppna Claude Extraction Script och bekräfta att den använder samma Anthropic-endpoint och
x-api-key-header med er nyckel. - Koppla Claude Extraction Script till AI Enhancement Agent, och därefter till Claude Output Formatter för att parsa och normalisera JSON-outputen.
⚠️ Vanlig fallgrop: Claude API-nyckeln måste vara satt i AI Content Validator, Claude Extraction Script och AI Enhancement Agent (var och en använder [CONFIGURE_YOUR_API_KEY] i request-headers).
Steg 5: vektorisera och lagra i Qdrant
Transformera det extraherade innehållet till embeddings och spara dem i Qdrant.
- I Claude Output Formatter, behåll standardlogiken i JavaScript för att parsa och strukturera Claude-output.
- Öppna Ollama Vectorizer och säkerställ att embeddings-endpointen är satt till
http://127.0.0.1:11434/api/embeddingsmed modellenall-minilm. - Koppla Ollama Vectorizer till Qdrant Vector Saver för att lagra vektorer.
- I Qdrant Vector Saver, verifiera att storage-endpointen
http://127.0.0.1:6333/collections/hacker-news/pointsär korrekt för er Qdrant-instans. - Koppla Qdrant Vector Saver till Webhook Status Notifier för att skicka notifieringar om success/error.
⚠️ Vanlig fallgrop: Om Ollama inte körs lokalt kommer Ollama Vectorizer att fallera. Uppdatera URL:en om er Ollama-host skiljer sig.
Steg 6: konfigurera utgående webhooks
Skicka resultat till externa plattformar för synlighet och arkivering.
- I Export Data Webhook, lägg till webhook-URL:er för
discord,slack,linear,teamsellertelegramom ni vill ha filutdata. - I Webhook Status Notifier, lägg till webhook-URL:er för
discord,slack,teams,telegramellercustomför att ta emot statuslarm. - Lämna eventuella oanvända webhook-fält tomma för att hoppa över notifieringar för de plattformarna.
Steg 7: testa och aktivera ert arbetsflöde
Kör arbetsflödet manuellt för att validera alla grenar och aktivera sedan för produktionsanvändning.
- Klicka på Execute Workflow på Manual Launch Trigger för att köra hela pipelinen.
- Bekräfta att External Scrape Request slutförs och att AI Content Validator och Claude Extraction Script körs parallellt.
- Kontrollera att Ollama Vectorizer returnerar en
vectoroch att Qdrant Vector Saver rapporterarsuccess: true. - Verifiera notifieringar i Webhook Status Notifier och exporterad data-output i Export Data Webhook.
- När ni är nöjda, växla arbetsflödet till Active för att använda det i produktion.
Vanliga fallgropar
- Scrapeless-inloggning kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först din Scrapeless API-token i n8n-noden HTTP Request.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om efterföljande noder misslyckas på tomma svar.
- Qdrant collections-namn och dimensioner måste matcha det du lagrar. Om vektorer inte går att infoga, kontrollera collection-inställningarna och bekräfta att din Ollama-embeddingmodell ger rätt output.
Vanliga frågor
Räkna med cirka 60 minuter om Qdrant och Ollama inte är installerade än.
Nej. Du kommer mest att klistra in inloggningsuppgifter och redigera några fält som URL, collections-namn och webhook-destination.
Ja. n8n har ett gratisalternativ 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 Scrapeless-användning och eventuella AI-modellkostnader om du kör hostade LLM:er.
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, men du byter steget “External Scrape Request” mot en filinläsningsväg. Om dina filer ligger i Drive kan du använda en Google Drive Trigger för att hämta PDF:en, sedan läsa den med Read PDF (eller Read Binary File vid behov) innan du skickar den extraherade texten vidare till samma extraktions-, embedding- och Qdrant-sparsteg. Vanliga justeringar är att lägga till metadata som dokumenttyp, kundnamn och en stabil fil-URL.
Oftast är det ett problem med API-token. Generera om din Scrapeless-token, uppdatera den i noden HTTP Request och kör om en enskild URL för att bekräfta. Om scrapingen returnerar “success” men innehållet är tomt kan sajten kräva andra Scrapeless-inställningar (render-läge, headers eller geo). Kontrollera också outputen från webhook-notifieraren, eftersom fel ibland syns där först.
Med n8n i egen drift finns ingen hård körningsgräns, så kapaciteten beror främst på din server och Scrapeless-begränsningar.
Ofta, ja, eftersom den här pipelinen behöver förgreningslogik (som “skapa Qdrant-collection bara om den saknas”), kodsteg och tät kontroll över payloaden du lagrar. n8n låter dig också köra i egen drift, vilket spelar roll när du processar många sidor och inte vill att varje körning debiteras som en premium-task. Zapier eller Make kan fortfarande fungera om du håller det enkelt, men du hamnar ofta i begränsningar när du lägger till validering, formatering och embeddings. Om du är osäker, välj utifrån var du vill att datan ska ligga och hur mycket du ska skala. Prata med en automationsexpert så tar vi fram det renaste alternativet.
När dina sidor väl hamnar i Qdrant slutar de vara “saker du läser” och blir “saker du kan använda”. Sätt upp det en gång, och låt sedan sökningen göra grovjobbet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.