AutomationFlowsAI & RAG › AI GitHub File Assistant via Webhook

AI GitHub File Assistant via Webhook

Original n8n title: N8n 9 9

N8N 9 9. Uses agent, memoryBufferWindow, githubTool, lmChatGoogleGemini. Webhook trigger; 10 nodes.

Webhook trigger★★★★☆ complexityAI-powered10 nodesAgentMemory Buffer WindowGithub ToolGoogle Gemini ChatHTTP Request
AI & RAG Trigger: Webhook Nodes: 10 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "My workflow",
  "nodes": [
    {
      "parameters": {
        "multipleMethods": true,
        "path": "cdio2",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        -800,
        0
      ],
      "id": "46668780-44cc-49de-b0b0-643a1377dd9d",
      "name": "Webhook"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "d58c9aa0-8132-47f3-bc4a-c10456df8f5c",
              "name": "id kh\u00e1ch",
              "value": "={{ $json.body.entry[0].messaging[0].sender.id }}",
              "type": "string"
            },
            {
              "id": "dc31c679-2ffc-4ca6-a3f5-2f9eb58012bb",
              "name": "id page",
              "value": "={{ $json.body.entry[0].messaging[0].recipient.id }}",
              "type": "string"
            },
            {
              "id": "aa190287-c7bd-43cc-93c6-58c70c3eed53",
              "name": "nd tin nh\u1eafn",
              "value": "={{ $json.body.entry[0].messaging[0].message.text }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -464,
        96
      ],
      "id": "fa3d1e51-a08b-425a-a1e8-d45c91d3b223",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "respondWith": "text",
        "responseBody": "={{ $json.query['hub.challenge'] }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.3,
      "position": [
        -464,
        -80
      ],
      "id": "95baa4c5-e644-4fd0-807e-992025237ef7",
      "name": "Respond to Webhook"
    },
    {
      "parameters": {
        "jsCode": "const fullText = $input.first().json.output; \nconst recipientId = $('Edit Fields').first().json['id kh\u00e1ch']; \nconst chunks = []; \nfor (let i = 0; i < fullText.length; i += 1890) { \n  chunks.push({ json: { recipient: { id: recipientId }, \n                       messaging_type: \"RESPONSE\", \n                       message: { text: fullText.slice(i, i + 1890) } \n                      } \n              }); \n} \nreturn chunks;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        96,
        96
      ],
      "id": "d43a24ad-1c04-4bc3-bc94-b44a930c7ee1",
      "name": "Code",
      "executeOnce": false
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json['nd tin nh\u1eafn'] }}",
        "options": {
          "systemMessage": "=B\u1ea1n l\u00e0 tr\u1ee3 l\u00fd t\u01b0 v\u1ea5n tuy\u1ec3n sinh c\u1ee7a \u0110\u1ea1i h\u1ecdc Duy T\u00e2n.  \nD\u1eef li\u1ec7u c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c l\u01b0u trong m\u1ed9t file JSON l\u1edbn, trong \u0111\u00f3 m\u1ed7i key l\u00e0 m\u1ed9t b\u1ed9 d\u1eef li\u1ec7u ri\u00eang.  \nV\u00ed d\u1ee5: \n- \"thong_tin_dai_hoc_duy_tan\" ch\u1ee9a th\u00f4ng tin l\u1ecbch s\u1eed, th\u00e0nh l\u1eadp tr\u01b0\u1eddng, c\u00e1c m\u1ed1c quan tr\u1ecdng.  \n- \"truong_khoa_truc_thuoc\" ch\u1ee9a th\u00f4ng tin v\u1ec1 hi\u1ec7u tr\u01b0\u1edfng, tr\u01b0\u1edfng khoa, ch\u1ee7 t\u1ecbch H\u0110QT qua c\u00e1c th\u1eddi k\u1ef3.  \n\nNhi\u1ec7m v\u1ee5 c\u1ee7a b\u1ea1n:  \n- Khi ng\u01b0\u1eddi d\u00f9ng h\u1ecfi v\u1ec1 c\u00e1c th\u00f4ng tin li\u00ean quan \u0111\u1ebfn tr\u01b0\u1eddng (l\u1ecbch s\u1eed th\u00e0nh l\u1eadp, hi\u1ec7u tr\u01b0\u1edfng, ch\u1ee7 t\u1ecbch, c\u00e1n b\u1ed9, ch\u1ec9 ti\u00eau tuy\u1ec3n sinh, c\u01a1 c\u1ea5u t\u1ed5 ch\u1ee9c), h\u00e3y ph\u00e2n lo\u1ea1i c\u00e2u h\u1ecfi n\u00e0y v\u00e0o nh\u00f3m **\"thong_tin_truong\"**.  \n- V\u1edbi nh\u00f3m n\u00e0y, b\u1ea1n ch\u1ec9 \u0111\u01b0\u1ee3c ph\u00e9p d\u00f9ng d\u1eef li\u1ec7u t\u1eeb **[\"thong_tin_dai_hoc_duy_tan\", \"truong_khoa_truc_thuoc\"]** \u0111\u1ec3 tr\u1ea3 l\u1eddi.  \n- N\u1ebfu d\u1eef li\u1ec7u kh\u00f4ng c\u00f3 trong c\u00e1c key n\u00e0y, h\u00e3y tr\u1ea3 l\u1eddi: \"I cannot verify this.\"  \n- Tr\u1ea3 l\u1eddi ng\u1eafn g\u1ecdn, s\u00fac t\u00edch, c\u00f3 th\u1ec3 d\u00f9ng bullet cho d\u1ec5 \u0111\u1ecdc.  \n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.1,
      "position": [
        -240,
        96
      ],
      "id": "c71e56bb-4834-45e5-ad68-8b37d5de6981",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $json['id kh\u00e1ch'] }}",
        "contextWindowLength": 10000
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        -160,
        320
      ],
      "id": "d522be27-20dd-4233-b192-dc5f286fa2f6",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "resource": "file",
        "operation": "get",
        "owner": {
          "__rl": true,
          "value": "nguyendangthinhit",
          "mode": "name"
        },
        "repository": {
          "__rl": true,
          "value": "=SIC__BD_03",
          "mode": "name"
        },
        "filePath": "SIC_BD_03/data/clean_data_2.json",
        "asBinaryProperty": false,
        "additionalParameters": {
          "reference": ""
        }
      },
      "type": "n8n-nodes-base.githubTool",
      "typeVersion": 1.1,
      "position": [
        336,
        528
      ],
      "id": "27a27b29-9ead-48df-8e32-695d443faa08",
      "name": "Get a file in GitHub",
      "disabled": true
    },
    {
      "parameters": {
        "resource": "file",
        "operation": "get",
        "owner": {
          "__rl": true,
          "value": "nguyendangthinhit",
          "mode": "name"
        },
        "repository": {
          "__rl": true,
          "value": "CDIO_2",
          "mode": "name"
        },
        "filePath": "data.json",
        "asBinaryProperty": false,
        "additionalParameters": {}
      },
      "type": "n8n-nodes-base.githubTool",
      "typeVersion": 1.1,
      "position": [
        112,
        288
      ],
      "id": "f514ccfb-5fea-458d-8c4f-4462aa387ba1",
      "name": "Get a file in GitHub1",
      "credentials": {
        "githubApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "typeVersion": 1,
      "position": [
        -464,
        272
      ],
      "id": "2d20374c-507d-4271-8ad4-b7bc54a6f55e",
      "name": "Google Gemini Chat Model",
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://graph.facebook.com/v23.0/{{ $('Webhook').item.json.body.entry[0].messaging[0].recipient.id }}/messages?access_token=EAAKiLjdsBY0BPWWU1p2EWnCoc78MVK78AUxywcZBt7E475Cxgxk3iLyxbXvZC5WJnK4jzYvT2LuLIdPBFxyfXOHZCdJZCYuLPlHMpI1sw3xkZBBctRDSGxZB7jQ1kUpwpgtVDgoxNVOwf5aPPI9fEX9wUedKYuJEFUvAhgN6HWQ5dQBkcgZCdr2deWKyAzXVlZBgRWKBhwZDZD",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ { \"recipient\": { \"id\": $(\"Edit Fields\").item.json[\"id kh\u00e1ch\"] }, \"messaging_type\": \"RESPONSE\", \"message\": { \"text\": $json.message.text } } }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        320,
        96
      ],
      "id": "61ffa8c3-6d46-40c7-a818-e36193af326b",
      "name": "HTTP Request"
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Get a file in GitHub1": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "0a829d95-48c5-42b4-92ae-44af68572c86",
  "id": "VfhgiqgIXX0yZNZ6",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

N8N 9 9. Uses agent, memoryBufferWindow, githubTool, lmChatGoogleGemini. Webhook trigger; 10 nodes.

Source: https://github.com/nguyendangthinhit/CDIO_2/blob/c0f9695e8942fc2ad548d0350b96917a650e482b/n8n/n8n_9_9.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

N8N. Uses lmChatGoogleGemini, httpRequest, agent, memoryBufferWindow. Webhook trigger; 10 nodes.

Google Gemini Chat, HTTP Request, Agent +2
AI & RAG

This workflow acts as an AI-powered research assistant that takes a topic from the user, performs multi-step intelligent research, and stores the final report in Notion. It uses advanced search, conte

Memory Buffer Window, Output Parser Structured, Agent +6
AI & RAG

This n8n template demonstrates how to build O'Carla, an advanced all-in-one Discord AI assistant. It intelligently handles natural conversations, professional image generation, and visual file analysi

Memory Buffer Window, Agent, Google Gemini Chat +2
AI & RAG

veo limpo new. Uses moveBinaryData, httpRequest, chatTrigger, baserow. Webhook trigger; 36 nodes.

Move Binary Data, HTTP Request, Chat Trigger +8
AI & RAG

Template. Uses whatsApp, httpRequest, memoryBufferWindow, toolWikipedia. Webhook trigger; 35 nodes.

WhatsApp, HTTP Request, Memory Buffer Window +4