Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Apify till Supabase, gör webbplatser sökbara

Rickard Andersson Partner, Nodenordic.se

Din webbplats förändras, men dina hjälpdokument, interna wiki och din chatbots ”kunskap” gör det inte. Sedan ställer någon en enkel fråga och får ett självsäkert, inaktuellt svar. Pinsamt. Och dyrt också.

Den här Apify Supabase-automationen träffar marknadschefer först (nya landningssidor varje vecka), men supportansvariga och byråägare känner av den direkt efter. Du behöver en sökbar sanningskälla som håller sig uppdaterad utan att någon manuellt kopierar sidor in i ett dokument.

Det här arbetsflödet gör om valfri webbplats-URL till felfritt, chunkat innehåll med embeddings lagrade i Supabase. Du får se vad det automatiserar, vilka resultat du kan förvänta dig och vad du behöver se upp med när du kör det på en riktig webbplats.

Så fungerar den här automatiseringen

Hela n8n-arbetsflödet, från trigger till slutlig output:

n8n Workflow Template: Apify till Supabase, gör webbplatser sökbara

Problemet: din ”kunskapsbas” blir snabbt inaktuell

Att hålla information korrekt låter enkelt tills du försöker göra det i stor skala. En produktsida ändras. Priser uppdateras. En ny FAQ läggs till. Någon i teamet tar en skärmdump av den gamla versionen och klistrar in den i ett dokument, och plötsligt flyter två sanningar runt. Lägg en chatbot ovanpå så höjs insatsen, eftersom boten glatt svarar utifrån gammal text med total självsäkerhet. Tidskostnaden är också lömsk: folk slutar lita på interna dokument och börjar i stället avbryta kollegor. Det där fram-och-tillbaka blir den verkliga skatten.

Det växer snabbt. Här brukar det oftast fallera.

  • Att manuellt kopiera webbplatstext till en kunskapsbas blir en veckouppgift som ingen äger.
  • De flesta sidor innehåller navigation, cookie-banners och sidfötter, så din chatbot lär sig en massa meningslöst skräp.
  • När du väl laddar upp innehåll är det sällan sökbart på ett meningsfullt sätt, så folk ställer ändå samma frågor i Slack.
  • Så fort du går bortom ett fåtal sidor smyger fel in och ”snabba uppdateringar” börjar ta ungefär 2 timmar.

Lösningen: skrapa, rensa, skapa embeddings och lagra i Supabase automatiskt

Det här arbetsflödet startar med ett enkelt inmatningsformulär där du klistrar in en URL och väljer hur djupt du vill skrapa. n8n anropar sedan Apify för att hämta sidinnehållet i ett av tre lägen: enstaka sida, hela webbplatsen med sidbegränsning eller hela webbplatsen utan begränsningar. När crawlningen är klar tar arbetsflödet bort de brusiga delar som förstör sökkvaliteten (navigation, sidfötter, annonser, cookie-banners) och formar om kvarvarande innehåll så att det läser som riktig dokumentation. Därefter delas texten upp i rimliga chunks (cirka 800 tecken, markdown-medvetet), vector embeddings skapas med Google Gemini (768 dimensioner) och varje chunk skrivs till en Supabase-tabell med pgvector aktiverat. Slutresultatet är en strukturerad, sökbar kunskapsbas som din app eller chatbot kan använda för semantisk sök och RAG-frågor & svar.

Arbetsflödet startar när du skickar in en webbplats-URL via formuläret. Det styr begäran till rätt Apify-skrapalternativ och bearbetar sedan varje skrapad post till felfria chunks med embeddings. Till sist gör det en upsert av allt till din Supabase-vektortabell så att sök och hämtning blir snabb och konsekvent.

Det du får: automatisering vs. resultat

Exempel: så här ser det ut

Säg att du behöver hålla ett hjälpcenter med 25 sidor uppdaterat för en chatbot. Manuellt blir även en snabb kopiera/klistra-in-runda och rensning på cirka 10 minuter per sida ungefär 4 timmar, och dessutom måste du senare formatera om för sök. Med det här arbetsflödet klistrar du in URL:en en gång, väljer ”hela webbplatsen med begränsning” (börja med cirka 10 sidor) och låter det köra. Efter en kort crawl- och embeddingtid landar chunks i Supabase automatiskt. Du granskar främst resultatet i stället för att göra rutinjobb.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
  • Apify för att skrapa webbplatsinnehåll i stor skala
  • Supabase för att lagra vektorer med pgvector aktiverat
  • Google Gemini API-nyckel (hämta den via Google AI Studio / Gemini API)

Svårighetsnivå: Medel. Du kopplar in autentiseringsuppgifter och gör en liten SQL-setup i Supabase, men du kommer inte att bygga en app.

Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).

Så fungerar det

Du skickar in URL och omfång. Arbetsflödet startar från ett enkelt formulär (”Website Input Form”) där du klistrar in webbplatsen och väljer skrapläge: enstaka URL, hela webbplatsen med begränsning eller hela webbplatsen utan begränsningar.

