8
n8n 한국어amn8n.com

Google Gemini와 Jotform을 사용한 문서 자동화 퀴즈 생성

중급

이것은자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Code, SplitOut, HttpRequest, GoogleSheets, JotFormTrigger 등의 노드를 사용하며. Google Gemini와 Jotform을 사용한 문서 자동화 퀴즈 생성

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보
  • Google Gemini API Key

카테고리

-
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 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 (don’t 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)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수15
카테고리-
노드 유형10
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

저자
Zain Khan

Zain Khan

@zain

I 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에서 보기

이 워크플로우 공유

카테고리

카테고리: 34