Automatisation du monitoring de la marque et des réponses sur Reddit avec GPT-4o-mini, Sheets et Slack
Ceci est unSocial Media, Multimodal AIworkflow d'automatisation du domainecontenant 20 nœuds.Utilise principalement des nœuds comme If, Code, Slack, Reddit, GoogleSheets. Automatisation de la surveillance de la marque et des réponses sur Reddit avec GPT-4o-mini, Sheets et Slack
- •Token Bot Slack ou URL Webhook
- •Informations d'identification Google Sheets API
- •Clé API OpenAI
Nœuds utilisés (20)
Catégorie
{
"meta": {
"instanceId": "db30e8ae4100235addbd4638770997b7ef11878d049073c888ba440ca84c55fc"
},
"nodes": [
{
"id": "947d8563-99c3-40bb-9fef-13f482cb8567",
"name": "Vérification marketing quotidienne",
"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": "Recherche des mentions de la marque",
"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": "Configuration des mots-clés de marque",
"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": "Analyse de publication par IA",
"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": "Filtrage des publications engageantes",
"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": "Boucle à travers les publications",
"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": "Poster un commentaire utile",
"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": "Journaliser dans Google Sheets",
"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": "Générer un résumé quotidien",
"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": "Envoyer le rapport 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": "Note autocollante",
"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": "Note autocollante1",
"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": "Note autocollante2",
"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": "Note autocollante3",
"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": "Note autocollante4",
"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": "Note autocollante5",
"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": "Note autocollante6",
"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": "Note autocollante7",
"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": "Note autocollante8",
"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": "Note autocollante9",
"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
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Réseaux sociaux, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Daniel Shashko
@tomaxAI automation specialist and a marketing enthusiast. More than 6 years of experience in SEO/GEO. Senior SEO at Bright Data.
Partager ce workflow