Din produktinfo finns ”någonstans i Google Drive”, vilket oftast betyder att den är ingenstans när en kund behöver ett svar direkt. Support pingar sälj, sälj pingar drift, och alla slösar tid på att leta efter samma specifikationsblad eller SKU-detaljer igen.
Den här Drive Supabase Q&A-setupen träffar supportansvariga först, men e-handelsansvariga och driftteam känner av samma friktion. Du får konsekventa, källstödda svar (med länkar) utan att behöva lära nya medarbetare var allt ligger.
Det här arbetsflödet hämtar produkt-JSON-filer från Google Drive, lagrar dem i Supabase för semantisk sökning och kör sedan en chatbot via Telegram eller en webbplats-webhook så att kunder (och ditt team) kan ställa frågor och få felfria, strukturerade svar.
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: Google Drive + Supabase: direkta produktsvar
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set File ID", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Google Drive1", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Extract from File", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "Default Data Loader1", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Character Text Splitter1", pos: "b", h: 48 }
n6@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Mistral Cloud2", pos: "b", h: 48 }
n7@{ icon: "mdi:cube-outline", form: "rounded", label: "Insert into Supabase Vectors..", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Wait1", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Wait4", pos: "b", h: 48 }
n10@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
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/>extract metadata"]
n18@{ icon: "mdi:cog", form: "rounded", label: "Google Drive get file", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "map data into fields", pos: "b", h: 48 }
n20["<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/>convert data into chunks"]
n8 --> n19
n9 --> n0
n1 --> n18
n2 --> n0
n0 --> n17
n17 --> n1
n3 --> n8
n4 -.-> n7
n19 --> n20
n18 --> n3
n5 -.-> n4
n20 --> n7
n6 -.-> n7
n7 --> n9
n10 --> n2
end
subgraph sg1["When chat message received Flow"]
direction LR
n11@{ icon: "mdi:cube-outline", form: "rounded", label: "Supabase Vector Store", pos: "b", h: 48 }
n12@{ icon: "mdi:brain", form: "rounded", label: "Mistral Cloud Chat Model4", pos: "b", h: 48 }
n13@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Mistral Cloud", pos: "b", h: 48 }
n14@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory1", pos: "b", h: 48 }
n15["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook1"]
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n21@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n22@{ icon: "mdi:robot", form: "rounded", label: "product catalog agent", pos: "b", h: 48 }
n15 --> n16
n16 --> n22
n14 -.-> n22
n11 -.-> n22
n13 -.-> n11
n12 -.-> n22
n21 --> n22
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 n10,n21 trigger
class n4,n5,n22 ai
class n12 aiModel
class n14 ai
class n7,n11 ai
class n6,n13 ai
class n15 api
class n17,n20 code
classDef customIcon fill:none,stroke:none
class n17,n20,n15 customIcon
Problemet: produktsvar finns på för många ställen
Om du säljer mer än en handfull produkter blir ”Vilket material är det?” snabbt en miniutredning. Specar ligger i en fil, bilder i en annan, och den senaste länken är begravd i en tråd från förra månaden. Det är inte bara långsamt. Det är riskabelt, eftersom medarbetare börjar gissa, kunder får motstridiga uppgifter och returerna smyger upp. Värst av allt: arbetet upprepas. Samma fem frågor dyker upp varje dag, och var och en triggar en ny runda av sökande och kopierande.
Friktionen byggs på. Små förseningar blir en backlog, och sedan lägger teamet sina bästa timmar på skattjakter.
- Folk svarar utifrån minnet, och ”rätt” spec ändras beroende på vem som svarar.
- Nyanställda behöver veckor för att lära sig var produktens ”sanning” faktiskt finns.
- Kunder får vänta medan någon letar upp rätt SKU, bild eller URL till specifikationsblad.
- Även när du hittar filen måste du fortfarande omformatera svaret till något läsbart.
Lösningen: Google Drive-inläsning + Supabase RAG-chatbot
Det här arbetsflödet gör dina produktfiler i Google Drive till en sökbar kunskapsbas i Supabase och lägger sedan ett Q&A-lager ovanpå som svarar på vanlig svenska med strukturerade detaljer och länkar. Först kör du en inläsningsomgång som listar produkt-JSON-filer i en Drive-mapp, laddar ner dem och normaliserar fälten så att de håller sig konsekventa. Sedan delar den upp innehållet i läsbara delar, skapar embeddings med en Mistral-modell och lagrar vektorerna i Supabase. Därefter kan chatbottensvara på frågor från Telegram eller en webbplats-webhook genom att söka i Supabase vektorlager och svara med produktnamn, attribut, bilder och URL:er. Om en produkt inte finns i katalogen säger agenten det artigt i stället för att hitta på.
Arbetsflödet har två ingångar: en manuell körning för att uppdatera kunskapsbasen och en livechatt-trigger för frågor. I mitten används Mistral för chattintelligens och embeddings, medan Supabase sköter semantisk sökning. Slutligen returnerar agenten ett formaterat svar till Telegram eller din webbplats, baserat på det som finns i products-datan som lagras i Supabase.
Vad 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 får 20 produktfrågor om dagen via chatt och e-post, och att varje svar tar cirka 10 minuter för att hitta rätt Drive-fil, kopiera specar och klistra in länkar. Det är ungefär 3 timmar per dag av rent uppslagsarbete. Med det här arbetsflödet är ”arbetet” att ställa frågan i Telegram eller skicka den från din webbplats-webhook, vilket tar under en minut. Boten svarar på sekunder, och teamet kliver bara in vid specialfall. Det är cirka 2 timmar tillbaka de flesta dagar, utan att du behöver ändra hur ni hanterar produktfiler.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Google Drive för att lagra dina produkt-JSON-filer
- Supabase för att lagra vektorer och köra semantisk sökning
- Mistral API-nyckel (hämta den i din Mistral Cloud-dashboard)
Kunskapsnivå: Medel. Du kopplar in autentiseringar, bekräftar din Drive-mapp och Supabase-tabell och testar prompts med några riktiga frågor.
Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Så fungerar det
Din kataloguppdatering startar på beställning. Du kör inläsnings-triggern i n8n när du vill fylla på eller uppdatera kunskapsbasen (nya produkter, uppdaterade specar, säsongskollektioner).
Google Drive-filer hämtas och normaliseras. Arbetsflödet listar filer i en Drive-mapp, laddar ner varje JSON, tolkar den och mappar sedan innehållet till korrekt formaterade fält så att den efterföljande sökningen blir stabil.
Mistral skapar embeddings, Supabase lagrar dem. Produkttext slås ihop och delas upp i överlappande chunkar (cirka 2 000 tecken), embeddings genereras och allt läggs in i din Supabase-vektortabell med metadata som titel, URL och chunk-index.
Frågor kommer in via chatt eller en webbplats-webhook. En Telegram-chatt-trigger eller en inkommande webhook skickar meddelandet till katalogagenten, som söker i Supabase efter relevanta chunkar och svarar med strukturerade produktdetaljer och länkar.
Du kan enkelt ändra Drive-mappen och utdataformateringen så att det matchar din butik och din tonalitet. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera trigger-noderna
Konfigurera arbetsflödets startpunkter för manuella körningar av ingestion och för chattförfrågningar som ska fråga kunskapsbasen.
- Öppna Manual Execution Start och behåll den som manuell trigger för körningar av dokumentingestion.
- Öppna Chat Message Trigger för att ta emot chattinmatning från n8n:s chattgränssnitt.
- Öppna Incoming Webhook Trigger och ställ in Path till
b4c843be-698d-40c6-8e31-9370f5e165e0, HTTP Method tillPOSToch Response Mode tillresponseNode. - Bekräfta exekveringsflödet: Chat Message Trigger → Catalog Support Agent och Incoming Webhook Trigger → Map Chat Fields → Catalog Support Agent.
Steg 2: Anslut Google Drive och konfigurera filidentifiering
Konfigurera Drive-åtkomst så att arbetsflödet kan hitta och iterera igenom filer som ska ingest:as.
- Öppna Retrieve Drive Files och ställ in Resource till
fileFolder, Search Method tillqueryoch Limit till150. - I Retrieve Drive Files konfigurerar ni mappen i Filter → folderId och behåller Options → Fields med
id,name,webViewLink,mimeTypeoch*. - Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-credentials i Retrieve Drive Files.
- Öppna Iterate Records för att bearbeta objekt i batchar; den tar emot objekt från Retrieve Drive Files och cyklar efter Delay Long.
Steg 3: Härled metadata och ladda ner filer
Normalisera filmetadata, tilldela identifierare och ladda ner varje fil för parsning.
- Öppna Derive File Metadata och behåll JavaScript Code som bygger
fileUrlfrån SharePoint-liknande metadata eller befintligLinkingUrl. - Öppna Assign File Identifiers och bekräfta tilldelningarna: file_id →
{{ $json.id }}, file_type →{{ $json.mimeType }}, file_title →{{ $json.name }}, file_url →{{ $json.webViewLink }}, last_modified_date →{{ $json.modifiedTime }}. - Öppna Download Drive File och ställ in Operation till
download, och ställ sedan in File ID till{{ $json.file_id }}. - Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-credentials i Download Drive File.
Steg 4: Parsea och mappa dokumentinnehåll
Parsea den nedladdade filen och mappa nyckelfält till en standardiserad struktur före chunkning.
- Öppna Parse File Content och ställ in Operation till
fromJson. - Öppna Delay Short och ställ in Amount till
8sekunder för att ge utrymme för nedströms bearbetning. - Öppna Map Parsed Fields och bekräfta fältmappningarna: title →
{{ $json.data.page_title }} && {{ $json.data.title }}, summary →{{ $json.data.comprehensive_summary }}, topics →{{ $json.data.key_topics }}, process markdown →{{ $json.data.processed_markdown }}, raw markdwon →{{ $json.data.raw_markdown }}, cleaned markdown →{{ $json.data.fit_markdown }}, URL →{{ $json.data.url}}.
Steg 5: Chunka, skapa embeddings och lagra vektorer i Supabase
Dela upp innehåll i chunkar, lägg till metadata och lagra embeddings i Supabase för återhämtning.
- Öppna Chunk Text Payload och behåll JavaScript-logiken som kombinerar
summary,cleaned markdownochprocess markdown, och sedan splittrar medDEFAULT_CHUNK_SIZE = 2000ochDEFAULT_OVERLAP = 0.3. - Öppna Store Vectors in Supabase och ställ in Mode till
insert, Table Name tillwebsite_markoch Query Name tillmatch_website_mark. - Öppna Delay Long och ställ in Amount till
30sekunder; exekveringen loopar sedan tillbaka till Iterate Records för nästa fil. - Öppna Character Chunk Splitter och ställ in Chunk Size till
100000för AI-dokumentpipen. - Öppna Standard Document Loader och ställ in JSON Data till
{{ $json.content }}, JSON Mode tillexpressionDataoch metavärden som source_url →{{ $json.metadata.url }}, loc →{{ $json.metadata.loc }}, title →{{ $json.metadata.title }}, page_no →{{ $json.metadata.page }}och topics →{{ $('Map Parsed Fields').item.json['topics '] }}. - Mistral Embeddings Generator är ansluten som embedding-modell för Store Vectors in Supabase—lägg till credentials i Store Vectors in Supabase, inte i embedding-subnoden.
Steg 6: Konfigurera retrieval och RAG-assistenten
Konfigurera vektor-retrieval och den konversationsagent som använder RAG för att besvara chattförfrågningar.
- Öppna Mistral Chat Model och ställ in Model till
mistral-medium-latestoch Temperature till0.7. - Öppna Supabase Vector Retrieval och ställ in Mode till
retrieve-as-tool, Top K till10, Tool Name tilldocuments, Tool Description tillUse RAG to look up information in the knowledgebase., Table Name tillproductsoch Query Name tillmatch_product. - Öppna Catalog Support Agent och ställ in Text till
{{ $json.chatInput }}, Prompt Type tilldefineoch behåll systemprompten som instruerar agenten att fråga Supabase efter katalogförslag. - Öppna Map Chat Fields och verifiera chatInput →
{{ $json.chatInput || $json.body?.chatInput || $json.body?.[0]?.chatInput }}och sessionId →{{ $json.sessionId || $json.body?.sessionId || $json.body?.[0]?.sessionId }}. - Öppna Conversation Memory Buffer och ställ in Context Window Length till
15; detta minne är kopplat till Catalog Support Agent. - Mistral Embeddings Lookup är ansluten som embedding-modell för Supabase Vector Retrieval—lägg till credentials i Supabase Vector Retrieval, inte i embedding-subnoden.
- Conversation Memory Buffer är en subnod till Catalog Support Agent—lägg till credentials i Catalog Support Agent, inte i minnes-subnoden.
Steg 7: Testa och aktivera ert arbetsflöde
Verifiera dokumentingestion och chattsvar innan ni aktiverar arbetsflödet för produktion.
- Klicka på Execute Workflow på Manual Execution Start för att ingest:a Drive-filer och bekräfta att Store Vectors in Supabase tar emot chunkat innehåll med metadata.
- Skicka ett testmeddelande via Chat Message Trigger eller POST:a till Incoming Webhook Trigger-sökvägen och bekräfta ett svar från Catalog Support Agent.
- Lyckad exekvering ska visa dataflöde från Retrieve Drive Files → Iterate Records → Store Vectors in Supabase och chattfrågor som hämtar resultat via Supabase Vector Retrieval.
- När allt är verifierat, växla arbetsflödet till Active för produktion.
Vanliga fallgropar
- Google Drive-autentisering kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först n8n:s credential-test och mappens delningsinställningar.
- Om du använder Wait-noder eller extern bearbetning varierar timing. Det här arbetsflödet pausar mellan filer (inklusive en längre fördröjning på 30 sekunder), så öka väntetiden om Supabase-insertar misslyckas på grund av rate limits eller tomma payloads.
- Standardprompter i AI-noder är generiska. Lägg in din varumärkeston tidigt, annars kommer du redigera utdata för alltid, särskilt kring enheter, storleksformuleringar och friskrivningar om ”det vi inte vet”.
Vanliga frågor
Cirka en timme om din Drive-mapp och ditt Supabase-projekt är redo.
Nej. Du kopplar konton, klistrar in en API-nyckel och justerar några fält. Den enda ”tekniska” delen är att verifiera din Supabase-tabell och testa med riktiga frågor.
Ja. n8n har ett gratis self-hosted-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 Mistral API-användning för chatt och embeddings, vilket kan lägga på en mindre kostnad när frågor och dokument skalar upp.
Två alternativ: n8n Cloud (hanterat, enklast setup) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, men räkna med att lägga lite tid på mappningen. Du uppdaterar steget ”Map Parsed Fields” så att dina JSON-nycklar (som ”Item Number” eller ”Spec Sheet URL”) hamnar i konsekventa fält. Du kan också justera chunking-beteendet i textdelningsdelen om dina filer är väldigt korta eller väldigt långa, och finjustera agentprompten så att svaren matchar din ton. Vanliga anpassningar är att bara returnera varianter som finns i lager, prioritera vissa kollektioner och alltid visa en rad med ”källänk”.
Oftast beror det på att OAuth-åtkomst har löpt ut eller att Drive-kontot har tappat behörighet till mappen. Anslut Google Drive-credentialn igen i n8n och bekräfta sedan att mappen fortfarande är delad med det kontot. Om det bara fallerar på vissa filer, kontrollera om arbetsflödet försöker ladda ner filer som inte är JSON, eftersom parsningen skapar fel direkt efter nedladdning.
Många, så länge din Supabase-tabell och din n8n-plan hänger med.
För en RAG-chatbot är n8n oftast det mer praktiska valet. Du får mer flexibel logik, du kan self-hosta för obegränsade körningar och noder i LangChain-stil för embeddings, vektorlager och minne gör den här typen av setup betydligt mindre ihoptejpad. Zapier eller Make kan fungera om du gör enkla uppslag, men när du lägger till chunking, embeddings och ”svara bara från kunskapsbasen” blir det både klumpigt och dyrt. Den största vinsten är ärligt talat kontroll: du kan se varje steg och ändra det när ditt katalogformat utvecklas. Vill du ha hjälp att välja? Prata med en automatiseringsexpert.
När detta väl rullar slutar produktkunskap vara en skattjakt. Arbetsflödet tar hand om det repetitiva uppslagsarbetet så att du kan fokusera på riktig support och riktiga säljsamtal.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.