Du svarar på samma frågor om och om igen, och på något sätt börjar det “officiella” svaret glida beroende på vem som svarar och vilket dokument de senast öppnade.
Det här drabbar marknadschefer som bygger interna playbooks hårdast. Men ops-chefer som driver SOP:ar och byråägare som onboardar kunder känner av det också. En Drive Docs-bot bryter loopen med återkommande frågor och ger alla samma källa till sanning.
Det här arbetsflödet gör din Google Drive-mapp till en sökbar Q&A-assistent och loggar sedan varje chatt i Google Docs så att du kan granska vad som besvarats och förbättra dokumentationen över tid.
Så här fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutlig output:
n8n Workflow Template: Google Drive + Google Docs: konsekventa svar varje gång
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "Data Loader", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Token Splitter", pos: "b", h: 48 }
n2@{ icon: "mdi:cube-outline", form: "rounded", label: "Qdrant Vector Store", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n5@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n6@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
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/merge.svg' width='40' height='40' /></div><br/>Merge"]
n8@{ icon: "mdi:robot", form: "rounded", label: "Extract Meta Data", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Get File Contents", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Download File From Google Dr..", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Find File Ids in Google Driv..", pos: "b", h: 48 }
n12@{ icon: "mdi:vector-polygon", form: "rounded", label: "text-embeddings-3-large", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Google Folder ID", pos: "b", h: 48 }
n14@{ icon: "mdi:brain", form: "rounded", label: "gpt-4o-mini1", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Delete Qdrant Points by File..", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Qdrant Collection Name", pos: "b", h: 48 }
n17@{ icon: "mdi:cog", form: "rounded", label: "File Id List", pos: "b", h: 48 }
n18["<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/merge.svg' width='40' height='40' /></div><br/>Merge1"]
n19["<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/merge.svg' width='40' height='40' /></div><br/>Merge2"]
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/telegram.svg' width='40' height='40' /></div><br/>Confirm Qdrant Delete Points"]
n21@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n22["<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/telegram.svg' width='40' height='40' /></div><br/>Send Declined Message"]
n23["<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/>Webhook"]
n34["<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/telegram.svg' width='40' height='40' /></div><br/>Send Completed Message"]
n21 --> n15
n21 --> n22
n4 --> n3
n7 --> n2
n18 --> n20
n19 --> n3
n23 --> n13
n0 -.-> n2
n17 --> n18
n14 -.-> n15
n1 -.-> n0
n3 --> n34
n3 --> n10
n13 --> n11
n8 --> n7
n9 --> n8
n2 --> n4
n16 --> n18
n12 -.-> n2
n6 -.-> n8
n20 --> n21
n15 --> n19
n10 --> n9
n10 --> n7
n5 --> n13
n11 --> n17
n11 --> n16
n11 --> n19
end
subgraph sg1["When chat message received Flow"]
direction LR
n24@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n25@{ icon: "mdi:memory", form: "rounded", label: "Window Buffer Memory", pos: "b", h: 48 }
n26@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n27@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n28@{ icon: "mdi:vector-polygon", form: "rounded", label: "text-embeddings-3-large1", pos: "b", h: 48 }
n30@{ icon: "mdi:swap-vertical", form: "rounded", label: "Respond to User", pos: "b", h: 48 }
n31@{ icon: "mdi:cog", form: "rounded", label: "Update Chat History", pos: "b", h: 48 }
n32@{ icon: "mdi:cube-outline", form: "rounded", label: "Qdrant Vector Store Tool", pos: "b", h: 48 }
n24 --> n31
n24 --> n30
n25 -.-> n24
n32 -.-> n24
n28 -.-> n32
n27 -.-> n24
n26 --> n24
end
subgraph sg2["Flow 3"]
direction LR
n33@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
end
subgraph sg3["Flow 4"]
direction LR
n29@{ icon: "mdi:cog", form: "rounded", label: "Google Drive", 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 n5,n26 trigger
class n0,n1,n8,n15,n24 ai
class n6,n14,n27,n33 aiModel
class n25 ai
class n2,n32 ai
class n12,n28 ai
class n21 decision
class n23 api
class n23 disabled
class n33 disabled
class n29 disabled
classDef customIcon fill:none,stroke:none
class n7,n18,n19,n20,n22,n23,n34 customIcon
Problemet: din “källa till sanning” beter sig inte som en
Google Drive är platsen där kunskap hamnar för att leva. Det är också platsen där kunskap hamnar för att gömma sig. Någon skriver rätt svar i ett dokument, en annan person kopierar det till Slack, en tredje klistrar in en lätt redigerad version i ett mejl – och plötsligt har du tre “sanningar” som flyter runt. Under tiden fortsätter teamet att fråga eftersom det känns långsamt att söka i Drive, och ingen vill öppna fem dokument bara för att bekräfta en rad. Kostnaden är inte bara tid. Det är den tysta skadan av inkonsekventa budskap, fel steg i en process och beslut som tas utifrån gamla anteckningar.
Friktionen byggs på. Så här faller det isär i verkligheten.
- Folk slutar söka och börjar fråga i chatten, vilket drar in seniora personer i ständiga avbrott.
- Svaren glider eftersom den som svarade senast parafraserade ur minnet, inte från dokumentet.
- Nyanställda får olika svar beroende på vem som är online, så onboarding tar längre tid än den borde.
- Du kan inte enkelt granska i efterhand vad som sades, vilket är ett problem när kunder eller regelefterlevnad är inblandat.
Lösningen: en Drive-baserad Q&A-assistent med skriftligt spår
Det här arbetsflödet gör din Google Drive-mapp till en kunskapsbas som teamet faktiskt använder. Först hämtar det dokument från en specifik Drive-mapp, läser texten och delar upp den i mindre delar som är lättare att söka i. Sedan skapar det “embeddings” (tänk: sökbara fingeravtryck av innebörd) och sparar dem i Qdrant, en vektordatabas byggd för snabba uppslag. När någon ställer en fråga via chattgränssnittet hämtar arbetsflödet de mest relevanta textbitarna från Qdrant, skickar kontexten till en AI-agent (Google Gemini eller OpenAI-chatmodell, beroende på din setup) och genererar ett konsekvent svar förankrat i dina dokument. Till sist lägger det till konversationen i ett Google-dokument så att du får en strukturerad granskningslogg och ett sätt att se vilka ämnen som återkommer.
Arbetsflödet startar från två håll: dokumentinläsning (manuell start eller webhook) och livefrågor (chattrigger). I mitten hanterar det dokumentladdning, chunking, metadatautvinning och vektorlager. Outputen är enkel: ett svar till användaren, plus en löpande chattlogg sparad i Google Docs.
Det du får: automatisering vs. resultat
| Det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att ditt team får 12 interna frågor per dag om prissättningsregler, varumärkesformuleringar eller SOP-steg. Manuellt tar varje fråga ofta cirka 10 minuter att hantera: hitta rätt dokument, skumma igenom och svara (alltså ungefär 2 timmar per dag). Med det här arbetsflödet ställer en kollega frågan i chatten, assistenten söker i Drive-baserad kunskap på några sekunder och svaret levereras samtidigt som Google Docs loggar utbytet automatiskt. Du granskar fortfarande knepiga svar ibland, men du får tillbaka en stor del av dagen.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Drive för att lagra och hämta källdokument.
- Google Docs för att lägga till och granska chatthistorik.
- Qdrant-uppgifter (hämta dem från din Qdrant Cloud- eller serverinstallation).
- Google Gemini API-nyckel (hämta den från Google AI Studio / Google Cloud).
- OpenAI API-nyckel (hämta den från OpenAI-dashboarden för embeddings/chatt).
- Telegram-bottoken (hämta den från BotFather för notifieringar/godkännanden).
Kunskapsnivå: Medel. Du kopplar konton, lägger in API-nycklar och klistrar in ett Drive-mapp-ID och ett Qdrant-kollektionsnamn.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Dokument kommer in i systemet från Google Drive. En manuell trigger eller inkommande webhook sätter Drive-mapp-ID:t, listar fil-ID:n och hämtar sedan varje fil så att arbetsflödet kan läsa och bearbeta den.
Texten struktureras, chunkas och märks upp. Arbetsflödet extraherar råtext, delar upp den i chunkar i token-storlek och använder AI för att ta fram hjälpsam metadata (titlar, ämnen, dokumentledtrådar) så att hämtningen förblir träffsäker när biblioteket växer.
Kunskapen indexeras i Qdrant. OpenAI-embeddings genereras för varje chunk och sparas sedan i en Qdrant-kollektion. En vänt- och batchloop hjälper till att hantera större mappar utan att fastna i rate limits.
Frågor besvaras och loggas. När ett chattmeddelande kommer in hämtar RAG-assistenten de bäst matchande chunkarna från Qdrant, ber Gemini/OpenAI att formulera svaret med den kontexten, returnerar svaret och lägger till hela utbytet i Google Docs.
Du kan enkelt ändra Drive-mappkällan så att den pekar på en annan avdelnings dokument utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera trigger-typ
Konfigurera startpunkterna för både dokumentinläsningsflödet och chattassistentflödet.
- Öppna Manual Start Trigger och behåll den som primär manuell trigger för dokument-upsert-flödet.
- Öppna Incoming Webhook Trigger och sätt Path till
upsertför att aktivera webhook-baserad inläsning när ni är redo att aktivera den. - Öppna Chat Message Trigger för att aktivera startpunkten för RAG-assistentens chattflöde.
Steg 2: anslut Google Drive och definiera mappindata
Konfigurera Drive-mappen som tillhandahåller dokument och sätt upp fillistning och nedladdning.
- Öppna Set Drive Folder ID och sätt folder_id till er målmapps Drive folder ID (för närvarande
[YOUR_ID]). - Öppna List Drive File IDs och sätt Folder ID till
{{ $json.folder_id }}från Set Drive Folder ID. - Autentisering krävs: Anslut era googleDriveOAuth2Api-uppgifter i List Drive File IDs.
- Öppna Retrieve Drive File och behåll Operation som
downloadmed File ID satt till{{ $json.id }}. - Autentisering krävs: Anslut era googleDriveOAuth2Api-uppgifter i Retrieve Drive File.
Steg 3: konfigurera skydd för Qdrant-radering och inställningar för collection
Sätt målcollection i Qdrant, aggregera ID:n och bekräfta raderingar via Telegram.
- Öppna Set Qdrant Collection och sätt qdrant_collection_name till
nostr-damus-user-profiles. - Öppna Aggregate File IDs och behåll summeringen av id med aggregation satt till
append. - Öppna Merge Config och behåll Mode som
combineoch Combine By somcombineByPosition. - Öppna Telegram Delete Confirmation och verifiera Chat ID-uttrycket
{{ $env.TELEGRAM_CHAT_ID }}och varningssträngen för Message. - Autentisering krävs: Anslut era telegramApi-uppgifter i Telegram Delete Confirmation.
- Öppna Approval Check och bekräfta att den utvärderar
{{ $json.data.approved }}somtrue. - Öppna Send Rejection Notice och behåll Text som
Qdrant vector store upsert declined. - Autentisering krävs: Anslut era telegramApi-uppgifter i Send Rejection Notice.
[CONFIGURE_YOUR_API_KEY] i koden. Ersätt den innan ni kör raderingar.Steg 4: bygg flödet för dokumentextraktion och metadata-berikning
Konvertera nedladdade filer till text, extrahera strukturerad metadata och förbered dokument för embedding.
- Öppna Retrieve Drive File och notera att den matar ut parallellt till både Read File Text och Combine Streams.
- Öppna Read File Text och behåll Operation satt till
text. - Öppna Extract Document Metadata och sätt Text till
{{ $json.data }}. - Säkerställ att Gemini Chat Engine är ansluten som språkmodell för Extract Document Metadata.
- Autentisering krävs: Anslut era googlePalmApi-uppgifter i Gemini Chat Engine.
- Öppna Combine Streams och behåll Mode som
combineoch Combine By somcombineAll. - Öppna Document Loader och verifiera metadata-mappningar, inklusive
{{ $json.id }},{{ $json.name }}och fält från Extract Document Metadata. - Öppna Token Chunker och sätt Chunk Size till
3000.
Steg 5: konfigurera embeddings och Qdrant-indexering
Skapa embeddings och upserta dem i Qdrant med batchning och notifieringar vid slutförande.
- Öppna OpenAI Embedding Large och sätt Model till
text-embedding-3-large. - Autentisering krävs: Anslut era openAiApi-uppgifter i OpenAI Embedding Large.
- Öppna Qdrant Vector Index och sätt Mode till
insertoch Collection tillnostr-damus-user-profiles. - Autentisering krävs: Anslut era qdrantApi-uppgifter i Qdrant Vector Index.
- Öppna Pause Execution (används för pacing) och bekräfta att den matar vidare till Iterate Records.
- Öppna Iterate Records och behåll batchinställningarna som standard för att styra dokumentbearbetningen.
- Öppna Send Completion Notice och sätt Chat ID till
{{ $env.TELEGRAM_CHAT_ID }}med TextQdrant vector store upsert completed. - Autentisering krävs: Anslut era telegramApi-uppgifter i Send Completion Notice.
Steg 6: sätt upp RAG-assistentens chattpipeline
Konfigurera chattagenten, retrieval-verktyget och minnet för att besvara frågor med hjälp av Qdrant.
- Öppna RAG Assistant Agent och verifiera att Text är
{{ $json.chatInput }}och att systemmeddelandet matchar instruktionerna för retrieval. - Säkerställ att Gemini Chat Engine 2 är ansluten som språkmodell för RAG Assistant Agent.
- Autentisering krävs: Anslut era googlePalmApi-uppgifter i Gemini Chat Engine 2.
- Öppna Qdrant Retrieval Tool och verifiera att Tool Name är
nostr_damus_user_profilesmed Top K satt till20. - Autentisering krävs: Anslut era qdrantApi-uppgifter i Qdrant Retrieval Tool.
- Öppna OpenAI Embedding Large 2 och bekräfta att Model är
text-embedding-3-large. - Autentisering krävs: Anslut era openAiApi-uppgifter i OpenAI Embedding Large 2.
- Öppna Conversation Window Memory och sätt Context Window Length till
40. - RAG Assistant Agent matar ut parallellt till både Append Chat History och Prepare Response Output.
- Öppna Append Chat History och sätt Document URL till ert Google Doc (för närvarande
[YOUR_ID]). - Autentisering krävs: Anslut era googleDocsOAuth2Api-uppgifter i Append Chat History.
- Öppna Prepare Response Output och sätt output till
{{ $json.output }}.
Steg 7: konfigurera logiken för radering och batch-merge
Koppla ihop batchindata, raderingslogik och städsteg som används vid upsert- och delete-operationer.
- Öppna Merge Batch Inputs och behåll standardinställningarna för att slå ihop batchdata till Iterate Records.
- Öppna Remove Qdrant Points och uppdatera Qdrant-URL och API-nyckel om er Qdrant-instans inte är lokal.
- Säkerställ att OpenAI Mini Chat är ansluten som språkmodellindata till Remove Qdrant Points.
- Autentisering krävs: Anslut era openAiApi-uppgifter i OpenAI Mini Chat.
Steg 8: testa och aktivera ert arbetsflöde
Validera varje flöde och aktivera sedan arbetsflödet för användning i produktion.
- Klicka på Execute Workflow och kör från Manual Start Trigger för att verifiera dokumentinläsningsvägen.
- Bekräfta en lyckad körning: filer laddas ned, text extraheras, metadata genereras, embeddings skapas och Send Completion Notice skickas i Telegram.
- Skicka ett testmeddelande via Chat Message Trigger och verifiera att RAG Assistant Agent returnerar ett svar och att Append Chat History skriver till ert dokument.
- När ni är redo, aktivera Incoming Webhook Trigger om ni vill ta emot externa upsert-förfrågningar.
- Växla arbetsflödet till Active för att köra kontinuerligt i produktion.
Vanliga fallgropar
- Google Drive-autentisering kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera Google-kopplingen i n8n:s panel för autentiseringsuppgifter och bekräfta att Drive-mappen är delad med det anslutna kontot.
- Om du använder Wait-noder eller extern bearbetning varierar indexeringstider. Öka väntetiden om noder längre fram fallerar på tomma svar efter stora batchkörningar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt (ton, förbjudna påståenden, citeringsstil) annars kommer du att redigera output för alltid.
Vanliga frågor
Cirka 45 minuter om du redan har dina API-nycklar redo.
Nej. Du klistrar mest in ID:n/nycklar och kopplar konton. Den enda “kodiga” delen är valfria justeringar av chunking eller borttagningsbeteende.
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 volymer. Du behöver också räkna in OpenAI/Gemini-användning (för många team är det några dollar i månaden, mer om du indexerar många långa dokument).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och klarar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, men det är ett byte, inte en ombyggnad. Du kan ersätta Chat Message Trigger med en Slack-trigger och sedan skicka meddelandetexten in i samma RAG Assistant Agent-nod. Vanliga anpassningar är att byta Drive-mapp per team, justera chunkstorlek för bättre träffsäkerhet och skriva chattloggar till ett dokument per kanal i stället för en delad logg.
Oftast handlar det om utgånget OAuth-samtycke eller att fel Google-konto är anslutet. Anslut Google Drive på nytt i n8n och bekräfta sedan att mappen är åtkomlig för det kontot och att filtyperna du läser in stöds av ditt textutdragssteg. Om det bara fallerar på vissa filer är det ofta ett behörighetsundantag eller ett dokumentformat som kräver en annan loader.
Många, så länge du dimensionerar indexeringskörningen på ett vettigt sätt.
För RAG-liknande arbetsflöden är svaret oftast ja. Zapier och Make är bra för enkla “om detta så det”-automationer, men vektorsökning, chunking och flerstegs AI-hämtning blir snabbt klumpigt (och dyrt). n8n låter dig också self-hosta med obegränsade körningar, vilket spelar roll när folk börjar ställa frågor hela dagen. Nackdelen är setupen: du lägger lite mer tid på att konfigurera nycklar och lagring. Om du vill att någon kvalitetssäkrar arkitekturen, prata med en automationsexpert.
När detta väl rullar slutar de repetitiva frågorna att vara en daglig skatt. Dokumenten förblir användbara och svaren förblir konsekventa.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.