Workflow de synchronisation de documents

Avancé

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

Prérequis
  • Token Bot Slack ou URL Webhook
  • Personal Access Token GitHub
  • Clé API OpenAI

Catégorie

-
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "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
          }
        ]
      ]
    }
  }
}
Foire aux questions

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.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds16
Catégorie-
Types de nœuds7
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
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.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34