8
n8n 한국어amn8n.com

Gemini에서 Google Sheets로 자동화된 학술 논문 메타데이터 및 변수 추출

고급

이것은Document Extraction, AI Summarization분야의자동화 워크플로우로, 39개의 노드를 포함합니다.주로 Set, Code, Wait, Gmail, Switch 등의 노드를 사용하며. 자동화된 학술 논문 메타데이터 및 변수 추출, Gemini에서 Google Sheets로

사전 요구사항
  • Google 계정 및 Gmail API 인증 정보
  • Google Sheets API 인증 정보
  • Google Gemini API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "e4f10bef48753951b827b1628c136c25720855dd405c916d09e788211699198e",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "06ff1131-994f-47de-be13-6136cf9ecb04",
      "name": "XLS 데이터 추출기",
      "type": "n8n-nodes-base.extractFromFile",
      "onError": "continueRegularOutput",
      "position": [
        -816,
        480
      ],
      "parameters": {
        "options": {},
        "operation": "xls",
        "binaryPropertyName": "={{ $('File Upload Trigger').item.binary.data0 }}"
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "b053af46-c202-4217-8f06-a0e0c7a0f94b",
      "name": "CSV 데이터 추출기",
      "type": "n8n-nodes-base.extractFromFile",
      "onError": "continueRegularOutput",
      "position": [
        -816,
        336
      ],
      "parameters": {
        "options": {
          "encoding": "utf-8"
        },
        "binaryPropertyName": "={{ $('File Upload Trigger').item.binary.data0 }}"
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "fe2a68e9-b162-445e-ae46-aed72fe9559c",
      "name": "논문 메타데이터 추출기",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -336,
        464
      ],
      "parameters": {
        "text": "={{ $json?.toJsonString ? $json.toJsonString() : JSON.stringify($json) }}",
        "options": {
          "systemMessage": "=You are given an article or snippet of text. Extract the following fields and return **only** a single JSON object in the exact structure below:\n\nFields to extract:\n- \"title\"\n- \"abstract\"\n- \"publication_date\"\n- \"source\"\n- \"authors\" (as an array of objects with a single key \"name\")\n\nOutput format (replace `string|null` with actual strings or `null`):\n{\n  \"authors\": [\n    { \"name\": \"string|null\" }\n  ],\n  \"title\": \"string|null\",\n  \"abstract\": \"string|null\",\n  \"publication_date\": \"date|null\",\n  \"source\": \"string|null\"\n}\n\nRules:\n- If any field cannot be found, set it to `null`.\n- For \"authors\", include an array of `{ \"name\": \"<author name>\" }` objects in the order they appear; if no authors are found, return an empty array `[]`.\n- Return **only** the JSON object with no extra text, comments, or markdown.\n\nValidation:\n- Use the output parser tool to check your output against the specified structure.\n- If validation fails, fix the JSON and re-emit the corrected JSON only."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "1a821473-3e90-4da7-817a-45916004c467",
      "name": "항목 반복",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -560,
        368
      ],
      "parameters": {
        "options": {},
        "batchSize": 10
      },
      "typeVersion": 3
    },
    {
      "id": "5eaa37da-ba8f-413e-9965-4a0e5981fa3d",
      "name": "스프레드시트 생성",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1264,
        624
      ],
      "parameters": {
        "title": "={{ $json.chatInput }}",
        "options": {},
        "resource": "spreadsheet",
        "sheetsUi": {
          "sheetValues": [
            {
              "title": "Checkpoint"
            },
            {
              "title": "FinalResult"
            }
          ]
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "i2QQ5h70aiZ7H0s3",
          "name": "Google Sheets(owen)"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "9e79fe64-91f9-4a30-b684-af194ba194cf",
      "name": "데이터 읽기/쓰기",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        0,
        336
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Create spreadsheet').item.json.sheets[0].properties.title }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create spreadsheet').item.json.spreadsheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "i2QQ5h70aiZ7H0s3",
          "name": "Google Sheets(owen)"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.7
    },
    {
      "id": "0dd1e54a-3a1a-4da5-ab2d-9f8db38da89e",
      "name": "3초 대기",
      "type": "n8n-nodes-base.wait",
      "position": [
        496,
        656
      ],
      "webhookId": "6606f055-dcfc-41a0-8c6b-4a3794d05969",
      "parameters": {
        "amount": 3
      },
      "typeVersion": 1.1
    },
    {
      "id": "2bc80873-54d9-400c-b6a4-762af5fe1fdf",
      "name": "구조화된 출력 파서1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -208,
        832
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"authors\": [\n    { \"name\": \"string|null\" }\n  ],\n  \"title\": \"string|null\",\n  \"abstract\": \"string|null\",\n  \"publication_date\": \"date|null\",\n  \"source\": \"string|null\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "8acb6ded-253b-409b-9e8b-004f4290a2a9",
      "name": "자동 수정 출력 파서",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        -288,
        672
      ],
      "parameters": {
        "options": {
          "prompt": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "aa8da126-4765-480b-b1aa-94ad560cf6e3",
      "name": "데이터 포매터",
      "type": "n8n-nodes-base.code",
      "position": [
        80,
        560
      ],
      "parameters": {
        "jsCode": "// 输入结构:items[i].json.output\n// 输出结构:[{ json: { authors: \"A; B; C\", title, abstract, publication_date, source } }]\n\nreturn items.map(item => {\n  const o = item.json?.output || {};\n  const authors = (o.authors || [])\n    .map(a => (typeof a === 'string' ? a : a?.name || ''))\n    .filter(a => a && a.trim())\n    .join('; ');\n\n  return {\n    json: {\n      authors: authors || null,\n      title: o.title || null,\n      abstract: o.abstract || null,\n      publication_date: o.publication_date || null,\n      source: o.source || null\n    }\n  };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "8cc8c6ab-7f3a-4ddf-a146-d7db95c96896",
      "name": "Google Gemini 채팅 모델1",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -400,
        832
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "id": "3nYhRpjFi2oGf30q",
          "name": "Gemini(owen)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3ea2219f-3ea4-4728-a055-4386d45e435e",
      "name": "체크포인트 시트에 저장",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        288,
        560
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "authors",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "authors",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "abstract",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "abstract",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "publication_date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "publication_date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "source",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "source",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Create spreadsheet').item.json.sheets[0].properties.title }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create spreadsheet').item.json.spreadsheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "i2QQ5h70aiZ7H0s3",
          "name": "Google Sheets(owen)"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "14bc11af-a987-47e1-8bd5-a9f623cb208d",
      "name": "파일 유형 라우터",
      "type": "n8n-nodes-base.switch",
      "position": [
        -1040,
        592
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "csv",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "16407fe1-c30c-4a81-b43e-6cdb44adc616",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ ( $('File Upload Trigger').item.json.files?.[0]?.fileExtension || '' ).toLowerCase() }}",
                    "rightValue": "csv"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "xls",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0f752545-ce9b-4906-8dce-6427a9b2cadd",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ ( $('File Upload Trigger').item.json.files?.[0]?.fileExtension || '' ).toLowerCase() }}",
                    "rightValue": "xls"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "xlsx",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "aab779cf-1bbf-4209-83b6-33d75f55cc86",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ ( $('File Upload Trigger').item.json.files?.[0]?.fileExtension || '' ).toLowerCase() }}",
                    "rightValue": "xlsx"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Error",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "60324888-4a08-4d20-988b-bc35176325be",
                    "operator": {
                      "type": "string",
                      "operation": "notExists",
                      "singleValue": true
                    },
                    "leftValue": "={{ ( $('File Upload Trigger').item.json.files?.[0]?.fileExtension || '' ).toLowerCase() }}",
                    "rightValue": "error"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.3
    },
    {
      "id": "3b6cea37-8cf0-45e3-b15b-716e2aeec3c8",
      "name": "XLSX 데이터 추출기",
      "type": "n8n-nodes-base.extractFromFile",
      "onError": "continueRegularOutput",
      "position": [
        -816,
        640
      ],
      "parameters": {
        "options": {},
        "operation": "xlsx",
        "binaryPropertyName": "={{ $('File Upload Trigger').item.binary.data0 }}"
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "f1260b49-b8d7-4148-bac0-60010ae07c06",
      "name": "오류 메시지 핸들러",
      "type": "n8n-nodes-base.set",
      "position": [
        -816,
        784
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "78203b0f-a6cd-4bb9-a2bd-3b961a37428c",
              "name": "output",
              "type": "string",
              "value": "Pls attach a file"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ca176a9b-ae02-4afd-a50e-b11d1c37c311",
      "name": "파일 업로드 트리거",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -1488,
        624
      ],
      "webhookId": "e083cca5-1d57-4dea-93a3-7a4f90c6f833",
      "parameters": {
        "options": {
          "allowFileUploads": true,
          "allowedFilesMimeTypes": "text/csv,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "716b6a67-b194-4ea6-b24f-5cf9002e78c1",
      "name": "다른 워크플로우에서 실행될 때",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -1200,
        1184
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "GoogleSheetID"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "52ab0f2d-272b-4e57-b4b1-b6fc08550e40",
      "name": "학술 변수 추출기",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        128,
        1248
      ],
      "parameters": {
        "text": "=academic paper:\n- {{ $json.Title }}\n- {{ $json.Abstract }}",
        "options": {
          "systemMessage": "=You are an academic research variable-extraction expert.\n\n## Task\nFrom the provided paper **Title** and **Abstract**, extract the following fields and output ONLY a single JSON object:\n\n## Strict Rules\n- Return ONLY the JSON object; no extra explanations or markdown.\n- Follow the Structured Output Parser JSON schema EXACTLY.\n- If a category has no items, return an empty array [].\n- Use ONLY the given Title/Abstract; do NOT fabricate.\n- Validate your JSON against the Structured Output Parser.\n\n## Output JSON Schema\n{\n  \"Summary\": \"string\",\n  \"DV\": [\"string\"],\n  \"IV\": [\"string\"],\n  \"Mediator\": [\"string\"],\n  \"Moderator\": [\"string\"],\n  \"Overarching_theory\": [\"string\"]\n}\n\n## Input example\n- Title:You’ve got mail! How work e-mail activity helps anxious workers enhance performance Outcomes\n- Abstract:Despite workplace anxiety being a common experience of daily work life that is increasingly reliant on technology, we lack knowledge of technology-based job demands that prompt its occurrence. Drawing on theorization on workplace anxiety and integrating literature on information and communication technologies, we consider telepressure and normative response pressure as internal and external between-person sources of daily workplace anxiety. We further present a model of how employees adaptively (vs. maladaptively) respond to workplace anxiety on days they experience workplace anxiety, where anxiety prompts: (a) work e-mail activity, a self-regulatory behavior facilitating performance outcomes; and (b) non-work e-mail activity, a behavior that disengages employees from their work, debilitating performance outcomes. Utilizing a multilevel, time-lagged experience sampling field study across 10 workdays (Level 1 N = 809; Level 2 N = 96), we identify telepressure as a significant contributor of daily workplace anxiety. Further, we found support for an adaptive function of workplace anxiety. On days employees experienced workplace anxiety, their personal initiative and citizenship behaviors were enhanced through behavioral regulatory activity manifested in work e-mail activity. This indirect effect was strengthened for employees perceiving higher (vs. lower) work e-mail centrality. This research advances understanding of the adaptive function of workplace anxiety, such that employees are active drivers of their daily experiences of workplace anxiety. \n## Output example\n```json\n{\n  \"Summary\": \"This study finds that “workplace anxiety” isn’t always a bad thing. When employees feel anxious due to email pressure, they actually become more proactive in completing tasks. However, if they switch to handling personal emails, their performance declines.\n\",\n  \"DV\": [\"Workplace Anxiety\"],\n  \"IV\": [\"Personal Initiative\", \"Citizenship Behaviors\"],\n  \"Mediator\": [\"Work e-mail Activity\", \"Non-work e-mail Activity\"],\n  \"Moderator\": [\"Work e-mail Centrality\"],\n  \"Overaching_theory\": [\"workplace anxiety theory\"]\n}\n```"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "9ed01cca-b185-4e4f-9a86-99691152a70d",
      "name": "구조화된 출력 파서",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        304,
        1680
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"Summary\": \"string\",\n  \"DV\": [\"string\"],\n  \"IV\": [\"string\"],\n  \"Mediator\": [\"string\"],\n  \"Moderator\": [\"string\"],\n  \"Overarching_theory\": [\"string\"]\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "e3e332f7-0805-4527-b466-226bc98e7e16",
      "name": "저널 등급 분류기",
      "type": "n8n-nodes-base.code",
      "notes": "Parses input JSON, uppercases Journal, flags UTD24/FT50, computes Rank.",
      "position": [
        -96,
        1248
      ],
      "parameters": {
        "jsCode": "// ===== UTD24 & FT50 journal lists (UPPERCASE for matching) =====\nconst utd24 = new Set([\n  \"MANAGEMENT SCIENCE\",\n  \"MIS QUARTERLY\",\n  \"INFORMATION SYSTEMS RESEARCH\",\n  \"JOURNAL OF MARKETING\",\n  \"JOURNAL OF FINANCE\",\n  \"JOURNAL OF ACCOUNTING RESEARCH\",\n  \"JOURNAL OF ACCOUNTING AND ECONOMICS\",\n  \"JOURNAL OF POLITICAL ECONOMY\",\n  \"MARKETING SCIENCE\",\n  \"OPERATIONS RESEARCH\",\n  \"ORGANIZATION SCIENCE\",\n  \"JOURNAL OF CONSUMER RESEARCH\",\n  \"JOURNAL OF FINANCIAL ECONOMICS\",\n  \"THE ACCOUNTING REVIEW\",\n  \"STRATEGIC MANAGEMENT JOURNAL\",\n  \"ADMINISTRATIVE SCIENCE QUARTERLY\",\n  \"ACADEMY OF MANAGEMENT JOURNAL\",\n  \"ACADEMY OF MANAGEMENT REVIEW\",\n  \"REVIEW OF FINANCIAL STUDIES\",\n  \"JOURNAL OF INTERNATIONAL BUSINESS STUDIES\",\n  \"JOURNAL OF BUSINESS VENTURING\",\n  \"MANUFACTURING & SERVICE OPERATIONS MANAGEMENT\",\n  \"PRODUCTION AND OPERATIONS MANAGEMENT\",\n  \"MANAGEMENT INFORMATION SYSTEMS QUARTERLY\"\n]);\n\nconst ft50 = new Set([\n  \"ACADEMY OF MANAGEMENT ANNALS\",\n  \"ACADEMY OF MANAGEMENT JOURNAL\",\n  \"ACADEMY OF MANAGEMENT REVIEW\",\n  \"ACCOUNTING, ORGANIZATIONS AND SOCIETY\",\n  \"ADMINISTRATIVE SCIENCE QUARTERLY\",\n  \"AMERICAN ECONOMIC REVIEW\",\n  \"CONTEMPORARY ACCOUNTING RESEARCH\",\n  \"ECONOMETRICA\",\n  \"ENTREPRENEURSHIP THEORY AND PRACTICE\",\n  \"HARVARD BUSINESS REVIEW\",\n  \"HUMAN RELATIONS\",\n  \"HUMAN RESOURCE MANAGEMENT\",\n  \"INFORMATION SYSTEMS RESEARCH\",\n  \"JOURNAL OF ACCOUNTING AND ECONOMICS\",\n  \"JOURNAL OF ACCOUNTING RESEARCH\",\n  \"JOURNAL OF APPLIED PSYCHOLOGY\",\n  \"JOURNAL OF BUSINESS ETHICS\",\n  \"JOURNAL OF CONSUMER PSYCHOLOGY\",\n  \"JOURNAL OF CONSUMER RESEARCH\",\n  \"JOURNAL OF FINANCE\",\n  \"JOURNAL OF FINANCIAL AND QUANTITATIVE ANALYSIS\",\n  \"JOURNAL OF FINANCIAL ECONOMICS\",\n  \"JOURNAL OF INTERNATIONAL BUSINESS STUDIES\",\n  \"JOURNAL OF MANAGEMENT\",\n  \"JOURNAL OF MANAGEMENT INFORMATION SYSTEMS\",\n  \"JOURNAL OF MANAGEMENT STUDIES\",\n  \"JOURNAL OF MARKETING\",\n  \"JOURNAL OF MARKETING RESEARCH\",\n  \"JOURNAL OF OPERATIONS MANAGEMENT\",\n  \"JOURNAL OF POLITICAL ECONOMY\",\n  \"JOURNAL OF THE ACADEMY OF MARKETING SCIENCE\",\n  \"MANAGEMENT SCIENCE\",\n  \"MANUFACTURING & SERVICE OPERATIONS MANAGEMENT\",\n  \"MARKETING SCIENCE\",\n  \"MIS QUARTERLY\",\n  \"OPERATIONS RESEARCH\",\n  \"ORGANIZATION SCIENCE\",\n  \"ORGANIZATION STUDIES\",\n  \"ORGANIZATIONAL BEHAVIOR AND HUMAN DECISION PROCESSES\",\n  \"PRODUCTION AND OPERATIONS MANAGEMENT\",\n  \"QUARTERLY JOURNAL OF ECONOMICS\",\n  \"RESEARCH POLICY\",\n  \"REVIEW OF ACCOUNTING STUDIES\",\n  \"REVIEW OF ECONOMIC STUDIES\",\n  \"REVIEW OF FINANCE\",\n  \"REVIEW OF FINANCIAL STUDIES\",\n  \"SLOAN MANAGEMENT REVIEW\",\n  \"STRATEGIC ENTREPRENEURSHIP JOURNAL\",\n  \"STRATEGIC MANAGEMENT JOURNAL\"\n]);\n\n// ===== MAIN =====\nconst items = $input.all();\n\nreturn items.map(item => {\n  const data = item.json;  // 直接取当前 item 的数据\n  const journalUpper = (data.Source || '').toUpperCase().trim();\n\n  const isUTD24 = utd24.has(journalUpper);\n  const isFT50  = ft50.has(journalUpper);\n\n  let Rank = 'Not listed';\n  if (isUTD24 && isFT50) Rank = 'UTD24 & FT50';\n  else if (isUTD24) Rank = 'UTD24';\n  else if (isFT50) Rank = 'FT50';\n\n  // 直接修改原数据\n  data.Rank = Rank;\n\n  return { json: data };\n});\n"
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "6dffab19-fc4b-4cce-98e2-f3b3df75f018",
      "name": "배치 처리기",
      "type": "n8n-nodes-base.splitInBatches",
      "notes": "Process items in batches.",
      "position": [
        -320,
        1248
      ],
      "parameters": {
        "options": {},
        "batchSize": 10
      },
      "notesInFlow": true,
      "typeVersion": 3
    },
    {
      "id": "815ae6d3-d485-4c22-be41-613e2e40104f",
      "name": "WOS 필드 매퍼",
      "type": "n8n-nodes-base.set",
      "notes": "Map WOS fields to consistent keys for LLM.",
      "position": [
        -544,
        1248
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1fe90882-f72f-44b0-9957-1972abbc0b99",
              "name": "Authors",
              "type": "string",
              "value": "={{ $json.authors }}"
            },
            {
              "id": "3dcc8233-678c-4902-8cf4-41d051c8619c",
              "name": "Title",
              "type": "string",
              "value": "={{ $json.title }}"
            },
            {
              "id": "82b3d148-7206-45e1-a98b-48c2f12110cf",
              "name": "Publication_date",
              "type": "string",
              "value": "={{ $json.publication_date }}"
            },
            {
              "id": "3557f70f-c27c-4880-81b8-661a3c6c490a",
              "name": "Source",
              "type": "string",
              "value": "={{ $json.source }}"
            },
            {
              "id": "c2978a5d-2583-4400-9556-a9967f07c535",
              "name": "Abstract",
              "type": "string",
              "value": "={{ $json.abstract }}"
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 3.4
    },
    {
      "id": "48078b19-e7e8-4ed5-91f6-2540df195daf",
      "name": "최종 데이터 매퍼",
      "type": "n8n-nodes-base.set",
      "position": [
        576,
        1248
      ],
      "parameters": {
        "options": {
          "ignoreConversionErrors": true
        },
        "assignments": {
          "assignments": [
            {
              "id": "3d64232b-c602-4bfa-867d-e19e6d5ee934",
              "name": "Authors",
              "type": "string",
              "value": "={{ $('Journal Rank Classifier').item.json.Authors }}"
            },
            {
              "id": "f05c2476-96fc-4edf-a06c-5a0e45026673",
              "name": "Title",
              "type": "string",
              "value": "={{ $('Journal Rank Classifier').item.json.Title }}"
            },
            {
              "id": "8a5667b9-8274-49fa-85a6-73b5cd440bd5",
              "name": "Publication_date",
              "type": "string",
              "value": "={{ $('Batch Processor').item.json.Publication_date }}"
            },
            {
              "id": "82c7191f-86de-4e4c-a242-655021a97fa4",
              "name": "Source",
              "type": "string",
              "value": "={{ $('Journal Rank Classifier').item.json.Source }}"
            },
            {
              "id": "5541b0bf-dbef-4724-a526-870ad9f08005",
              "name": "JournalRank",
              "type": "string",
              "value": "={{ $('Journal Rank Classifier').item.json.Rank }}"
            },
            {
              "id": "31c89435-c6b7-46c7-ab8b-b471b2c48f9d",
              "name": "AiSummary",
              "type": "string",
              "value": "={{ $json.output.Summary }}"
            },
            {
              "id": "f62c5f71-8219-420d-87ab-aba347f7673d",
              "name": "IndependentVariable",
              "type": "string",
              "value": "={{ Array.isArray($json.output.IV) ? $json.output.IV.join('; ') : $json.output.IV }}"
            },
            {
              "id": "5df47e1a-9772-4f42-bc7f-f4210cfa50cd",
              "name": "DependentVariable",
              "type": "string",
              "value": "={{ Array.isArray($json.output.DV) ? $json.output.DV.join('; ') : $json.output.DV }}"
            },
            {
              "id": "23f93176-157e-4e71-8c5f-29debc575297",
              "name": "Mediator",
              "type": "string",
              "value": "={{ Array.isArray($json.output.Mediator) ? $json.output.Mediator.join('; ') : $json.output.Mediator }}"
            },
            {
              "id": "655b398a-a201-45a5-becd-05f05ccaa567",
              "name": "Moderator",
              "type": "string",
              "value": "={{ Array.isArray($json.output.Moderator) ? $json.output.Moderator.join('; ') : $json.output.Moderator }}"
            },
            {
              "id": "4eaf14e2-bb55-459a-a31e-01d53393c979",
              "name": "Overaching_theory",
              "type": "string",
              "value": "={{ ($json.output.Overarching_theory || $json.output.Overaching_theory || []).join('; ') }}"
            },
            {
              "id": "46490da9-11af-4450-845e-5035e729842a",
              "name": "Abstract",
              "type": "array",
              "value": "={{ $('Journal Rank Classifier').item.json.Abstract }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "27414957-4c91-4ceb-8a3f-c0c31446f99a",
      "name": "체크포인트 데이터 읽기",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -768,
        1248
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Checkpoint"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Get Sheet id').item.json.ID }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "i2QQ5h70aiZ7H0s3",
          "name": "Google Sheets(owen)"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "8a66f6d9-8024-4f74-8e08-bc7ac8268671",
      "name": "최종 결과 저장",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        800,
        1248
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "cellFormat": "RAW"
        },
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "FinalResult"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Get Sheet id').item.json.ID }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "i2QQ5h70aiZ7H0s3",
          "name": "Google Sheets(owen)"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "1de00028-e39b-446d-9f18-db67380ce4d1",
      "name": "자동 수정 출력 파서1",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        208,
        1472
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "b7ec38b4-5666-4c57-988c-f24dcfbc4e4e",
      "name": "3초 대기",
      "type": "n8n-nodes-base.wait",
      "position": [
        1024,
        1424
      ],
      "webhookId": "8d861ed5-69d4-480b-914c-1d312ad1ef37",
      "parameters": {
        "amount": 3
      },
      "typeVersion": 1.1
    },
    {
      "id": "faa63b27-907a-48e7-bb85-b30763f7827d",
      "name": "call",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        704,
        336
      ],
      "parameters": {
        "options": {
          "waitForSubWorkflow": false
        },
        "workflowId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $workflow.id}}",
          "cachedResultUrl": "/workflow/=%7B%7B%20$workflow.id%7D%7D"
        },
        "workflowInputs": {
          "value": {
            "GoogleSheetID": "={{ $('Create spreadsheet').item.json.spreadsheetId }}"
          },
          "schema": [
            {
              "id": "GoogleSheetID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "GoogleSheetID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "GoogleSheetID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "94cb61b6-0096-4820-aa67-c6939a3801e6",
      "name": "스티키 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2848,
        208
      ],
      "parameters": {
        "width": 704,
        "height": 784,
        "content": "# 🚀 Quick start\n\n## 📋 Workflow Overview\nThis automated workflow helps you:\n- 📥 Ingest academic bibliographic files (CSV/XLS/XLSX) you upload in chat\n- 🧾 Normalize academic paper metadata (authors, title, abstract, date, - source) into a Checkpoint sheet and ✉️ send progress notifications via Gmail\n- 🧠 Use an LLM to extract study variables (IV/DV; optional mediator, moderator, overarching theory)\n- 🏷️ Classify journal rank (UTD24 / FT50) and merge with metadata\n- 📊 Append the finalized table to FinalResult in Google Sheets and ✉️ send completion notifications via Gmail\n\n## 🔑 Credentials\n- **Google Sheets OAuth2** (read/write)\n- **Gmail OAuth2** (send notifications)\n- **Google Gemini** (or any LLM you prefer)\n    \n\n## 🛠️ How to set up\n1. Connect **Google Sheets**, **Gmail**, and **Gemini (or your LLM)** credentials.\n2. Open `File Upload Trigger` → upload your **CSV/XLSX/XLS** file and type a **name** in chat (used as the Google Sheets spreadsheet title).\n3. Watch your inbox for status emails and open the Google Sheets spreadsheet to review **Checkpoint** and **FinalResult**.\n\n## 📝 Note\n- 📝 **Make sure your file includes abstracts.** If the academic paper data you upload doesn’t contain an abstract, the extracted results will be far less useful.\n- 🧩 **CSV yields no items?** Encoding mismatches can break the workflow. If this happens, convert the CSV to `.xls` or `.xlsx` and try again."
      },
      "typeVersion": 1
    },
    {
      "id": "3b5ee089-b1a8-4824-b9bb-4e3cf6ceba0a",
      "name": "스티키 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1584,
        -192
      ],
      "parameters": {
        "color": 2,
        "width": 960,
        "height": 1168,
        "content": "## 1) File Intake & Type Routing\n\n### **Purpose:**\n- Receive academic files, parse them into structured records by file type, and create a Google Sheet named by message; prepares for subsequent **normalize academic paper metadata** and variable extraction.  \n### **Covers nodes:**\n`File Upload Trigger` → `Create spreadsheet` → `File Type Router (Switch)` → (`CSV Data Extractor` | `XLS Data Extractor` | `XLSX Data Extractor`)\n\n### **What it does:**\n- Supports uploading `.csv`, `.xls`, and `.xlsx` files and a **message** in chat (used as the Google Sheets spreadsheet title).\n- Creates a Google Sheets spreadsheet titled from the chat input, with two tabs: `Checkpoint` and `FinalResult`.\n- Routes processing by file extension (CSV/XLS/XLSX); unsupported types return “Pls attach a file”.   \n\n### **Inputs consumed:**\n- Uploaded file (binary)\n- `SpreadsheetTitle` (from chat input)\n### **Output produced:**\n- Parsed records array (JSON) for downstream per-item processing.\n- Target spreadsheet `spreadsheetId` (includes `Checkpoint` / `FinalResult`)."
      },
      "typeVersion": 1
    },
    {
      "id": "35cc183c-93f8-4b76-8fd6-b609c6dd53f0",
      "name": "스티키 노트2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -592,
        -192
      ],
      "parameters": {
        "color": 3,
        "width": 1264,
        "height": 1168,
        "content": "## 2) Per-Record Processing & Metadata Extraction\n\n### **Purpose:** \n- Batch the parsed results, **normalize academic paper metadata** for each record, write core fields to `Checkpoint`, and send progress notifications.\n### **Covers nodes:** \n`Loop Over Items` → `Paper Metadata Extractor` → `Data Formatter` → `Save to Checkpoint Sheet` → `Wait for 3s.` → `Read Write in Data` → `Send process notication`\n\n### **What it does:**\n- Uses `Loop Over Items` (batch size = 10) to process records efficiently.\n- Runs `Paper Metadata Extractor`(Gemini+Structured Output), to extract **authors, title, abstract, publication_date, source** from each raw JSON record into a strict schema.\n- Normalizes fields in `Data Formatter` (e.g., joins authors with semicolons) and appends them using `Save to Checkpoint Sheet`.\n- Pauses briefly with `Wait for 3s.` make api happy.\n- After finished loop,sends an email via `Send notication` (Gmail)\n\n### **Inputs consumed:**\n- Parsed record JSON\n### **Output produced:**\n- Five normalized columns in the `Checkpoint` sheet (result of organizing bibliographic metadata).\n- Stage notifications via Gmail.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3d10bbf2-50c8-4ac8-82a3-6fa848770ca3",
      "name": "스티키 노트3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1968,
        1008
      ],
      "parameters": {
        "color": 5,
        "width": 720,
        "height": 832,
        "content": "## 3) Journal Ranking & Study Variable Extraction\n\n### **Purpose:**\n* Use `Checkpoint` metadata to assign journal ranks and run a second LLM pass to extract study variables (DV/IV/Mediator/Moderator/Overarching_theory) plus a brief summary, then write results to `FinalResult`.\n### **Covers nodes:**\n`Get Sheet id` → `Read Checkpoint Data` → `WOS Field Mapper` → `Batch Processor` → `Journal Rank Classifier (Code)` → `Academic Variables Extractor (LLM Agent)` → `Final Data Mapper (Set)` → `Save Final Results (Append/Update)` → `Wait 3s` → `Send done notication`\n\n### **What it does:**\n* Controls throughput with batched processing for stable API calls and sheet writes.\n* Classifies journals against built-in UTD24/FT50 lists and assigns `Rank ∈ {UTD24, FT50, UTD24 & FT50, Not listed}`.\n* Uses Title + Abstract to extract a strict-schema JSON payload: `AiSummary, DependentVariable, IndependentVariable, Mediator, Moderator, Overarching_theory`; validates with an auto-fixing parser and the chosen LLM.\n* Merges base metadata, journal rank, and AI-extracted variables, then appends/updates the `FinalResult` sheet.\n* Briefly waits (`Wait 3s`) to reduce the chance of rate limiting.\n\n### **Inputs consumed:**\n* `Checkpoint`-normalized metadata\n### **Output produced:**\n* `FinalResult`: an integrated table combining organized bibliographic metadata, journal ranking, and study variables.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "88ab6929-3801-4134-857a-4faaefa7586a",
      "name": "스티키 노트4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1264,
        1008
      ],
      "parameters": {
        "color": 5,
        "width": 2544,
        "height": 832,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "b401df9b-f757-4c4c-91ec-2b4a27b74dcb",
      "name": "처리 알림 전송",
      "type": "n8n-nodes-base.gmail",
      "position": [
        416,
        336
      ],
      "webhookId": "ec263e2e-8a0a-4e49-bb00-9e830b9ab59f",
      "parameters": {
        "sendTo": "your gmail",
        "message": "=🎉Metadata Normalization Workflow Done\n📖 write 【{{ $items('Read Write in Data').length ? Math.max(...$items('Read Write in Data').map(i => Number(i.json.row_number))) -1: null }}】 paper into checkpoint sheet\n🕓{{ new Date().toLocaleString(\"en-CA\", { timeZone: \"Asia/Singapore\", hour12: false }).replace(',', '') }}",
        "options": {},
        "subject": "🎉Metadata Normalization Workflow Done",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "jCTNCiXplqBJRbmj",
          "name": "Gmail(owen)"
        }
      },
      "executeOnce": true,
      "typeVersion": 2.1
    },
    {
      "id": "890dcae0-0417-4a2b-9267-7e1714a65f45",
      "name": "완료 알림 전송",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -96,
        1072
      ],
      "webhookId": "ec263e2e-8a0a-4e49-bb00-9e830b9ab59f",
      "parameters": {
        "sendTo": "your gmail",
        "message": "=🎉Study Variable Extraction Workflow Done\n📖 Time to study\n🕓{{ new Date().toLocaleString(\"en-CA\", { timeZone: \"Asia/Singapore\", hour12: false }).replace(',', '') }}",
        "options": {},
        "subject": "🎉Study Variable Extraction Workflow Done",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "jCTNCiXplqBJRbmj",
          "name": "Gmail(owen)"
        }
      },
      "executeOnce": true,
      "typeVersion": 2.1
    },
    {
      "id": "07f67c54-ba3c-41c3-9133-649a9215bf48",
      "name": "스티키 노트5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2800,
        1168
      ],
      "parameters": {
        "color": 4,
        "width": 576,
        "height": 208,
        "content": "# Tips\nSince the workflow makes multiple LLM calls, to avoid unexpected interruptions that waste time and tokens, a `checkpoint` is used to temporarily store data. If Step 3 fails and the workflow stops, activate the `manual trigger`, disable `When Executed by Another Workflow`, and manually adjust `Read Checkpoint Data`(id) so it reads from the previously written `checkpoint` sheet and then continue the workflow.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "676d7e8c-d66a-4fb5-8c3d-6734e7604d26",
      "name": "수동 트리거",
      "type": "n8n-nodes-base.manualTrigger",
      "disabled": true,
      "position": [
        -1200,
        1376
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7b82e214-b931-4181-8018-63fdcc585c73",
      "name": "시트 ID 가져오기",
      "type": "n8n-nodes-base.set",
      "position": [
        -992,
        1184
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "9f2449d6-1013-4aa2-97b9-2e086903301b",
              "name": "ID",
              "type": "string",
              "value": "={{ $json.GoogleSheetID }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "75945c08-8b83-4bc2-9281-977a603ac9a7",
      "name": "Google Gemini 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        96,
        1680
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "id": "OBsJ1xTy5eLJvjhJ",
          "name": "Gemini(pixel)"
        }
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "b7ec38b4-5666-4c57-988c-f24dcfbc4e4e": {
      "main": [
        [
          {
            "node": "1a821473-3e90-4da7-817a-45916004c467",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7b82e214-b931-4181-8018-63fdcc585c73": {
      "main": [
        [
          {
            "node": "27414957-4c91-4ceb-8a3f-c0c31446f99a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "aa8da126-4765-480b-b1aa-94ad560cf6e3": {
      "main": [
        [
          {
            "node": "3ea2219f-3ea4-4728-a055-4386d45e435e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "676d7e8c-d66a-4fb5-8c3d-6734e7604d26": {
      "main": [
        [
          {
            "node": "27414957-4c91-4ceb-8a3f-c0c31446f99a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6dffab19-fc4b-4cce-98e2-f3b3df75f018": {
      "main": [
        [
          {
            "node": "890dcae0-0417-4a2b-9267-7e1714a65f45",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "e3e332f7-0805-4527-b466-226bc98e7e16",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1a821473-3e90-4da7-817a-45916004c467": {
      "main": [
        [
          {
            "node": "9e79fe64-91f9-4a30-b684-af194ba194cf",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "fe2a68e9-b162-445e-ae46-aed72fe9559c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "14bc11af-a987-47e1-8bd5-a9f623cb208d": {
      "main": [
        [
          {
            "node": "b053af46-c202-4217-8f06-a0e0c7a0f94b",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "06ff1131-994f-47de-be13-6136cf9ecb04",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "3b6cea37-8cf0-45e3-b15b-716e2aeec3c8",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "f1260b49-b8d7-4148-bac0-60010ae07c06",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "815ae6d3-d485-4c22-be41-613e2e40104f": {
      "main": [
        [
          {
            "node": "6dffab19-fc4b-4cce-98e2-f3b3df75f018",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "48078b19-e7e8-4ed5-91f6-2540df195daf": {
      "main": [
        [
          {
            "node": "8a66f6d9-8024-4f74-8e08-bc7ac8268671",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b053af46-c202-4217-8f06-a0e0c7a0f94b": {
      "main": [
        [
          {
            "node": "1a821473-3e90-4da7-817a-45916004c467",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5eaa37da-ba8f-413e-9965-4a0e5981fa3d": {
      "main": [
        [
          {
            "node": "14bc11af-a987-47e1-8bd5-a9f623cb208d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9e79fe64-91f9-4a30-b684-af194ba194cf": {
      "main": [
        [
          {
            "node": "b401df9b-f757-4c4c-91ec-2b4a27b74dcb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8a66f6d9-8024-4f74-8e08-bc7ac8268671": {
      "main": [
        [
          {
            "node": "b7ec38b4-5666-4c57-988c-f24dcfbc4e4e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "06ff1131-994f-47de-be13-6136cf9ecb04": {
      "main": [
        [
          {
            "node": "1a821473-3e90-4da7-817a-45916004c467",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ca176a9b-ae02-4afd-a50e-b11d1c37c311": {
      "main": [
        [
          {
            "node": "5eaa37da-ba8f-413e-9965-4a0e5981fa3d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3b6cea37-8cf0-45e3-b15b-716e2aeec3c8": {
      "main": [
        [
          {
            "node": "1a821473-3e90-4da7-817a-45916004c467",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "27414957-4c91-4ceb-8a3f-c0c31446f99a": {
      "main": [
        [
          {
            "node": "815ae6d3-d485-4c22-be41-613e2e40104f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e3e332f7-0805-4527-b466-226bc98e7e16": {
      "main": [
        [
          {
            "node": "52ab0f2d-272b-4e57-b4b1-b6fc08550e40",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b401df9b-f757-4c4c-91ec-2b4a27b74dcb": {
      "main": [
        [
          {
            "node": "faa63b27-907a-48e7-bb85-b30763f7827d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "75945c08-8b83-4bc2-9281-977a603ac9a7": {
      "ai_languageModel": [
        [
          {
            "node": "52ab0f2d-272b-4e57-b4b1-b6fc08550e40",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "1de00028-e39b-446d-9f18-db67380ce4d1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "fe2a68e9-b162-445e-ae46-aed72fe9559c": {
      "main": [
        [
          {
            "node": "aa8da126-4765-480b-b1aa-94ad560cf6e3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3ea2219f-3ea4-4728-a055-4386d45e435e": {
      "main": [
        [
          {
            "node": "b7ec38b4-5666-4c57-988c-f24dcfbc4e4e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9ed01cca-b185-4e4f-9a86-99691152a70d": {
      "ai_outputParser": [
        [
          {
            "node": "1de00028-e39b-446d-9f18-db67380ce4d1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "8acb6ded-253b-409b-9e8b-004f4290a2a9": {
      "ai_outputParser": [
        [
          {
            "node": "fe2a68e9-b162-445e-ae46-aed72fe9559c",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "8cc8c6ab-7f3a-4ddf-a146-d7db95c96896": {
      "ai_languageModel": [
        [
          {
            "node": "8acb6ded-253b-409b-9e8b-004f4290a2a9",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "fe2a68e9-b162-445e-ae46-aed72fe9559c",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "2bc80873-54d9-400c-b6a4-762af5fe1fdf": {
      "ai_outputParser": [
        [
          {
            "node": "8acb6ded-253b-409b-9e8b-004f4290a2a9",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "1de00028-e39b-446d-9f18-db67380ce4d1": {
      "ai_outputParser": [
        [
          {
            "node": "52ab0f2d-272b-4e57-b4b1-b6fc08550e40",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "52ab0f2d-272b-4e57-b4b1-b6fc08550e40": {
      "main": [
        [
          {
            "node": "48078b19-e7e8-4ed5-91f6-2540df195daf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "716b6a67-b194-4ea6-b24f-5cf9002e78c1": {
      "main": [
        [
          {
            "node": "7b82e214-b931-4181-8018-63fdcc585c73",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

고급 - 문서 추출, AI 요약

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수39
카테고리2
노드 유형17
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

저자

A graduate student who is learning n8n

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34