GitHub への自動化 n8n ワークフロー バックアップおよび削除の追跡
上級
これはDevOps分野の自動化ワークフローで、31個のノードを含みます。主にIf, N8n, Set, Code, Mergeなどのノードを使用。 n8n のワーキングフローを GitHub へ自動バックアップし、削除を追跡
前提条件
- •GitHub Personal Access Token
- •ターゲットAPIの認証情報が必要な場合あり
使用ノード (31)
カテゴリー
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "00e9ec826c332aaa2865e65cdec318b633185c63a1cba1b3a2500858724cc85e",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "638dcc28-8b20-40e6-81fd-96efec4d4111",
"name": "「実行」クリック時",
"type": "n8n-nodes-base.manualTrigger",
"position": [
260,
640
],
"parameters": {},
"typeVersion": 1
},
{
"id": "287eabd3-013d-41cd-a9c3-ae71b8d26ef9",
"name": "Return",
"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": "ファイル取得",
"type": "n8n-nodes-base.httpRequest",
"position": [
920,
1140
],
"parameters": {
"url": "={{ $json.download_url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "63859d24-34b7-4545-a3fb-fe45b3678cef",
"name": "ファイルが大きすぎる場合",
"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": "同一ファイル - 処理なし",
"type": "n8n-nodes-base.noOp",
"position": [
1360,
1600
],
"parameters": {},
"typeVersion": 1
},
{
"id": "293179e5-9ef0-4f75-b39c-987ebf13a9b5",
"name": "ファイルが異なる",
"type": "n8n-nodes-base.noOp",
"position": [
1360,
1420
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ab03b5e9-61eb-4512-9675-afd048a761c6",
"name": "新規ファイル",
"type": "n8n-nodes-base.noOp",
"position": [
1360,
1240
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a0431fdb-41ff-4bf0-8618-c743d6be159e",
"name": "新規ファイル作成",
"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": "既存ファイル編集",
"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": "アイテムをループ処理",
"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": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
260,
840
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "c8c0bc8a-3538-4c63-8882-3dd846830649",
"name": "付箋1",
"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": "ファイルデータ取得",
"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": "ワークフロー実行トリガー",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-100,
1540
],
"parameters": {
"inputSource": "passthrough"
},
"typeVersion": 1.1
},
{
"id": "a3021ade-6778-49df-8ad4-4d43f28d51e2",
"name": "ワークフロー実行",
"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": "ファイル一覧取得",
"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": "複数ワークフロー取得",
"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": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
700,
1420
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "5acad04e-0c07-4663-be6f-d8cdf4ecee4e",
"name": "ステータス確認",
"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": "ファイル削除",
"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": "付箋3",
"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": "付箋",
"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": "付箋2",
"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
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - DevOps
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
Typebot ワークフローと GitHub を相互同期、Typebot API を使用
TypebotフローとGitHubを双方向に同期し、Typebot APIを使用
If
Set
Code
+
If
Set
Code
31 ノードMarcial Ambriz
DevOps
GitHub 同期ダッシュボード - V2
コミット履歴とロールバック機能を備えた GitHub ワークフロー バージョン管理ダッシュボード
If
N8n
Set
+
If
N8n
Set
94 ノードEduard
DevOps
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
その他