8
n8n 中文网amn8n.com

Reddit 品牌互动与AI评论生成及Slack通知

中级

这是一个Miscellaneous, Multimodal AI领域的自动化工作流,包含 13 个节点。主要使用 Code, Merge, Slack, Filter, Reddit 等节点。 Reddit 品牌互动与AI评论生成及Slack通知

前置要求
  • Slack Bot Token 或 Webhook URL
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "QNYxNb9yixArNlbl",
  "meta": {
    "instanceId": "e56288a9b12ad2dc7c19cc4170f20f7abcacaad5fb3972dd882c9ce4f34e7668",
    "templateCredsSetupCompleted": true
  },
  "name": "Reddit Brand Engagement with AI Comment Generation and Slack Notifications",
  "tags": [],
  "nodes": [
    {
      "id": "5e277ec9-9333-4e87-b33f-99d4c7c68dd2",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -384,
        336
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 19
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b24e5eab-b578-4beb-9044-f93ef116da25",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        656,
        768
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "5n856jvI80lSEErZ",
          "name": "Klinsman OpenAI"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "eda03da7-34e1-4312-9adf-f07f66eda110",
      "name": "Should Reply?",
      "type": "n8n-nodes-base.filter",
      "position": [
        1088,
        336
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "af95826b-3b04-45cc-91a1-278f52675625",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.output.should_reply }}",
              "rightValue": ""
            },
            {
              "id": "5afa483f-e2d8-44d8-8ece-28704bf92435",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.output.post_id }}",
              "rightValue": "1mchxl3"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "92bf8f16-42ab-4875-b9a5-2a7d015dbe9d",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        720,
        560
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"post_id\": \"1mchxl3\",\n  \"should_reply\": true,\n  \"comment\": \"This is a seriously impressive setup — the way you've combined voice-based AI with backend workflow automation is next-level for marketing ops. I've been experimenting with similar automation for SDR workflows where AI handles lead research and cold outreach sequencing, and the trick is always keeping context and personalization tight while scaling. Sounds like your n8n agent’s memory system is doing heavy lifting there. Maybe check out Astra? It helped automate outreach and follow-ups in a way that felt both personal and scalable. Curious how you handle error scenarios when the voice agent misinterprets a request?\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "eefe45d8-a44e-41ad-9681-cf7a6aefc891",
      "name": "Comment AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        512,
        336
      ],
      "parameters": {
        "text": "=post_id: {{ $json.id }}\ntitle:  {{ $json.title }}\ntext: {{ $json.selftext }}\ncomments_count: {{ $json.num_comments }}\nupvote_ratio: {{ $json.upvote_ratio }}\nsubreddit: {{ $json.subreddit }}\npost_url: {{ $json.url }}",
        "options": {
          "systemMessage": "=You are a Reddit engagement assistant for 'Wati Astra' (AI SDR Agent). Remember - 'Wati Astra' is meant to act as an inbound SDR Agent for website owners that helps website owners capture more qualified leads for their business. It is intended to save their human SDRs time, not replace them.\n\nYour primary goal is authenticity and trust-building, not aggressive promotion.\n\nCore Engagement Filters\nReply only if all are true:\n* Subreddit is sales/startup-friendly and not hostile to tools\n* Upvote ratio > 0.7\n\nReply only if at least 2 are true:\n* OP is struggling with SDRs, lead qualification, handling website enquiries, or sales scaling\n* Post has < 20 comments\n* Discussion is about solving, not just venting\n\nSkip if:\n* “What tools do you use?” type post (oversaturated)\n* Subreddit bans tool mentions\n* OP is ranting without asking for help\n\nComment Writing Style\n* Tone: like a startup founder/SDR sharing personal experience with a peer.\n* Length: 3–6 sentences.\n* Language: casual, slightly messy, human. Use lowercase, slang, or light humor.\n* Authenticity markers: small imperfections (“idk”, “ngl”, “fwiw”).\n* Structure:\n   1. Empathy → “been there, it’s rough…”\n   2. Share insight/experience\n   3. Offer thought or subtle suggestion\n   4. End with open question\n\nWati Astra Mention Strategy\n* Mention Wati Astra in 30–40% of replies\n* Never in the first sentence\n* Frame as:\n   * Personal experience: “we ended up trying Wati Astra…”\n   * Peer suggestion: “someone recommended Wati Astra…”\n* Always mix Wati Astra with other advice\n* Ensure that the replies include some newlines (\\n) as well, so it's well formatted.\n\nOutput Specification\n\n{\n  \"post_id\": \"[[post_id]]\",\n  \"should_reply\": true/false,\n  \"reason\": \"[[short explanation of why/why not]]\",\n  \"comment\": \"[[authentic, Reddit-style comment, 3–6 sentences]]\"\n}",
          "returnIntermediateSteps": false
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.1
    },
    {
      "id": "19f803ed-b56d-4bab-8922-15973c487eb4",
      "name": "Send a message",
      "type": "n8n-nodes-base.slack",
      "position": [
        1312,
        336
      ],
      "webhookId": "9cc26645-4a03-4845-951e-59fb7823fe9a",
      "parameters": {
        "text": "=Post: https://www.reddit.com/r/CRM/comments/{{ $json.output.post_id }}/\n\nComment Idea: \n{{ $json.output.comment }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09DJJZ3DHQ",
          "cachedResultName": "astra-reddit-post-comment-ideas"
        },
        "otherOptions": {
          "includeLinkToWorkflow": false
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "vfQ8ueafnLlmAscH",
          "name": "Wati Slack"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "8936a6b1-93e9-48c7-8e8b-90cdeb1bc03a",
      "name": "AI_Agents",
      "type": "n8n-nodes-base.reddit",
      "position": [
        -160,
        144
      ],
      "parameters": {
        "limit": 5,
        "keyword": "Sales, Sales Automation, Website Leads, Lead Qualification",
        "operation": "search",
        "subreddit": "AI_Agents",
        "additionalFields": {
          "sort": "new"
        }
      },
      "credentials": {
        "redditOAuth2Api": {
          "id": "lMf8qblHnOeY0dtV",
          "name": "Reddit account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "27e78e10-6864-40ce-850a-9bb562e919dd",
      "name": "Automate",
      "type": "n8n-nodes-base.reddit",
      "position": [
        -160,
        -48
      ],
      "parameters": {
        "limit": 5,
        "keyword": "AI Agent, AI, Automation, Sales",
        "operation": "search",
        "subreddit": "Automate",
        "additionalFields": {
          "sort": "new"
        }
      },
      "credentials": {
        "redditOAuth2Api": {
          "id": "lMf8qblHnOeY0dtV",
          "name": "Reddit account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "35dce505-c015-49c3-ba02-f2a55ecf68a4",
      "name": "salesdevelopment",
      "type": "n8n-nodes-base.reddit",
      "position": [
        -160,
        336
      ],
      "parameters": {
        "limit": 5,
        "keyword": "AI Agent, AI, Automation",
        "operation": "search",
        "subreddit": "salesdevelopment",
        "additionalFields": {
          "sort": "new"
        }
      },
      "credentials": {
        "redditOAuth2Api": {
          "id": "lMf8qblHnOeY0dtV",
          "name": "Reddit account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0a09670e-d75b-46f8-a942-9773ef1db9ec",
      "name": "SaaSSales",
      "type": "n8n-nodes-base.reddit",
      "position": [
        -160,
        528
      ],
      "parameters": {
        "limit": 5,
        "keyword": "AI, Automation, AI Agents",
        "operation": "search",
        "subreddit": "Automate",
        "additionalFields": {
          "sort": "new"
        }
      },
      "credentials": {
        "redditOAuth2Api": {
          "id": "lMf8qblHnOeY0dtV",
          "name": "Reddit account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "98d9a563-7757-4192-8569-7b662f16d52d",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        64,
        288
      ],
      "parameters": {
        "numberInputs": 5
      },
      "typeVersion": 3.2
    },
    {
      "id": "b1f40ba7-e8a2-4295-86e8-6449ba20e612",
      "name": "AskMarketing",
      "type": "n8n-nodes-base.reddit",
      "position": [
        -160,
        720
      ],
      "parameters": {
        "limit": 5,
        "keyword": "AI, Automation, AI Agents",
        "operation": "search",
        "subreddit": "AskMarketing",
        "additionalFields": {}
      },
      "credentials": {
        "redditOAuth2Api": {
          "id": "lMf8qblHnOeY0dtV",
          "name": "Reddit account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a9de7c09-d999-463c-9999-62857c91947a",
      "name": "Filter last 24 hour posts",
      "type": "n8n-nodes-base.code",
      "position": [
        288,
        336
      ],
      "parameters": {
        "jsCode": "// Debug version - let's see what we're working with\nconst inputData = $input.all();\n\n// Log the input structure for debugging\nconsole.log('Number of input items:', inputData.length);\nconsole.log('Full input structure:', JSON.stringify(inputData, null, 2));\n\n// Calculate 24 hours ago timestamp\nconst now = Math.floor(Date.now() / 1000);\nconst twentyFourHoursAgo = now - (24 * 60 * 60);\n\nconsole.log('Current timestamp:', now);\nconsole.log('24 hours ago timestamp:', twentyFourHoursAgo);\n\nlet postsToFilter = [];\n\n// Try different ways to access the data\ntry {\n  if (inputData.length === 0) {\n    console.log('ERROR: No input data received');\n    return [{ json: { error: 'No input data' } }];\n  }\n\n  // Check if first item contains an array\n  if (inputData[0] && inputData[0].json && Array.isArray(inputData[0].json)) {\n    postsToFilter = inputData[0].json;\n    console.log('Found array in first item, length:', postsToFilter.length);\n  }\n  // Check if we have multiple items\n  else if (inputData.length > 1) {\n    postsToFilter = inputData.map(item => item.json);\n    console.log('Using multiple items as posts, count:', postsToFilter.length);\n  }\n  // Check if single post object\n  else if (inputData[0] && inputData[0].json) {\n    postsToFilter = [inputData[0].json];\n    console.log('Using single post object');\n  }\n\n  console.log('Posts to filter:', postsToFilter.length);\n  \n  // Show sample of what we're filtering\n  if (postsToFilter.length > 0) {\n    console.log('Sample post structure:', JSON.stringify(postsToFilter[0], null, 2));\n  }\n\n  // Filter posts\n  const recentPosts = postsToFilter.filter(post => {\n    if (!post || !post.created_utc) {\n      console.log('Post missing created_utc field:', post);\n      return false;\n    }\n    \n    const isRecent = post.created_utc >= twentyFourHoursAgo;\n    console.log(`Post ${post.id || 'unknown'}: ${post.created_utc} >= ${twentyFourHoursAgo} = ${isRecent}`);\n    return isRecent;\n  });\n\n  console.log('Filtered posts count:', recentPosts.length);\n\n  // Return results\n  if (recentPosts.length === 0) {\n    return [{ json: { message: 'No posts from last 24 hours found', total_posts_checked: postsToFilter.length } }];\n  }\n\n  return recentPosts.map(post => ({ json: post }));\n\n} catch (error) {\n  console.log('ERROR:', error.message);\n  return [{ json: { error: error.message, input_received: inputData } }];\n}"
      },
      "typeVersion": 2
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f210b4da-2ac5-4ae3-a746-9766b5a18be6",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Filter last 24 hour posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Automate": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI_Agents": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "SaaSSales": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "AskMarketing": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "Should Reply?": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Comment AI Agent": {
      "main": [
        [
          {
            "node": "Should Reply?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Automate",
            "type": "main",
            "index": 0
          },
          {
            "node": "AI_Agents",
            "type": "main",
            "index": 0
          },
          {
            "node": "salesdevelopment",
            "type": "main",
            "index": 0
          },
          {
            "node": "SaaSSales",
            "type": "main",
            "index": 0
          },
          {
            "node": "AskMarketing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "salesdevelopment": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Comment AI Agent",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Comment AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Filter last 24 hour posts": {
      "main": [
        [
          {
            "node": "Comment AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

中级 - 杂项, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
中级
节点数量13
分类2
节点类型9
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

作者
Jitesh Dugar

Jitesh Dugar

@jiteshdugar

AI Automation Specialist - OpenAI, CRM & Automation Expert with a solid understanding of various tools that include Zapier, Make, Zoho CRM, Hubspot, Google Sheets, Airtable, Pipedrive, Google Analytics, and more.

外部链接
在 n8n.io 查看

分享此工作流