Dina lektioner finns i Google Docs, men din frågebank finns … överallt. Ett dokument här, ett kalkylark där och en halvfärdig uppsättning frågor i någons anteckningar eftersom att formatera dem ”korrekt” är ett helt eget jobb.
Den här automatiseringen av frågebank slår hårdast mot instruktionsdesigners, om vi ska vara ärliga. Men utbildningsansvariga som behöver få ut onboarding snabbt och kurskreatörer som vill hålla konsekvensen känner samma tröghet. Målet är enkelt: gör om en Google Docs-lektion till granskningsklara öppna frågor och flervalsfrågor i Google Sheets, utan att skriva om och omformatera i timmar.
Nedan ser du vad arbetsflödet gör, varför det spelar roll och hur du anpassar det så att teamet kan godkänna frågor i stället för att bråka med kopiera-klistra in.
Så fungerar automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Google Docs till Google Sheets: quizutkast snabbt
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:cube-outline", form: "rounded", label: "Qdrant Vector Store", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Refresh collection"]
n4@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Default Data Loader", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Token Splitter", 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/code.svg' width='40' height='40' /></div><br/>Converto di MD"]
n8@{ icon: "mdi:cog", form: "rounded", label: "Get Doc", pos: "b", h: 48 }
n9@{ icon: "mdi:cube-outline", form: "rounded", label: "Vector Store Retriever", pos: "b", h: 48 }
n10@{ icon: "mdi:cube-outline", form: "rounded", label: "Qdrant Vector Store1", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Convert to File", pos: "b", h: 48 }
n12@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Item List Output Parser", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n15@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n16@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model2", pos: "b", h: 48 }
n17@{ icon: "mdi:robot", form: "rounded", label: "Item List Output Parser1", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n19@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model3", pos: "b", h: 48 }
n20@{ icon: "mdi:cube-outline", form: "rounded", label: "Qdrant Vector Store2", pos: "b", h: 48 }
n21@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI2", pos: "b", h: 48 }
n22@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n23@{ icon: "mdi:wrench", form: "rounded", label: "RAG", pos: "b", h: 48 }
n24@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model4", pos: "b", h: 48 }
n25@{ icon: "mdi:robot", form: "rounded", label: "Open questions", pos: "b", h: 48 }
n26@{ icon: "mdi:robot", form: "rounded", label: "Closed questions", pos: "b", h: 48 }
n27@{ icon: "mdi:robot", form: "rounded", label: "Answer questions", pos: "b", h: 48 }
n28@{ icon: "mdi:robot", form: "rounded", label: "Answer and create options", pos: "b", h: 48 }
n29@{ icon: "mdi:database", form: "rounded", label: "Write open", pos: "b", h: 48 }
n30@{ icon: "mdi:database", form: "rounded", label: "Write closed", pos: "b", h: 48 }
n31@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI1", pos: "b", h: 48 }
n23 -.-> n28
n8 --> n7
n29 --> n14
n30 --> n18
n7 --> n26
n7 --> n11
n7 --> n25
n25 --> n14
n6 -.-> n5
n11 --> n1
n14 --> n27
n27 --> n29
n26 --> n18
n18 --> n28
n4 -.-> n1
n31 -.-> n10
n21 -.-> n20
n3 --> n8
n5 -.-> n1
n10 -.-> n9
n20 -.-> n23
n9 -.-> n27
n13 -.-> n25
n12 -.-> n25
n17 -.-> n26
n22 -.-> n28
n28 --> n30
n15 -.-> n27
n16 -.-> n26
n19 -.-> n28
n24 -.-> n23
n0 --> n3
end
subgraph sg1["Flow 2"]
direction LR
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/>Create collection"]
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,n6,n13,n17,n22,n25,n26,n27,n28 ai
class n12,n15,n16,n19,n24 aiModel
class n23 ai
class n1,n9,n10,n20 ai
class n4,n21,n31 ai
class n29,n30 database
class n3,n2 api
class n7 code
classDef customIcon fill:none,stroke:none
class n3,n7,n2 customIcon
Utmaningen: göra om lektioner till quiz utan onödigt merarbete
Att skriva bra bedömningsfrågor är redan svårt. Det som inte borde vara svårt är produktionslinan runt omkring: att plocka innehåll ur Google Docs, dela upp det till något användbart, skriva öppna frågor, skriva flervalsfrågor med trovärdiga distraktorer och sedan få in allt i ett strukturerat Google Sheet så att någon annan kan granska. I verkliga team stjäl den här ”produktionslinan” tiden du egentligen skulle lägga på kvalitet. Du får också inkonsekvens. En person skriver rena minnesfrågor, en annan skriver tillämpningsfrågor, och ingen kan se vad som faktiskt kommer från källmaterialet jämfört med någon persons minne.
Det bygger snabbt på. Här är var det brukar falla i praktiken.
- Du slutar med att skriva om samma lektionsinnehåll till ”frågeform” eftersom källan inte är strukturerad för quizproduktion.
- Flervalsfrågor tar evigheter eftersom det är långsamt att skriva trovärdiga felalternativ, och att kontrollera dem mot lektionen är ännu långsammare.
- Folk kopierar in frågor i Sheets manuellt, vilket ger formateringsproblem, kolumner som inte matchar och saknade svar.
- Utan förankring i originaldokumentet kan AI-utkast driva iväg, och granskare lägger tiden på att fånga hallucinationer i stället för att förbättra undervisningskvaliteten.
Lösningen: Google Doc till AI-utkastad frågebank i Sheets
Det här arbetsflödet gör om en Google Docs-lektion till två strukturerade flikar i Google Sheets: öppna frågor med utkast till svar och flervalsfrågor med svarsalternativ plus korrekt svar. Det börjar med att hämta lektionsinnehållet från Google Docs och konvertera det till ett mer strukturerat textformat (Markdown) så att AI:n kan arbeta med rubriker och struktur i stället för rörig formatering. Därefter delas lektionen upp i chunkar, embeddings skapas med OpenAI och lagras i Qdrant så att senare steg kan hämta exakt de delar av lektionen som behövs för att motivera ett svar. Sedan tar Google Gemini fram frågeset, och ett retrieval-steg validerar svaren mot det lagrade lektionssammanhanget. Till sist lägger n8n till resultaten i Google Sheets så att teamet kan granska, redigera och godkänna på platsen de redan använder.
Arbetsflödet startar med en manuell körning (eller så kan du byta till en Drive-trigger) och hämtar ett specifikt Google Doc. AI skapar öppna frågor och flervalsfrågor och använder sedan retrieval (RAG) via Qdrant för att hålla svaren kopplade till lektionen. Google Sheets tar emot allt i en konsekvent, granskningsvänlig struktur.
Vad som förändras: före vs. efter
| Detta elimineras | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att du publicerar 3 lektioner i veckan och behöver ett snabbt utkast med 20 frågor per lektion (10 öppna, 10 flervalsfrågor). Manuellt är en rimlig takt ungefär 2 timmar per lektion när du räknar in skrivande, kontroll och formatering i Sheet, så du tappar cirka 6 timmar varje vecka. Med det här arbetsflödet triggar du det på en minut, låter bearbetningen köra och lägger sedan cirka 20–30 minuter på granskning och finslipning. Det är ungefär 4–5 timmar tillbaka varje vecka, och din frågebank hålls organiserad i Google Sheets.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Google Docs som källdokument för lektionen.
- Google Sheets för att lagra frågebanksflikar för granskning.
- OpenAI API-nyckel (hämta den i OpenAI API-dashboarden) för embeddings.
- Google Gemini API-nyckel (hämta den i Google AI Studio) för frågegeneration.
- Qdrant-URL + API-nyckel (hämta den från din Qdrant Cloud eller egen instans) för vector retrieval.
Kunskapsnivå: Medel. Du kopplar konton, lägger till API-nycklar och klistrar in ett Doc ID/Sheet ID i rätt noder.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Arbetsflödet steg för steg
Inläsning av lektion från Google Docs. Arbetsflödet startar när du kör det (eller så kan du senare byta till en Google Drive-trigger). Det hämtar Google Doc:et du anger och konverterar innehållet till Markdown så att rubriker, listor och sektioner blir enklare att tolka.
Förankring med embeddings och Qdrant. Lektionen delas upp i chunkar, sedan genereras OpenAI-embeddings och lagras i Qdrant. Det lagringssteget är ”minnet” som senare gör att arbetsflödet kan hämta rätt passage när det behöver motivera ett svar.
Frågeutkast med Google Gemini plus retrieval-kontroller. Gemini genererar öppna frågor och flervalsfrågor. För öppna frågor hämtar ett retrieval QA-steg kontext från Qdrant för att skriva svar som stämmer med lektionen. För flervalsfrågor kontrollerar ett agentsteg att det korrekta alternativet faktiskt stöds av innehållet och att distraktorerna är fel men ändå trovärdiga.
Publicering till Google Sheets. Arbetsflödet lägger till rader i två flikar: en för öppna frågor (fråga + utkast till svar) och en för slutna frågor (fråga, alternativ, korrekt svar). Därifrån granskar teamet, justerar svårighetsgrad och godkänner.
Du kan enkelt ändra antal frågor eller riktlinjer för svårighetsgrad så att det matchar din kursplan. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den manuella triggern
Konfigurera den manuella triggern för att starta workflowet vid behov och initiera sekvensen för Qdrant-rensning och dokumenthämtning.
- Lägg till Manual Launch Trigger som startnod.
- Koppla Manual Launch Trigger till Purge Collection för att rensa vektordatabasen före varje körning.
- Bekräfta att körordningen följer: Manual Launch Trigger → Purge Collection → Retrieve Document.
Steg 2: Anslut Google Docs
Hämta källinnehållet från Google Docs och konvertera det till strukturerad markdown för efterföljande frågegenerering.
- Öppna Retrieve Document och ställ in Operation på
get. - Ställ in Document URL på
[YOUR_ID](ersätt med ert Google Docs-ID eller er URL). - Inloggning krävs: anslut era
googleDocsOAuth2Api-uppgifter i Retrieve Document. - I Markdown Conversion behåller ni den medföljande JavaScript-koden som skapar fältet
markdownfrån dokumentets JSON. - Verifiera flödet: Retrieve Document → Markdown Conversion.
Nodrouting: Markdown Conversion skickar utdata parallellt till Generate Closed Questions, Generate Open Questions och Convert to Text File.
Steg 3: Konfigurera initiering och inläsning till vektorlager
Initiera och rensa er Qdrant-kollektion, bädda sedan in och infoga markdown-innehållet i vektordatabasen för retrieval-augmented answers.
- I Initialize Collection ställer ni in URL till
http://QDRANT_URL/collections/COLLECTIONSoch Method tillPUT. - Behåll JSON Body enligt mallen för att definiera
size,distanceoch shard-inställningar för embeddings. - Inloggning krävs: anslut era
httpHeaderAuth-uppgifter i Initialize Collection. - I Purge Collection ställer ni in URL till
http://QDRANT_URL/collections/COLLECTIONS/points/deleteoch Method tillPOST. - Inloggning krävs: anslut era
httpHeaderAuth-uppgifter i Purge Collection. - I Convert to Text File ställer ni in Operation till
toTextoch Source Property tillmarkdown. - Säkerställ att Qdrant Insert Store har Mode satt till
insertoch att en giltig kollektion är vald. - Inloggning krävs: anslut era
qdrantApi-uppgifter i Qdrant Insert Store. - Inloggning krävs: anslut era
openAiApi-uppgifter i OpenAI Embedding Builder (används av Qdrant Insert Store).
Steg 4: Konfigurera ai-generering för öppna och slutna frågor
Konfigurera LLM-kedjorna och parsern för att generera öppna frågor och flervalsfrågor från markdown-innehållet.
- I Generate Open Questions ställer ni in Text till
=Article: ''' {{ $json.markdown }} '''och behåller Prompt Type somdefine. - Anslut Gemini Chat Model Alpha som språkmodell för Generate Open Questions och behåll Model Name som
models/gemini-2.0-flash-exp. - Inloggning krävs: anslut era
googlePalmApi-uppgifter i Gemini Chat Model Alpha. - Koppla Item List Parser Alpha till Generate Open Questions för att parsa en lista med frågor.
- I Generate Closed Questions ställer ni in Text till
=Article: ''' {{ $json.markdown }} '''och behåller Prompt Type somdefine. - Anslut Gemini Chat Model Gamma som språkmodell för Generate Closed Questions och behåll Model Name som
models/gemini-2.0-flash-exp. - Inloggning krävs: anslut era
googlePalmApi-uppgifter i Gemini Chat Model Gamma. - Koppla Item List Parser Beta till Generate Closed Questions för parsning av MCQ-lista.
Eftersom detta workflow använder flera Gemini-noder, säkerställ att Gemini Chat Model Alpha, Gemini Chat Model Beta, Gemini Chat Model Gamma, Gemini Chat Model Delta och Gemini Chat Model Epsilon alla har googlePalmApi-uppgifter konfigurerade.
Steg 5: Konfigurera hämtning, svar och parsning
Använd Qdrant-hämtning med embeddings och strukturerad parsning för att generera svar och flervalsalternativ.
- I Qdrant Retrieval Store väljer ni samma kollektion som används för infogningar och kopplar den till Vector Store Fetcher.
- Inloggning krävs: anslut era
qdrantApi-uppgifter i Qdrant Retrieval Store. - Inloggning krävs: anslut era
openAiApi-uppgifter i OpenAI Embedding Beta (används av Qdrant Retrieval Store). - I Answer Open Queries ställer ni in Text till
={{ $json.text }}och behåller Prompt Type somdefine. - Anslut Gemini Chat Model Beta som språkmodell för Answer Open Queries.
- I Qdrant QA Store väljer ni samma kollektion för RAG och kopplar den till Vector RAG Tool.
- Inloggning krävs: anslut era
qdrantApi-uppgifter i Qdrant QA Store. - Inloggning krävs: anslut era
openAiApi-uppgifter i OpenAI Embedding Delta (används av Qdrant QA Store). - I Answer MCQ Builder ställer ni in Text till
={{ $json.text }}, behåller Prompt Type somdefine, och säkerställer att Has Output Parser är aktiverat. - Koppla Structured Parser till Answer MCQ Builder med schemat som inkluderar arrayerna
correctochanswers.
Steg 6: Konfigurera utdata till Google Sheets
Lägg till resultat för öppna och slutna frågor i separata ark med korrekta fältmappningar.
- I Append Open Results ställer ni in Operation till
appendoch väljer ert Document ID och Sheet Name. - Mappa QUESTION till
={{ $('Iterate Records Alpha').item.json.text }}och ANSWER till={{ $json.response }}. - Inloggning krävs: anslut era
googleSheetsOAuth2Api-uppgifter i Append Open Results. - I Append Closed Results ställer ni in Operation till
appendoch väljer målarket för slutna frågor. - Mappa QUESTION till
={{ $('Generate Closed Questions').item.json.text }}och svaren till={{ $json.output.answers[0] }}till={{ $json.output.answers[3] }}, med CORRECT som={{ $json.output.correct }}. - Inloggning krävs: anslut era
googleSheetsOAuth2Api-uppgifter i Append Closed Results.
Körningsloopning: Generate Open Questions går vidare till Iterate Records Alpha och Generate Closed Questions går vidare till Iterate Records Beta, där båda batchar poster innan de besvaras och läggs till.
Steg 7: Testa och aktivera ert workflow
Kör ett fullständigt manuellt test för att verifiera dokumenthämtning, frågegenerering, vektorinfogningar och tillägg i ark innan ni slår på det.
- Klicka på Execute Workflow från Manual Launch Trigger för att köra hela pipelinen.
- Bekräfta att Retrieve Document returnerar data och att Markdown Conversion skapar ett
markdown-fält. - Verifiera Qdrant-operationerna: Purge Collection slutförs, Convert to Text File körs och Qdrant Insert Store infogar vektorer.
- Kontrollera att öppna och slutna frågor läggs till i respektive ark av Append Open Results och Append Closed Results.
- När ni är nöjda, växla workflowet till Active för användning i produktion.
Saker att se upp med
- OAuth-behörigheter för Google Docs / Google Sheets kan vara petiga. Om tillägg plötsligt misslyckas, kontrollera det anslutna Google-kontot i n8n-credentials och bekräfta att det fortfarande har åtkomst till det dokumentet och det arket.
- Om du rensar och återskapar Qdrant-collection vid varje körning kan du råka radera embeddings medan någon testar. I Qdrant: verifiera collection-namnet som används i arbetsflödet innan du kör det i en delad miljö.
- Gemini-prompts som är för generiska ger slätstrukna frågor. Lägg in dina standarder tidigt (svårighetsgrad, Blooms nivå, stil, ton), annars kommer du att redigera varje batch i efterhand.
Vanliga frågor
Cirka en timme om du redan har dina API-nycklar och ett Google Sheet som mål.
Ja, men du vill göra en noggrann installationsrunda. När credentials och ID:n är på plats är det bara att klicka på kör (eller låta triggern köra).
Ja. n8n har ett gratis alternativ 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 kostnader för OpenAI-embeddings och användning av Google Gemini API.
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 obegränsat antal körningar men kräver grundläggande serveradministration.
Börja med promptarna i stegen ”Generate Open Questions” och ”Generate Closed Questions”, eftersom det är där svårighetsgrad, stil och frågetyper bestäms. Om ditt innehåll är långt eller tätt, justera inställningarna i ”Token Chunk Divider” så att retrieval hämtar mer sammanhängande kontext. Du kan också byta den manuella triggern mot en Google Drive-trigger för att automatisera nya lektioner och sedan ändra Google Sheets append-noderna så att de skriver till flikar per kurs.
Oftast beror det på utgångna Google OAuth-credentials eller att det anslutna kontot har tappat åtkomst till arket. Återanslut Google Sheets-credential i n8n och kontrollera sedan att Sheet ID är korrekt och att målfliken finns. Om du lägger till många rader snabbt kan Googles API:er också rate-limita, så det hjälper att lägga in en liten batchstorlek i loopen.
Om du kör egen drift finns ingen körningsgräns (det beror främst på din server och API-kvoter). Kapaciteten i n8n Cloud beror på din plans månatliga körningar, och det här arbetsflödet använder vanligtvis flera körningar per run eftersom det loopar igenom genererade frågeobjekt.
För den här typen av arbetsflöde är n8n oftast det praktiska valet eftersom du gör AI-generering i flera steg, loopar och retrieval-kontroller, inte bara flyttar data från A till B. Zapier och Make kan fungera, men så fort du behöver chunkning, grenlogik och ett anrop mot en vektordatabas blir det klumpigt och dyrt. n8n ger också möjligheten till egen drift, vilket spelar roll när du genererar många frågor. Om din process bara är ”Doc in, en prompt ut” kan enklare verktyg räcka. Prata med en automationsexpert om du vill ha en snabb rekommendation baserat på volym och granskningsflöde.
När detta väl rullar växer din frågebank utan det vanliga friktionen. Arbetsflödet tar hand om de repetitiva delarna så att granskare kan lägga fokus på lärandemål och tydlighet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.