Sincronización bidireccional de flujos de trabajo de Typebot y GitHub, usando la API de Typebot
Este es unDevOpsflujo de automatización del dominio deautomatización que contiene 31 nodos.Utiliza principalmente nodos como If, Set, Code, Merge, Github. Sincronización bidireccional entre flujos de Typebot y GitHub usando Typebot API
- •Personal Access Token de GitHub
- •Pueden requerirse credenciales de autenticación para la API de destino
Nodos utilizados (31)
Categoría
{
"meta": {
"instanceId": "00e9ec826c332aaa2865e65cdec318b633185c63a1cba1b3a2500858724cc85e",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "e770fbf4-8c4f-4aaa-b722-3140ecec28f2",
"name": "Al hacer clic en 'ejecutar'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
360,
640
],
"parameters": {},
"typeVersion": 1
},
{
"id": "49b53bc4-6441-4577-a851-bb7f2c580a39",
"name": "Nota adhesiva1",
"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": "Activador de ejecución de flujo de trabajo",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-140,
1620
],
"parameters": {
"inputSource": "passthrough"
},
"typeVersion": 1.1
},
{
"id": "7469a576-e3ea-4e55-93f3-7f380f1a57e7",
"name": "Nota adhesiva",
"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": "Nota adhesiva2",
"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": "Listar Typebots",
"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": "Obtener 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": "Dividir salida",
"type": "n8n-nodes-base.splitOut",
"position": [
1020,
640
],
"parameters": {
"options": {},
"fieldToSplitOut": "typebots"
},
"typeVersion": 1
},
{
"id": "ef97c1ec-d175-44b7-a462-2c8c2a8221ad",
"name": "Editar campos",
"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": "Nota adhesiva4",
"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": "Globales",
"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": "Activador programado",
"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": "Listar archivos",
"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": "Obtener datos de archivo",
"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": "Crear archivo nuevo",
"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": "Editar archivo existente",
"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": "Retornar",
"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": "Eliminar un archivo",
"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": "Si",
"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": "estáEliminado",
"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": "esDiferenteONuevo",
"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": "Verificar estado",
"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": "Archivo es diferente",
"type": "n8n-nodes-base.noOp",
"position": [
1400,
1360
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f2759b0f-3ec3-434f-acfe-36c10ebb35bb",
"name": "Archivo es nuevo",
"type": "n8n-nodes-base.noOp",
"position": [
1400,
1160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "785fff83-40c4-4d38-9300-369e68779412",
"name": "Archivo es igual",
"type": "n8n-nodes-base.noOp",
"position": [
1400,
1560
],
"parameters": {},
"typeVersion": 1
},
{
"id": "54804b0b-0001-4a41-afb5-12c0c6cf653c",
"name": "Combinar",
"type": "n8n-nodes-base.merge",
"position": [
740,
1360
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "b9cb042f-d767-4c2a-86f8-5d567d23c32a",
"name": "Interruptor",
"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": "Iterar sobre elementos",
"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": "Ejecutar flujo de trabajo",
"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
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - DevOps
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Marcial Ambriz
@marskdevCompartir este flujo de trabajo