Google Gemini와 Jotform을 사용한 문서 자동화 퀴즈 생성
중급
이것은자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Code, SplitOut, HttpRequest, GoogleSheets, JotFormTrigger 등의 노드를 사용하며. Google Gemini와 Jotform을 사용한 문서 자동화 퀴즈 생성
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
- •Google Gemini API Key
사용된 노드 (15)
카테고리
-
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "a8699c9e7103d3373edb042353eef6391c809031343da9cc88aa3b40c5b49c65"
},
"nodes": [
{
"id": "280fc45c-62fe-4108-9bd3-a179d4326d64",
"name": "파일에서 추출",
"type": "n8n-nodes-base.extractFromFile",
"position": [
256,
128
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "9da2b9db-6e6a-4c47-8b9a-633e56eb78fc",
"name": "AI 에이전트",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
464,
128
],
"parameters": {
"text": "=You are an instructor tasked with generating {{ $('JotForm Trigger').item.json.q5_numberOf }} multiple-choice quiz questions from the following content:\n\n{{ $json.text }}\n\nInstructions:\n- Base all questions strictly on the provided content.\n- {{ $('JotForm Trigger').item.json.q7_quizName }}it should be the title of quiz in the form\n- For each question, generate exactly 4 unique answer options labeled A, B, C, and D.\n- Randomize which option is correct (dont always make it the same letter).\n- Keep both the questions and options clear and concise.\n- Clearly specify the correct answer using the key \"correct_option\" with the letter of the correct choice (e.g., \"A\").\n- Do not include explanations or extra text output JSON only.\n- Ensure valid JSON syntax that can be parsed directly by code.\n\nReturn the output in the exact JSON format below:\n\n[\n {\n \"question\": \"string\",\n \"options\": [\"A. option 1\", \"B. option 2\", \"C. option 3\", \"D. option 4\"],\n \"correct_option\": \"A\"\n }\n]",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "5c056118-2b7c-458c-9ce9-ff7e5a8f28bc",
"name": "Google Gemini 채팅 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
400,
320
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "f7281d5f-4a3a-4bb1-900c-d3fc68f2ee44",
"name": "구조화된 출력 파서",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
640,
336
],
"parameters": {
"autoFix": true,
"jsonSchemaExample": "[\n {\n \"question\": \"string\",\n \"options\": [\"A. ...\", \"B. ...\", \"C. ...\", \"D. ...\"],\n \"correct_option\": \"A\"\n }\n]"
},
"typeVersion": 1.3
},
{
"id": "4dd3a242-d3d2-4805-b78d-0048b823147e",
"name": "분할",
"type": "n8n-nodes-base.splitOut",
"position": [
816,
128
],
"parameters": {
"options": {},
"fieldToSplitOut": "output"
},
"typeVersion": 1
},
{
"id": "c0e31048-8a0f-4093-9215-a3d5f78c81c3",
"name": "HTTP 요청",
"type": "n8n-nodes-base.httpRequest",
"position": [
1440,
128
],
"parameters": {
"url": "https://api.jotform.com/form?apiKey=",
"body": "={{$json}}",
"method": "POST",
"options": {},
"sendBody": true,
"sendQuery": true,
"contentType": "raw",
"sendHeaders": true,
"rawContentType": "application/x-www-form-urlencoded",
"queryParameters": {
"parameters": [
{
"name": "properties[title]",
"value": "Auto-Generated Quiz"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "APIKEY"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "3ed602c6-5550-4797-aade-53e1635081e8",
"name": "JavaScript 코드",
"type": "n8n-nodes-base.code",
"position": [
1232,
128
],
"parameters": {
"jsCode": "const aiData = $('AI Agent').first().json;\n\n// Handle both shapes: [ { output: [...] } ] or { output: [...] }\nconst input = Array.isArray(aiData) ? aiData[0].output : aiData.output;\n\n// Parse if it's a string\nconst quizData = typeof input === 'string' ? JSON.parse(input) : input;\n\n// Validate structure\nif (!Array.isArray(quizData)) {\n throw new Error(\"Expected quizData to be an array, got: \" + typeof quizData);\n}\n\n// ? Dynamic title\nconst title = $('JotForm Trigger').first().json.q7_quizName || \"Auto-Generated Quiz\";\n\nconst body = {\n \"properties[title]\": title,\n \n};\n\n// ? Title centered and styled\nbody[\"properties[title]\"] = title;\nbody[\"properties[titleAlign]\"] = \"center\";\nbody[\"properties[fontFamily]\"] = \"Inter\";\nbody[\"properties[fontColor]\"] = \"#222222\";\n\n// ? General form styling\nbody[\"properties[backgroundColor]\"] = \"#f0f4f8\";\nbody[\"properties[formWidth]\"] = \"800\";\nbody[\"properties[formAlign]\"] = \"center\";\nbody[\"properties[formPadding]\"] = \"40\";\nbody[\"properties[questionSpacing]\"] = \"25\";\n\n// ? Label styling (questions)\nbody[\"properties[labelAlign]\"] = \"top\";\nbody[\"properties[labelWidth]\"] = \"100%\";\nbody[\"properties[labelFontSize]\"] = \"18\";\n\n// ? Option styling (makes radio options display in two columns)\nbody[\"properties[inputTextAlignment]\"] = \"left\";\nbody[\"properties[columns]\"] = \"2\";\nbody[\"properties[radioArrangement]\"] = \"spread\"; // spreads options evenly in 2 columns\n\n// ? Button styling\nbody[\"properties[buttonBackgroundColor]\"] = \"#007bff\";\nbody[\"properties[buttonFontColor]\"] = \"#ffffff\";\n\n// ? Add quiz questions\nquizData.forEach((item, index) => {\n const qIndex = index + 1; // shift by 1 since 0 is the heading\n const formattedOptions = (item.options || []).map(opt => opt.trim()).join('|');\n\n body[`questions[${qIndex}][type]`] = \"control_radio\";\n body[`questions[${qIndex}][text]`] = item.question?.trim() || \"\";\n body[`questions[${qIndex}][options]`] = formattedOptions;\n body[`questions[${qIndex}][correct_option]`] = item.correct_option?.trim() || \"\";\n});\n\nreturn [{ json: body }];\n"
},
"typeVersion": 2
},
{
"id": "48d25cd7-1072-4fce-a0bc-406b36bc0741",
"name": "JotForm 트리거",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
-112,
128
],
"webhookId": "4da67a4d-d5e5-49c9-a95d-9ee87e2191e8",
"parameters": {
"form": "252856893250062",
"resolveData": false
},
"typeVersion": 1
},
{
"id": "00bd7928-47b7-4a83-922a-9ce47da2c9df",
"name": "HTTP 요청1",
"type": "n8n-nodes-base.httpRequest",
"position": [
96,
128
],
"parameters": {
"url": "={{ $json.fileUpload[0] }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "426bb69a-739c-427a-9a74-713aedbf5bff",
"name": "스티커 메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-368,
48
],
"parameters": {
"width": 400,
"height": 240,
"content": "## Create a JotForm with Document upload, quiz title and no of questions options"
},
"typeVersion": 1
},
{
"id": "8c6ccd36-136f-4746-8169-fffaf5dac08e",
"name": "스티커 메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
48,
48
],
"parameters": {
"width": 160,
"height": 240,
"content": "Download the document\n"
},
"typeVersion": 1
},
{
"id": "4180a4ed-83be-4610-b036-666e37254dba",
"name": "스티커 메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
224,
48
],
"parameters": {
"width": 160,
"height": 240,
"content": "Extract Content from the document"
},
"typeVersion": 1
},
{
"id": "f18fbc7d-d400-4eb2-829f-263b9e9f53aa",
"name": "스티커 메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
64
],
"parameters": {
"width": 224,
"height": 240,
"content": "Save questions in a google sheet"
},
"typeVersion": 1
},
{
"id": "ccebe5de-4fc5-4ff8-b2f4-04ede361f787",
"name": "스티커 메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1376,
64
],
"parameters": {
"height": 240,
"content": "Create a quiz on jotform having AI generated questions"
},
"typeVersion": 1
},
{
"id": "a6904027-8449-41c1-a7bb-0e3b46a101c6",
"name": "시트에 행 추가",
"type": "n8n-nodes-base.googleSheets",
"position": [
1024,
128
],
"parameters": {
"columns": {
"value": {
"Option A": "={{ $json.options[0] }}",
"Option B": "={{ $json.options[1] }}",
"Option D": "={{ $json.options[3] }}",
"Question": "={{ $json.question }}",
"Option C ": "={{ $json.options[2] }}",
"Correct Answer": "={{ $json.correct_option }}"
},
"schema": [
{
"id": "Question",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Question",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Option A",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Option A",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Option B",
"type": "string",
"display": true,
"required": false,
"displayName": "Option B",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Option C ",
"type": "string",
"display": true,
"required": false,
"displayName": "Option C ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Option D",
"type": "string",
"display": true,
"required": false,
"displayName": "Option D",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Correct Answer",
"type": "string",
"display": true,
"required": false,
"displayName": "Correct Answer",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1HcnT-czkE8XVMRfeLZLTOuKjmk_51CHEWAkbfU-YOJ0/edit#gid=0",
"cachedResultName": "Questions"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1HcnT-czkE8XVMRfeLZLTOuKjmk_51CHEWAkbfU-YOJ0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1HcnT-czkE8XVMRfeLZLTOuKjmk_51CHEWAkbfU-YOJ0/edit?usp=drivesdk",
"cachedResultName": "Quiz Management"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "OnKnmW9md5Kmjjg8",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
}
],
"pinData": {},
"connections": {
"9da2b9db-6e6a-4c47-8b9a-633e56eb78fc": {
"main": [
[
{
"node": "4dd3a242-d3d2-4805-b78d-0048b823147e",
"type": "main",
"index": 0
}
]
]
},
"4dd3a242-d3d2-4805-b78d-0048b823147e": {
"main": [
[
{
"node": "a6904027-8449-41c1-a7bb-0e3b46a101c6",
"type": "main",
"index": 0
}
]
]
},
"00bd7928-47b7-4a83-922a-9ce47da2c9df": {
"main": [
[
{
"node": "280fc45c-62fe-4108-9bd3-a179d4326d64",
"type": "main",
"index": 0
}
]
]
},
"48d25cd7-1072-4fce-a0bc-406b36bc0741": {
"main": [
[
{
"node": "00bd7928-47b7-4a83-922a-9ce47da2c9df",
"type": "main",
"index": 0
}
]
]
},
"280fc45c-62fe-4108-9bd3-a179d4326d64": {
"main": [
[
{
"node": "9da2b9db-6e6a-4c47-8b9a-633e56eb78fc",
"type": "main",
"index": 0
}
]
]
},
"3ed602c6-5550-4797-aade-53e1635081e8": {
"main": [
[
{
"node": "c0e31048-8a0f-4093-9215-a3d5f78c81c3",
"type": "main",
"index": 0
}
]
]
},
"a6904027-8449-41c1-a7bb-0e3b46a101c6": {
"main": [
[
{
"node": "3ed602c6-5550-4797-aade-53e1635081e8",
"type": "main",
"index": 0
}
]
]
},
"5c056118-2b7c-458c-9ce9-ff7e5a8f28bc": {
"ai_languageModel": [
[
{
"node": "9da2b9db-6e6a-4c47-8b9a-633e56eb78fc",
"type": "ai_languageModel",
"index": 0
},
{
"node": "f7281d5f-4a3a-4bb1-900c-d3fc68f2ee44",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"f7281d5f-4a3a-4bb1-900c-d3fc68f2ee44": {
"ai_outputParser": [
[
{
"node": "9da2b9db-6e6a-4c47-8b9a-633e56eb78fc",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
시각화 참조 라이브러리에서 n8n 노드를 탐색
可视化 참조 라이브러리에서 n8n 노드를 탐색
If
Ftp
Set
+
If
Ftp
Set
113 노드I versus AI
기타
Gemini AI와 Elementor를 사용하여 여러 고객에게 SEO 블로그 기사 생성 및 계획
Gemini AI와 Elementor를 사용하여 여러 고객의 SEO 블로그 기사를 생성하고 계획합니다.
If
N8n
Set
+
If
N8n
Set
39 노드Zain Khan
콘텐츠 제작
第一轮 Telegram 및 LinkedIn 快速通道 AI 招聘어시스턴트
AI候选人筛选流程:LinkedIn로Telegram,통합Gemini与Apify
If
Set
Code
+
If
Set
Code
55 노드Dean Pike
인사
내 워크플로우
LinkedIn, Google Sheets 및 AI 이력서 점수 매기기와 자기소개서를 사용한 채용 공고 검색 자동화
Set
Code
Html
+
Set
Code
Html
27 노드Jugal
Mistral AI, LinkedIn 및 Google Sheets를 사용한 구직 활동 및 이력서 맞춤화 자동화
Mistral AI, LinkedIn 및 Google Sheets를 사용한 채용 공고 검색 및 이력서 맞춤화 자동화
Set
Code
Html
+
Set
Code
Html
46 노드Jordan Hoyle
개인 생산성
콘텐츠 집계
Gemini AI로 웹사이트 글에서 소셜 미디어 게시물 자동 생성 및 LinkedIn 및 X/Twitter에 게시
If
Set
Xml
+
If
Set
Xml
34 노드Vadim
콘텐츠 제작
워크플로우 정보
난이도
중급
노드 수15
카테고리-
노드 유형10
저자
Zain Khan
@zainI partner with businesses to streamline processes and accelerate growth through intelligent AI automation and Web/mobile Development. Leveraging deep expertise in GPT-4, LangChain, and n8n, I develop AI-powered agents and sophisticated LLM pipelines.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유