GPT-4o-mini、テーブル、Slackを使ったRedditブランドモニタリング&返信の自動化

上級

これはSocial Media, Multimodal AI分野の自動化ワークフローで、20個のノードを含みます。主にIf, Code, Slack, Reddit, GoogleSheetsなどのノードを使用。 GPT-4o-mini、スプレッドシート、Slackを使ってRedditのブランドモニタリングと返信を自動化

前提条件
  • Slack Bot Token または Webhook URL
  • Google Sheets API認証情報
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "db30e8ae4100235addbd4638770997b7ef11878d049073c888ba440ca84c55fc"
  },
  "nodes": [
    {
      "id": "947d8563-99c3-40bb-9fef-13f482cb8567",
      "name": "日次マーケティングチェック",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "Runs every 24 hours to scan Reddit for brand mentions and engagement opportunities",
      "position": [
        -1456,
        32
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 24
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "70d74090-8308-4ff8-995a-afa2b3e53448",
      "name": "ブランド言及の検索",
      "type": "n8n-nodes-base.reddit",
      "notes": "Searches Reddit for posts mentioning your brand, products, or relevant keywords",
      "position": [
        -1008,
        32
      ],
      "parameters": {
        "limit": 50,
        "keyword": "={{ $json.brandKeyword }}",
        "location": "allReddit",
        "operation": "search",
        "additionalFields": {
          "sort": "new"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "958f4ae4-caf9-46ee-9ab5-e7a5f7cf9da9",
      "name": "ブランドキーワード設定",
      "type": "n8n-nodes-base.code",
      "notes": "Configure your brand name and relevant keywords to monitor",
      "position": [
        -1232,
        32
      ],
      "parameters": {
        "jsCode": "// Configure your brand monitoring keywords\nconst brandKeywords = [\n  \"YourBrandName\",\n  \"your-product-name\",\n  \"industry-keyword\"\n];\n\n// Return array of keywords to search\nreturn brandKeywords.map(keyword => ({\n  json: {\n    brandKeyword: keyword\n  }\n}));"
      },
      "typeVersion": 2
    },
    {
      "id": "f9fda183-58fe-4b81-a7b3-7ddecaba3ba7",
      "name": "AI投稿分析",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "Uses AI to analyze sentiment, relevance, and generate contextual responses",
      "position": [
        -800,
        32
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "options": {
          "temperature": 0.7
        },
        "messages": {
          "values": [
            {}
          ]
        }
      },
      "typeVersion": 1.4
    },
    {
      "id": "95982fd8-f412-475e-b4a5-6aaa69ec3b58",
      "name": "エンゲージメント価値のある投稿のフィルタリング",
      "type": "n8n-nodes-base.if",
      "notes": "Only engages with posts that are relevant, high-quality, and appropriate",
      "position": [
        -576,
        32
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "combineOperation": "all"
          },
          "conditions": [
            {
              "id": "condition-relevant",
              "operator": {
                "type": "boolean",
                "operation": "true"
              },
              "leftValue": "={{ $json.isRelevant }}",
              "rightValue": true
            },
            {
              "id": "condition-score",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.engagementScore }}",
              "rightValue": 60
            },
            {
              "id": "condition-type",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.responseType }}",
              "rightValue": "pass"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "71b6a70e-fe6a-4f6e-a5c9-c90181696e56",
      "name": "投稿のループ処理",
      "type": "n8n-nodes-base.splitInBatches",
      "notes": "Process each post one at a time to avoid rate limits",
      "position": [
        -352,
        -48
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "1e154007-38ff-4201-8576-972c99bb9197",
      "name": "有益なコメントの投稿",
      "type": "n8n-nodes-base.reddit",
      "notes": "Posts AI-generated helpful comment to engage with the community",
      "position": [
        -128,
        -48
      ],
      "parameters": {
        "postId": "={{ $('Search Brand Mentions').item.json.data.id }}",
        "resource": "postComment",
        "commentText": "={{ $('AI Post Analysis').item.json.suggestedResponse }}"
      },
      "typeVersion": 1
    },
    {
      "id": "dcfe45e5-64ec-4d91-abd2-3472b45fb4dc",
      "name": "Googleスプレッドシートへの記録",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Tracks all Reddit interactions in a Google Sheet for analysis",
      "position": [
        96,
        -48
      ],
      "parameters": {
        "columns": {
          "value": {
            "postId": "={{ $('Search Brand Mentions').item.json.data.id }}",
            "postUrl": "=https://reddit.com{{ $('Search Brand Mentions').item.json.data.permalink }}",
            "postTitle": "={{ $('Search Brand Mentions').item.json.data.title }}",
            "reasoning": "={{ $('AI Post Analysis').item.json.reasoning }}",
            "sentiment": "={{ $('AI Post Analysis').item.json.sentiment }}",
            "subreddit": "={{ $('Search Brand Mentions').item.json.data.subreddit }}",
            "timestamp": "={{ $now.toISO() }}",
            "responseType": "={{ $('AI Post Analysis').item.json.responseType }}",
            "commentPosted": "={{ $json.success ? 'Yes' : 'Failed' }}",
            "engagementScore": "={{ $('AI Post Analysis').item.json.engagementScore }}"
          },
          "schema": [
            {
              "id": "timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "postId",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "postId",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "postTitle",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "postTitle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subreddit",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "subreddit",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "postUrl",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "postUrl",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sentiment",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sentiment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "engagementScore",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "engagementScore",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "responseType",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "responseType",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "commentPosted",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "commentPosted",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "reasoning",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "reasoning",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": []
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_SHEET_ID"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "0c7a75ed-891c-45dd-95fc-c86c0e07862e",
      "name": "日次サマリーの生成",
      "type": "n8n-nodes-base.code",
      "notes": "Aggregates all data into a comprehensive daily report",
      "position": [
        320,
        32
      ],
      "parameters": {
        "jsCode": "// Aggregate all processed items\nconst items = $input.all();\n\nconst totalPosts = items.length;\nconst postsEngaged = items.filter(i => i.json.commentPosted === 'Yes').length;\nconst sentimentBreakdown = items.reduce((acc, item) => {\n  const sentiment = item.json.sentiment || 'unknown';\n  acc[sentiment] = (acc[sentiment] || 0) + 1;\n  return acc;\n}, {});\n\nconst avgScore = items.reduce((sum, item) => sum + (item.json.engagementScore || 0), 0) / totalPosts;\n\nconst topPosts = items\n  .sort((a, b) => (b.json.engagementScore || 0) - (a.json.engagementScore || 0))\n  .slice(0, 5)\n  .map(item => ({\n    title: item.json.postTitle,\n    subreddit: item.json.subreddit,\n    score: item.json.engagementScore,\n    url: item.json.postUrl\n  }));\n\nreturn [{\n  json: {\n    summary: {\n      totalPosts,\n      postsEngaged,\n      engagementRate: `${((postsEngaged / totalPosts) * 100).toFixed(1)}%`,\n      avgEngagementScore: avgScore.toFixed(1),\n      sentimentBreakdown,\n      topPosts,\n      reportDate: new Date().toISOString().split('T')[0]\n    }\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "59090839-871e-4fd1-bd07-251104e4115f",
      "name": "Slackレポートの送信",
      "type": "n8n-nodes-base.slack",
      "notes": "Sends comprehensive daily report to Slack with metrics and top opportunities",
      "position": [
        528,
        32
      ],
      "webhookId": "671ce43f-0973-4fc1-96ce-d0df355db33b",
      "parameters": {
        "text": "=📊 *Reddit Brand Marketing Daily Report*\n\n*Date:* {{ $json.summary.reportDate }}\n\n*Overall Performance:*\n• Posts Analyzed: {{ $json.summary.totalPosts }}\n• Comments Posted: {{ $json.summary.postsEngaged }}\n• Engagement Rate: {{ $json.summary.engagementRate }}\n• Avg Engagement Score: {{ $json.summary.avgEngagementScore }}/100\n\n*Sentiment Breakdown:*\n{{ Object.entries($json.summary.sentimentBreakdown).map(([k,v]) => `• ${k}: ${v} posts`).join('\\n') }}\n\n*Top 5 Engagement Opportunities:*\n{{ $json.summary.topPosts.map((post, i) => `${i+1}. ${post.title}\\n   📍 r/${post.subreddit} | Score: ${post.score}\\n   🔗 ${post.url}`).join('\\n\\n') }}\n\n✅ All interactions logged to Google Sheets",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_CHANNEL_ID"
        },
        "otherOptions": {}
      },
      "typeVersion": 2.2
    },
    {
      "id": "6b53e5f2-79c8-41f9-b779-5efbe6aeaf37",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1904,
        -112
      ],
      "parameters": {
        "color": 4,
        "width": 347,
        "height": 469,
        "content": "## Reddit Brand Marketing Workflow\n\n**Purpose:** Automate Reddit monitoring and engagement for brand marketing\n\n**Features:**\n- Daily automated scans\n- AI-powered sentiment analysis\n- Smart comment generation\n- Engagement tracking\n- Daily Slack reports\n\n**Setup Required:**\n1. Reddit OAuth credentials\n2. OpenAI API key\n3. Google Sheets document\n4. Slack channel\n5. Configure brand keywords in Code node"
      },
      "typeVersion": 1
    },
    {
      "id": "4b1cf549-13f1-4acb-bc92-226fc8275380",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1488,
        -112
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "Schedule trigger runs workflow every 24 hours automatically daily\n"
      },
      "typeVersion": 1
    },
    {
      "id": "61e35218-b58c-42b7-a369-71b42c4d64ef",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1264,
        -112
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "JavaScript code node defining brand keywords to monitor Reddit\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b9a32a51-137c-48e1-83aa-82d64001e52f",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        -112
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "Reddit node searches all subreddits for brand keyword mentions\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9ca8ec09-cd5d-440b-ba21-3f4c69b62a73",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -112
      ],
      "parameters": {
        "width": 320,
        "height": 112,
        "content": "OpenAI analyzes sentiment, relevance, generates contextual helpful comment responses + Conditional node filters only high-quality relevant posts worth engaging\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b1e5a451-6954-479c-a225-d9c3bfddc55e",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -384,
        -192
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "Split in batches processes each post individually respecting limits"
      },
      "typeVersion": 1
    },
    {
      "id": "dafc1ea5-66a4-4bc0-a6e5-9c954295071b",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        -192
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "Reddit node posts AI-generated comment to worthy Reddit discussions"
      },
      "typeVersion": 1
    },
    {
      "id": "2e85a5e7-61df-4969-8012-ddb4a1336178",
      "name": "付箋7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        64,
        -192
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "Appends all interaction data to spreadsheet for permanent tracking\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4529d6c8-87ca-4d11-a609-6463cfe6d236",
      "name": "付箋8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        -112
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "JavaScript aggregates metrics, sentiment breakdown, generates comprehensive daily report"
      },
      "typeVersion": 1
    },
    {
      "id": "ee43aa3b-6acd-40bf-982c-0a667797b886",
      "name": "付箋9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        -112
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "Posts formatted daily summary with metrics to team Slack channel"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "f9fda183-58fe-4b81-a7b3-7ddecaba3ba7": {
      "main": [
        [
          {
            "node": "95982fd8-f412-475e-b4a5-6aaa69ec3b58",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "71b6a70e-fe6a-4f6e-a5c9-c90181696e56": {
      "main": [
        [
          {
            "node": "1e154007-38ff-4201-8576-972c99bb9197",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "0c7a75ed-891c-45dd-95fc-c86c0e07862e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dcfe45e5-64ec-4d91-abd2-3472b45fb4dc": {
      "main": [
        [
          {
            "node": "71b6a70e-fe6a-4f6e-a5c9-c90181696e56",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1e154007-38ff-4201-8576-972c99bb9197": {
      "main": [
        [
          {
            "node": "dcfe45e5-64ec-4d91-abd2-3472b45fb4dc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "958f4ae4-caf9-46ee-9ab5-e7a5f7cf9da9": {
      "main": [
        [
          {
            "node": "70d74090-8308-4ff8-995a-afa2b3e53448",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "947d8563-99c3-40bb-9fef-13f482cb8567": {
      "main": [
        [
          {
            "node": "958f4ae4-caf9-46ee-9ab5-e7a5f7cf9da9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "70d74090-8308-4ff8-995a-afa2b3e53448": {
      "main": [
        [
          {
            "node": "f9fda183-58fe-4b81-a7b3-7ddecaba3ba7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0c7a75ed-891c-45dd-95fc-c86c0e07862e": {
      "main": [
        [
          {
            "node": "59090839-871e-4fd1-bd07-251104e4115f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "95982fd8-f412-475e-b4a5-6aaa69ec3b58": {
      "main": [
        [
          {
            "node": "71b6a70e-fe6a-4f6e-a5c9-c90181696e56",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - ソーシャルメディア, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

競価モニタリング&アラート(Bright Data、スプレッドシート、Slack)
Bright Data、Sheets、Slack を使用して競合価格監視と通知
If
Set
Code
+
If
Set
Code
29 ノードDaniel Shashko
市場調査
ArunavaのマルチエージェントインタリジャエントReddit自動化
AIによるブランドメンションとBaserowを使用してRedditの投稿に自動のにコメントを投稿
If
Set
Code
+
If
Set
Code
35 ノードArunava
ソーシャルメディア
WhatsApp、メール、Twilio SMS 経由の食品メニュー更新通知
料理メニュー更新通知器
If
Set
Code
+
If
Set
Code
22 ノードOneclick AI Squad
ソーシャルメディア
AIを活用したリードジェネレーションシステム(メールパーソナライズとLinkedIn)
AIを活用したリードジェネレーションシステム:メールパーソナライズとLinkedIn機能を含む
If
Code
Limit
+
If
Code
Limit
51 ノードMatthieu
リード獲得
AIを活用したリードジェネレーション(Apollo、LinkedInリサーチ、4段階のパーソナライズメール)
AIを活用したリードジェネレーション:Apollo、LinkedInリサーチ、4段階のパーソナライズメールを使用
If
Set
Code
+
If
Set
Code
30 ノードGain FLow AI
リード獲得
OpenAIのgpt-image-1とAIキャプションを使ってInstagramカルーセルを作成し、公開する
Google SheetsからGPT-Image-1とAIキャプションを使用してInstagramカルーセルを自動生成
If
Set
Code
+
If
Set
Code
32 ノードJorge Martínez
マルチモーダルAI
ワークフロー情報
難易度
上級
ノード数20
カテゴリー2
ノードタイプ9
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Daniel Shashko

Daniel Shashko

@tomax

AI automation specialist and a marketing enthusiast. More than 6 years of experience in SEO/GEO. Senior SEO at Bright Data.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34