Dokument-Synchronisierungs-Workflow
Dies ist ein Automatisierungsworkflow mit 16 Nodes. Hauptsächlich werden If, Slack, Github, GithubTrigger, Agent und andere Nodes verwendet. Automatisiertes Dokumentensynchronisierung: GitHub zu Slack, inkl. GPT-4o Mini-Zusammenfassung
- •Slack Bot Token oder Webhook URL
- •GitHub Personal Access Token
- •OpenAI API Key
Verwendete Nodes (16)
Kategorie
{
"id": "x0albhzs79R3Tmfm",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "Documentation Sync Workflow",
"tags": [],
"nodes": [
{
"id": "e6f72597-24f7-46f9-bf57-df361d91d2c0",
"name": "Auf PR-Ereignisse warten",
"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": "📋 Workflow-Übersicht",
"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": "Wurde PR in Main gemerged?",
"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": "🔍 Validierungs-Gate",
"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-Inhalt abrufen",
"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": "📥 Dateiabruf",
"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": "Wurden Docs geändert?",
"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": "🔎 Doc-Erkennung",
"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-Zusammenfassungs-Agent",
"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-Agent",
"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-Konfiguration",
"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": "Alert Docs Team (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 Alert",
"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-Zusammenfassung an Slack posten",
"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": "📤 Zusammenfassungs-Post",
"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
}
]
]
}
}
}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
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
Rahul Joshi
@rahul08Rahul 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.
Diesen Workflow teilen