{
  "nodes": [
    {
      "id": "36816ae7-414a-482e-8a50-021885237273",
      "name": "Event Type",
      "type": "n8n-nodes-base.switch",
      "position": [
        -220,
        -140
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "row.updated",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "2162daf8-d23d-4b8f-8257-bdfc5400a3a8",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.event_type }}",
                    "rightValue": "row.updated"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "field.created",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "48e112f6-afe8-40bf-b673-b37446934a62",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.event_type }}",
                    "rightValue": "field.created"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "field.updated",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "5aa258cd-15c2-4156-a32d-afeed662a38e",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.event_type }}",
                    "rightValue": "field.updated"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "920ca6d8-7a6e-4482-b003-fa643f550a85",
      "name": "Get Prompt Fields",
      "type": "n8n-nodes-base.code",
      "position": [
        -900,
        -140
      ],
      "parameters": {
        "jsCode": "const fields = $input.first().json.fields\n    .filter(item => item.description)\n    .map((item, idx) => ({\n      id: item.id,\n      order: idx,\n      name: item.name,\n      type: item.type,\n      description: item.description,\n    }));\n\nreturn { json: { fields } };"
      },
      "typeVersion": 2
    },
    {
      "id": "3b73b2f5-9081-4633-911f-ef3041600a00",
      "name": "Get File Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1220,
        320
      ],
      "parameters": {
        "url": "={{ $json.File[0].url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "e96edca8-9e8b-4ca4-bef9-dae673d3aba4",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        1380,
        320
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "b5c2b87b-5756-4810-84c9-34ea420bdcef",
      "name": "Get Result",
      "type": "n8n-nodes-base.set",
      "position": [
        2000,
        380
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "63d7c52e-d5bf-4f4c-9e37-1d5feaea20f4",
              "name": "id",
              "type": "string",
              "value": "={{ $('Row Reference').item.json.id }}"
            },
            {
              "id": "3ad72567-1d17-4910-b916-4c34a43b1060",
              "name": "={{ $('Event Ref').first().json.field.name }}",
              "type": "string",
              "value": "={{ $json.text.trim() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a5cb0510-620b-469d-bf66-26ab64d6f88f",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        800,
        220
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "20e24946-59d8-4b19-bfab-eebb02f7e46d",
      "name": "Row Reference",
      "type": "n8n-nodes-base.noOp",
      "position": [
        980,
        320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "4090c53e-e635-4421-ab2b-475bfc62cea4",
      "name": "Generate Field Value",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1540,
        320
      ],
      "parameters": {
        "text": "=<file>\n{{ $json.text }}\n</file>\n\nData to extract: {{ $('Event Ref').first().json.field.description }}\noutput format is: {{ $('Event Ref').first().json.field.type }}",
        "messages": {
          "messageValues": [
            {
              "message": "=You assist the user in extracting the required data from the given file.\n* Keep you answer short.\n* If you cannot extract the requested data, give you response as \"n/a\"."
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.5
    },
    {
      "id": "582d4008-4871-4798-bc24-abf774ad29b5",
      "name": "Fields to Update",
      "type": "n8n-nodes-base.code",
      "position": [
        1560,
        -300
      ],
      "parameters": {
        "jsCode": "const row = $('Row Ref').first().json;\nconst fields = $('Get Prompt Fields').first().json.fields;\nconst missingFields = fields\n  .filter(field => field.description && !row[field.name]);\n\nreturn missingFields;"
      },
      "typeVersion": 2
    },
    {
      "id": "051c6a99-cec3-42df-9de7-47cb69b51682",
      "name": "Loop Over Items1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        820,
        -420
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "f559c8ff-2ee5-478d-84ee-6b0ca2fe2050",
      "name": "Row Ref",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1000,
        -300
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7b82cc73-67cb-46d7-a1d4-19712c86890a",
      "name": "Get File Data1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1240,
        -300
      ],
      "parameters": {
        "url": "={{ $('Row Ref').item.json.File[0].url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "7ef1556c-96a3-4988-982d-ec8c5fba4601",
      "name": "Extract from File1",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        1400,
        -300
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "9916f1c1-f413-4996-ad45-380a899b4a88",
      "name": "Get Result1",
      "type": "n8n-nodes-base.set",
      "position": [
        2120,
        -260
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e376ba60-8692-4962-9af7-466b6a3f44a2",
              "name": "={{ $('Fields to Update').item.json.name }}",
              "type": "string",
              "value": "={{ $json.text.trim() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f62f612d-c288-4062-ab3c-dbc24c9b4b38",
      "name": "Generate Field Value1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1720,
        -300
      ],
      "parameters": {
        "text": "=<file>\n{{ $('Extract from File1').first().json.text }}\n</file>\n\nData to extract: {{ $json.description }}\noutput format is: {{ $json.type }}",
        "messages": {
          "messageValues": [
            {
              "message": "=You assist the user in extracting the required data from the given file.\n* Keep you answer short.\n* If you cannot extract the requested data, give you response as \"n/a\" followed by \"(reason)\" where reason is replaced with reason why data could not be extracted."
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.5
    },
    {
      "id": "615f7436-f280-4033-8ec8-a34f1bd78075",
      "name": "Filter Valid Rows",
      "type": "n8n-nodes-base.filter",
      "position": [
        520,
        -420
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "7ad58f0b-0354-49a9-ab2f-557652d7b416",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.File[0].url }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "281b9fb0-305c-4a0c-b73b-82b6ba876d12",
      "name": "Filter Valid Fields",
      "type": "n8n-nodes-base.filter",
      "position": [
        340,
        220
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5b4a7393-788c-42dc-ac1f-e76f833f8534",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.field.description }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "dd0fa792-791f-4d31-a7e8-9b72a25b6a07",
      "name": "Event Ref",
      "type": "n8n-nodes-base.noOp",
      "position": [
        160,
        220
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ca1174b3-da18-4d3c-86ef-3028cd5b12a7",
      "name": "Event Ref1",
      "type": "n8n-nodes-base.noOp",
      "position": [
        160,
        -420
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "8800b355-0fa8-4297-b13b-d3da8a01c3b7",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1180,
        -340
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 440,
        "content": "### 1. \ud14c\uc774\ube14 \uc2a4\ud0a4\ub9c8 \uac00\uc838\uc624\uae30\n\n[Airtable \ub178\ub4dc\uc5d0 \ub300\ud574 \ub354 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.airtable/)\n\n\uc774 \uc791\uc5c5\uc744 \uc704\ud574 \ud3b8\ub9ac\ud55c Airtable \ub178\ub4dc\ub97c \uc0ac\uc6a9\ud560 \uac83\uc785\ub2c8\ub2e4. Airtable\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \ud544\uc694\ub97c \uc704\ud574 \uc774 \ub178\ub4dc\uc5d0 \uc775\uc219\ud574\uc9c0\ub294 \uac83\uc744 \ucd94\ucc9c\ud569\ub2c8\ub2e4!"
      },
      "typeVersion": 1
    },
    {
      "id": "a90876d3-8a93-4d90-9e2a-f23de452259d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -260,
        -440
      ],
      "parameters": {
        "color": 5,
        "width": 330,
        "height": 80,
        "content": "2a. \ucd5c\uc18c \ud589 \uc218 \uc5c5\ub370\uc774\ud2b8  \n\uc774 \ube0c\ub79c\uce58\uac00 \uc601\ud5a5\uc744 \ubc1b\uc740 \ud589\ub9cc \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "319adf97-8b14-4069-b4cc-594a6ea479c1",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        140
      ],
      "parameters": {
        "color": 5,
        "width": 390,
        "height": 120,
        "content": "2b. \ud544\ub4dc \uc544\ub798\uc758 \ubaa8\ub4e0 \ud589 \uc5c5\ub370\uc774\ud2b8  \n\uc774 \ube0c\ub79c\uce58\uac00 \ud544\ub4dc/\uc5f4\uc774 \uc0dd\uc131\ub418\uac70\ub098 \ubcc0\uacbd\ub420 \ub54c \ud544\ub4dc \uc544\ub798\uc758 \ubaa8\ub4e0 \uc801\uc6a9 \uac00\ub2a5\ud55c \ud589\uc744 \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4. \uc8fc\uc758\ud558\uc138\uc694 - \ud589\uc774 \uc218\ucc9c \uac1c \uc788\uc73c\uba74, \uc774 \uc791\uc5c5\uc774 \uc2dc\uac04\uc774 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4!"
      },
      "typeVersion": 1
    },
    {
      "id": "42a60c8c-476f-4930-bac5-4d36a7185f4f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2240,
        -1000
      ],
      "parameters": {
        "width": 520,
        "height": 1120,
        "content": "## \uc9c1\uc811 \ud574\ubcf4\uc138\uc694!\n### \uc774 n8n \ud15c\ud50c\ub9bf\uc740 [Airtable](https://airtable.com/invite/r/cKzxFYVc) \ud14c\uc774\ube14\uc5d0 \ub300\ud55c PDF \uc6cc\ud06c\ud50c\ub85c \ud328\ud134\uacfc \ud568\uaed8 \"\ub3d9\uc801\" \ub610\ub294 \"\uc0ac\uc6a9\uc790 \uc815\uc758\" \ud504\ub86c\ud504\ud2b8\ub97c \uad6c\ub3d9\ud569\ub2c8\ub2e4. \uac04\ub2e8\ud788 \ub9d0\ud574\uc11c, \uc0ac\uc6a9\uc790\uac00 \uae30\ubcf8 \ud15c\ud50c\ub9bf\uc744 \uac74\ub4dc\ub9ac\uc9c0 \uc54a\uace0 \ud504\ub86c\ud504\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2a4\ud504\ub808\ub4dc\uc2dc\ud2b8\ub97c \ucc44\uc6b8 \uc218 \uc788\uac8c \ud574\uc90d\ub2c8\ub2e4.\n\n**n8n Studio\uc5d0\uc11c \uc81c\uac00 \ud55c \ub3d9\uc601\uc0c1 \ub370\ubaa8 \ud655\uc778\ud558\uae30**: https://www.youtube.com/watch?v=_fNAD1u8BZw\n\n**\uc608\uc2dc Airtable \ud655\uc778\ud558\uae30:** https://airtable.com/appAyH3GCBJ56cfXl/shrXzR1Tj99kuQbyL\n\n\uc774 \ud15c\ud50c\ub9bf\uc740 Airtable\uc758 \uc6f9hook \uc18c\uc2a4\ub85c \uc0ac\uc6a9\ud558\ub3c4\ub85d \uc124\uacc4\ub418\uc5c8\uc2b5\ub2c8\ub2e4. **Baserow \ubc84\uc804\uc774 \ud544\uc694\ud558\uc2e0\uac00\uc694? [\uc5ec\uae30 \ud074\ub9ad](https://n8n.io/workflows/2780-ai-data-extraction-with-dynamic-prompts-and-baserow)**\n\n## \uc791\ub3d9 \uc6d0\ub9ac\n* Airtable.io \ud14c\uc774\ube14\uc740 \ud14c\uc774\ube14 \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc811\uadfc \uac00\ub2a5\ud55c \uc6f9hook\uc73c\ub85c \uc774\ubca4\ud2b8\ub85c \ubcf4\ub0b4\ub294 \ud1b5\ud569 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub294 \ubc18\uc751\ud615 \ud2b8\ub9ac\uac70 \ud328\ud134\uc744 \uac00\ub2a5\ud558\uac8c \ud558\uba70, \uc774 \uacbd\uc6b0 \uc6b0\ub9ac\ub294 `row_updated`, `field_created` \ubc0f `field_updated` \uc774\ubca4\ud2b8\ub97c \ucea1\ucc98\ud569\ub2c8\ub2e4.\n* \ub2e4\uc74c\uc73c\ub85c, Airtable.io \ud14c\uc774\ube14\uc5d0 \"input\" \uc5f4\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uc774 \uc5f4\uc740 \ud504\ub86c\ud504\ud2b8\ub97c \ud3c9\uac00\ud560 \ucee8\ud14d\uc2a4\ud2b8\uac00 \uc800\uc7a5\ub418\ub294 \uacf3\uc785\ub2c8\ub2e4. \uc774 \uc608\uc2dc\uc5d0\uc11c \"input\" \uc5f4 \uc774\ub984\uc740 \"file\"\uc774\uba70, \uc5ec\uae30\uc5d0 PDF\ub97c \uc5c5\ub85c\ub4dc\ud569\ub2c8\ub2e4. \uc774 \"input\" \ud544\ub4dc\ub294 \uc778\uac04\uc774 \uc81c\uc5b4\ud558\uba70, \uc774 \ud15c\ud50c\ub9bf\uc5d0\uc11c \uc5c5\ub370\uc774\ud2b8\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n* \uc774\uc81c \uc5f4(\uc989, Airtable\uc758 \"fields\")\uc5d0 \ub300\ud574 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uac01 \ud544\ub4dc\ub294 \uc774\ub984, \uc720\ud615 \ubc0f \uc124\uba85\uc744 \uc815\uc758\ud560 \uc218 \uc788\uc73c\uba70, \uc774\ub4e4\uc774 \ud568\uaed8 \uc2a4\ud0a4\ub9c8\ub97c \ud615\uc131\ud569\ub2c8\ub2e4. \ucc98\uc74c \ub450 \uac00\uc9c0\ub294 \uc790\uba85\ud558\uc9c0\ub9cc, \"description\"\uc740 \uc0ac\uc6a9\uc790\uac00 \ud504\ub86c\ud504\ud2b8\ub97c \uc81c\uacf5\ud558\ub294 \uacf3\uc73c\ub85c, \ud574\ub2f9 \ud544\ub4dc\uac00 \ud3ec\ud568\ud574\uc57c \ud560 \ub370\uc774\ud130\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.\n* \uc774 \ud15c\ud50c\ub9bf\uc5d0\uc11c \uc6f9hook \ud2b8\ub9ac\uac70\ub294 \ud589\uc774\ub098 \uc5f4\uc774 \uc5c5\ub370\uc774\ud2b8\ub420 \ub54c \ub300\uae30\ud569\ub2c8\ub2e4. \ub4e4\uc5b4\uc624\ub294 \uc774\ubca4\ud2b8\uc5d0\ub294 \uc601\ud5a5\uc744 \ubc1b\uc740 \ud14c\uc774\ube14, \ud589 \ubc0f/\ub610\ub294 \uc5f4 ID\uc640 \uac19\uc740 \ub9ce\uc740 \uc138\ubd80 \uc815\ubcf4\uac00 \ud3ec\ud568\ub429\ub2c8\ub2e4.\n* \uc774 \uc815\ubcf4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud14c\uc774\ube14\uc758 \uc2a4\ud0a4\ub9c8\ub97c \uac00\uc838\uc640 \uc5f4\uc758 \uc124\uba85(\uc989, \ub3d9\uc801 \ud504\ub86c\ud504\ud2b8)\uc744 \uac00\uc838\uc635\ub2c8\ub2e4.\n* \uac01 \ud2b8\ub9ac\uac70\ub41c \uc774\ubca4\ud2b8\uc5d0 \ub300\ud574, \uc785\ub825(\uc989, PDF)\uc744 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc5ec AI/LLM\uc5d0 \uc900\ube44\ud569\ub2c8\ub2e4. \uc0ac\uc6a9 \uac00\ub2a5\ud55c \uc5f4\uc744 \ubc18\ubcf5\ud558\uba70 \ub3d9\uc801 \ud504\ub86c\ud504\ud2b8\ub97c \uc81c\uacf5\ud558\uc5ec, LLM\uc774 PDF\uc5d0 \ub300\ud574 \uac01 \ud504\ub86c\ud504\ud2b8\ub97c \uc2e4\ud589\ud558\uace0 \uac01 \uc140\uc5d0 \ub300\ud55c \uac12 \uc751\ub2f5\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.\n* \uc774\ub7ec\ud55c \uac12\ub4e4\uc744 \uc218\uc9d1\ud558\uc5ec Airtable \ub808\ucf54\ub4dc\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4.\n\n## \uc0ac\uc6a9 \ubc29\ubc95\n* \uc774 \uc6cc\ud06c\ud50c\ub85c\ub97c \uac8c\uc2dc\ud558\uc5ec Airtable \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \uc811\uadfc\ud560 \uc218 \uc788\uac8c \ud574\uc57c \ud569\ub2c8\ub2e4.\n* \"Create Airtable Webhooks\" \ubbf8\ub2c8-\ud50c\ub85c\ub97c \uc2e4\ud589\ud558\uc5ec Airtable\uacfc \uc5f0\uacb0\ud574\uc57c \ud569\ub2c8\ub2e4.\n* \uc774 \ud15c\ud50c\ub9bf\uc740 \ub2e4\ub978 Airtable\uc5d0\ub3c4 \uc7ac\uc0ac\uc6a9\ud560 \uc218 \uc788\uc9c0\ub9cc, \uac01 \ud14c\uc774\ube14\ub9c8\ub2e4 \uc6f9hook\uc744 \uc0c8\ub85c \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.\n\n### \ub3c4\uc6c0\uc774 \ud544\uc694\ud558\uc2e0\uac00\uc694?\n[Discord](https://discord.com/invite/XPKeKXeB7d) \uc5d0 \ucc38\uc5ec\ud558\uac70\ub098 [Forum](https://community.n8n.io/)\uc5d0\uc11c \ubb3c\uc5b4\ubcf4\uc138\uc694!\n\n\uc990\uac70\uc6b4 \ud50c\ub85c\uc6b0\uadf8\ub7a8\ubc0d!"
      },
      "typeVersion": 1
    },
    {
      "id": "c6d037e9-1bf7-47a7-9c46-940220e0786b",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -680,
        -340
      ],
      "parameters": {
        "color": 7,
        "width": 760,
        "height": 440,
        "content": "### 2. \uc774\ubca4\ud2b8 \ub77c\uc6b0\ud130 \ud328\ud134\n\n[\uc2a4\uc704\uce58 \ub178\ub4dc\uc5d0 \ub300\ud574 \ub354 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/)\n\n\ub2e8\uc21c\ud55c \uc2a4\uc704\uce58 \ub178\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucc98\ub9ac\ud560 \uc774\ubca4\ud2b8\ub97c \uacb0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc6b0\ub9ac\uc758 \ud589 \uc774\ubca4\ud2b8\uc640 \ud544\ub4dc \uc774\ubca4\ud2b8\uc758 \ucc28\uc774\uc810\uc740 \ud589 \uc774\ubca4\ud2b8\uac00 \ud558\ub098\uc758 \ud589\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce58\ub294 \ubc18\uba74 \ud544\ub4dc \uc774\ubca4\ud2b8\ub294 \ubaa8\ub4e0 \ud589\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce5c\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "897cec32-3a4c-4a76-bffe-b1456c287b44",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        -620
      ],
      "parameters": {
        "color": 7,
        "width": 620,
        "height": 400,
        "content": "### 3. \uc720\ud6a8 \uc785\ub825\uc774 \uc788\ub294 \ud589\ub9cc \ud544\ud130\ub9c1\n[Split Out \ub178\ub4dc\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/)\n\n\uc774 \ub2e8\uacc4\ub294 \ud558\ub098 \uc774\uc0c1\uc758 \uc5c5\ub370\uc774\ud2b8\ub41c \ud589\uc744 \ucc98\ub9ac\ud569\ub2c8\ub2e4. \uc5ec\uae30\uc11c \"updated\"\ub294 \uc774 \ud589\ub4e4\uc758 \"input\" \uc5f4(\uc989, \uc6b0\ub9ac \uc608\uc81c\uc5d0\uc11c\uc758 \"file\")\uc774 \ubcc0\uacbd\ub418\uc5c8\uc74c\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. \uac01 \uc601\ud5a5\uc744 \ubc1b\uc740 \ud589\uc5d0 \ub300\ud574, \uc6b0\ub9ac\ub294 \uc804\uccb4 \ud589\uc744 \uac00\uc838\uc640 \uc5c5\ub370\uc774\ud2b8\ud574\uc57c \ud560 \uc5f4\ub4e4\ub9cc \ud30c\uc545\ud560 \uac83\uc785\ub2c8\ub2e4 - \uc774\ub294 \uc774\ubbf8 \uac12\uc774 \uc788\ub294 \uc5f4\uc5d0 \ub300\ud55c \uac12 \uc0dd\uc131\uacfc \uac19\uc740 redundant\ud55c \uc791\uc5c5\uc744 \ud53c\ud558\uae30 \uc704\ud55c \ucd5c\uc801\ud654\uc785\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "a5999ca3-4418-42c5-aa1c-fbdfb1c04fef",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2060,
        -480
      ],
      "parameters": {
        "color": 7,
        "width": 600,
        "height": 440,
        "content": "### 6. Airtable \ub808\ucf54\ub4dc \uc5c5\ub370\uc774\ud2b8\n\n[Edit Fields \ub178\ub4dc\uc5d0 \ub300\ud574 \ub354 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/)\n\n\ub9c8\uce68\ub0b4, LLM \uc751\ub2f5\uc744 \uc218\uc9d1\ud558\uc5ec \uc774\ub97c \uacb0\ud569\ud574 Airtable \ub808\ucf54\ub4dc\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\uae30 \uc704\ud55c API \uc694\uccad\uc744 \uad6c\ucd95\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 - \uc774 \ub808\ucf54\ub4dc\uc758 ID\ub294 \ucd08\uae30 \uc6f9\ud6c5\uc5d0\uc11c \uc5bb\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \uc791\uc5c5\uc774 \uc644\ub8cc\ub41c \ud6c4, \ub2e4\uc74c \ud589\uc73c\ub85c \uc774\ub3d9\ud558\uc5ec \ud504\ub85c\uc138\uc2a4\ub97c \ubc18\ubcf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "38192929-a387-4240-8373-290499b40e5a",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1180,
        -580
      ],
      "parameters": {
        "color": 7,
        "width": 860,
        "height": 580,
        "content": "### 5. PDFs, LLMs \uadf8\ub9ac\uace0 \ub3d9\uc801 \ud504\ub86c\ud504\ud2b8? \uc624 \ub9c8\uc774!\n\n[Basic LLM \ub178\ub4dc\uc5d0 \ub300\ud574 \ub354 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/)\n\n\uc774 \ub2e8\uacc4\ub294 \ubaa8\ub4e0 \uac83\uc774 \ud569\uccd0\uc9c0\ub294 \uacf3\uc785\ub2c8\ub2e4! \uac04\ub2e8\ud788 \ub9d0\ud574\uc11c, \uc6b0\ub9ac\ub294 LLM\uc5d0\uac8c PDF \ub0b4\uc6a9\uc744 \ucee8\ud14d\uc2a4\ud2b8\ub85c \uc81c\uacf5\ud558\uace0, \uc774\uc804\uc5d0 \uac00\uc838\uc628 \uc2a4\ud0a4\ub9c8\uc5d0\uc11c \ub098\uc628 \ub3d9\uc801 \ud504\ub86c\ud504\ud2b8\ub97c \uc6b0\ub9ac\uc758 \ud589\uc5d0 \ub300\ud574 \ubc18\ubcf5\ud569\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc5d0, \uc6b0\ub9ac\uc758 LLM\uc774 \uc694\uccad\ub41c \uac01 \uc5f4\uc5d0 \ub300\ud55c \uac12\uc744 \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.\n\n**\ub178\ud2b8**: PDF\ub97c \uce90\uc2f1\ud558\uae30 \uc704\ud55c \ucd5c\uc801\ud654\uac00 \ud655\uc2e4\ud788 \uac00\ub2a5\ud558\uc9c0\ub9cc, \uc774\ub294 \uc774 \ub370\ubaa8\uc758 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0a9\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "19a9b93a-d18f-4ffd-ae93-ed41cf398e90",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        740,
        -580
      ],
      "parameters": {
        "color": 7,
        "width": 420,
        "height": 460,
        "content": "### 4. \uc544\uc774\ud15c \ub8e8\ud504 \uc0ac\uc6a9\n\n[Split in Batches \ub178\ub4dc\uc5d0 \ub300\ud574 \ub354 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/)\n\n\uc5ec\uae30\uc11c \ubd84\ud560 \ubc30\uce58 \ub178\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud55c \ubc88\uc5d0 \ud558\ub098\uc758 \ud589\uc744 \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc774\ub294 \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc744 \uc704\ud55c \uc120\ud638\uc0ac\ud56d\uc785\ub2c8\ub2e4 - Airtable\uc5d0\uc11c \ubcc0\uacbd \uc0ac\ud56d\uc774 \ub354 \ube60\ub974\uac8c \ubcf4\uc785\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "5407fead-ee7c-47c8-94ed-5b89e74e50e8",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        40
      ],
      "parameters": {
        "color": 7,
        "width": 600,
        "height": 360,
        "content": "### 7. \ud574\ub2f9 \uc5f4 \uc544\ub798\uc5d0 \ubaa8\ub4e0 \uc801\uc6a9 \uac00\ub2a5\ud55c \ud589 \ub098\uc5f4  \n[\ud544\ud130 \ub178\ub4dc\uc5d0 \ub300\ud574 \ub354 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter)  \n\n\uc131\ub2a5\uc744 \uc720\uc9c0\ud558\uae30 \uc704\ud574, \uc6b0\ub9ac\ub294 inputfield\uac00 \ucc44\uc6cc\uc9c4 \ud589\ub9cc \uac00\uc838\uc624\uae30\ub85c \uacb0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \ucd94\ucd9c\uc744 \uc218\ud589\ud558\ub294 \ub370 \ud544\uc694\ud558\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc774\ub294 Airtable \ud544\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc27d\uac8c \ub2ec\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "43b0e330-b79a-4577-b4fc-314e8b790cf7",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1160,
        140
      ],
      "parameters": {
        "color": 7,
        "width": 700,
        "height": 500,
        "content": "### 9. LLM\uc744 \uc0ac\uc6a9\ud558\uc5ec \uac12 \uc0dd\uc131\n\n[\ud30c\uc77c\uc5d0\uc11c \ucd94\ucd9c \ub178\ub4dc\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/)\n\nStep 5\uc640 \uac70\uc758 \ub3d9\uc77c\ud558\uc9c0\ub9cc, \ubaa8\ub4e0 \ud544\ub4dc/\uc5f4\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \ub300\uc2e0 \ud558\ub098\uc758 \uac12\ub9cc \uc0dd\uc131\ud558\uba74 \ub429\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "0665fe56-48d2-4215-8d95-d4c01f9266ed",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1720,
        -140
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "1997fb8b-73eb-4016-bab6-eb8f02fee368",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        40
      ],
      "parameters": {
        "color": 7,
        "width": 420,
        "height": 460,
        "content": "### 8. \uc544\uc774\ud15c \ub8e8\ud504 \uc0ac\uc6a9\n\n[Split in Batches \ub178\ub4dc\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/)\n\n4\ub2e8\uacc4\uc640 \uc720\uc0ac\ud558\uac8c, Split in Batches \ub178\ub4dc\ub294 \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc744 \uc704\ud55c \uc120\ud638 \uc0ac\ud56d\uc785\ub2c8\ub2e4 - \ubcc0\uacbd \uc0ac\ud56d\uc774 Airtable\uc5d0\uc11c \ub354 \ube60\ub974\uac8c \ubc18\uc601\ub429\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "c2799ded-b742-43a2-80ce-7a0c8f1df96e",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1540,
        500
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "e5b42790-fc86-4134-9d04-e6bcad4a5f20",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1880,
        140
      ],
      "parameters": {
        "color": 7,
        "width": 500,
        "height": 440,
        "content": "### 10. Airtable \ub808\ucf54\ub4dc \uc5c5\ub370\uc774\ud2b8\n\n[Edit Fields \ub178\ub4dc\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/)\n\nStep 6\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c, LLM \uc751\ub2f5\uc740 \ud589\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\uc9c0\ub9cc \uc0dd\uc131\ub418\uac70\ub098 \ubcc0\uacbd\ub41c \ud544\ub4dc\uc5d0\uc11c\ub9cc \ud569\ub2c8\ub2e4. \uc644\ub8cc\ub418\uba74 \ub8e8\ud504\uac00 \uacc4\uc18d\ub418\uc5b4 \ub2e4\uc74c \ud589\uc774 \ucc98\ub9ac\ub429\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "b1e98631-a440-4c66-b2d2-8236f6889b65",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2240,
        -1140
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 120,
        "content": "\uc5d0\uc5b4\ud14c\uc774\ube14.io"
      },
      "typeVersion": 1
    },
    {
      "id": "9d293b3a-954d-4e3b-8773-b6c3dded9520",
      "name": "Get Webhook Payload",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -580,
        -140
      ],
      "parameters": {
        "url": "=https://api.airtable.com/v0/bases/{{ $('Airtable Webhook').first().json.body.base.id }}/webhooks/{{ $('Airtable Webhook').first().json.body.webhook.id }}/payloads",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "airtableTokenApi"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5f8d919b-14cd-4cb4-8604-731e56cc9402",
      "name": "Parse Event",
      "type": "n8n-nodes-base.code",
      "position": [
        -400,
        -140
      ],
      "parameters": {
        "jsCode": "const webhook = $('Airtable Webhook').first().json;\nconst schema = $('Get Prompt Fields').first().json;\nconst { payloads } = $input.first().json;\nif (!payloads.length) return [];\n\nconst event = payloads[payloads.length - 1];\nconst baseId = webhook.body.base.id;\nconst tableId = Object.keys(event.changedTablesById)[0];\nconst table = event.changedTablesById[tableId];\n\nreturn {\n  baseId,\n  tableId,\n  event_type: getEventType(table),\n  fieldId: getFieldId(table),\n  field: getField(getFieldId(table)),\n  rowId: getRecordId(table),\n}\n\nfunction getEventType(changedTableByIdObject) {\n  if (changedTableByIdObject['createdFieldsById']) return 'field.created';\n  if (changedTableByIdObject['changedFieldsById']) return 'field.updated'\n  if (changedTableByIdObject['changedRecordsById']) return 'row.updated';\n  return 'unknown';\n}\n\nfunction getFieldId(changedTableByIdObject) {\n  const field = changedTableByIdObject.createdFieldsById\n    || changedTableByIdObject.changedFieldsById\n    || null;\n\n  return field ? Object.keys(field)[0] : null;\n}\n\nfunction getField(id) {\n  return schema.fields.find(field => field.id === id);\n}\n\nfunction getRecordId(changedTableByIdObject) {\n  const record = changedTableByIdObject.changedRecordsById\n    || null;\n\n  return record ? Object.keys(record)[0] : null;\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "9b99d939-94d6-4fef-8b73-58c702503221",
      "name": "Get Table Schema",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -1080,
        -140
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Airtable Webhook').item.json.body.base.id }}"
        },
        "resource": "base",
        "operation": "getSchema"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "c29fc911-a852-46f2-bbb1-5092cc1aaa9d",
      "name": "Fetch Records",
      "type": "n8n-nodes-base.airtable",
      "position": [
        520,
        220
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.baseId }}"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.tableId }}"
        },
        "options": {},
        "operation": "search",
        "filterByFormula": "NOT({File} = \"\")"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "86d3c8d8-709f-4d9d-99bc-5d1b4aeb8603",
      "name": "Update Row",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2180,
        380
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Event Ref').first().json.baseId }}"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Event Ref').first().json.tableId }}"
        },
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true
            },
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "File",
              "type": "array",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "File",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Full Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Full Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Created",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "Created",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Modified",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "Last Modified",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Address",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "id"
          ]
        },
        "options": {},
        "operation": "update"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "95d08439-59a2-4e74-bd5a-b71cf079b621",
      "name": "Get Row",
      "type": "n8n-nodes-base.airtable",
      "position": [
        340,
        -420
      ],
      "parameters": {
        "id": "={{ $json.rowId }}",
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.baseId }}"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.tableId }}"
        },
        "options": {}
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "50888ac5-30c9-4036-aade-6ccfdf605c3b",
      "name": "Add Row ID to Payload",
      "type": "n8n-nodes-base.set",
      "position": [
        2300,
        -260
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "={{\n{\n  id: $('Row Ref').item.json.id,\n  ...$input.all()\n    .map(item => item.json)\n    .reduce((acc, item) => ({\n      ...acc,\n      ...item,\n    }), {})\n}\n}}"
      },
      "executeOnce": true,
      "typeVersion": 3.4
    },
    {
      "id": "e3ebeb45-45d9-44a4-a2e6-bde89f5da125",
      "name": "Update Record",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2480,
        -260
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Event Ref1').first().json.baseId }}"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Event Ref1').first().json.tableId }}"
        },
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true
            },
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "File",
              "type": "array",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "File",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Full Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Full Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Address",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Created",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "Created",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Modified",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "Last Modified",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "id"
          ]
        },
        "options": {},
        "operation": "update"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "ac01ec4b-e030-4608-af38-64558408832f",
      "name": "Airtable Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1400,
        -140
      ],
      "parameters": {
        "path": "a82f0ae7-678e-49d9-8219-7281e8a2a1b2",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "90178da9-2000-474e-ba93-a02d03ec6a1d",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1600,
        -640
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b8b887ce-f891-4a3c-993b-0aaccadf1b52",
      "name": "Set Airtable Vars",
      "type": "n8n-nodes-base.set",
      "position": [
        -1420,
        -640
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "012cb420-1455-4796-a2ac-a31e6abf59ba",
              "name": "appId",
              "type": "string",
              "value": "<MY_BASE_ID>"
            },
            {
              "id": "e863b66c-420f-43c6-aee2-43aa5087a0a5",
              "name": "tableId",
              "type": "string",
              "value": "<MY_TABLE_ID>"
            },
            {
              "id": "e470be1a-5833-47ed-9e2f-988ef5479738",
              "name": "notificationUrl",
              "type": "string",
              "value": "<MY_WEBHOOK_URL>"
            },
            {
              "id": "e4b3213b-e3bd-479b-99ec-d1aa31eaa4c8",
              "name": "inputField",
              "type": "string",
              "value": "File"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a3ef1a4a-fd22-4a37-8edb-48037f44fa4b",
      "name": "Get Table Schema1",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -1240,
        -820
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.appId }}"
        },
        "resource": "base",
        "operation": "getSchema"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "2490bbc6-2ea1-4146-b0b8-5a406e89ea2c",
      "name": "Get \"Input\" Field",
      "type": "n8n-nodes-base.set",
      "position": [
        -1060,
        -820
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "={{\n$input.all()\n    .map(item => item.json)\n    .find(item => item.id === $('Set Airtable Vars').first().json.tableId)\n    .fields\n    .find(field => field.name === $('Set Airtable Vars').first().json.inputField)\n}}"
      },
      "executeOnce": true,
      "typeVersion": 3.4
    },
    {
      "id": "a3de141f-0ce8-4f8e-ae8e-f10f635d14ec",
      "name": "RecordsChanged Webhook",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -880,
        -820
      ],
      "parameters": {
        "url": "=https://api.airtable.com/v0/bases/{{ $('Set Airtable Vars').first().json.appId }}/webhooks",
        "method": "POST",
        "options": {},
        "jsonBody": "={{\n{\n  \"notificationUrl\": $('Set Airtable Vars').first().json.notificationUrl,\n  \"specification\": {\n    \"options\": {\n      \"filters\": {\n        \"fromSources\": [ \"client\" ],\n        \"dataTypes\": [ \"tableData\" ],\n        \"changeTypes\": [ \"update\" ],\n        \"recordChangeScope\": $('Set Airtable Vars').first().json.tableId,\n        \"watchDataInFieldIds\": [$json.id]\n      }\n    }\n  }\n}\n}}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "airtableTokenApi"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "21b0fae8-2046-4647-83c4-132d1d63503a",
      "name": "FieldsChanged Webhook",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -880,
        -640
      ],
      "parameters": {
        "url": "=https://api.airtable.com/v0/bases/{{ $('Set Airtable Vars').first().json.appId }}/webhooks",
        "method": "POST",
        "options": {},
        "jsonBody": "={{\n{\n  \"notificationUrl\": $('Set Airtable Vars').first().json.notificationUrl,\n  \"specification\": {\n    \"options\": {\n      \"filters\": {\n        \"fromSources\": [ \"client\" ],\n        \"dataTypes\": [ \"tableFields\" ],\n        \"changeTypes\": [ \"add\", \"update\" ],\n        \"recordChangeScope\": $('Set Airtable Vars').first().json.tableId\n      }\n    }\n  }\n}\n}}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "airtableTokenApi"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f31c36cb-98da-4688-a83a-f06e46d2b8a2",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1680,
        -1000
      ],
      "parameters": {
        "color": 5,
        "width": 1020,
        "height": 580,
        "content": "## \u2b50\ufe0f Airtable \uc6f9\ud6c5 \uc0dd\uc131\n\uc774 \uc6cc\ud06c\ud50c\ub85c\ub97c Airtable\uacfc \uc5f0\uacb0\ud558\ub824\uba74 Base\uc5d0 \uc6f9\ud6c5\uc744 \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.\n\uc774 \uc791\uc5c5\uc740 \ud55c \ubc88\ub9cc \uc218\ud589\ud558\uba74 \ub418\uc9c0\ub9cc, \uc774 \uc6f9\ud6c5\uc774 7\uc77c \ud6c4\uc5d0 \ube44\ud65c\uc131\ud654\ub418\uba74 \ub2e4\uc2dc \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.\n\n\ub354 \ub9ce\uc740 \uc815\ubcf4\ub97c \uc704\ud574 Airtable \uac1c\ubc1c\uc790 \ubb38\uc11c\ub97c \ud655\uc778\ud558\uc138\uc694: [https://airtable.com/developers/web/api/webhooks-overview](https://airtable.com/developers/web/api/webhooks-overview)"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Get Row": {
      "main": [
        [
          {
            "node": "Filter Valid Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Row Ref": {
      "main": [
        [
          {
            "node": "Get File Data1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Event Ref": {
      "main": [
        [
          {
            "node": "Filter Valid Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Event Ref1": {
      "main": [
        [
          {
            "node": "Get Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Event Type": {
      "main": [
        [
          {
            "node": "Event Ref1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Event Ref",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Event Ref",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Result": {
      "main": [
        [
          {
            "node": "Update Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Row": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Result1": {
      "main": [
        [
          {
            "node": "Add Row ID to Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Event": {
      "main": [
        [
          {
            "node": "Event Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Records": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get File Data": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Row Reference": {
      "main": [
        [
          {
            "node": "Get File Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Record": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get File Data1": {
      "main": [
        [
          {
            "node": "Extract from File1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Row Reference",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable Webhook": {
      "main": [
        [
          {
            "node": "Get Table Schema",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fields to Update": {
      "main": [
        [
          {
            "node": "Generate Field Value1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Table Schema": {
      "main": [
        [
          {
            "node": "Get Prompt Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items1": {
      "main": [
        [],
        [
          {
            "node": "Row Ref",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Generate Field Value",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Valid Rows": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get \"Input\" Field": {
      "main": [
        [
          {
            "node": "RecordsChanged Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Prompt Fields": {
      "main": [
        [
          {
            "node": "Get Webhook Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Table Schema1": {
      "main": [
        [
          {
            "node": "Get \"Input\" Field",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Field Value1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Set Airtable Vars": {
      "main": [
        [
          {
            "node": "Get Table Schema1",
            "type": "main",
            "index": 0
          },
          {
            "node": "FieldsChanged Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File1": {
      "main": [
        [
          {
            "node": "Fields to Update",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Field Value",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Filter Valid Fields": {
      "main": [
        [
          {
            "node": "Fetch Records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Webhook Payload": {
      "main": [
        [
          {
            "node": "Parse Event",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Field Value": {
      "main": [
        [
          {
            "node": "Get Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Row ID to Payload": {
      "main": [
        [
          {
            "node": "Update Record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FieldsChanged Webhook": {
      "main": [
        []
      ]
    },
    "Generate Field Value1": {
      "main": [
        [
          {
            "node": "Get Result1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RecordsChanged Webhook": {
      "main": [
        []
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Set Airtable Vars",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}