AutomationFlowsAI & RAG › Github - Auto-reply to Comments

Github - Auto-reply to Comments

Github - Auto-reply to comments. Uses telegram, httpRequest, agent, lmChatOpenAi. Webhook trigger; 33 nodes.

Webhook trigger★★★★★ complexityAI-powered33 nodesTelegramHTTP RequestAgentOpenAI Chat
AI & RAG Trigger: Webhook Nodes: 33 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": "Github - Auto-reply to comments",
  "nodes": [
    {
      "parameters": {
        "content": "# Auto-Reply to Comments\n\n**What this does:** Listens for new Facebook/Instagram comments (via Zernio webhooks), classifies each one with AI, and replies automatically \u2014 except abusive/bait comments (skipped) and sensitive ones (sent to a human on Telegram for approval first).\n\n**High-level flow:**\n```\nWebhook \u2192 Normalize fields \u2192 AI classify\n              \u2502\n              \u251c\u2500 spam_or_abusive \u2192 Skip (no reply)\n              \u251c\u2500 sensitive        \u2192 Telegram approval \u2192 Generate Reply (if approved)\n              \u2514\u2500 lead/question/praise \u2192 Generate Reply directly\n\nGenerate Reply \u2192 random delay (1-5 min) \u2192 Post reply via Zernio API\n```\n\n**Required credentials** :\n- OpenAI API key\n- Telegram Bot token + chat ID (for sensitive-comment review)\n- Zernio bearer token (to read post context and post replies)",
        "height": 820,
        "width": 900
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        0,
        592
      ],
      "id": "4aed2922-449f-4328-91e2-3127f4b6cb77",
      "name": "Sticky - Overview"
    },
    {
      "parameters": {
        "content": "###  Trigger\n**recieveCommentFromZernio** receives Zernio's `comment.received` event whenever someone comments on a connected Facebook or Instagram post.\n\n**getInfo** flattens the nested payload into flat fields the rest of the workflow uses:\n`comment_id`, `post_id`, `platform`, `comment_content`, `comment_author_name`, `account_id`.\n",
        "height": 484,
        "width": 572,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        976,
        608
      ],
      "id": "5f9fd62a-c369-420a-9395-a3eeced5fc64",
      "name": "Sticky - Trigger & Normalize"
    },
    {
      "parameters": {
        "content": "### Classification\n**Classify Comment** (AI agent, no tools) reads the comment and returns strict JSON:\n```json\n{ \"category\": \"lead | question | praise | spam_or_abusive | sensitive\", \"reasoning\": \"...\" }\n```\nAll categories and their criteria are customizable \n\n**Parse Classification** (Code node) safely parses that JSON.\n\n\ud83d\udee1\ufe0f **Fail-safe rule:** if the AI's output can't be parsed as valid JSON, category defaults to `sensitive` so it always routes to a human.",
        "height": 476,
        "width": 508,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1632,
        608
      ],
      "id": "ad683800-5e07-4ed8-8973-9f38c6ce45fa",
      "name": "Sticky - Classification"
    },
    {
      "parameters": {
        "content": "###  Routing\n**Route by Category** (Switch node) sends the item down one of three paths based on `category`:\n\n| category | output |\n|---|---|\n| `spam_or_abusive` | \u2192 Skip |\n| `sensitive` | \u2192 Telegram HITL |\n| anything else (fallback) | \u2192 Generate Reply directly |\n\nNo human approval is needed for spam/bait \u2014 it's just dropped. No approval is needed for leads/questions/praise either \u2014 only genuinely sensitive comments go to a human.",
        "height": 484,
        "width": 452,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2192,
        608
      ],
      "id": "eee41e45-201b-4e85-855b-84d9af494d94",
      "name": "Sticky - Routing"
    },
    {
      "parameters": {
        "content": "### \ud83d\udeab Skip path\nComments classified `spam_or_abusive` dead-end here. No reply is sent, no human is pinged ",
        "height": 196,
        "width": 444,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2752,
        608
      ],
      "id": "98015e3d-af88-4101-818d-57c313935a7d",
      "name": "Sticky - Skip Path"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        2880,
        944
      ],
      "id": "6181d1b4-eff7-4baf-a866-048a0e8d2ce4",
      "name": "Skip - Abusive or Bait"
    },
    {
      "parameters": {
        "content": "### \ud83d\ude4b Human-in-the-loop (sensitive comments)\n**Telegram - Sensitive Review** pauses the workflow (`sendAndWait`) and posts the comment + why it was flagged to a Telegram chat with two buttons:\n\n- \u2705 **Approve** \u2192 the AI generates and posts a reply, same as normal\n- \u274c **Decline** \u2192 dead-ends at \"Declined - No Reply\"; you handle it manually outside n8n\n\nThe **Approved?** IF node reads `$json.data.approved` from Telegram's response to branch.\n",
        "height": 324,
        "width": 500,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        3328,
        1040
      ],
      "id": "941de000-1804-447b-95bb-ab8585d0f844",
      "name": "Sticky - Human in the Loop"
    },
    {
      "parameters": {
        "operation": "sendAndWait",
        "chatId": "=YOUR_TELEGRAM_ID_HERE",
        "message": "=\u26a0\ufe0f Sensitive comment needs review\n\nPlatform: {{ $('getInfo').item.json.platform }}\nAuthor: {{ $('getInfo').item.json.comment_author_name }}\nComment: \"{{ $('getInfo').item.json.comment_content }}\"\n\nWhy flagged: {{ $json.reasoning }}\n\nApprove to let the AI reply automatically, or Decline to skip and handle it yourself.",
        "approvalOptions": {
          "values": {
            "approvalType": "double"
          }
        },
        "options": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        2736,
        1216
      ],
      "id": "7c6e926b-32aa-4d21-a21b-44816aa2de2d",
      "name": "Telegram - Sensitive Review",
      "retryOnFail": true,
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        3168,
        1232
      ],
      "id": "92a8adbc-6a04-45e2-8f56-d89d247d1a38",
      "name": "Declined - No Reply"
    },
    {
      "parameters": {
        "content": "### \u270d\ufe0f Reply generation\n**Generate Reply** is the same AI agent for every approved path (auto or human-approved).\n\n\nFor `lead` comments, the prompt nudges the AI to invite a DM.",
        "height": 260,
        "width": 488,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2880,
        1968
      ],
      "id": "1ded2a57-a97e-478d-ae82-19e856da7955",
      "name": "Sticky - Reply Generation"
    },
    {
      "parameters": {
        "content": "### \u23f3 Anti-bot-pattern delay\n**Compute Random Delay** picks a random 60\u2013300 second wait and stores it in `delaySeconds`.\n**Natural Delay** (Wait node) pauses the execution for that long before posting \u2014 so it is less obviously automated.",
        "height": 264,
        "width": 412,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        3456,
        1728
      ],
      "id": "eefdd187-d983-4bfd-9222-10df4c704678",
      "name": "Sticky - Delay"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "delay-seconds-id",
              "name": "delaySeconds",
              "value": "={{ Math.floor(Math.random() * (300 - 60 + 1)) + 60 }}",
              "type": "number"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        3520,
        1520
      ],
      "id": "0d26983a-4756-496d-8b6a-25155a41e85e",
      "name": "Compute Random Delay"
    },
    {
      "parameters": {
        "content": "###  Post the reply\n**Send Reply** POSTs the final AI-generated text back to Zernio's inbox API, tied to the exact `commentId` and `accountId` captured back in step 1. This is the last node for every non-skipped, non-declined path.",
        "height": 264,
        "width": 348,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        3920,
        1728
      ],
      "id": "fd4c561e-089f-434f-8b16-41e7e2779a9f",
      "name": "Sticky - Send Reply"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://zernio.com/api/v1/inbox/comments/{{ $('getInfo').item.json.post_id }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n       \"accountId\": \"{{ $('getInfo').item.json.account_id }}\",\n       \"commentId\": \"{{ $('getInfo').item.json.comment_id }}\",\n       \"message\": \"{{ $('Generate Reply1').item.json.output }}\"\n     }",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.4,
      "position": [
        4048,
        1520
      ],
      "id": "99070907-a568-46a3-9312-0b9ada32b444",
      "name": "Send Reply",
      "retryOnFail": true,
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 1
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "if-approved",
              "leftValue": "={{ $json.data.approved }}",
              "rightValue": true,
              "operator": {
                "type": "boolean",
                "operation": "equals"
              }
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        2896,
        1216
      ],
      "id": "4744fbec-b5f6-43c3-af83-8eeb608996db",
      "name": "Approved?1"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Write a reply to this {{ $('getInfo').first().json.platform }} follower's comment.\n\nUser name: {{ $('getInfo').first().json.comment_author_name }}\nComment content: {{ $('getInfo').first().json.comment_content }}\nDetected category: {{ $('parseClassification').first().json.category }}\n\nIf this is a \"lead\" (someone interested in buying/building something), warmly invite them to send a DM so you can help them directly - don't try to close the sale in the comment.\njust reply naturally like a human being.\n\nRequirements:\n- Keep the reply short\n- Be kind and encouraging\n- Do NOT include any preamble like \"Here is your reply:\" \u2014 return ONLY the reply text",
        "options": {
          "systemMessage": "You are an expert social media moderator replying on behalf of the page \"YOUR_PAGE_NAME\".\n\nYou will receive the follower's name, their comment, and a detected category (lead, question, praise, or complaint that was human-approved).\n\nWRITE_YOUR_SPECIFICATIONS_HERE \n\n- NO hashtags\n- Use emojis for warmth, matching the platform's typical tone\n- Keep it short\n- Sound human, not like AI wrote it\n- Match the tone of the original comment\n\nOutput ONLY the reply text. No explanations, no preamble, no \"Here is your reply:\"."
        }
      },
      "id": "44d7d0c3-cb02-455d-bd65-10aa8de54f02",
      "name": "Generate Reply1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3.1,
      "position": [
        3072,
        1520
      ],
      "retryOnFail": true
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "55fdb8e1-c405-4dc1-bece-1efacf1c616a",
              "name": "comment_id",
              "value": "={{ $json.body.comment.id }}",
              "type": "string"
            },
            {
              "id": "8a7b236c-95ee-4139-bc31-520fec493bb6",
              "name": "post_id",
              "value": "={{ $json.body.comment.platformPostId }}",
              "type": "string"
            },
            {
              "id": "2b1658c3-0c23-4fca-a0da-4c1a9f41bb66",
              "name": "platform",
              "value": "={{ $json.body.comment.platform }}",
              "type": "string"
            },
            {
              "id": "621619ab-279f-4843-b531-510c4b4b2a76",
              "name": "comment_content",
              "value": "={{ $json.body.comment.text }}",
              "type": "string"
            },
            {
              "id": "18cb58ec-89d6-4eb4-a7ba-d5eda891a4c3",
              "name": "comment_author_name",
              "value": "={{ $json.body.comment.author.name || $json.body.comment.author.username }}",
              "type": "string"
            },
            {
              "id": "e0875c2b-6d12-469c-9a33-7bb16ac24ff6",
              "name": "account_id",
              "value": "={{ $json.body.account.id }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1344,
        1216
      ],
      "id": "d473fae9-2cec-4479-85ca-ee71c83689bc",
      "name": "getInfo"
    },
    {
      "parameters": {
        "content": "",
        "height": 276,
        "width": 572,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        976,
        1120
      ],
      "id": "d83a5431-0f59-4148-8cf9-8d1f8a309f3a",
      "name": "Sticky - Trigger & Normalize1"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "reply-to-comments",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        1072,
        1216
      ],
      "id": "18304af8-a5e3-49ca-ae37-665936819ccf",
      "name": "recieveCommentFromZernio"
    },
    {
      "parameters": {
        "content": "",
        "height": 276,
        "width": 508,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1632,
        1120
      ],
      "id": "f72b8280-6003-4b1f-a92c-07b9cc32bf12",
      "name": "Sticky - Trigger & Normalize2"
    },
    {
      "parameters": {
        "jsCode": "let category = 'sensitive';\nlet reasoning = '';\n\ntry {\n  const raw = ($input.item.json.output || $input.item.json.text || '').toString();\n  const cleaned = raw.replace(/```json|```/g, '').trim();\n  const parsed = JSON.parse(cleaned);\n  const allowed = ['spam_or_abusive', 'sensitive', 'lead', 'question', 'praise'];\n  category = allowed.includes(parsed.category) ? parsed.category : 'sensitive';\n  reasoning = parsed.reasoning || '';\n} catch (e) {\n  // Fail safe: if we can't parse the classification, route to a human rather than\n  // auto-skipping or auto-replying.\n  category = 'sensitive';\n  reasoning = 'Could not parse classifier output - routed to human review';\n}\nlet post_id = $('getInfo').first().json.post_id;\nreturn [{ json: { category, reasoning, post_id } }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        2000,
        1216
      ],
      "id": "f3f08ab1-829f-4fca-8e3b-1f1c251c97f4",
      "name": "parseClassification"
    },
    {
      "parameters": {
        "content": "",
        "height": 276,
        "width": 444,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2192,
        1120
      ],
      "id": "67ec08f4-19a5-43f8-9d3c-a0c85dadef78",
      "name": "Sticky - Trigger & Normalize3"
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "sw-cond-skip",
                    "leftValue": "={{ $json.category }}",
                    "rightValue": "spam_or_abusive",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Skip"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "sw-cond-sensitive",
                    "leftValue": "={{ $json.category }}",
                    "rightValue": "sensitive",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Sensitive - HITL"
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra",
          "renameFallbackOutput": "Normal - Auto Reply"
        }
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        2320,
        1200
      ],
      "id": "99fa0938-7709-43aa-baa9-b06f3e935d59",
      "name": "routeByCategory"
    },
    {
      "parameters": {
        "content": "",
        "height": 276,
        "width": 444,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2752,
        832
      ],
      "id": "3397311f-b90a-4291-b60b-a759280ecfc7",
      "name": "Sticky - Trigger & Normalize4"
    },
    {
      "parameters": {
        "content": "",
        "height": 276,
        "width": 544,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2864,
        1424
      ],
      "id": "b2b371db-48bb-4d84-a9b1-d44aa3ff6f83",
      "name": "Sticky - Trigger & Normalize5"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1-mini",
          "mode": "list",
          "cachedResultName": "gpt-4.1-mini"
        },
        "builtInTools": {},
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.3,
      "position": [
        3072,
        1808
      ],
      "id": "7127cbb8-bc35-409d-9eef-0bc9a66a1a67",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "",
        "height": 276,
        "width": 412,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        3456,
        1424
      ],
      "id": "12ed0a05-3e59-4aec-a8bc-9fe137c68baa",
      "name": "Sticky - Trigger & Normalize6"
    },
    {
      "parameters": {
        "content": "",
        "height": 276,
        "width": 348,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        3920,
        1424
      ],
      "id": "462c3b59-deb0-4bb3-81d2-aa76c619a026",
      "name": "Sticky - Trigger & Normalize7"
    },
    {
      "parameters": {
        "amount": "={{ $json.delaySeconds }}"
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        3744,
        1520
      ],
      "id": "fb9f1a2b-c321-4cde-81a5-368513681783",
      "name": "Natural Delay"
    },
    {
      "parameters": {
        "content": "![banner](https://www.kawtheron.tech/github/comments_banner.jpg)",
        "height": 580,
        "width": 1380
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        0,
        0
      ],
      "id": "ef3813fc-211b-4cf2-aad8-d5194d1f8dcd",
      "name": "Sticky - Overview1"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "1d57ffeb-f663-4f09-9039-b454381de035",
              "name": "post_description",
              "value": "={{ $json.post.content }}",
              "type": "string"
            },
            {
              "id": "2ff40a15-7be0-4860-ab13-65c8d7ce88b0",
              "name": "image_url",
              "value": "",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        2880,
        1520
      ],
      "id": "3ab6959a-b34a-4175-ade7-84770457949d",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=platform: {{ $json.platform }}\nauthor: {{ $json.comment_author_name }}\ncomment: {{ $json.comment_content }}",
        "options": {
          "systemMessage": "You are a comment triage classifier for the Facebook/Instagram page \"YOUR_PAGE_NAME\".\n\nClassify the incoming comment into EXACTLY one category:\n- \"spam_or_abusive\": spam, scams, hate speech, harassment, explicit content, bot bait, irrelevant promo links\n- \"sensitive\": complaints, refund/payment/legal issues, a bad experience, angry tone, or anything you are not fully confident replying to safely\n- \"lead\": interest in buying, building, pricing, or working with the company. \n- \"question\": a genuine question that is not a lead\n- \"praise\": a positive comment/compliment with no question\n\nMODIFY_CATEGORY_AND_CRITERIA_AS_YOU_SEE_FIT\n\nRespond with ONLY valid JSON, no markdown fences, no explanation:\n{\"category\": \"one_of_the_above\", \"reasoning\": \"one short sentence\"}"
        }
      },
      "id": "7824aa15-236d-47ac-b44a-7997e0328d1d",
      "name": "Classify Comment",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3.1,
      "position": [
        1680,
        1216
      ],
      "retryOnFail": true
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1-mini",
          "mode": "list",
          "cachedResultName": "gpt-4.1-mini"
        },
        "builtInTools": {},
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.3,
      "position": [
        1680,
        1424
      ],
      "id": "80596d54-e2b0-4467-add4-75ca50c5cbde",
      "name": "OpenAI",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Telegram - Sensitive Review": {
      "main": [
        [
          {
            "node": "Approved?1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compute Random Delay": {
      "main": [
        [
          {
            "node": "Natural Delay",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Approved?1": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Declined - No Reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Reply1": {
      "main": [
        [
          {
            "node": "Compute Random Delay",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "getInfo": {
      "main": [
        [
          {
            "node": "Classify Comment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "recieveCommentFromZernio": {
      "main": [
        [
          {
            "node": "getInfo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "parseClassification": {
      "main": [
        [
          {
            "node": "routeByCategory",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "routeByCategory": {
      "main": [
        [
          {
            "node": "Skip - Abusive or Bait",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Telegram - Sensitive Review",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Reply1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Natural Delay": {
      "main": [
        [
          {
            "node": "Send Reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Generate Reply1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Classify Comment": {
      "main": [
        [
          {
            "node": "parseClassification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI": {
      "ai_languageModel": [
        [
          {
            "node": "Classify Comment",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate"
  },
  "versionId": "1a81ecb1-61f6-4673-ab23-07c396ee3f79",
  "nodeGroups": [],
  "id": "3w6flLEnF7bWhd2n",
  "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

Github - Auto-reply to comments. Uses telegram, httpRequest, agent, lmChatOpenAi. Webhook trigger; 33 nodes.

Source: https://github.com/mojtabamahdy2-cloud/comment_auto-reply/blob/main/Auto-reply_to_comments.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

leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.

Supabase, Gmail, Form Trigger +13
AI & RAG

🧠 Gwen – The AI Voice Marketing Agent Gwen is your intelligent voice-powered marketing assistant built in n8n. She combines the power of OpenAI, ElevenLabs, and automation workflows to handle content

Tool Workflow, Memory Buffer Window, Agent +10
AI & RAG

|Overview |Sample| |-|-| |This template is the first of its kind: it automatically generates both the caption and the image for your Instagram posts by analysing your existing feed, with zero spreadsh

Airtable, HTTP Request, Agent +4
AI & RAG

🔍🛠️Perplexity Researcher to HTML Web Page. Uses stickyNote, lmChatOpenAi, outputParserStructured, respondToWebhook. Webhook trigger; 47 nodes.

OpenAI Chat, Output Parser Structured, Telegram +5
AI & RAG

Transform simple queries into comprehensive, well-structured content with this n8n workflow that leverages Perplexity AI for research and GPT-4 for content transformation. Create professional blog pos

OpenAI Chat, Output Parser Structured, Telegram +5