ドキュメント同期ワークフロー

上級

これは自動化ワークフローで、16個のノードを含みます。主にIf, Slack, Github, GithubTrigger, Agentなどのノードを使用。 自動ドキュメント同期:GitHubからSlack、GPT-4o Miniによる要約付き

前提条件
  • Slack Bot Token または Webhook URL
  • GitHub Personal Access Token
  • OpenAI API Key

カテゴリー

-
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "x0albhzs79R3Tmfm",
  "meta": {
    "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
    "templateCredsSetupCompleted": true
  },
  "name": "Documentation Sync Workflow",
  "tags": [],
  "nodes": [
    {
      "id": "e6f72597-24f7-46f9-bf57-df361d91d2c0",
      "name": "PRイベントを監視",
      "type": "n8n-nodes-base.githubTrigger",
      "position": [
        -2064,
        176
      ],
      "webhookId": "262ba0f4-0671-4950-9ce2-e5316717edab",
      "parameters": {
        "owner": {
          "__rl": true,
          "mode": "url",
          "value": "https://github.com/anuj658/n8n-project/tree/anuj"
        },
        "events": [
          "pull_request"
        ],
        "options": {},
        "repository": {
          "__rl": true,
          "mode": "list",
          "value": "n8n-project",
          "cachedResultUrl": "https://github.com/anuj658/n8n-project",
          "cachedResultName": "n8n-project"
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "githubOAuth2Api": {
          "id": "xqrQrEJwugKxUIab",
          "name": "GitHub account-anuj"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "155ef9cd-fe67-4af8-90b7-8cd33ab904af",
      "name": "📋 ワークフロー概要",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2384,
        80
      ],
      "parameters": {
        "width": 250,
        "height": 300,
        "content": "🚀 WORKFLOW START\n\nThis workflow monitors GitHub pull requests and automatically syncs documentation to Confluence when changes are merged to the main branch.\n\n• Triggers on PR events\n• Validates PR is merged to main\n• Detects doc changes\n• Updates Confluence\n• Notifies team via Slack"
      },
      "typeVersion": 1
    },
    {
      "id": "17016417-98fe-437d-bc8a-0dc47f78f737",
      "name": "PRはMainにマージ済み?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1840,
        176
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$json[\"body\"][\"pull_request\"][\"base\"][\"ref\"]}}",
              "value2": "main",
              "operation": "contains"
            },
            {
              "value1": "={{$json[\"body\"][\"pull_request\"][\"merged\"]}}",
              "value2": "false"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "58d77011-30ef-4083-8039-8ad7c19b400f",
      "name": "🔍 検証ゲート",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1952,
        352
      ],
      "parameters": {
        "width": 280,
        "height": 280,
        "content": "✅ VALIDATION GATE\n\nChecks if the pull request:\n✓ Is targeting the 'main' branch\n✓ Has been merged (merged = true)\n\nOnly proceeds if BOTH conditions are met. This prevents syncing of unmerged or draft PRs."
      },
      "typeVersion": 1
    },
    {
      "id": "ecd617ef-c912-463c-b33f-a5d4754465ef",
      "name": "READMEコンテンツを取得",
      "type": "n8n-nodes-base.github",
      "position": [
        -1616,
        176
      ],
      "webhookId": "51b734f8-e1cd-4bd0-8996-6b8e38f1cee0",
      "parameters": {
        "owner": {
          "__rl": true,
          "mode": "url",
          "value": "https://github.com/anuj658/n8n-project"
        },
        "filePath": "README.md",
        "resource": "file",
        "operation": "get",
        "repository": {
          "__rl": true,
          "mode": "list",
          "value": "n8n-project",
          "cachedResultUrl": "https://github.com/anuj658/n8n-project",
          "cachedResultName": "n8n-project"
        },
        "authentication": "oAuth2",
        "additionalParameters": {}
      },
      "credentials": {
        "githubOAuth2Api": {
          "id": "xqrQrEJwugKxUIab",
          "name": "GitHub account-anuj"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "cf09bbcd-f959-4ae1-8c1e-7c902072910f",
      "name": "📥 ファイル取得",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1712,
        -128
      ],
      "parameters": {
        "width": 280,
        "height": 280,
        "content": "📥 GITHUB FILE RETRIEVAL\n\nFetches the README.md file from the repository to:\n• Extract documentation content\n• Pass to change detection\n• Provide context for AI summarization\n\nUses GitHub OAuth2 for authentication"
      },
      "typeVersion": 1
    },
    {
      "id": "456cf796-a361-4d82-afea-9bc66fe7f429",
      "name": "ドキュメントは変更された?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1392,
        176
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{JSON.stringify($json)}}",
              "value2": "docs",
              "operation": "contains"
            },
            {
              "value1": "={{JSON.stringify($json)}}",
              "value2": "README",
              "operation": "contains"
            },
            {
              "value1": "={{JSON.stringify($json)}}",
              "value2": "openapi",
              "operation": "contains"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1f990ead-3f32-48c7-bbd7-a9cf5b9af9f9",
      "name": "🔎 ドキュメント検出",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1504,
        352
      ],
      "parameters": {
        "width": 280,
        "height": 320,
        "content": "🔎 DOCUMENTATION DETECTION\n\nScans the PR payload for keywords:\n✓ 'docs' folder changes\n✓ 'README' file modifications\n✓ 'openapi' spec updates\n\nIf ANY documentation changes detected:\n→ Routes to AI summarization\n→ Updates Confluence\n→ Notifies team\n\nOtherwise: Workflow ends"
      },
      "typeVersion": 1
    },
    {
      "id": "622f0344-42a4-477c-ae9a-0a7c5b4c7355",
      "name": "AI要約エージェント",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1168,
        -80
      ],
      "parameters": {
        "text": "Summarize the changes in the documentation briefly in 2-3 sentences.",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "2c845de1-a35c-4f32-b112-74fb4e677880",
      "name": "🤖 AIエージェント",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1200,
        -384
      ],
      "parameters": {
        "width": 280,
        "height": 280,
        "content": "🤖 AI SUMMARIZATION\n\nUses Azure OpenAI to:\n• Analyze doc changes\n• Generate concise summary\n• 2-3 sentence summary format\n\nOutput used for:\n→ Confluence update descriptions\n→ Slack notification message"
      },
      "typeVersion": 1
    },
    {
      "id": "41f13861-a2bf-4c35-b1ea-82f2e275768f",
      "name": "Azure OpenAI Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        -864,
        240
      ],
      "parameters": {
        "model": "gpt-4o-mini",
        "options": {}
      },
      "credentials": {
        "azureOpenAiApi": {
          "id": "C3WzT18XqF8OdVM6",
          "name": "Azure Open AI account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f7559c04-28b2-4e3c-bb7d-06436e8524fd",
      "name": "⚙️ LLM設定",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -736,
        208
      ],
      "parameters": {
        "width": 280,
        "height": 280,
        "content": "⚙️ LLM CONFIGURATION\n\nModel: GPT-4o Mini\nProvider: Azure OpenAI\n\nFeatures:\n• Fast processing\n• Cost-efficient\n• Context-aware summarization\n\nConnected to AI Agent for intelligent analysis"
      },
      "typeVersion": 1
    },
    {
      "id": "9f005c0f-1416-4166-9d83-a26b658f0b84",
      "name": "ドキュメントチームに通知 (Slack)",
      "type": "n8n-nodes-base.slack",
      "position": [
        -1056,
        320
      ],
      "parameters": {
        "text": "📢 *Docs Auto-Synced!*\n📦 Repo: {{$json[\"body\"][\"repository\"][\"full_name\"]}}\n🌿 Branch: {{$json[\"body\"][\"pull_request\"][\"base\"][\"ref\"]}}\n👤 Author: {{$json[\"body\"][\"pull_request\"][\"user\"][\"login\"]}}\n📝 Title: {{$json[\"body\"][\"pull_request\"][\"title\"]}}\n🔗 PR: {{$json[\"body\"][\"pull_request\"][\"html_url\"]}}",
        "channel": "#documentation-updates",
        "attachments": [],
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "id": null,
          "name": "Slack Token"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "205d8659-f97b-4310-ac09-0174da664684",
      "name": "📢 Slack アラート",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -992,
        512
      ],
      "parameters": {
        "width": 280,
        "height": 300,
        "content": "📢 SLACK NOTIFICATION\n\nSends message to #documentation-updates with:\n✓ Auto-sync confirmation\n✓ Repository name\n✓ Target branch\n✓ Author name\n✓ PR title\n✓ PR link\n\nKeeps team informed of doc updates in real-time"
      },
      "typeVersion": 1
    },
    {
      "id": "8e8c820c-ad01-40e9-b269-e1fa4f1ffc4f",
      "name": "AI要約をSlackに投稿",
      "type": "n8n-nodes-base.slack",
      "position": [
        -816,
        16
      ],
      "webhookId": "3bd11cca-5947-4933-ab7d-9bdaadb693b5",
      "parameters": {
        "text": "🔔 Documentation changes detected:\n{{$json}}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09GNB90TED",
          "cachedResultName": "general-information"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "id": "rNqvWj9TfChPVRYY",
          "name": "Slack account vivek"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "31816220-f24d-47b2-ae2f-737e1157ed0e",
      "name": "📤 要約投稿",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -816,
        -272
      ],
      "parameters": {
        "width": 280,
        "height": 280,
        "content": "📤 AI SUMMARY TO SLACK\n\nChannel: general-information\n\nPosts AI-generated summary to:\n• Keep team informed\n• Share key changes\n• Link to PR details\n• Enable quick reviews"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "bc63ac13-fb64-4148-99ea-e6e60d9c6d96",
  "connections": {
    "456cf796-a361-4d82-afea-9bc66fe7f429": {
      "main": [
        [
          {
            "node": "622f0344-42a4-477c-ae9a-0a7c5b4c7355",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "9f005c0f-1416-4166-9d83-a26b658f0b84",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "41f13861-a2bf-4c35-b1ea-82f2e275768f": {
      "ai_languageModel": [
        [
          {
            "node": "622f0344-42a4-477c-ae9a-0a7c5b4c7355",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "622f0344-42a4-477c-ae9a-0a7c5b4c7355": {
      "main": [
        [
          {
            "node": "8e8c820c-ad01-40e9-b269-e1fa4f1ffc4f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ecd617ef-c912-463c-b33f-a5d4754465ef": {
      "main": [
        [
          {
            "node": "456cf796-a361-4d82-afea-9bc66fe7f429",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e6f72597-24f7-46f9-bf57-df361d91d2c0": {
      "main": [
        [
          {
            "node": "17016417-98fe-437d-bc8a-0dc47f78f737",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "17016417-98fe-437d-bc8a-0dc47f78f737": {
      "main": [
        [
          {
            "node": "ecd617ef-c912-463c-b33f-a5d4754465ef",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数16
カテゴリー-
ノードタイプ7
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Rahul Joshi

Rahul Joshi

@rahul08

Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34