Det styr till rätt Apify-crawl. En switch-nod använder ditt val, och sedan triggar ett HTTP-anrop rätt Apify actor-körning. Om du valde en fullständig webbplatscrawl kontrollerar arbetsflödet din sidbegränsning innan det väljer mellan den begränsade respektive obegränsade vägen.

Skrapade sidor rensas och formas om. Arbetsflödet sanerar posterna och kör sedan ett steg för att förfina innehållsstrukturen och ta bort sådant du inte vill embeda (sidhuvuden, sidfötter, cookie-promptar och annat brus). Det här är skillnaden mellan ”sökbara svar” och ”en databas full av navigationsetiketter”, helt ärligt.

Texten chunkas, får embeddings och lagras. Det rensade innehållet delas upp i chunks (ungefär 800 tecken), Gemini skapar embeddings med 768 dimensioner och Supabase vector store-noden skriver allt till din documents-tabell så att din chatbot eller ditt söklager kan hämta rätt passager senare.

Du kan enkelt justera chunkstorlek eller vilka sidelement som tas bort utifrån dina behov. Se hela implementationsguiden nedan för alternativ för anpassning.

Steg-för-steg-guide för implementering

Steg 1: konfigurera formulärtriggern

Det här arbetsflödet börjar med ett formulär som samlar in målwebbplatsen och inställningar för scraping.

  1. Lägg till och öppna Website Input Form.
  2. Ställ in Form Title till Enter Website URL and Settings.
  3. Ställ in Form Description till Provide the full website URL you want to scrape. If you want to scrape an entire website, simply leave the "Max number of pages to scrape" field, empty. Otherwise, you can enter a number there to limit the scraped pages..
  4. Säkerställ att fälten matchar: Website page (URL) to scrape, Scrape all pages available on the domain, or only the page provided? (radio med två alternativ) och Max number of scraped pages to return (nummer).

Steg 2: koppla Apify-begärans mappning och routing

Mappa formulärinmatningen till normaliserade fält och routa begäran till rätt crawler-väg.

  1. Öppna Map Request Fields och mappa fälten som uttryck: url till {{ $json["Website page (URL) to scrape"] }}, scrapeAll till {{ $json["Scrape all pages available on the domain, or only the page provided?"] }}, maxCrawlPages till {{ $json["Max number of scraped pages to return"] }} och maxResults till {{ $json["Max number of scraped pages to return"] }}.
  2. I Configure Apify Options verifierar ni att de två reglerna jämför {{ $json.scrapeAll }} med de exakta strängarna Scrape all pages on the domain och Scrape only the one URL provided.
  3. I Check Page Limit bekräftar ni att villkoret kontrollerar {{ $json.maxCrawlPages }} med operatorn lt mot 1 för att avgöra begränsad kontra obegränsad crawl.

Configure Apify Options skickar utdata till Check Page Limit för begäranden som gäller ”scrape all” och direkt till Apify Single URL Crawl för begäranden som gäller en enskild sida.

Steg 3: konfigurera Apify-crawlers

Konfigurera HTTP-begärandena som triggar Apify-crawls, inklusive användning av API-token och payloads.

  1. I Apify Crawl All Unlimited ställer ni in URL till https://api.apify.com/v2/acts/apify~website-content-crawler/run-sync-get-dataset-items, Method till POST och låter Send Body vara aktiverat.
  2. Säkerställ att JSON Body innehåller den dynamiska start-URL:en: {{ $('Map Request Fields').item.json.url }} i startUrls.
  3. I Apify Crawl All Limited bekräftar ni att JSON Body använder {{ $json.maxCrawlPages }} och {{ $json.maxResults }} för begränsningar.
  4. I Apify Single URL Crawl låter ni maxCrawlPages och maxResults vara fasta på 1.
  5. För alla tre Apify-noder ställer ni in frågeparametern token till er Apify API-nyckel i stället för [CONFIGURE_YOUR_API_KEY].

⚠️ Vanlig fallgrop: Om ni lämnar [CONFIGURE_YOUR_API_KEY] oförändrad i Apify-frågeparametrarna kommer det att orsaka autentiseringsfel.

Steg 4: rensa och omforma det scrapade innehållet

Förbered crawler-utdata för efterföljande vektorisering.

  1. I Sanitize Records behåller ni tilldelningarna för url som {{ $json.url }} och markdown som {{ $json.markdown }}.
  2. Öppna Refine Content Layout och behåll den angivna JavaScript-koden som mappar markdown/text till toppnivåfält och lägger till metadata som type: 'webpage' och created_at.

Steg 5: konfigurera AI-chunkning och dokumentinläsning

Dela upp innehåll i chunkar och bygg dokumentobjekt för embedding och lagring.

  1. Konfigurera Recursive Text Chunker med Chunk Size 800 och Chunk Overlap 80.
  2. I Standard Data Loader ställer ni in JSON Data till {{ $('Refine Content Layout').item.json.text }} och JSON Mode till expressionData.
  3. I metadata-värdena för Standard Data Loader ställer ni in title, url, type, section och created_at med uttryck från Refine Content Layout.
  4. Säkerställ att Recursive Text Chunker är ansluten som text-splitter för Standard Data Loader.

