Automatisierte n8n-Workflow-Sicherung bei GitHub und Nachverfolgung von Löschvorgängen
Experte
Dies ist ein DevOps-Bereich Automatisierungsworkflow mit 31 Nodes. Hauptsächlich werden If, N8n, Set, Code, Merge und andere Nodes verwendet. Automatisches Backup von n8n-Workflows bei GitHub mit Tracking von Löschvorgängen
Voraussetzungen
- •GitHub Personal Access Token
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
Verwendete Nodes (31)
Kategorie
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
"meta": {
"instanceId": "00e9ec826c332aaa2865e65cdec318b633185c63a1cba1b3a2500858724cc85e",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "638dcc28-8b20-40e6-81fd-96efec4d4111",
"name": "Bei Klick auf 'Ausführen'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
260,
640
],
"parameters": {},
"typeVersion": 1
},
{
"id": "287eabd3-013d-41cd-a9c3-ae71b8d26ef9",
"name": "Zurückgeben",
"type": "n8n-nodes-base.set",
"position": [
1800,
1680
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8d513345-6484-431f-afb7-7cf045c90f4f",
"name": "Done",
"type": "boolean",
"value": true
}
]
}
},
"typeVersion": 3.3
},
{
"id": "edc8da3b-fcf1-4487-8963-464c18c209b5",
"name": "Datei abrufen",
"type": "n8n-nodes-base.httpRequest",
"position": [
920,
1140
],
"parameters": {
"url": "={{ $json.download_url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "63859d24-34b7-4545-a3fb-fe45b3678cef",
"name": "Wenn Datei zu groß",
"type": "n8n-nodes-base.if",
"position": [
700,
1160
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "45ce825e-9fa6-430c-8931-9aaf22c42585",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.content }}",
"rightValue": ""
},
{
"id": "9619a55f-7fb1-4f24-b1a7-7aeb82365806",
"operator": {
"type": "string",
"operation": "notExists",
"singleValue": true
},
"leftValue": "={{ $json.error }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "8509afb5-c772-445d-af47-de54c9deae6e",
"name": "isDiffOrNew",
"type": "n8n-nodes-base.code",
"position": [
920,
1420
],
"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 origWorkflow = JSON.parse(Buffer.from($input.all()[0].json.content, 'base64').toString());\n const n8nWorkflow = $input.all()[1].json;\n \n // Order JSON objects\n const orderedOriginal = orderJsonKeys(origWorkflow);\n const orderedActual = orderJsonKeys(n8nWorkflow);\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.n8n_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 origWorkflow = JSON.parse($input.all()[0].json.data);\n const n8nWorkflow = $input.all()[1].json;\n \n // Order JSON objects\n const orderedOriginal = orderJsonKeys(origWorkflow);\n const orderedActual = orderJsonKeys(n8nWorkflow);\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.n8n_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 n8nWorkflow = $input.all()[1].json;\n const orderedActual = orderJsonKeys(n8nWorkflow);\n \n // Proper formatting\n $input.all()[0].json.github_status = \"new\";\n $input.all()[0].json.n8n_data_stringy = JSON.stringify(orderedActual, null, 2);\n}\n\n// Return items\nreturn $input.all();"
},
"typeVersion": 1
},
{
"id": "ac50a21b-f850-495a-9e41-8fdd075c3c62",
"name": "Gleiche Datei - Nichts tun",
"type": "n8n-nodes-base.noOp",
"position": [
1360,
1600
],
"parameters": {},
"typeVersion": 1
},
{
"id": "293179e5-9ef0-4f75-b39c-987ebf13a9b5",
"name": "Datei ist unterschiedlich",
"type": "n8n-nodes-base.noOp",
"position": [
1360,
1420
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ab03b5e9-61eb-4512-9675-afd048a761c6",
"name": "Datei ist neu",
"type": "n8n-nodes-base.noOp",
"position": [
1360,
1240
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a0431fdb-41ff-4bf0-8618-c743d6be159e",
"name": "Neue Datei erstellen",
"type": "n8n-nodes-base.github",
"position": [
1580,
1240
],
"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[\"n8n_data_stringy\"]}}",
"commitMessage": "={{$('Switch').first().json.name}} ({{$json.github_status}})",
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": {
"id": "5UZFyU8iEpfKOIbY",
"name": "GitHub marskdev"
}
},
"typeVersion": 1
},
{
"id": "e0a9e1f0-bd40-4009-8945-24a264ddbf0d",
"name": "Vorhandene Datei bearbeiten",
"type": "n8n-nodes-base.github",
"position": [
1580,
1420
],
"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[\"n8n_data_stringy\"]}}",
"commitMessage": "={{$('Switch').first().json.name}} ({{$json.github_status}})",
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": {
"id": "5UZFyU8iEpfKOIbY",
"name": "GitHub marskdev"
}
},
"typeVersion": 1
},
{
"id": "a4d50217-3d8c-48f3-a486-fb3c033fcef4",
"name": "Über Elemente iterieren",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1580,
740
],
"parameters": {
"options": {
"reset": "={{ $node[\"Loop Over Items\"].context[\"done\"] }}"
}
},
"typeVersion": 3
},
{
"id": "4f529f31-26a2-4f19-b8f3-42ce583b11ad",
"name": "Zeitplan-Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
260,
840
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "c8c0bc8a-3538-4c63-8882-3dd846830649",
"name": "Kurznotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
480
],
"parameters": {
"color": 4,
"width": 371,
"height": 601,
"content": "## Backup to GitHub \nThis workflow will backup all instance workflows to GitHub and also deleted it if was deleted in n8n.\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\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\n\nThe workflow calls itself using a subworkflow, to help reduce memory usage."
},
"typeVersion": 1
},
{
"id": "d527bac6-971b-4be7-8481-97dd023e85e1",
"name": "Dateidaten abrufen",
"type": "n8n-nodes-base.github",
"position": [
480,
1160
],
"webhookId": "5cf07ee9-70c6-48bf-b370-534315f2d48e",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $json.repo.owner }}"
},
"filePath": "={{ $('Switch').item.json.id }}.json",
"resource": "file",
"operation": "get",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $json.repo.name }}"
},
"authentication": "oAuth2",
"asBinaryProperty": false,
"additionalParameters": {}
},
"credentials": {
"githubOAuth2Api": {
"id": "5UZFyU8iEpfKOIbY",
"name": "GitHub marskdev"
}
},
"typeVersion": 1,
"continueOnFail": true,
"alwaysOutputData": true
},
{
"id": "6c7b66fa-bfdd-47ea-9161-835415d116dd",
"name": "Workflow-Ausführungs-Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-100,
1540
],
"parameters": {
"inputSource": "passthrough"
},
"typeVersion": 1.1
},
{
"id": "a3021ade-6778-49df-8ad4-4d43f28d51e2",
"name": "Workflow ausführen",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
1800,
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
},
{
"id": "e6675677-07ac-48d9-a920-58065cc79d77",
"name": "Globals",
"type": "n8n-nodes-base.set",
"position": [
480,
740
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"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": "n8n-backup"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "fba69d35-d05b-45a1-bdd9-93a83fddf63e",
"name": "Dateien auflisten",
"type": "n8n-nodes-base.github",
"position": [
1140,
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": "f235efb7-3ff9-497d-bc32-c94f38f76183",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
120,
1540
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "n8n",
"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": "n8n"
}
]
},
"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": "7c35c3da-b364-4ad0-b192-3691cb73eb6f",
"name": "Mehrere Workflows abrufen",
"type": "n8n-nodes-base.n8n",
"position": [
700,
740
],
"parameters": {
"filters": {},
"requestOptions": {
"allowUnauthorizedCerts": true
}
},
"credentials": {
"n8nApi": {
"id": "DIni9LRQu8XLEdh7",
"name": "n8n account"
}
},
"typeVersion": 1
},
{
"id": "12a90225-5a32-4b69-bee6-d61bc4369eb2",
"name": "Workflows",
"type": "n8n-nodes-base.aggregate",
"position": [
920,
840
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "799e5c1f-43aa-4375-b8f2-25a3335ddb18",
"name": "Zusammenführen",
"type": "n8n-nodes-base.merge",
"position": [
700,
1420
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "5acad04e-0c07-4663-be6f-d8cdf4ecee4e",
"name": "Status prüfen",
"type": "n8n-nodes-base.switch",
"position": [
1140,
1420
],
"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": "a5979392-d277-4580-aa16-09d18e3eb577",
"name": "isDeleted",
"type": "n8n-nodes-base.code",
"position": [
920,
1740
],
"parameters": {
"jsCode": "const workflows = $input.first().json.workflows;\n\nconst some = workflows.some(x => x.id === $input.first().json.name.split(\".\")[0])\n\nreturn [{json: { isDeleted: !some }}];"
},
"typeVersion": 2
},
{
"id": "c08dde95-3a3a-4ac1-a92b-c9bcd5c7743b",
"name": "Datei löschen",
"type": "n8n-nodes-base.github",
"position": [
1580,
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": "1e769761-5f93-4d67-b801-e2d6a8443aed",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
1140,
1740
],
"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": "39ad6ee3-acde-4019-b850-7a8add4e795a",
"name": "n8n",
"type": "n8n-nodes-base.set",
"position": [
1360,
640
],
"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": "n8n"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "fc83af27-10a8-4ec4-94e7-15ab074c8ab6",
"name": "github",
"type": "n8n-nodes-base.set",
"position": [
1360,
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": "workflows",
"type": "array",
"value": "={{ $('Workflows').item.json.data }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "99e64b8f-3446-4b74-8ce6-5eccd47d0aa7",
"name": "Kurznotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
460,
600
],
"parameters": {
"color": 4,
"width": 150,
"height": 80,
"content": "## Edit this node 👇"
},
"typeVersion": 1
},
{
"id": "734112c4-9175-4f50-a2d6-7970d2938624",
"name": "Kurznotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
480
],
"parameters": {
"color": 7,
"width": 1831,
"height": 601,
"content": "## Main workflow loop"
},
"typeVersion": 1
},
{
"id": "0dbfd9fc-e5c8-4a98-8435-5a44c1f3d56d",
"name": "Kurznotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
1100
],
"parameters": {
"color": 6,
"width": 2231,
"height": 941,
"content": "## Subworkflow"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"1e769761-5f93-4d67-b801-e2d6a8443aed": {
"main": [
[
{
"node": "c08dde95-3a3a-4ac1-a92b-c9bcd5c7743b",
"type": "main",
"index": 0
}
],
[
{
"node": "287eabd3-013d-41cd-a9c3-ae71b8d26ef9",
"type": "main",
"index": 0
}
]
]
},
"39ad6ee3-acde-4019-b850-7a8add4e795a": {
"main": [
[
{
"node": "a4d50217-3d8c-48f3-a486-fb3c033fcef4",
"type": "main",
"index": 0
}
]
]
},
"799e5c1f-43aa-4375-b8f2-25a3335ddb18": {
"main": [
[
{
"node": "8509afb5-c772-445d-af47-de54c9deae6e",
"type": "main",
"index": 0
}
]
]
},
"287eabd3-013d-41cd-a9c3-ae71b8d26ef9": {
"main": [
[]
]
},
"f235efb7-3ff9-497d-bc32-c94f38f76183": {
"main": [
[
{
"node": "d527bac6-971b-4be7-8481-97dd023e85e1",
"type": "main",
"index": 0
},
{
"node": "799e5c1f-43aa-4375-b8f2-25a3335ddb18",
"type": "main",
"index": 1
}
],
[
{
"node": "a5979392-d277-4580-aa16-09d18e3eb577",
"type": "main",
"index": 0
}
]
]
},
"fc83af27-10a8-4ec4-94e7-15ab074c8ab6": {
"main": [
[
{
"node": "a4d50217-3d8c-48f3-a486-fb3c033fcef4",
"type": "main",
"index": 0
}
]
]
},
"e6675677-07ac-48d9-a920-58065cc79d77": {
"main": [
[
{
"node": "7c35c3da-b364-4ad0-b192-3691cb73eb6f",
"type": "main",
"index": 0
}
]
]
},
"edc8da3b-fcf1-4487-8963-464c18c209b5": {
"main": [
[
{
"node": "799e5c1f-43aa-4375-b8f2-25a3335ddb18",
"type": "main",
"index": 0
}
]
]
},
"12a90225-5a32-4b69-bee6-d61bc4369eb2": {
"main": [
[
{
"node": "fba69d35-d05b-45a1-bdd9-93a83fddf63e",
"type": "main",
"index": 0
}
]
]
},
"a5979392-d277-4580-aa16-09d18e3eb577": {
"main": [
[
{
"node": "1e769761-5f93-4d67-b801-e2d6a8443aed",
"type": "main",
"index": 0
}
]
]
},
"fba69d35-d05b-45a1-bdd9-93a83fddf63e": {
"main": [
[
{
"node": "fc83af27-10a8-4ec4-94e7-15ab074c8ab6",
"type": "main",
"index": 0
}
]
]
},
"ab03b5e9-61eb-4512-9675-afd048a761c6": {
"main": [
[
{
"node": "a0431fdb-41ff-4bf0-8618-c743d6be159e",
"type": "main",
"index": 0
}
]
]
},
"8509afb5-c772-445d-af47-de54c9deae6e": {
"main": [
[
{
"node": "5acad04e-0c07-4663-be6f-d8cdf4ecee4e",
"type": "main",
"index": 0
}
]
]
},
"5acad04e-0c07-4663-be6f-d8cdf4ecee4e": {
"main": [
[
{
"node": "ab03b5e9-61eb-4512-9675-afd048a761c6",
"type": "main",
"index": 0
}
],
[
{
"node": "293179e5-9ef0-4f75-b39c-987ebf13a9b5",
"type": "main",
"index": 0
}
],
[
{
"node": "ac50a21b-f850-495a-9e41-8fdd075c3c62",
"type": "main",
"index": 0
}
]
]
},
"c08dde95-3a3a-4ac1-a92b-c9bcd5c7743b": {
"main": [
[
{
"node": "287eabd3-013d-41cd-a9c3-ae71b8d26ef9",
"type": "main",
"index": 0
}
]
]
},
"d527bac6-971b-4be7-8481-97dd023e85e1": {
"main": [
[
{
"node": "63859d24-34b7-4545-a3fb-fe45b3678cef",
"type": "main",
"index": 0
}
]
]
},
"a0431fdb-41ff-4bf0-8618-c743d6be159e": {
"main": [
[
{
"node": "287eabd3-013d-41cd-a9c3-ae71b8d26ef9",
"type": "main",
"index": 0
}
]
]
},
"a4d50217-3d8c-48f3-a486-fb3c033fcef4": {
"main": [
[],
[
{
"node": "a3021ade-6778-49df-8ad4-4d43f28d51e2",
"type": "main",
"index": 0
}
]
]
},
"a3021ade-6778-49df-8ad4-4d43f28d51e2": {
"main": [
[
{
"node": "a4d50217-3d8c-48f3-a486-fb3c033fcef4",
"type": "main",
"index": 0
}
]
]
},
"4f529f31-26a2-4f19-b8f3-42ce583b11ad": {
"main": [
[
{
"node": "e6675677-07ac-48d9-a920-58065cc79d77",
"type": "main",
"index": 0
}
]
]
},
"293179e5-9ef0-4f75-b39c-987ebf13a9b5": {
"main": [
[
{
"node": "e0a9e1f0-bd40-4009-8945-24a264ddbf0d",
"type": "main",
"index": 0
}
]
]
},
"63859d24-34b7-4545-a3fb-fe45b3678cef": {
"main": [
[
{
"node": "edc8da3b-fcf1-4487-8963-464c18c209b5",
"type": "main",
"index": 0
}
],
[
{
"node": "799e5c1f-43aa-4375-b8f2-25a3335ddb18",
"type": "main",
"index": 0
}
]
]
},
"e0a9e1f0-bd40-4009-8945-24a264ddbf0d": {
"main": [
[
{
"node": "287eabd3-013d-41cd-a9c3-ae71b8d26ef9",
"type": "main",
"index": 0
}
]
]
},
"7c35c3da-b364-4ad0-b192-3691cb73eb6f": {
"main": [
[
{
"node": "12a90225-5a32-4b69-bee6-d61bc4369eb2",
"type": "main",
"index": 0
},
{
"node": "39ad6ee3-acde-4019-b850-7a8add4e795a",
"type": "main",
"index": 0
}
]
]
},
"638dcc28-8b20-40e6-81fd-96efec4d4111": {
"main": [
[
{
"node": "e6675677-07ac-48d9-a920-58065cc79d77",
"type": "main",
"index": 0
}
]
]
},
"ac50a21b-f850-495a-9e41-8fdd075c3c62": {
"main": [
[
{
"node": "287eabd3-013d-41cd-a9c3-ae71b8d26ef9",
"type": "main",
"index": 0
}
]
]
},
"6c7b66fa-bfdd-47ea-9161-835415d116dd": {
"main": [
[
{
"node": "f235efb7-3ff9-497d-bc32-c94f38f76183",
"type": "main",
"index": 0
}
]
]
}
}
}Häufig gestellte Fragen
Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte - DevOps
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Bidirektionale Synchronisation von Typebot-Workflows mit GitHub unter Verwendung der Typebot-API
Bidirektionale Synchronisation von Typebot-Workflows mit GitHub unter Verwendung des Typebot-APIs
If
Set
Code
+
If
Set
Code
31 NodesMarcial Ambriz
DevOps
GitHub Synchronisations-Dashboard - V2
GitHub-Workflow-Versionskontroll-Dashboard mit Commit-Verlauf und Rollback-Funktion
If
N8n
Set
+
If
N8n
Set
94 NodesEduard
DevOps
Workflows zu GitHub (Unterordner) sichern
Sichere Workflows in GitHub (Unterverzeichnis)
If
N8n
Set
+
If
N8n
Set
25 NodesNazmy
Sonstiges
Workflows zu GitHub sichern
Sichere Workflows in GitHub
If
N8n
Set
+
If
N8n
Set
23 NodesSolomon
Sonstiges
Backup von N8N-Workflows auf Github
Backup von N8N-Arbeitsabläufen zu GitHub
If
N8n
Set
+
If
N8n
Set
30 NodesDat Proto
n8n-Knoten in der visuellen Referenzbibliothek erkunden
Erkundung von n8n-Knoten in der visuellen Referenzbibliothek
If
Ftp
Set
+
If
Ftp
Set
113 NodesI versus AI
Sonstiges
Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes31
Kategorie1
Node-Typen16
Autor
Marcial Ambriz
@marskdevExterne Links
Auf n8n.io ansehen →
Diesen Workflow teilen