Företagsresearch ser enkelt ut tills du faktiskt gör det. Du öppnar en webbplats, kopierar några rader till ett dokument, plockar ”Om oss”-text, letar efter tjänster och slutar på något sätt med tre olika versioner av samma ”profil” utspridda över flikar och kalkylark.
Tillväxtmarknadsförare märker det när de behöver snabb positioneringsinsikt. En sales ops-ansvarig märker det när säljare fortsätter logga röriga anteckningar. Och om du driver en byrå gör du det här sannolikt för varje ny kund och konkurrent. Den här Supabase Drive intel-automationen gör en URL till en felfri, återanvändbar företagsprofil.
Du får se hur workflowet fångar en webbplats, väljer grundläggande eller djup skrapning, extraherar konsekventa fält med AI, lagrar allt i Supabase och sparar en JSON-backup i Google Drive för att du ska kunna känna dig trygg.
Så fungerar automationen
Hela n8n-workflowet, från trigger till slutresultat:
n8n Workflow Template: Supabase + Google Drive: bolagsprofiler klara
flowchart LR
subgraph sg0["On 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/supabase.svg' width='40' height='40' /></div><br/>Supabase"]
n1@{ icon: "mdi:brain", form: "rounded", label: "Mistral Cloud Chat Model3", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "find competitor", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", 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/supabase.svg' width='40' height='40' /></div><br/>Supabase4"]
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/form.svg' width='40' height='40' /></div><br/>On form submission"]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "basic web scraper", 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/supabase.svg' width='40' height='40' /></div><br/>social media db"]
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/supabase.svg' width='40' height='40' /></div><br/>keywords"]
n13@{ icon: "mdi:brain", form: "rounded", label: "Mistral Cloud Chat Model5", pos: "b", h: 48 }
n14@{ icon: "mdi:robot", form: "rounded", label: "Information Extractor1", pos: "b", h: 48 }
n15@{ icon: "mdi:brain", form: "rounded", label: "Mistral Cloud Chat Model6", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "Google Drive2", pos: "b", h: 48 }
n18@{ icon: "mdi:brain", form: "rounded", label: "Mistral Cloud Chat Model2", pos: "b", h: 48 }
n20@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n21@{ icon: "mdi:wrench", form: "rounded", label: "Web Search tool", pos: "b", h: 48 }
n22@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n23@{ icon: "mdi:robot", form: "rounded", label: "MCP based scraper FIRECRAWLER", pos: "b", h: 48 }
n24@{ icon: "mdi:cog", form: "rounded", label: "Convert to File for storage", pos: "b", h: 48 }
n25@{ icon: "mdi:cog", form: "rounded", label: "Convert to File for storage1", pos: "b", h: 48 }
n26@{ icon: "mdi:cog", form: "rounded", label: "save to Google Drive1", pos: "b", h: 48 }
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/supabase.svg' width='40' height='40' /></div><br/>save to Supabase"]
n9 --> n23
n0 --> n4
n0 --> n11
n0 --> n12
n12 --> n22
n6 --> n22
n21 -.-> n23
n4 --> n6
n27 --> n22
n10 --> n14
n8 --> n9
n26 --> n22
n14 --> n27
n14 --> n25
n5 -.-> n4
n18 -.-> n23
n1 -.-> n4
n13 -.-> n10
n15 -.-> n14
n20 -.-> n23
n24 --> n16
n25 --> n26
n23 --> n0
n23 --> n24
end
subgraph sg1["Flow 2"]
direction LR
n7@{ icon: "mdi:cog", form: "rounded", label: "Crawl and Scrape", pos: "b", h: 48 }
end
subgraph sg2["Flow 3"]
direction LR
n19@{ icon: "mdi:cog", form: "rounded", label: "Firecrawl list1", pos: "b", h: 48 }
end
subgraph sg3["Flow 4"]
direction LR
n17@{ icon: "mdi:cog", form: "rounded", label: "Firecrawl tools1", pos: "b", h: 48 }
end
subgraph sg4["Flow 5"]
direction LR
n3@{ icon: "mdi:cog", form: "rounded", label: "execute tools", pos: "b", h: 48 }
end
subgraph sg5["Flow 6"]
direction LR
n2@{ icon: "mdi:cog", form: "rounded", label: "list tools", pos: "b", h: 48 }
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 n8 trigger
class n4,n5,n10,n14,n20,n23 ai
class n1,n13,n15,n18 aiModel
class n21 ai
class n9 decision
classDef customIcon fill:none,stroke:none
class n0,n6,n8,n11,n12,n27 customIcon
Problemet: företagsresearch blir copy-paste-kaos
De flesta team misslyckas inte med research för att de är lata. De misslyckas för att processen är skör. En person skriver ”B2B SaaS-plattform”, en annan skriver ”mjukvaruverktyg” och en tredje klistrar in hela startsidan i ett anteckningsfält. Sedan ber någon om en lista med konkurrenter eller SEO-nyckelord och du inser att informationen är utspridd, inkonsekvent och svår att jämföra. Det är också långsamt. Gör du detta 10 gånger på en vecka har du bränt en eftermiddag på att bara flytta text, utan att lära dig något nytt.
Det blir snabbt mycket. Här är var det oftast faller isär i verkligt arbete.
- Du lägger cirka 20–30 minuter per företag på att bara hitta samma ”kärnfakta” igen.
- Profiler blir ofullständiga, så du återvänder till samma webbplatser senare och gör om jobbet.
- Fria anteckningar går dåligt att söka i, vilket gör att du inte kan filtrera pålitligt på nisch, ICP eller tjänster.
- Det finns ingen hållbar backup, så om ett ark skrivs över eller ett verktyg ändras är ”källan” borta.
Lösningen: gör valfri URL till strukturerad intel i Supabase (med Drive-backuper)
Det här workflowet börjar med en enkel formulärinlämning där du klistrar in en webbplats-URL och väljer ”grundläggande” eller ”djup” skrapning. Därifrån samlar det in innehåll från webbplatsen (antingen en snabbare crawl för grundläggande, eller en mer omfattande Firecrawl-baserad skrapning för djup), och använder sedan AI-extraktion för att omvandla rörig webbtext till en strukturerad företagsprofil. Profilen innehåller praktiska fält du kan återanvända, som mission/positionering, tjänster, kontaktuppgifter och sociala länkar (när de finns), plus SEO-nyckelord. Till sist lagras den strukturerade posten i Supabase så att du kan söka, filtrera och återanvända den, och en fullständig JSON-kopia arkiveras i Google Drive så att du alltid har en portabel backup. Om du väljer djup-läge kör den också en andra AI-agent för att hitta konkurrenter och sparar dem i Supabase som länkade poster.
Workflowet startar när en URL når webhook-formuläret. En router väljer skrapdjup, och AI normaliserar resultatet till konsekventa JSON-fält. Supabase blir ditt ”system of record”, och Google Drive håller råa JSON-filer för spårbarhet och enkel delning.
Vad du får: automation vs. resultat
| Det här workflowet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du researchar 15 företag för en nischad landningssida och en mindre outbound-lista. Manuellt, om du lägger cirka 25 minuter per webbplats på att skumma sidor, kopiera anteckningar och skapa ”någon slags” profil, blir det ungefär 6 timmar. Med det här workflowet skickar du in varje URL på under en minut, väntar på bearbetningen och granskar den strukturerade profilen i Supabase. Även om du lägger 3 minuter på att rimlighetskontrollera varje post hamnar du närmare en timme totalt, och dessutom får du en databas du kan återanvända nästa månad.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
- Supabase för att lagra strukturerade företagsposter.
- Google Drive för att arkivera JSON-backuper automatiskt.
- Tavily API-nyckel (hämta den i din Tavily-dashboard) för konkurrentidentifiering i djup-läge.
Kunskapsnivå: Medel. Du kopplar in behörigheter, bekräftar tabellnamn i Supabase och uppdaterar en API-nyckel i en HTTP-header.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Formulärinlämningen triggar körningen. Du klistrar in en webbplats-URL och väljer skraptyp (grundläggande eller djup). Det enda valet avgör hur mycket tid och djup du vill ha.
Workflowet routar till rätt skrapare. Grundläggande läge crawlar och samlar in rå webbplatstext, och sedan formar en AI-extraktor det till en förutsägbar JSON-profil. Djup-läget använder Firecrawl-verktyg och webbsök för att skapa en rikare profil, oftast med bättre täckning av tjänster, positionering och kontaktuppgifter.
Strukturerade data sparas i Supabase. Workflowet skriver företagsposten till dina företags-tabeller och sparar även relaterade data som sociala länkar och SEO-nyckelord (så att du kan fråga efter dem senare i stället för att begrava dem i anteckningar).
Google Drive får en komplett JSON-backup. Workflowet konverterar profilen till en fil och laddar upp den till en Drive-mapp du väljer. Djup-läget kör också konkurrentidentifiering och lagrar konkurrentrader länkade till company_id.
Du kan enkelt ändra extraktionsschemat så att det matchar dina Supabase-tabeller utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera formulärtriggern
Konfigurera det inkommande formuläret som samlar in webbplatsens URL och inställningar för scraping, och routa sedan begäran baserat på valt läge.
- Öppna Form Submission Trigger och ställ in Form Title till
profiler. - Ställ in Form Description till
create am profile for the company. - Bekräfta att formulärfälten inkluderar Website url och rullgardinsmenyer för Scrapping type , Competitor anaylsis och Social Media scraping med de listade alternativen.
- I Route Scrape Mode, behåll regelvillkoren som kontrollerar att
={{ $json['Scrapping type '] }}är lika medbasicellerdeep scraping. - Koppla Form Submission Trigger till Route Scrape Mode som första exekveringssteg.
Scrapping type med ett avslutande mellanslag. Om ni ändrar etiketten, uppdatera uttrycken i Route Scrape Mode.Steg 2: anslut Supabase
Konfigurera Supabase-lagring för företagsprofiler, konkurrenter, sociala länkar och SEO-nyckelord. Det här arbetsflödet använder flera Supabase-noder—säkerställ att de delar samma databasanslutning och schema.
- I Store Company Record, ställ in Table till
companiesoch mappa fält med uttryck som={{ $json.output.company_name }}och={{ $json.output.about_summary.mission }}. - I Store Basic Profile, ställ in Table till
company_basicprofilesoch mappa fält med uttryck som={{ $json.output['Company Summary'] }}. - I Save Social Links, ställ in Table till
social_linksoch mappa company_id till={{ $('Store Company Record').item.json.id }}. - I Record SEO Keywords, ställ in Table till
seo_keywordsoch mappa company_id till={{ $json.company_id }}och keyword till={{ $('Store Company Record').item.json.seo_keywords }}. - I Save Competitor Row, ställ in Table till
competitorsoch mappa company_id till={{ $('Store Company Record').item.json.id }}. - Inloggningsuppgifter krävs: Anslut era supabaseApi-uppgifter i Save Competitor Row.
Steg 3: konfigurera AI-scraping och parsning
Konfigurera agenten för djup scraping, upptäckt av konkurrenter och tillhörande parsningverktyg för strukturerad dataextraktion.
- I Deep Firecrawl Scraper, ställ in Text till
={{ $json['Website url'] }}och behåll Prompt Type somdefinemed hasOutputParser aktiverat. - Säkerställ att Mistral Chat Deep är ansluten som språkmodell för Deep Firecrawl Scraper med Model inställt på
mistral-small-latest. - Verifiera att Parse Profile JSON är ansluten som output parser för Deep Firecrawl Scraper; lägg till eventuella LLM-inloggningsuppgifter i Mistral Chat Deep, inte i parsern.
- Öppna Web Search Request och ställ in värdet för headern Authorization till er Tavily-token i stället för
[CONFIGURE_YOUR_TOKEN]; behåll JSON-body som angivet. - I Discover Competitors, ställ in Text till
={{ $json.name }} {{ $json.location.headquarters }}och behåll Prompt Type somdefine. - Säkerställ att Mistral Chat Core är ansluten som språkmodell för Discover Competitors med Model inställt på
mistral-small-latest. - Bekräfta att Parse Competitor JSON är ansluten som output parser för Discover Competitors; parser-noder lagrar inte inloggningsuppgifter.
Steg 4: konfigurera profilbearbetning och filutdata
Konvertera strukturerade utdata till filer och ladda upp dem till Google Drive, samtidigt som ni hanterar flödet för extrahering av grundprofil.
- I Convert Profile File, ställ in Operation till
toJsonoch File Name till={{ $json.output.company_name }}. - I Upload Detailed File, ställ in Name till
={{ $json.output.company_name }}(detailed)och behåll Drive inställt påMy Drive. - Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-uppgifter i Upload Detailed File.
- I Basic Web Analyzer, ställ in Text till
={{ $json.data.text }}och säkerställ att Mistral Chat Basic är den anslutna språkmodellen. - I Extract Brand Details, ställ in Text till
={{ $json.output }}och behåll det angivna JSON-schemaexemplet. - I Convert Basic File, ställ in Operation till
toJsonoch File Name till={{ $json.output.NAME }}. - I Upload Basic File, ställ in Name till
={{ $('Extract Brand Details').item.json.output.NAME }}och behåll Drive inställt påMy Drive. - Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-uppgifter i Upload Basic File.
for crawlee till er kedja för crawl och analys (till exempel Utility: Crawl Site Content → Basic Web Analyzer).Steg 5: konfigurera grenar för konkurrenter och SEO
Hantera parallell lagring av konkurrenter, sociala länkar och SEO-nyckelord efter att företagsraden har skapats.
- Säkerställ att Deep Firecrawl Scraper skickar utdata till både Store Company Record och Convert Profile File parallellt.
- Verifiera att Store Company Record skickar utdata till Discover Competitors, Save Social Links och Record SEO Keywords parallellt.
- Bekräfta att Discover Competitors kopplas till Save Competitor Row, och att båda sedan routar till No-Op Terminus för att avsluta arbetsflödet.
- Verifiera att Extract Brand Details skickar utdata till både Store Basic Profile och Convert Basic File parallellt.
- Använd No-Op Terminus som sista mottagare för alla parallella grenar (konkurrenter, SEO-nyckelord, sociala länkar och filuppladdningar).
Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test, bekräfta utdata och aktivera arbetsflödet för användning i produktion.
- Klicka på Execute Workflow och skicka in Form Submission Trigger med en giltig Website url och Scrapping type inställd på
deep scraping. - Bekräfta att Store Company Record skapar en rad i
companiesoch att Save Social Links och Record SEO Keywords skriver relaterade poster parallellt. - Verifiera att Save Competitor Row lagrar konkurrentdata i
competitorsoch att Upload Detailed File och Upload Basic File lägger JSON-filer i Google Drive. - När allt fungerar, slå om arbetsflödet till Active för att möjliggöra realtidsbearbetning av nya formulärinskick.
Vanliga fallgropar
- Supabase-credentials kan löpa ut eller kräva specifika behörigheter. Om saker skapar fel, kontrollera först API-inställningarna i ditt Supabase-projekt och n8n:s credential-koppling på varje Supabase-nod.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder misslyckas på tomma svar.
- Google Drive-uppladdningar misslyckas oftare än man tror när mapp-ID:t är fel eller åtkomst gavs till fel Google-konto. Bekräfta mappens delningsinställningar och vald Drive-credential.
Vanliga frågor
Räkna med ungefär en timme om dina Supabase-tabeller redan finns.
Nej. Du kopplar främst konton och matchar fält mot ditt Supabase-schema. Den enda ”tekniska” delen är att klistra in din Tavily API-nyckel i workflowets header.
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 AI- och skrapkostnader från leverantörer som Tavily, Mistral eller Firecrawl, beroende på hur djupt du skrapar.
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, men gör det medvetet. Uppdatera JSON-schemat som används av extraktions-/parsningsnoderna (structured output parser och information extractor), och spegla sedan ändringarna i Supabase insert-noderna som ”Store Company Record”, ”Store Basic Profile” och de relaterade inserterna för ”Save Social Links” och ”Record SEO Keywords”. Vanliga anpassningar är att lägga till ett ”target_personas”-fält, spara anteckningar om prismodell och dela upp kontakter i en separat tabell. Om du bara ändrar fältnamn på ett ställe får du tomma kolumner och tror att skraparen misslyckades fast den inte gjorde det.
Oftast är det fel nyckel eller fel projekt-URL i din Supabase-credential.
På n8n Cloud beror det på planens månadsvisa körningar, och djupa skrapningar kan förbruka fler körningar eftersom de kör extra steg som konkurrentidentifiering. Om du självhostar finns inget körningstak från n8n i sig, men serverresurser och skrap-/AI-leverantörernas rate limits blir flaskhalsen. I praktiken börjar många team med några dussin företag per dag och skalar därifrån när de är nöjda med schemat. Om du planerar att processa hundratals per dag, lägg in throttling och håll koll på leverantörsgränser.
Ofta, ja, om du bryr dig om strukturerad extraktion och databasskrivningar. n8n är mer bekvämt för flersteglogik (routing mellan grundläggande och djup, parsa JSON, spara till flera tabeller) och straffar dig inte för förgreningar. Självhosting är också viktigt när du vill köra många flöden utan att bevaka task counts. Zapier eller Make kan fortfarande vara bra för ett lätt ”URL in, rad ut”-flöde. Om du är osäker, prata med en automationsexpert och beskriv din volym och dina schemabehov.
När det här väl rullar blir ”researcha ett företag” en snabb infångning, inte en halvtimmes omväg. Workflowet tar hand om de repetitiva delarna, och din Supabase-databas förblir tillräckligt felfri för att du ska kunna lita på den.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.