This workflow follows the Google Sheets → 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 →
{
"name": "SocialPulse Lite \u2014 Single Source Monitor (Reddit Only)",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9 * * *"
}
]
}
},
"id": "trigger",
"name": "Run Daily (9 AM)",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
200,
400
]
},
{
"parameters": {
"method": "GET",
"url": "=https://www.reddit.com/r/{{ $env.SOCIALPULSE_SUBREDDITS?.split(',')[0]?.trim() || 'SaaS' }}/hot.json?limit=20",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "SocialPulse/1.0"
}
]
},
"options": {
"timeout": 15000
}
},
"id": "fetch-reddit",
"name": "Reddit: Fetch Posts",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
440,
400
],
"retryOnFail": true,
"maxTries": 2,
"waitBetweenTries": 5000
},
{
"parameters": {
"jsCode": "try {\n const reddit = $input.first().json;\n const posts = (reddit?.data?.children || []).map(c => ({ title: c.data?.title || '', score: c.data?.score || 0, comments: c.data?.num_comments || 0, url: 'https://reddit.com' + (c.data?.permalink || ''), subreddit: c.data?.subreddit || '' })).filter(p => p.score > 3).sort((a,b) => b.score - a.score).slice(0, 15);\n return [{ json: { totalPosts: posts.length, posts, scannedAt: new Date().toISOString() } }];\n} catch (e) {\n throw new Error('Failed to parse Reddit data: ' + e.message);\n}"
},
"id": "parse",
"name": "Parse & Rank Posts",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
680,
400
]
},
{
"parameters": {
"model": "gpt-4o-mini",
"messages": {
"values": [
{
"role": "system",
"content": "Analyze these Reddit posts. Find 3 trending topics and suggest 2 content ideas. JSON: { \"trends\": [\"topic1\"], \"contentIdeas\": [{ \"idea\": \"...\", \"platform\": \"Twitter\" }], \"sentiment\": \"positive/neutral/negative\" }"
},
{
"role": "user",
"content": "=Top Reddit posts:\n{{ $json.posts.map((p,i) => (i+1) + '. ' + p.title + ' (score:' + p.score + ')').join('\\n') }}"
}
]
},
"options": {
"temperature": 0.5,
"maxTokens": 800,
"responseFormat": "json_object"
}
},
"id": "ai-analyze",
"name": "AI: Quick Analysis",
"type": "n8n-nodes-base.openAi",
"typeVersion": 1.8,
"position": [
920,
400
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 2000
},
{
"parameters": {
"jsCode": "try {\n const data = $('Parse & Rank Posts').first().json;\n const aiRaw = $input.first().json;\n let ai;\n try { ai = JSON.parse(aiRaw.message?.content || '{}'); } catch(e) { ai = { trends: [], contentIdeas: [], sentiment: 'unknown' }; }\n return [{ json: { ...data, analysis: ai } }];\n} catch (e) {\n throw new Error('Failed to merge: ' + e.message);\n}"
},
"id": "merge",
"name": "Merge Results",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1140,
400
]
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "={{ $env.SOCIALPULSE_SHEET_ID }}",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Lite Log",
"mode": "name"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"Date": "={{ $json.scannedAt }}",
"Posts": "={{ $json.totalPosts }}",
"Trends": "={{ JSON.stringify($json.analysis.trends) }}",
"Content Ideas": "={{ JSON.stringify($json.analysis.contentIdeas) }}",
"Sentiment": "={{ $json.analysis.sentiment }}"
}
},
"options": {}
},
"id": "save-sheets",
"name": "Log to Sheets",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
1380,
400
],
"retryOnFail": true,
"maxTries": 2
},
{
"parameters": {
"content": "## SocialPulse Lite\n\nReddit-only monitoring.\nDaily scan, quick AI analysis.\nPerfect for testing before\nenabling full 3-source scan.",
"width": 280,
"height": 160,
"color": 6
},
"id": "note",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
120,
200
]
}
],
"connections": {
"Run Daily (9 AM)": {
"main": [
[
{
"node": "Reddit: Fetch Posts",
"type": "main",
"index": 0
}
]
]
},
"Reddit: Fetch Posts": {
"main": [
[
{
"node": "Parse & Rank Posts",
"type": "main",
"index": 0
}
]
]
},
"Parse & Rank Posts": {
"main": [
[
{
"node": "AI: Quick Analysis",
"type": "main",
"index": 0
}
]
]
},
"AI: Quick Analysis": {
"main": [
[
{
"node": "Merge Results",
"type": "main",
"index": 0
}
]
]
},
"Merge Results": {
"main": [
[
{
"node": "Log to Sheets",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true
},
"tags": [
{
"name": "SocialPulse",
"id": "socialpulse"
},
{
"name": "AutoFlow",
"id": "autoflow"
},
{
"name": "Lite",
"id": "lite"
}
]
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
SocialPulse Lite — Single Source Monitor (Reddit Only). Uses httpRequest, openAi, googleSheets. Scheduled trigger; 7 nodes.
Source: https://github.com/enzoemir1/autoflow-n8n-workflows/blob/main/workflows/socialpulse-lite.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
AI Institutional Stock Valuation Engine with Risk Scoring & Scenario Targets
Overview This is a production-grade, fully automated stock analysis system built entirely in n8n. It combines institutional-level financial analysis, dual AI model consensus, and a self-improving back
This automation is a complete end-to-end system designed to find, qualify, and contact B2B leads — fully automated and powered by AI. Searches for target companies on LinkedIn via Ghost Genius API, us
This comprehensive n8n automation template orchestrates a complete end-to-end workflow for generating engaging short-form Point-of-View (POV) style videos using multiple AI services and automatically
A professional AI equity analysis automation built on n8n that transforms structured financial data and real-time news into disciplined, risk-adjusted price targets and actionable BUY/HOLD/SELL signal