github_repo_workflows_sync
上級
これはAI分野の自動化ワークフローで、25個のノードを含みます。主にIf, N8n, Set, Code, Filterなどのノードを使用、AI技術を活用したスマート自動化を実現。 n8n ワークフローに対するバイレクタル GitHub ワークフロー同期とバージョン管理
前提条件
- •GitHub Personal Access Token
使用ノード (25)
カテゴリー
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "zlH1bFBsYAWpBVVw",
"meta": {
"instanceId": "c63eb69e3ae130557a7966f936bb2cc113f6e64ff70b2268c8cd506848caf9d5",
"templateCredsSetupCompleted": true
},
"name": "github_repo_workflows_sync",
"tags": [
{
"id": "oiAlopPbS90SR7YK",
"name": "github",
"createdAt": "2025-06-20T15:54:28.386Z",
"updatedAt": "2025-06-20T15:54:28.386Z"
}
],
"nodes": [
{
"id": "ffc98138-8afa-4cd6-8ba4-b235cc18c739",
"name": "n8n で新規ワークフロー作成",
"type": "n8n-nodes-base.n8n",
"position": [
1740,
780
],
"parameters": {
"operation": "create",
"requestOptions": {},
"workflowObject": "={{ $json.toJsonString() }}"
},
"typeVersion": 1
},
{
"id": "d4891039-f8d2-465b-bbb6-098050f9e06c",
"name": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-260,
280
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtDay": [
1
]
}
]
}
},
"typeVersion": 1.2
},
{
"id": "174b78dc-e584-4fc1-82a2-0e58b4a98b36",
"name": "リポジトリからファイル一覧取得",
"type": "n8n-nodes-base.github",
"position": [
360,
400
],
"webhookId": "0614066f-212d-4f9e-9da2-fa4a80b44baf",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $json.github_account_name }}"
},
"filePath": "=/{{ $json.repo_workflows_path }}",
"resource": "file",
"operation": "list",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $json.github_repo_name }}"
}
},
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "3dcf4423-8024-4797-adee-71912ba87c2b",
"name": "GitHub",
"type": "n8n-nodes-base.github",
"position": [
800,
400
],
"webhookId": "71ad7d84-99cd-4fbd-a365-52537e69525b",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $('Set GitHub Details').item.json.github_account_name }}"
},
"filePath": "={{ $json.path }}",
"resource": "file",
"operation": "get",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $('Set GitHub Details').item.json.github_repo_name }}"
},
"asBinaryProperty": false,
"additionalParameters": {}
},
"typeVersion": 1.1
},
{
"id": "315a2e65-1c4d-46b4-b17d-b949c776c116",
"name": "n8n",
"type": "n8n-nodes-base.n8n",
"position": [
580,
200
],
"parameters": {
"filters": {},
"requestOptions": {}
},
"typeVersion": 1
},
{
"id": "404e87cf-e561-4807-865a-26a6109c228f",
"name": "ファイルアップロード",
"type": "n8n-nodes-base.github",
"position": [
2400,
-80
],
"webhookId": "ce4b561b-acb9-4cd8-b76f-4928dada9674",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $('Set GitHub Details').item.json.github_account_name }}"
},
"filePath": "={{ $('Set GitHub Details').item.json.repo_workflows_path }}/{{ $node['Edit for Upload'].json.fileName }}",
"resource": "file",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $('Set GitHub Details').item.json.github_repo_name }}"
},
"fileContent": "={{ $('To base64').item.json.data }}",
"commitMessage": "=n8n_backup_sync-{{ $node['Edit for Upload'].json.commitDate }}",
"additionalParameters": {
"branch": {
"branch": "main"
}
}
},
"typeVersion": 1
},
{
"id": "aee4f541-7ff4-441d-9c6b-1545676be55a",
"name": "Json ファイル",
"type": "n8n-nodes-base.convertToFile",
"position": [
1740,
-80
],
"parameters": {
"mode": "each",
"options": {
"format": true
},
"operation": "toJson"
},
"typeVersion": 1.1
},
{
"id": "9047c039-ef8e-4fb2-b58c-3056f02366c7",
"name": "base64エンコード",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1960,
-80
],
"parameters": {
"options": {},
"operation": "binaryToPropery"
},
"typeVersion": 1
},
{
"id": "e5208d64-7f41-4be4-ad09-313aeb5fa89d",
"name": "付箋メモ",
"type": "n8n-nodes-base.stickyNote",
"position": [
1620,
180
],
"parameters": {
"color": 3,
"width": 340,
"height": 400,
"content": "## CHECK WHICH IS NEWER\n\n**IF TRUE** github workflow is the most recent, n8n to be updated\n\n**IF FALSE** n8n workflow is the most recent, github to be updated\n\n"
},
"typeVersion": 1
},
{
"id": "138bd609-541a-46d6-aa1e-792e85a58c05",
"name": "ファイル更新",
"type": "n8n-nodes-base.github",
"position": [
3220,
560
],
"webhookId": "27218087-8df7-474d-a39f-70cfa9c34ec8",
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "={{ $('Set GitHub Details').item.json.github_account_name }}"
},
"filePath": "={{ $('Set GitHub Details').item.json.repo_workflows_path }}/{{ $node['Edit for Update'].json.fileName }}",
"resource": "file",
"operation": "edit",
"repository": {
"__rl": true,
"mode": "name",
"value": "={{ $('Set GitHub Details').item.json.github_repo_name }}"
},
"fileContent": "={{ $('To base').item.json.data }}",
"commitMessage": "=n8n_backup_sync-{{ $('Edit for Update').item.json.commitDate }}"
},
"typeVersion": 1
},
{
"id": "72bd601d-fdce-4643-a26d-23e95f278110",
"name": "Json ファイル1",
"type": "n8n-nodes-base.convertToFile",
"position": [
2560,
560
],
"parameters": {
"mode": "each",
"options": {
"format": true
},
"operation": "toJson"
},
"typeVersion": 1.1
},
{
"id": "3974d157-1135-4068-bc3e-b295917cd49b",
"name": "baseエンコード",
"type": "n8n-nodes-base.extractFromFile",
"position": [
2780,
560
],
"parameters": {
"options": {},
"operation": "binaryToPropery"
},
"typeVersion": 1
},
{
"id": "eee2bfd1-e0e3-4db5-b4da-1bbc189f45e7",
"name": "n8n vs GitHub",
"type": "n8n-nodes-base.compareDatasets",
"position": [
1260,
280
],
"parameters": {
"options": {},
"mergeByFields": {
"values": [
{
"field1": "id",
"field2": "id"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "a94d4e6e-a250-4fe8-a092-a9e1697745c5",
"name": "n8n のワークフロー更新",
"type": "n8n-nodes-base.n8n",
"position": [
2340,
300
],
"parameters": {
"operation": "update",
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.dataset.id }}"
},
"requestOptions": {},
"workflowObject": "={{ $json.dataset.toJsonString() }}"
},
"typeVersion": 1
},
{
"id": "09d43ee5-7a21-47cd-8bec-45ae16e8422f",
"name": "コード - InputB",
"type": "n8n-nodes-base.code",
"position": [
2120,
300
],
"parameters": {
"language": "python",
"pythonCode": "# Get the desired workflow name\nworkflow_id = _('If n8n before GitHub').first().json['same']['id']\n\n# Get all decoded workflow items\nall_decoded = _('Decode to json').all()\n\n# Filter for the matching one\nmatched = [\n item.json \n for item in all_decoded \n if item.json.get('id') == workflow_id\n]\n\n# If there's a match, return it (or empty if none)\nif matched:\n return [{'json': {'dataset': matched[0]}}]\nelse:\n return []\n"
},
"typeVersion": 2
},
{
"id": "d3be821f-a331-4dc7-993d-6af348fb1fb2",
"name": "コード - InputA",
"type": "n8n-nodes-base.code",
"position": [
2120,
560
],
"parameters": {
"language": "python",
"pythonCode": "# Get the desired workflow name\nworkflow_id = _('If n8n before GitHub').first().json['same']['id']\n\n# Get all decoded workflow items\nall_decoded = _('n8n').all()\n\n# Filter for the matching one\nmatched = [\n item.json \n for item in all_decoded \n if item.json.get('id') == workflow_id\n]\n\n# If there's a match, return it (or empty if none)\nif matched:\n return [{'json': {'dataset': matched[0]}}]\nelse:\n return []\n"
},
"typeVersion": 2
},
{
"id": "2a173594-512b-4308-b685-540bac3e2338",
"name": "フィールド編集",
"type": "n8n-nodes-base.set",
"position": [
2340,
560
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{ $json.dataset }}"
},
"typeVersion": 3.4
},
{
"id": "7a43de98-2d25-4d0f-9b7c-47258dc7b405",
"name": "アップロード用編集",
"type": "n8n-nodes-base.set",
"position": [
2180,
-80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "fe4a36ef-9f04-40e3-99bd-cc517a49b440",
"name": "commitDate",
"type": "string",
"value": "={{ $now.format('dd-MM-yyyy/H:mm') }}"
},
{
"id": "b0fe1bcc-e79c-4a6b-b8b4-44222c8bf4e8",
"name": "fileName",
"type": "string",
"value": "={{$('n8n vs GitHub').item.json.name\n.trim().replace(/\\s+/g, '-').toLowerCase()\n}}.json"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "911736bd-1c6d-4b49-ade2-52d95f075a7f",
"name": "更新用編集",
"type": "n8n-nodes-base.set",
"position": [
3000,
560
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "fe4a36ef-9f04-40e3-99bd-cc517a49b440",
"name": "commitDate",
"type": "string",
"value": "={{ $now.format('dd-MM-yyyy/H:mm') }}"
},
{
"id": "b0fe1bcc-e79c-4a6b-b8b4-44222c8bf4e8",
"name": "fileName",
"type": "string",
"value": "={{\n$('Code - InputA').item.json.dataset.name.trim().replace(/\\s+/g, '-').toLowerCase()\n}}.json"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1193d962-fb0d-4b9e-b94c-04c8942860e4",
"name": "付箋メモ1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1620,
-200
],
"parameters": {
"width": 1000,
"height": 320,
"content": "## IF ONLY IN N8N\nUpdate GitHub with the relevant workflows"
},
"typeVersion": 1
},
{
"id": "e48eda08-7f73-46d6-ba81-f9e4b008fec3",
"name": "付箋メモ2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1620,
640
],
"parameters": {
"color": 6,
"width": 340,
"height": 340,
"content": "## IF ONLY IN GITHUB\nCreate new workflow in n8n"
},
"typeVersion": 1
},
{
"id": "c1909c33-d3f0-4d24-b4d7-fdf1e8074398",
"name": "n8n が GitHub より前の場合",
"type": "n8n-nodes-base.if",
"position": [
1740,
400
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8ccf743b-3a66-44c0-a30b-72a1d4bcf60b",
"operator": {
"type": "dateTime",
"operation": "before"
},
"leftValue": "={{ $json.different.updatedAt.inputA }}",
"rightValue": "={{ $json.different.updatedAt.inputB }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "fd1022a0-4f67-4603-bf94-68415776c587",
"name": "json にデコード",
"type": "n8n-nodes-base.set",
"position": [
1020,
400
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{ $json.content.base64Decode() }}"
},
"typeVersion": 3.4
},
{
"id": "102aadd9-ace3-4fc6-a9a9-ca546362373e",
"name": "フィルター",
"type": "n8n-nodes-base.filter",
"position": [
580,
400
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b9ed0bad-4ebe-4378-807e-1a6082c4461d",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.name }}",
"rightValue": "placeholder"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "0ddf93a8-4db3-4826-a658-8fb4aedb31ce",
"name": "GitHub 詳細設定",
"type": "n8n-nodes-base.set",
"position": [
-40,
280
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "850e7497-0f2f-470e-a5a2-a85a0c12aaa2",
"name": "github_account_name",
"type": "string",
"value": ""
},
{
"id": "5c2be15a-cb93-4fe4-a512-03a1880b8713",
"name": "github_repo_name",
"type": "string",
"value": ""
},
{
"id": "f4f1f0c3-7a89-427c-942f-d0e74ba4583f",
"name": "repo_workflows_path",
"type": "string",
"value": ""
}
]
}
},
"typeVersion": 3.4
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "f8dfa54c-eb76-40f0-80d8-18cdab254091",
"connections": {
"315a2e65-1c4d-46b4-b17d-b949c776c116": {
"main": [
[
{
"node": "eee2bfd1-e0e3-4db5-b4da-1bbc189f45e7",
"type": "main",
"index": 0
}
]
]
},
"102aadd9-ace3-4fc6-a9a9-ca546362373e": {
"main": [
[
{
"node": "3dcf4423-8024-4797-adee-71912ba87c2b",
"type": "main",
"index": 0
}
]
]
},
"3dcf4423-8024-4797-adee-71912ba87c2b": {
"main": [
[
{
"node": "fd1022a0-4f67-4603-bf94-68415776c587",
"type": "main",
"index": 0
}
]
]
},
"3974d157-1135-4068-bc3e-b295917cd49b": {
"main": [
[
{
"node": "911736bd-1c6d-4b49-ade2-52d95f075a7f",
"type": "main",
"index": 0
}
]
]
},
"aee4f541-7ff4-441d-9c6b-1545676be55a": {
"main": [
[
{
"node": "9047c039-ef8e-4fb2-b58c-3056f02366c7",
"type": "main",
"index": 0
}
]
]
},
"9047c039-ef8e-4fb2-b58c-3056f02366c7": {
"main": [
[
{
"node": "7a43de98-2d25-4d0f-9b7c-47258dc7b405",
"type": "main",
"index": 0
}
]
]
},
"72bd601d-fdce-4643-a26d-23e95f278110": {
"main": [
[
{
"node": "3974d157-1135-4068-bc3e-b295917cd49b",
"type": "main",
"index": 0
}
]
]
},
"2a173594-512b-4308-b685-540bac3e2338": {
"main": [
[
{
"node": "72bd601d-fdce-4643-a26d-23e95f278110",
"type": "main",
"index": 0
}
]
]
},
"d3be821f-a331-4dc7-993d-6af348fb1fb2": {
"main": [
[
{
"node": "2a173594-512b-4308-b685-540bac3e2338",
"type": "main",
"index": 0
}
]
]
},
"09d43ee5-7a21-47cd-8bec-45ae16e8422f": {
"main": [
[
{
"node": "a94d4e6e-a250-4fe8-a092-a9e1697745c5",
"type": "main",
"index": 0
}
]
]
},
"eee2bfd1-e0e3-4db5-b4da-1bbc189f45e7": {
"main": [
[
{
"node": "aee4f541-7ff4-441d-9c6b-1545676be55a",
"type": "main",
"index": 0
}
],
[],
[
{
"node": "c1909c33-d3f0-4d24-b4d7-fdf1e8074398",
"type": "main",
"index": 0
}
],
[
{
"node": "ffc98138-8afa-4cd6-8ba4-b235cc18c739",
"type": "main",
"index": 0
}
]
]
},
"fd1022a0-4f67-4603-bf94-68415776c587": {
"main": [
[
{
"node": "eee2bfd1-e0e3-4db5-b4da-1bbc189f45e7",
"type": "main",
"index": 1
}
]
]
},
"911736bd-1c6d-4b49-ade2-52d95f075a7f": {
"main": [
[
{
"node": "138bd609-541a-46d6-aa1e-792e85a58c05",
"type": "main",
"index": 0
}
]
]
},
"7a43de98-2d25-4d0f-9b7c-47258dc7b405": {
"main": [
[
{
"node": "404e87cf-e561-4807-865a-26a6109c228f",
"type": "main",
"index": 0
}
]
]
},
"d4891039-f8d2-465b-bbb6-098050f9e06c": {
"main": [
[
{
"node": "0ddf93a8-4db3-4826-a658-8fb4aedb31ce",
"type": "main",
"index": 0
}
]
]
},
"0ddf93a8-4db3-4826-a658-8fb4aedb31ce": {
"main": [
[
{
"node": "315a2e65-1c4d-46b4-b17d-b949c776c116",
"type": "main",
"index": 0
},
{
"node": "174b78dc-e584-4fc1-82a2-0e58b4a98b36",
"type": "main",
"index": 0
}
]
]
},
"c1909c33-d3f0-4d24-b4d7-fdf1e8074398": {
"main": [
[
{
"node": "09d43ee5-7a21-47cd-8bec-45ae16e8422f",
"type": "main",
"index": 0
}
],
[
{
"node": "d3be821f-a331-4dc7-993d-6af348fb1fb2",
"type": "main",
"index": 0
}
]
]
},
"174b78dc-e584-4fc1-82a2-0e58b4a98b36": {
"main": [
[
{
"node": "102aadd9-ace3-4fc6-a9a9-ca546362373e",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 人工知能
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
[テンプレート] AIペットショップ v8
AIペットショップアシスタント - GPT-4o、Googleカレンダー、WhatsApp/Instagram/Facebookを統合
If
N8n
Set
+
If
N8n
Set
244 ノードAmanda Benks
営業
AI エージェント レストラン [テンプレート]
🤖 WhatsApp、Instagram、MessengerのAIレストランアシスタント
If
N8n
Set
+
If
N8n
Set
239 ノードAmanda Benks
その他
毎日のワークフローを GitHub へ自動バックアップ
GitHub への毎日の自動ワークフロー バックアップ
If
N8n
Set
+
If
N8n
Set
13 ノードHugo
エンジニアリング
GitHub 同期ダッシュボード - V2
コミット履歴とロールバック機能を備えた GitHub ワークフロー バージョン管理ダッシュボード
If
N8n
Set
+
If
N8n
Set
94 ノードEduard
DevOps
AIによるLinkedInのRSS処理
Gemini AIとRSSソースを使ってLinkedInニュース投稿を自動化
If
Set
Code
+
If
Set
Code
43 ノードClub de Inteligencia Artificial Politécnico CIAP
人工知能
BrightData の週次比較
Bright Data、GPT-4.1、Google Workspaceを使用した自動ウェブサイト変更監視
If
Set
Code
+
If
Set
Code
35 ノードDaniel Shashko
人工知能