Steg 6: konfigurera utdata till vector store

Lagra de rensade dokumenten och embeddings i Supabase.

  1. Öppna Supabase Vector Index och ställ in Mode till insert.
  2. Ställ in Table Name till documents.
  3. Ställ in Embedding Batch Size till 800.
  4. Credential Required: Anslut era supabaseApi-inloggningsuppgifter i Supabase Vector Index.
  5. Credential Required: Anslut era googlePalmApi-inloggningsuppgifter i Gemini Embedding Generator.
  6. Säkerställ att Gemini Embedding Generator är ansluten som embedding-källa för Supabase Vector Index, och att Standard Data Loader är ansluten som dokumentkälla.

Tips: Om embeddings misslyckas, verifiera att Gemini API är aktiverat och att fakturering är aktiv för ert Google Palm-projekt.

Steg 7: testa och aktivera ert arbetsflöde

Validera körningen end-to-end och aktivera sedan arbetsflödet för användning i produktion.

  1. Klicka på Execute Workflow och skicka in Website Input Form med en test-URL och en låg sidbegränsning.
  2. Bekräfta att begäran flödar från Website Input FormMap Request FieldsConfigure Apify Options och sedan in i rätt Apify-crawler.
  3. Verifiera att poster rensas i Sanitize Records, struktureras i Refine Content Layout och lagras i Supabase Vector Index.
  4. När allt är bekräftat, slå på arbetsflödets Active-reglage för att aktivera produktionskörningar.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Apify-autentisering kan löpa ut eller kräva specifika behörigheter. Om saker slutar fungera, kontrollera först din Apify API-token i n8n-credentials och körloggarna i Apify-dashboarden.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder misslyckas på grund av tomma svar.
  • Supabase-insert kan misslyckas utan tydliga fel om pgvector inte är aktiverat eller om embedding-kolumnen har fel storlek. Dubbelkolla schemat för din documents-tabell (vector 768) innan du skyller på skraparen.

Vanliga frågor

Hur lång tid tar det att sätta upp den här Apify Supabase-automationen?

Cirka 45 minuter om dina Apify-, Supabase- och Gemini-konton är redo.

Behöver jag kodningskunskaper för att automatisera Apify Supabase-automation?

Nej. Du kopplar främst autentiseringsuppgifter och klistrar in en liten SQL-snutt i Supabase för att aktivera pgvector.

Är n8n gratis att använda för det här Apify Supabase-automationsarbetsflö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 även räkna in användning av Google Gemini API samt Apify-kostnader baserat på hur många sidor som skrapas.

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, enklast setup) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärt och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.

Kan jag anpassa det här Apify Supabase-automationsarbetsflödet för att bara skrapa en docs-undermapp?

Ja, men du gör det på två ställen. Först justerar du indata som matar in i ”Map Request Fields” så att dina start-URL:er och include/exclude-mönster bara träffar något som /docs. Välj sedan vägen ”Configure Apify Options” som matchar hur strikt du vill vara (enstaka URL för ett snabbt test, begränsad crawl för en docs-sektion). Vanliga justeringar är att sätta en tajtare sidgräns, exkludera bloggsidor och öka chunkstorleken om ditt innehåll är väldigt strukturerat.

Varför misslyckas min Apify-anslutning i det här arbetsflödet?

Oftast är det en utgången eller saknad Apify API-token i någon av HTTP request-noderna ”Run Apify Scraper”. Uppdatera token i n8n-credentials och kör sedan en liten crawl igen för att bekräfta. Om det fortfarande misslyckas, kontrollera Apify-körloggen efter blockerade sidor, omdirigeringar eller en felkonfigurerad start-URL. Rate limits och begränsningar i betalda planer kan också visa sig som ”slumpmässiga” fel när du går från 5 sidor till en fullständig webbplatscrawl.

Hur många sidor kan den här Apify Supabase-automationen hantera?

Om du självhostar n8n finns ingen hård körningsgräns (det beror främst på din server samt Apify/Gemini-kvoter). På n8n Cloud beror din månatliga körningsgräns på din plan. I praktiken börjar de flesta team med 5–10 sidor, granskar chunkkvaliteten i Supabase och skalar sedan upp till några hundra sidor när rensningsreglerna ser rätt ut.

Är den här Apify Supabase-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det här arbetsflödet har förgreningslogik (skraplägen, kontroller av sidgränser), textbearbetning och skrivningar till vektordatabas som helt enkelt är lättare att styra i n8n. Egen hosting är också viktigt när du experimenterar mycket, eftersom du inte räknar varje litet steg som en betald task. Zapier eller Make kan fungera för lätta tvåstegszaps, men RAG-inläsning tenderar att växa. Om du vill ha en second opinion på vilken väg som är enklast för din setup, prata med en automatiseringsexpert.

När detta väl rullar slutar din webbplats vara ”innehåll” och blir i stället en sökbar tillgång. Sätt upp det, testa med en liten crawl och låt sedan Supabase bli platsen som din chatbot och ditt team faktiskt kan lita på.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal