Workflow de synchronisation de documents
Ceci est uncontenant 16 nœuds.Utilise principalement des nœuds comme If, Slack, Github, GithubTrigger, Agent. Synchronisation automatique des documents : GitHub vers Slack, avec des résumés GPT-4o Mini
- •Token Bot Slack ou URL Webhook
- •Personal Access Token GitHub
- •Clé API OpenAI
Nœuds utilisés (16)
Catégorie
{
"id": "x0albhzs79R3Tmfm",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "Documentation Sync Workflow",
"tags": [],
"nodes": [
{
"id": "e6f72597-24f7-46f9-bf57-df361d91d2c0",
"name": "Écouter les Événements de 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": "📋 Aperçu du Workflow",
"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": "La PR est-elle Fusionnée dans 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": "🔍 Portail de Validation",
"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": "Récupérer le Contenu du 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": "📥 Récupération de Fichier",
"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": "Les Docs sont-elles Modifiées ?",
"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": "🔎 Détection de Docs",
"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": "Agent de Résumé IA",
"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": "🤖 Agent IA",
"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": "⚙️ Configuration 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": "Alerter l'Équipe Docs (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": "📢 Alerte 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": "Publier le Résumé IA sur 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": "📤 Publication du Résumé",
"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
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
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.
Partager ce workflow