Flujo de trabajo de sincronización de documentos

Avanzado

Este es unautomatización que contiene 16 nodos.Utiliza principalmente nodos como If, Slack, Github, GithubTrigger, Agent. Sincronización automática de documentos: de GitHub a Slack, con resúmenes de GPT-4o Mini

Requisitos previos
  • Bot Token de Slack o URL de Webhook
  • Personal Access Token de GitHub
  • Clave de API de OpenAI

Categoría

-
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "x0albhzs79R3Tmfm",
  "meta": {
    "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
    "templateCredsSetupCompleted": true
  },
  "name": "Documentation Sync Workflow",
  "tags": [],
  "nodes": [
    {
      "id": "e6f72597-24f7-46f9-bf57-df361d91d2c0",
      "name": "Escuchar eventos 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": "📋 Resumen del flujo de trabajo",
      "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": "¿Se fusionó el PR a 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": "🔍 Puerta de validación",
      "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": "Obtener contenido del 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": "📥 Recuperación de archivos",
      "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": "¿Se modificaron los documentos?",
      "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": "🔎 Detección de documentos",
      "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": "Agente resumidor con 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": "🤖 Agente de 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": "⚙️ Configuración de 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": "Alertar al equipo de documentos (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": "📢 Alerta 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": "Publicar resumen de IA en 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": "📤 Publicación de resumen",
      "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
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos16
Categoría-
Tipos de nodos7
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

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

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34