8
n8n 한국어amn8n.com

AI 기반 직원 데이터베이스 관리 시스템, Telegram에서 OpenAI와 Airtable 활용

고급

이것은HR, AI분야의자동화 워크플로우로, 25개의 노드를 포함합니다.주로 Airtable, Telegram, AirtableTool, Agent, TelegramTrigger 등의 노드를 사용하며인공지능 기술을 결합하여 스마트 자동화를 구현합니다. AI 기반 직원 데이터베이스 관리 시스템, Telegram에서 OpenAI와 Airtable 활용

사전 요구사항
  • Airtable API Key
  • Telegram Bot Token
  • OpenAI API Key

카테고리

워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "d1786ab0d745a7498abf13a9c2cdabb1374c006e889b79eef64ce0386b8f8a41"
  },
  "nodes": [
    {
      "id": "610755a7-53d6-4e98-9e66-06bf751bb1d8",
      "name": "Telegram 트리거",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -260,
        -40
      ],
      "webhookId": "5971294c-ab28-481a-83b5-efa64d93554f",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "HtvibSVWl4VexYu9",
          "name": "Employee Database Management"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "cb89c97f-cce1-4cc6-b836-9c4e38d5e09a",
      "name": "직원 생성 AI 에이전트 도구",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        -600,
        560
      ],
      "parameters": {
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "uOrbNX2DcYJ0iAyv",
          "cachedResultName": "employee database management"
        },
        "description": "Create Employee AI Agent tool\nCall this tool if user requested to create new employee",
        "workflowInputs": {
          "value": {
            "query": "={{ $json.message.text }}",
            "action": "=create"
          },
          "schema": [
            {
              "id": "query",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "query",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "action",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "action",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "query"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "25109ff2-216a-4ac8-a92a-1f6c55a0ee4b",
      "name": "Airtable에서 부서 데이터 가져오기 도구",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        -120,
        560
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblB0xec7TL36pDgC",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblB0xec7TL36pDgC",
          "cachedResultName": "Departments"
        },
        "options": {
          "fields": [
            "Department Name",
            "Department Description"
          ]
        },
        "operation": "search",
        "descriptionType": "manual",
        "filterByFormula": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_By_Formula', ``, 'string') }}",
        "toolDescription": "Get departments data from airtable tool"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "d4ab33a8-f6a4-41b3-b824-cc741f4ea73e",
      "name": "Airtable에서 직책 데이터 가져오기 도구",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        40,
        560
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblnyWkG6BTpxjMzo",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblnyWkG6BTpxjMzo",
          "cachedResultName": "Job Titles"
        },
        "options": {
          "fields": [
            "Job Title",
            "Job Description"
          ]
        },
        "operation": "search",
        "descriptionType": "manual",
        "filterByFormula": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_By_Formula', ``, 'string') }}",
        "toolDescription": "Get job titles data from airtable tool"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "f747f3e3-8daf-4bc9-88c3-fc86e05b810b",
      "name": "Airtable에서 직원 데이터 가져오기 도구",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        200,
        560
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblGIVbpACRwWzzlp",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblGIVbpACRwWzzlp",
          "cachedResultName": "Employees"
        },
        "options": {
          "fields": [
            "Full Name",
            "Email",
            "Phone Number",
            "Job Title (from Job Titles)",
            "Reports To (from Employees)",
            "Department Name (from Department)",
            "Employee Status"
          ]
        },
        "operation": "search",
        "descriptionType": "manual",
        "filterByFormula": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_By_Formula', ``, 'string') }}",
        "toolDescription": "Get employees data from airtable tool"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "970a4e1d-1bd9-48e0-bfae-e4367407bfb2",
      "name": "OpenAI 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -620,
        200
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "MGwGMKEkdcjzlYCw",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ffbf46c6-1c93-4728-bb7a-64c4b8460c99",
      "name": "단순 메모리",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -580,
        340
      ],
      "parameters": {
        "sessionKey": "={{ $json.message.chat.id }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "218f11e0-2382-4ac3-9217-6cdf9163a857",
      "name": "사용자에게 메시지 전송",
      "type": "n8n-nodes-base.telegram",
      "position": [
        40,
        220
      ],
      "webhookId": "507c9446-fd78-4695-8dd2-7c348390a4db",
      "parameters": {
        "text": "={{ $json.output }}",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "HtvibSVWl4VexYu9",
          "name": "Employee Database Management"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "3e3645f2-33d6-4da2-b6a8-6d9c1c35285f",
      "name": "부서 생성 도구",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        -440,
        560
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblB0xec7TL36pDgC",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblB0xec7TL36pDgC",
          "cachedResultName": "Departments"
        },
        "columns": {
          "value": {
            "Department Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Department_Name', ``, 'string') }}",
            "Department Description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Department_Description', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Department Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Department Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department Description",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Department Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department Head",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Department Head",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Titles",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Job Titles",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employees",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Employees",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Department Name"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "typecast": true
        },
        "operation": "create",
        "descriptionType": "manual",
        "toolDescription": "Create department tool"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "eee21e79-e3e7-4c42-93ea-d5255e6adfe0",
      "name": "직책 생성 도구",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        -280,
        560
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblnyWkG6BTpxjMzo",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblnyWkG6BTpxjMzo",
          "cachedResultName": "Job Titles"
        },
        "columns": {
          "value": {
            "Job Title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Job_Title', ``, 'string') }}",
            "Job Description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Job_Description', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Job Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Description",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department associated with the job title",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Department associated with the job title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employees",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Employees",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Job Title"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "typecast": true
        },
        "operation": "create",
        "descriptionType": "manual",
        "toolDescription": "Create job title tool"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "2fa37bd2-658f-4da4-bd4f-ccc9c69e681f",
      "name": "직원 삭제 도구",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        380,
        560
      ],
      "parameters": {
        "id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Record_ID', ``, 'string') }}",
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblGIVbpACRwWzzlp",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblGIVbpACRwWzzlp",
          "cachedResultName": "Employees"
        },
        "operation": "deleteRecord",
        "descriptionType": "manual",
        "toolDescription": "Delete employee tool"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "a22e7543-65b6-4112-b303-b3395d74ea73",
      "name": "직원 관리 AI 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -360,
        220
      ],
      "parameters": {
        "text": "=User Request:\n{{ $json.message.text }}",
        "options": {
          "systemMessage": "=You are employee database management specialist\n\nCall the right tools based on the request:\n\n//\nUser wants to create new employee:\ncall Create Employee AI Agent tool\n//\n\n//\nUser wants to delete:\nPass the employee id to Delete employee tool\nrun Delete employee tool\n//\n\n//\nUser wants to create department data:\ncall \"Create department tool\"\n//\n\n//\nUser wants to create job title data:\ncall \"Create Job Title tool\"\n//\n\n//\nUser wants get department data:\ncall Get departments data from airtable tool\n//\n\n//\nUser wants get employee data:\ncall Get employees data from airtable tool\n//\n\nImportant notes:\nOnly call 1 tool max, choose the most suitable tool\nFor getting data, no need to output the airtable id, example for getting department data => show only name and description (without id)"
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "96f559f9-630c-4c67-b833-6de797d5a65e",
      "name": "Airtable에서 부서 데이터 가져오기",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        -340,
        1120
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "limit": 1,
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblB0xec7TL36pDgC",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblB0xec7TL36pDgC",
          "cachedResultName": "Departments"
        },
        "options": {},
        "operation": "search",
        "returnAll": false,
        "descriptionType": "manual",
        "filterByFormula": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_By_Formula', ``, 'string') }}",
        "toolDescription": "Get departments data from airtable"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "f94ae85a-f15c-4e93-857a-ba03efd858f5",
      "name": "Airtable에서 직책 데이터 가져오기",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        -180,
        1120
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "limit": 1,
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblnyWkG6BTpxjMzo",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblnyWkG6BTpxjMzo",
          "cachedResultName": "Job Titles"
        },
        "options": {},
        "operation": "search",
        "returnAll": false,
        "descriptionType": "manual",
        "filterByFormula": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_By_Formula', ``, 'string') }}",
        "toolDescription": "Get job titles data from airtable"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "f7ea09f6-beca-47c4-9b49-91b14ba29dc1",
      "name": "직원 생성 AI 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -280,
        760
      ],
      "parameters": {
        "text": "=User message:\n{{ $json.query }}",
        "options": {
          "systemMessage": "=```\nYou are an airtable database management agent\n\nthe exact column name on airtable is:\nDepartment name\nJob title\n\ndont use any other name combination like underscore\n\nfirst check if {Department name} and {job title} exist\n\nif department name and job title doesnt exist:\ncreate new department and job title then output the airtable id\nif end\n\nif department name and job title exist:\noutput the department and job title existing airtable id\nif end\n\nCall the create employee tools and pass the job_title_id and department_id\n\nOutput in json format:\n{\n  \"department_id\":\"recxxxxxxx\",\n  \"job_title_id\":\"recxxxxxxx\",\n  \"new_employee_id\": \"recxxxxxxx\"\n}\n\n\n```\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "418e5d02-5dea-43a8-be1b-bf145a499dd0",
      "name": "다른 워크플로우에 의해 실행 시",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -520,
        760
      ],
      "parameters": {
        "inputSource": "jsonExample",
        "jsonExample": "{\n  \"query\":\"test\",\n  \"action\":\"create\"\n}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "d5370dbe-c157-48bc-ae9a-4e1b1ce4ade4",
      "name": "구조화된 출력 파서",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        460,
        1120
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"department_id\":\"recxxxxxxx\",\n  \"job_title_id\":\"recxxxxxxx\",\n  \"new_employee_id\": \"recxxxxxxx\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "fcbab5ed-6c32-4ced-8ff4-d8ed35aa393a",
      "name": "부서 생성",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        -20,
        1120
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblB0xec7TL36pDgC",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblB0xec7TL36pDgC",
          "cachedResultName": "Departments"
        },
        "columns": {
          "value": {
            "Department Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Department_Name', ``, 'string') }}",
            "Department Description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Department_Description', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Department Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Department Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department Description",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Department Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department Head",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Department Head",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Titles",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Job Titles",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employees",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Employees",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "typecast": true
        },
        "operation": "create",
        "descriptionType": "manual",
        "toolDescription": "Create department"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "c33a70a6-c3af-46a2-8100-d007a56e14e9",
      "name": "직책 생성",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        140,
        1120
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblnyWkG6BTpxjMzo",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblnyWkG6BTpxjMzo",
          "cachedResultName": "Job Titles"
        },
        "columns": {
          "value": {
            "Job Title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Job_Title', ``, 'string') }}",
            "Job Description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Job_Description', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Job Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Description",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department associated with the job title",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Department associated with the job title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employees",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Employees",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "typecast": true
        },
        "operation": "create",
        "descriptionType": "manual",
        "toolDescription": "Create job title"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "73680e43-507f-4617-ae32-6fbf15fde13f",
      "name": "직원 생성",
      "type": "n8n-nodes-base.airtableTool",
      "position": [
        300,
        1120
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblGIVbpACRwWzzlp",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblGIVbpACRwWzzlp",
          "cachedResultName": "Employees"
        },
        "columns": {
          "value": {
            "Email": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Email', ``, 'string') }}",
            "Full Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Full_Name', ``, 'string') }}",
            "Phone Number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Phone_Number', ``, 'string') }}",
            "job_title_id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('job_title_id', ``, 'string') }}",
            "department_id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('department_id', ``, 'string') }}",
            "Employee Status": "Active"
          },
          "schema": [
            {
              "id": "Full Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Full Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone Number",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Phone Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Title",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Type",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Employee",
                  "value": "Employee"
                },
                {
                  "name": "Manager",
                  "value": "Manager"
                }
              ],
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Employee Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reports To",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Reports To",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Title (from Job Titles)",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "Job Title (from Job Titles)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reports To (from Employees)",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "Reports To (from Employees)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Department",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department Name (from Department)",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "Department Name (from Department)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Type Text",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Employee Type Text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Status",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Active",
                  "value": "Active"
                },
                {
                  "name": "On Leave",
                  "value": "On Leave"
                },
                {
                  "name": "Inactive",
                  "value": "Inactive"
                }
              ],
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Employee Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_title_id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "job_title_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "department_id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "department_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Head of Department",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Head of Department",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "typecast": true
        },
        "operation": "create",
        "descriptionType": "manual",
        "toolDescription": "Create employee"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "a1d903e0-d46c-4060-92be-8f494bd56559",
      "name": "직원 데이터 업데이트",
      "type": "n8n-nodes-base.airtable",
      "position": [
        100,
        760
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appgVjZcaRP8BsKf0",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0",
          "cachedResultName": "HR Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblGIVbpACRwWzzlp",
          "cachedResultUrl": "https://airtable.com/appgVjZcaRP8BsKf0/tblGIVbpACRwWzzlp",
          "cachedResultName": "Employees"
        },
        "columns": {
          "value": {
            "id": "={{ $json.output.new_employee_id }}",
            "Job Title": "=[\"{{ $json.output.job_title_id }}\"]",
            "Department": "=[\"{{ $json.output.department_id }}\"]"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true
            },
            {
              "id": "Full Name",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Full Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone Number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Phone Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Title",
              "type": "array",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Type",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Employee",
                  "value": "Employee"
                },
                {
                  "name": "Manager",
                  "value": "Manager"
                }
              ],
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Employee Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reports To",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Reports To",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Title (from Job Titles)",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "Job Title (from Job Titles)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reports To (from Employees)",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "Reports To (from Employees)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department",
              "type": "array",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Department",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Department Name (from Department)",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "Department Name (from Department)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Type Text",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Employee Type Text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Employee Status",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Active",
                  "value": "Active"
                },
                {
                  "name": "On Leave",
                  "value": "On Leave"
                },
                {
                  "name": "Inactive",
                  "value": "Inactive"
                }
              ],
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Employee Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_title_id",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "job_title_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "department_id",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "department_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Head of Department",
              "type": "array",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Head of Department",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "r2IibdsQurA56LDa",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "0a8fca1f-83f1-4f5a-a52e-e2e8f9a2cf2f",
      "name": "OpenAI 채팅 모델1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -500,
        1120
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "MGwGMKEkdcjzlYCw",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "934564ca-b0e1-4f28-8322-2f771397d847",
      "name": "스티키 노트7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -860,
        -400
      ],
      "parameters": {
        "color": 5,
        "width": 460,
        "height": 460,
        "content": "## 🤖 AI-Powered Employee Database Management via Telegram using OpenAI and Airtable\n\n**What This Template Does:**\n- Provides an HR assistant chatbot interface through Telegram\n- Uses GPT-4 to interpret natural language requests (e.g., “Show me all employees” or “Create employee Sarah…”)\n- Performs Airtable operations to manage Employees, Departments, and Job Titles\n- Supports dynamic record creation and linking (e.g., if department doesn't exist, it will be created)\n- Maintains conversation memory per Telegram chat for smooth back-and-forth interaction\n- Splits logic into a main router workflow and a sub-workflow for employee creation"
      },
      "typeVersion": 1
    },
    {
      "id": "2e0c1bdb-e284-4797-bcf2-5eb0dc598727",
      "name": "스티키 노트8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        -400
      ],
      "parameters": {
        "color": 5,
        "width": 500,
        "height": 460,
        "content": "## 📋 WORKFLOW PROCESS OVERVIEW  \nStep 1: 💬 Telegram Trigger receives natural language command from HR user  \nStep 2: 🧠 AI Agent (OpenA) interprets intent (view, create, delete, etc.)  \nStep 3: 🔀 Router decides workflow path based on user intent  \nStep 4: 📄 Get Employees fetches employee records from Airtable (if viewing)  \nStep 5: 🛠️ Create Employee Tool triggers sub-workflow for new employee creation  \nStep 6: 🏢 Create/Find Department checks Airtable for department or creates it  \nStep 7: 👔 Create/Find Job Title checks Airtable for job title or creates it  \nStep 8: 💾 Create Employee saves employee record in Airtable with linked fields  \nStep 9: 🗑️ Delete Employee removes employee record by ID (if requested)  \nStep 10: 🔁 Return Response sends formatted reply back to Telegram user\n"
      },
      "typeVersion": 1
    },
    {
      "id": "29d4c15d-29f3-4ff0-b2fc-cb9501afebe2",
      "name": "스티키 노트6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        -400
      ],
      "parameters": {
        "color": 4,
        "width": 280,
        "height": 320,
        "content": "## SETUP REQUIRED  \n**Author:** [Billy Christi](https://n8n.io/creators/billy/)\n\nAirtable Base Structure:  \n[Copy this Airtable Base](https://airtable.com/appXXXXXXXXXXXXXX/tblXXXXXXXXXXXXXX/viwXXXXXXXXXXXXXX)  \n*(Replace with your own Airtable base link if private)*\n\nRequired Credentials:  \n• Airtable API Key  \n• OpenAI API Key\n• Telegram Bot Token\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {
    "When Executed by Another Workflow": [
      {
        "query": "Create employee records using this data:\n- Full name: Jack123 new 123\n- Email: jackbower@gmail.com\n- Phone: +12125551212\n- Department: Engineering\n- Job Title: AI Automation Developer",
        "action": "create"
      }
    ]
  },
  "connections": {
    "ffbf46c6-1c93-4728-bb7a-64c4b8460c99": {
      "ai_memory": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "73680e43-507f-4617-ae32-6fbf15fde13f": {
      "ai_tool": [
        [
          {
            "node": "f7ea09f6-beca-47c4-9b49-91b14ba29dc1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "c33a70a6-c3af-46a2-8100-d007a56e14e9": {
      "ai_tool": [
        [
          {
            "node": "f7ea09f6-beca-47c4-9b49-91b14ba29dc1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "610755a7-53d6-4e98-9e66-06bf751bb1d8": {
      "main": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fcbab5ed-6c32-4ced-8ff4-d8ed35aa393a": {
      "ai_tool": [
        [
          {
            "node": "f7ea09f6-beca-47c4-9b49-91b14ba29dc1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "970a4e1d-1bd9-48e0-bfae-e4367407bfb2": {
      "ai_languageModel": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "0a8fca1f-83f1-4f5a-a52e-e2e8f9a2cf2f": {
      "ai_languageModel": [
        [
          {
            "node": "f7ea09f6-beca-47c4-9b49-91b14ba29dc1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "2fa37bd2-658f-4da4-bd4f-ccc9c69e681f": {
      "ai_tool": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "eee21e79-e3e7-4c42-93ea-d5255e6adfe0": {
      "ai_tool": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "3e3645f2-33d6-4da2-b6a8-6d9c1c35285f": {
      "ai_tool": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "f7ea09f6-beca-47c4-9b49-91b14ba29dc1": {
      "main": [
        [
          {
            "node": "a1d903e0-d46c-4060-92be-8f494bd56559",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d5370dbe-c157-48bc-ae9a-4e1b1ce4ade4": {
      "ai_outputParser": [
        [
          {
            "node": "f7ea09f6-beca-47c4-9b49-91b14ba29dc1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "a22e7543-65b6-4112-b303-b3395d74ea73": {
      "main": [
        [
          {
            "node": "218f11e0-2382-4ac3-9217-6cdf9163a857",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cb89c97f-cce1-4cc6-b836-9c4e38d5e09a": {
      "ai_tool": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "f94ae85a-f15c-4e93-857a-ba03efd858f5": {
      "ai_tool": [
        [
          {
            "node": "f7ea09f6-beca-47c4-9b49-91b14ba29dc1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "418e5d02-5dea-43a8-be1b-bf145a499dd0": {
      "main": [
        [
          {
            "node": "f7ea09f6-beca-47c4-9b49-91b14ba29dc1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "96f559f9-630c-4c67-b833-6de797d5a65e": {
      "ai_tool": [
        [
          {
            "node": "f7ea09f6-beca-47c4-9b49-91b14ba29dc1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "f747f3e3-8daf-4bc9-88c3-fc86e05b810b": {
      "ai_tool": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "d4ab33a8-f6a4-41b3-b824-cc741f4ea73e": {
      "ai_tool": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "25109ff2-216a-4ac8-a92a-1f6c55a0ee4b": {
      "ai_tool": [
        [
          {
            "node": "a22e7543-65b6-4112-b303-b3395d74ea73",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

고급 - 인사, 인공지능

유료인가요?

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

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

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

저자
Billy Christi

Billy Christi

@billy

I'm a professional software engineer and n8n expert with a passion for building scalable, no-code and low-code automation workflows. I specialize in creating seamless integrations between APIs, CRMs, and everyday tools to help businesses save time, reduce manual work, and operate smarter. Whether it's automating marketing pipelines, backend systems, or approval processes, I turn complex logic into simple, powerful workflows with n8n.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34