Typebot 플로우와 GitHub 양방향 동기화, Typebot API 사용
고급
이것은DevOps분야의자동화 워크플로우로, 31개의 노드를 포함합니다.주로 If, Set, Code, Merge, Github 등의 노드를 사용하며. Typebot API를 활용한 Typebot 플로우와 GitHub 양방향 동기화
사전 요구사항
- •GitHub Personal Access Token
- •대상 API의 인증 정보가 필요할 수 있음
사용된 노드 (31)
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "00e9ec826c332aaa2865e65cdec318b633185c63a1cba1b3a2500858724cc85e",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "e770fbf4-8c4f-4aaa-b722-3140ecec28f2",
"name": "'실행' 클릭 시",
"type": "n8n-nodes-base.manualTrigger",
"position": [
360,
640
],
"parameters": {},
"typeVersion": 1
},
{
"id": "49b53bc4-6441-4577-a851-bb7f2c580a39",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
480
],
"parameters": {
"color": 4,
"width": 371,
"height": 601,
"content": "## Typebot Backup to GitHub \nThis workflow will backup all instance typebots to GitHub and also deleted it if was deleted in your typebot workspace.\n\nThe files are saved `ID.json` for the filename.\n\n### Setup\nOpen `Globals` node and update the values below 👇\n\n- **repo.owner:** your Github username\n- **repo.name:** the name of your repository\n- **typebot.url:** default url or your self-hosted Typebot url\n- **typebot.workspace.id:** your Typebot workspace id\n\n\nIf your username was `john-doe` and your repository was called `n8n-backups`:\n\n- repo.owner - john-doe\n- repo.name - n8n-backups\n\nFor Typebot see its [documentation](https://docs.typebot.io/api-reference/how-to)\n\nThe workflow calls itself using a subworkflow, to help reduce memory usage."
},
"typeVersion": 1
},
{
"id": "7dede05f-8c5a-426e-a822-d21b7e50d976",
"name": "워크플로우 실행 트리거",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-140,
1620
],
"parameters": {
"inputSource": "passthrough"
},
"typeVersion": 1.1
},
{
"id": "7469a576-e3ea-4e55-93f3-7f380f1a57e7",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
480
],
"parameters": {
"color": 7,
"width": 1831,
"height": 601,
"content": "## Main workflow loop"
},
"typeVersion": 1
},
{
"id": "acb81c9e-152a-4bf3-ab23-1eb66e8d5510",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
1100
],
"parameters": {
"color": 6,
"width": 2231,
"height": 941,
"content": "## Subworkflow"
},
"typeVersion": 1
},
{
"id": "6df6e830-5721-421f-9b46-f99f9164eb4d",
"name": "Typebot 목록 조회",
"type": "n8n-nodes-base.httpRequest",
"position": [
800,
740
],
"parameters": {
"url": "={{ $json.typebot.url }}/api/v1/typebots",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"queryParameters": {
"parameters": [
{
"name": "workspaceId",
"value": "={{ $json.typebot.workspace.id }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "3d44e0b2-c404-424a-8eba-7ec111738939",
"name": "typebot",
"type": "n8n-nodes-base.set",
"position": [
1240,
640
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8fbbf5fa-0455-4066-80e0-1b2885343aea",
"name": "typebot.url",
"type": "string",
"value": "={{ $('Globals').item.json.typebot.url }}"
},
{
"id": "5e73d2e7-4b1a-4180-8af2-047e52eb8a0a",
"name": "repo.owner",
"type": "string",
"value": "={{ $('Globals').item.json.repo.owner }}"
},
{
"id": "22445c28-5431-45a5-86ca-0ab2ff26cff5",
"name": "repo.name",
"type": "string",
"value": "={{ $('Globals').item.json.repo.name }}"
},
{
"id": "232d9947-a43f-48a9-b385-da1aa8f5139e",
"name": "origin",
"type": "string",
"value": "typebot"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "4be16d80-43fd-4cc1-b79c-11fec3c76829",
"name": "Typebot 정보 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
300,
1360
],
"parameters": {
"url": "={{ $('Switch').item.json.typebot.url }}/api/v1/typebots/{{ $json.id }}",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"typeVersion": 4.2
},
{
"id": "952f2ff9-0421-4239-947d-3d8f0b7925fd",
"name": "분기 처리",
"type": "n8n-nodes-base.splitOut",
"position": [
1020,
640
],
"parameters": {
"options": {},
"fieldToSplitOut": "typebots"
},
"typeVersion": 1
},
{
"id": "ef97c1ec-d175-44b7-a462-2c8c2a8221ad",
"name": "필드 편집",
"type": "n8n-nodes-base.set",
"position": [
520,
1460
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{ $json.typebot }}"
},
"typeVersion": 3.4
},
{
"id": "ef0cd866-afcd-41b9-8fad-15d79a88041e",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
600
],
"parameters": {
"color": 4,
"width": 150,
"height": 80,
"content": "## Edit this node 👇"
},
"typeVersion": 1
},
{
"id": "e68821d5-11ea-4324-9957-303433a8aad7",
"name": "글로벌 변수",
"type": "n8n-nodes-base.set",
"position": [
580,
740
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "45027581-a75b-4375-a0f1-ebfddb0531f7",
"name": "typebot.url",
"type": "string",
"value": "https://typebot.io"
},
{
"id": "5513c8d4-1aba-45f3-ab8c-498fa36f5f59",
"name": "typebot.workspace.id",
"type": "string",
"value": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
{
"id": "6cf546c5-5737-4dbd-851b-17d68e0a3780",
"name": "repo.owner",
"type": "string",
"value": "john-doe"
},
{
"id": "452efa28-2dc6-4ea3-a7a2-c35d100d0382",
"name": "repo.name",
"type": "string",
"value": "typebot-backup"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "3027c8bd-a477-4f47-a2a9-fd952d9f9698",
"name": "스케줄 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
360,
840
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "caff32a5-6d82-43c9-998c-3258342d66b3",
"name": "github",
"type": "n8n-nodes-base.set",
"position": [
1240,
840
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "5e73d2e7-4b1a-4180-8af2-047e52eb8a0a",
"name": "repo.owner",
"type": "string",
"value": "={{ $('Globals').item.json.repo.owner }}"
},
{
"id": "22445c28-5431-45a5-86ca-0ab2ff26cff5",
"name": "repo.name",
"type": "string",
"value": "={{ $('Globals').item.json.repo.name }}"
},
{
"id": "232d9947-a43f-48a9-b385-da1aa8f5139e",
"name": "origin",
"type": "string",
"value": "github"
},
{
"id": "456ec816-8c15-498b-bbc5-a96abce95d59",
"name": "typebots",
"type": "array",
"value": "={{ $('List Typebots').item.json.typebots }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "4333f695-81d9-4c87-8d68-9a6245dc12d5",
"name": "파일 목록 조회",
"type": "n8n-nodes-base.github",
"position": [
1020,
840
],
"webhookId": "244ea8da-851f-4afb-980c-5e5973b6a1af",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $('Globals').item.json.repo.owner }}"
},
"resource": "file",
"operation": "list",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $('Globals').item.json.repo.name }}"
},
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": {
"id": "5UZFyU8iEpfKOIbY",
"name": "GitHub marskdev"
}
},
"executeOnce": true,
"typeVersion": 1.1
},
{
"id": "7eab3efa-c3e0-420a-9fb8-9cd9ff52f90e",
"name": "파일 데이터 가져오기",
"type": "n8n-nodes-base.github",
"position": [
520,
1260
],
"webhookId": "5cf07ee9-70c6-48bf-b370-534315f2d48e",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $('Switch').item.json.repo.owner }}"
},
"filePath": "={{ $('Switch').item.json.id }}.json",
"resource": "file",
"operation": "get",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $('Switch').item.json.repo.name }}"
},
"authentication": "oAuth2",
"asBinaryProperty": false,
"additionalParameters": {}
},
"credentials": {
"githubOAuth2Api": {
"id": "5UZFyU8iEpfKOIbY",
"name": "GitHub marskdev"
}
},
"typeVersion": 1,
"continueOnFail": true,
"alwaysOutputData": true
},
{
"id": "5e01d7b1-c09d-494f-8df1-c241db278084",
"name": "새 파일 생성",
"type": "n8n-nodes-base.github",
"position": [
1620,
1160
],
"webhookId": "93cca36a-a5f4-4919-b655-e0fa2cc2ca36",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $('Switch').item.json.repo.owner }}"
},
"filePath": "={{$('Switch').first().json.id}}.json",
"resource": "file",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $('Switch').item.json.repo.name }}"
},
"fileContent": "={{$('isDiffOrNew').item.json[\"typebot_data_stringy\"]}}",
"commitMessage": "={{$('Switch').first().json.name}} ({{$json.github_status}})",
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": {
"id": "5UZFyU8iEpfKOIbY",
"name": "GitHub marskdev"
}
},
"typeVersion": 1
},
{
"id": "4b8b16d4-5363-4f08-b8b5-deac7f4250f3",
"name": "기존 파일 편집",
"type": "n8n-nodes-base.github",
"position": [
1620,
1360
],
"webhookId": "286cabce-a3ec-4202-9d94-d005502d73cc",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $('Switch').item.json.repo.owner }}"
},
"filePath": "={{$('Switch').first().json.id}}.json",
"resource": "file",
"operation": "edit",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $('Switch').item.json.repo.name }}"
},
"fileContent": "={{$('isDiffOrNew').item.json[\"typebot_data_stringy\"]}}",
"commitMessage": "={{$('Switch').first().json.name}} ({{$json.github_status}})",
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": {
"id": "5UZFyU8iEpfKOIbY",
"name": "GitHub marskdev"
}
},
"typeVersion": 1
},
{
"id": "c2cb20ab-07e5-41a3-8f7d-ed6474977226",
"name": "반환",
"type": "n8n-nodes-base.set",
"position": [
1840,
1560
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8d513345-6484-431f-afb7-7cf045c90f4f",
"name": "Done",
"type": "boolean",
"value": true
}
]
}
},
"typeVersion": 3.3
},
{
"id": "7ce14355-b3b9-4cd0-a09e-6d91bfe6bfcc",
"name": "파일 삭제",
"type": "n8n-nodes-base.github",
"position": [
1620,
1860
],
"webhookId": "592f888e-3e41-49ce-b88a-d73f8756eac8",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $('Switch').item.json.repo.owner }}"
},
"filePath": "={{$('Switch').first().json.name}}",
"resource": "file",
"operation": "delete",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $('Switch').item.json.repo.name }}"
},
"commitMessage": "={{$('Switch').first().json.name}} (deleted)",
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": {
"id": "5UZFyU8iEpfKOIbY",
"name": "GitHub marskdev"
}
},
"typeVersion": 1.1
},
{
"id": "c2252937-414f-446c-a2b1-96eef623f57e",
"name": "조건문",
"type": "n8n-nodes-base.if",
"position": [
1400,
1780
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bb927e0c-f27b-4dce-80df-8d7611467045",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.isDeleted }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "10146994-a24f-4d9e-955d-f3e76f4abae0",
"name": "삭제됨",
"type": "n8n-nodes-base.code",
"position": [
1180,
1780
],
"parameters": {
"jsCode": "const flow = $input.first().json.typebots;\n\nconst some = flow.some(x => x.id === $input.first().json.name.split(\".\")[0])\n\nreturn [{json: { isDeleted: !some }}];"
},
"typeVersion": 2
},
{
"id": "d692e133-5184-4753-bbab-751f9903b1cb",
"name": "변경 또는 신규",
"type": "n8n-nodes-base.code",
"position": [
960,
1360
],
"parameters": {
"jsCode": "const orderJsonKeys = (jsonObj) => {\n const ordered = {};\n Object.keys(jsonObj).sort().forEach(key => {\n ordered[key] = jsonObj[key];\n });\n return ordered;\n}\n\n// Check if file returned with content\nif (Object.keys($input.all()[0].json).includes(\"content\")) {\n // Decode base64 content and parse JSON\n const origFlow = JSON.parse(Buffer.from($input.all()[0].json.content, 'base64').toString());\n const typebotFlow = $input.all()[1].json;\n \n // Order JSON objects\n const orderedOriginal = orderJsonKeys(origFlow);\n const orderedActual = orderJsonKeys(typebotFlow);\n\n // Determine difference\n if (JSON.stringify(orderedOriginal) === JSON.stringify(orderedActual)) {\n $input.all()[0].json.github_status = \"same\";\n } else {\n $input.all()[0].json.github_status = \"different\";\n $input.all()[0].json.typebot_data_stringy = JSON.stringify(orderedActual, null, 2);\n }\n $input.all()[0].json.content_decoded = orderedOriginal;\n// No file returned / new workflow\n} else if (Object.keys($input.all()[0].json).includes(\"data\")) {\n const origFlow = JSON.parse($input.all()[0].json.data);\n const typebotFlow = $input.all()[1].json;\n \n // Order JSON objects\n const orderedOriginal = orderJsonKeys(origFlow);\n const orderedActual = orderJsonKeys(typebotFlow);\n\n // Determine difference\n if (JSON.stringify(orderedOriginal) === JSON.stringify(orderedActual)) {\n $input.all()[0].json.github_status = \"same\";\n } else {\n $input.all()[0].json.github_status = \"different\";\n $input.all()[0].json.typebot_data_stringy = JSON.stringify(orderedActual, null, 2);\n }\n $input.all()[0].json.content_decoded = orderedOriginal;\n\n} else {\n // Order JSON object\n const typebotFlow = $input.all()[1].json;\n const orderedActual = orderJsonKeys(typebotFlow);\n \n // Proper formatting\n $input.all()[0].json.github_status = \"new\";\n $input.all()[0].json.typebot_data_stringy = JSON.stringify(orderedActual, null, 2);\n}\n\n// Return items\nreturn $input.all();"
},
"typeVersion": 1
},
{
"id": "bcafd96c-6fd4-44ce-b975-33c7cf2dff84",
"name": "상태 확인",
"type": "n8n-nodes-base.switch",
"position": [
1180,
1360
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "new",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "aea200f9-9f83-4e4e-a965-65fddcbb6a5f",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{$json.github_status}}",
"rightValue": "new"
}
]
},
"renameOutput": true
},
{
"outputKey": "different",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "706ebf35-6f74-43b6-9f98-94cf14107947",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{$json.github_status}}",
"rightValue": "different"
}
]
},
"renameOutput": true
},
{
"outputKey": "same",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "30c8c5a8-269f-424a-93ed-d2cbe52acf7c",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{$json.github_status}}",
"rightValue": "same"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "aaf2d938-ec55-4152-9e34-a2e2e6769760",
"name": "파일 다름",
"type": "n8n-nodes-base.noOp",
"position": [
1400,
1360
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f2759b0f-3ec3-434f-acfe-36c10ebb35bb",
"name": "파일 신규",
"type": "n8n-nodes-base.noOp",
"position": [
1400,
1160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "785fff83-40c4-4d38-9300-369e68779412",
"name": "파일 동일",
"type": "n8n-nodes-base.noOp",
"position": [
1400,
1560
],
"parameters": {},
"typeVersion": 1
},
{
"id": "54804b0b-0001-4a41-afb5-12c0c6cf653c",
"name": "병합",
"type": "n8n-nodes-base.merge",
"position": [
740,
1360
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "b9cb042f-d767-4c2a-86f8-5d567d23c32a",
"name": "스위치",
"type": "n8n-nodes-base.switch",
"position": [
80,
1620
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "typebot",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8f6b31b0-a75c-4299-a530-d15b3ff65c9a",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.origin }}",
"rightValue": "typebot"
}
]
},
"renameOutput": true
},
{
"outputKey": "github",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "09e36861-1120-4343-8d38-4797e9d67eec",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.origin }}",
"rightValue": "github"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "eb4adeea-418b-4d2d-a8ce-36739c195d7e",
"name": "항목 반복 처리",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1460,
740
],
"parameters": {
"options": {
"reset": "={{ $node[\"Loop Over Items\"].context[\"done\"] }}"
}
},
"typeVersion": 3
},
{
"id": "58fb33e4-520e-4a58-b3ea-acdb5ef02208",
"name": "워크플로우 실행",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
1680,
740
],
"parameters": {
"mode": "each",
"options": {},
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
},
"workflowInputs": {
"value": {},
"schema": [],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
}
],
"pinData": {},
"connections": {
"c2252937-414f-446c-a2b1-96eef623f57e": {
"main": [
[
{
"node": "7ce14355-b3b9-4cd0-a09e-6d91bfe6bfcc",
"type": "main",
"index": 0
}
],
[
{
"node": "c2cb20ab-07e5-41a3-8f7d-ed6474977226",
"type": "main",
"index": 0
}
]
]
},
"54804b0b-0001-4a41-afb5-12c0c6cf653c": {
"main": [
[
{
"node": "d692e133-5184-4753-bbab-751f9903b1cb",
"type": "main",
"index": 0
}
]
]
},
"b9cb042f-d767-4c2a-86f8-5d567d23c32a": {
"main": [
[
{
"node": "4be16d80-43fd-4cc1-b79c-11fec3c76829",
"type": "main",
"index": 0
}
],
[
{
"node": "10146994-a24f-4d9e-955d-f3e76f4abae0",
"type": "main",
"index": 0
}
]
]
},
"caff32a5-6d82-43c9-998c-3258342d66b3": {
"main": [
[
{
"node": "eb4adeea-418b-4d2d-a8ce-36739c195d7e",
"type": "main",
"index": 0
}
]
]
},
"e68821d5-11ea-4324-9957-303433a8aad7": {
"main": [
[
{
"node": "6df6e830-5721-421f-9b46-f99f9164eb4d",
"type": "main",
"index": 0
}
]
]
},
"3d44e0b2-c404-424a-8eba-7ec111738939": {
"main": [
[
{
"node": "eb4adeea-418b-4d2d-a8ce-36739c195d7e",
"type": "main",
"index": 0
}
]
]
},
"952f2ff9-0421-4239-947d-3d8f0b7925fd": {
"main": [
[
{
"node": "3d44e0b2-c404-424a-8eba-7ec111738939",
"type": "main",
"index": 0
}
]
]
},
"10146994-a24f-4d9e-955d-f3e76f4abae0": {
"main": [
[
{
"node": "c2252937-414f-446c-a2b1-96eef623f57e",
"type": "main",
"index": 0
}
]
]
},
"4333f695-81d9-4c87-8d68-9a6245dc12d5": {
"main": [
[
{
"node": "caff32a5-6d82-43c9-998c-3258342d66b3",
"type": "main",
"index": 0
}
]
]
},
"ef97c1ec-d175-44b7-a462-2c8c2a8221ad": {
"main": [
[
{
"node": "54804b0b-0001-4a41-afb5-12c0c6cf653c",
"type": "main",
"index": 1
}
]
]
},
"f2759b0f-3ec3-434f-acfe-36c10ebb35bb": {
"main": [
[
{
"node": "5e01d7b1-c09d-494f-8df1-c241db278084",
"type": "main",
"index": 0
}
]
]
},
"4be16d80-43fd-4cc1-b79c-11fec3c76829": {
"main": [
[
{
"node": "7eab3efa-c3e0-420a-9fb8-9cd9ff52f90e",
"type": "main",
"index": 0
},
{
"node": "ef97c1ec-d175-44b7-a462-2c8c2a8221ad",
"type": "main",
"index": 0
}
]
]
},
"d692e133-5184-4753-bbab-751f9903b1cb": {
"main": [
[
{
"node": "bcafd96c-6fd4-44ce-b975-33c7cf2dff84",
"type": "main",
"index": 0
}
]
]
},
"bcafd96c-6fd4-44ce-b975-33c7cf2dff84": {
"main": [
[
{
"node": "f2759b0f-3ec3-434f-acfe-36c10ebb35bb",
"type": "main",
"index": 0
}
],
[
{
"node": "aaf2d938-ec55-4152-9e34-a2e2e6769760",
"type": "main",
"index": 0
}
],
[
{
"node": "785fff83-40c4-4d38-9300-369e68779412",
"type": "main",
"index": 0
}
]
]
},
"785fff83-40c4-4d38-9300-369e68779412": {
"main": [
[
{
"node": "c2cb20ab-07e5-41a3-8f7d-ed6474977226",
"type": "main",
"index": 0
}
]
]
},
"7ce14355-b3b9-4cd0-a09e-6d91bfe6bfcc": {
"main": [
[
{
"node": "c2cb20ab-07e5-41a3-8f7d-ed6474977226",
"type": "main",
"index": 0
}
]
]
},
"7eab3efa-c3e0-420a-9fb8-9cd9ff52f90e": {
"main": [
[
{
"node": "54804b0b-0001-4a41-afb5-12c0c6cf653c",
"type": "main",
"index": 0
}
]
]
},
"6df6e830-5721-421f-9b46-f99f9164eb4d": {
"main": [
[
{
"node": "4333f695-81d9-4c87-8d68-9a6245dc12d5",
"type": "main",
"index": 0
},
{
"node": "952f2ff9-0421-4239-947d-3d8f0b7925fd",
"type": "main",
"index": 0
}
]
]
},
"5e01d7b1-c09d-494f-8df1-c241db278084": {
"main": [
[
{
"node": "c2cb20ab-07e5-41a3-8f7d-ed6474977226",
"type": "main",
"index": 0
}
]
]
},
"eb4adeea-418b-4d2d-a8ce-36739c195d7e": {
"main": [
[],
[
{
"node": "58fb33e4-520e-4a58-b3ea-acdb5ef02208",
"type": "main",
"index": 0
}
]
]
},
"58fb33e4-520e-4a58-b3ea-acdb5ef02208": {
"main": [
[
{
"node": "eb4adeea-418b-4d2d-a8ce-36739c195d7e",
"type": "main",
"index": 0
}
]
]
},
"3027c8bd-a477-4f47-a2a9-fd952d9f9698": {
"main": [
[
{
"node": "e68821d5-11ea-4324-9957-303433a8aad7",
"type": "main",
"index": 0
}
]
]
},
"aaf2d938-ec55-4152-9e34-a2e2e6769760": {
"main": [
[
{
"node": "4b8b16d4-5363-4f08-b8b5-deac7f4250f3",
"type": "main",
"index": 0
}
]
]
},
"4b8b16d4-5363-4f08-b8b5-deac7f4250f3": {
"main": [
[
{
"node": "c2cb20ab-07e5-41a3-8f7d-ed6474977226",
"type": "main",
"index": 0
}
]
]
},
"e770fbf4-8c4f-4aaa-b722-3140ecec28f2": {
"main": [
[
{
"node": "e68821d5-11ea-4324-9957-303433a8aad7",
"type": "main",
"index": 0
}
]
]
},
"7dede05f-8c5a-426e-a822-d21b7e50d976": {
"main": [
[
{
"node": "b9cb042f-d767-4c2a-86f8-5d567d23c32a",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 데브옵스
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
자동화된 n8n 워크플로우 백업至 GitHub 및 삭제 추적
삭제 추적이 포함된 GitHub 자동화 n8n 워크플로우 백업
If
N8n
Set
+
If
N8n
Set
31 노드Marcial Ambriz
데브옵스
GitHub 동기화 대시보드 - V2
提交 기록과 롤백 기능을 갖춘 GitHub 워크플로우 버전 관리 대시보드
If
N8n
Set
+
If
N8n
Set
94 노드Eduard
데브옵스
GitHub(서브 폴더)에 작업 흐름을 백업
Github에 작업 흐름 백업(서브 폴더)
If
N8n
Set
+
If
N8n
Set
25 노드Nazmy
기타
GitHub에 작업 흐름을 백업
Github에 작업 흐름 백업
If
N8n
Set
+
If
N8n
Set
23 노드Solomon
기타
N8N 워크플로우를 Github에 백업합니다.
N8N 워크플로우를 Github에 백업합니다.
If
N8n
Set
+
If
N8n
Set
30 노드Dat Proto
시각화 참조 라이브러리에서 n8n 노드를 탐색
可视化 참조 라이브러리에서 n8n 노드를 탐색
If
Ftp
Set
+
If
Ftp
Set
113 노드I versus AI
기타