AutomationFlowsAI & RAG › Reddit Scrape → AI Analysis → Google Sheets

Reddit Scrape → AI Analysis → Google Sheets

Original n8n title: Automate Content Research with Reddit Scraping, AI Analysis, and Google Sheets

ByMichael Taleb @michaeltaleb on n8n.io

This workflow automatically scrapes new Reddit posts from your chosen subreddits and keywords, analyzes them with AI to extract summaries, pain points, and content angles, and then saves the insights into a Google Sheet. It’s a fully automated Content Research Engine that…

Cron / scheduled trigger★★★★☆ complexityAI-powered14 nodesRedditAgentOpenAI ChatOutput Parser StructuredGoogle Sheets
AI & RAG Trigger: Cron / scheduled Nodes: 14 Complexity: ★★★★☆ AI nodes: yes Added:
Reddit Scrape → AI Analysis → Google Sheets — n8n workflow card showing Reddit, Agent, OpenAI Chat integration

This workflow corresponds to n8n.io template #8140 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets 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
{
  "id": "VzbX3arUtQZaRd9e",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Content Research Engine",
  "tags": [
    {
      "id": "j0SNhalFSbPAhdWo",
      "name": "n8n creator",
      "createdAt": "2025-09-02T01:40:23.866Z",
      "updatedAt": "2025-09-02T01:40:23.866Z"
    }
  ],
  "nodes": [
    {
      "id": "7cd98b8f-2b80-4f54-8ea1-b633810c5aec",
      "name": "Schedule Trigger1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -272,
        496
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 7
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "4771abaa-5a07-426f-acb2-7163eb7b2313",
      "name": "r/smallbusiness/automation",
      "type": "n8n-nodes-base.reddit",
      "position": [
        0,
        496
      ],
      "parameters": {
        "limit": 2,
        "keyword": "Scaling Leads",
        "operation": "search",
        "subreddit": "startups",
        "additionalFields": {
          "sort": "new"
        }
      },
      "credentials": {
        "redditOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "69503a42-99b4-423e-ae63-1fea9aa1e7f0",
      "name": "r/smallbusiness/AI Automation",
      "type": "n8n-nodes-base.reddit",
      "position": [
        0,
        320
      ],
      "parameters": {
        "limit": 2,
        "keyword": "Lead Generation",
        "operation": "search",
        "subreddit": "marketing",
        "additionalFields": {
          "sort": "new"
        }
      },
      "credentials": {
        "redditOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "902e6dfc-537f-44f1-a9ab-18bc24cb2ea0",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        272,
        480
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.1
    },
    {
      "id": "534d380c-1f70-4962-a54d-006499dc39f8",
      "name": "r/smallbusiness/automation1",
      "type": "n8n-nodes-base.reddit",
      "position": [
        0,
        688
      ],
      "parameters": {
        "limit": 2,
        "keyword": "Business Automation",
        "operation": "search",
        "subreddit": "smallbusiness",
        "additionalFields": {
          "sort": "new"
        }
      },
      "credentials": {
        "redditOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "78e0dc48-d2a9-4c1f-a8af-8a81f03bcdc8",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        480,
        496
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a89f1ca3-3c1d-4c6b-933f-04dc38c2e568",
              "name": "subreddit",
              "type": "string",
              "value": "={{ $json.subreddit }}"
            },
            {
              "id": "795929f6-fb60-4e31-9a4f-2332ccfa1d8f",
              "name": "text",
              "type": "string",
              "value": "={{ $json.selftext }}"
            },
            {
              "id": "3b25b1b0-e861-4c8b-89fa-9ff625d1e37b",
              "name": "title",
              "type": "string",
              "value": "={{ $json.title }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8ccbd0a2-aea8-4195-86c0-3aa5210d1081",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        688,
        496
      ],
      "parameters": {
        "text": "=Subreddit:  {{ $json.subreddit }}\nText: {{ $json.text }}\nTitle: {{ $json.title }}",
        "options": {
          "systemMessage": "You are a content research analyst AI trained to study raw Reddit posts and extract structured insights for marketing, lead generation, and business automation research.\n\nYour role is to transform messy, conversational Reddit text into short, business-ready insights that can be stored in a database and later used for content creation, strategy, or trend analysis.\n\nWhen analyzing a Reddit post (title + body):\n\t1.\tSummarize the post clearly and concisely.\n\t\u2022\tUse neutral, plain English.\n\t\u2022\tOne sentence, \u226420 words.\n\t\u2022\tNo filler, no speculation beyond what is written.\n\t2.\tIdentify the core pain point.\n\t\u2022\tExpress it in \u226415 words.\n\t\u2022\tUse the poster\u2019s perspective (\u201cCan\u2019t find\u2026\u201d, \u201cStruggling with\u2026\u201d, \u201cWants to know\u2026\u201d).\n\t\u2022\tBoil it down to the single biggest problem they are expressing.\n\t3.\tGenerate 2\u20133 actionable content angles.\n\t\u2022\tEach \u226410 words.\n\t\u2022\tFrame them as potential articles, guides, or content pieces someone could create.\n\t\u2022\tThey should answer or address the pain point.\n\t\u2022\tKeep them concrete and practical (e.g. \u201cBest tools for automating client onboarding\u201d vs \u201cAutomation thoughts\u201d).\n\t4.\tOutput must be valid JSON only.\n\t\u2022\tNo extra commentary, no markdown, no explanations.\n\t\u2022\tFormat must exactly match the schema below."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "e1e69d68-af98-4089-965d-b814f0a9db10",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        672,
        848
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1ce1add4-4b05-4f55-a11e-210773d39b13",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        816,
        704
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"summary\": \"<1 sentence, \u226420 words, neutral overview of what the post is about>\",\n  \"pain_point\": \"<1 short sentence, \u226415 words, the core problem the poster is facing>\",\n  \"content_angle\": [\n    \"<idea 1: \u226410 words, actionable topic framing for content/insight>\",\n    \"<idea 2: \u226410 words, actionable topic framing>\",\n    \"<idea 3: \u226410 words, optional>\"\n  ]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "4d7a85e6-43ad-49c2-b975-987cc3c424fd",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1120,
        496
      ],
      "parameters": {
        "columns": {
          "value": {
            "Summary": "={{ $json.output.summary }}",
            "Pain Point": "={{ $json.output.pain_point }}",
            "Content Angle": "={{ $json.output.content_angle }}"
          },
          "schema": [
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Pain Point",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Pain Point",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Content Angle",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Content Angle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": true
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vmLGPnlCVdSU5_3IpYVEUzhTGvUn0p6u2v_RZo7ULmk/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1vmLGPnlCVdSU5_3IpYVEUzhTGvUn0p6u2v_RZo7ULmk",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vmLGPnlCVdSU5_3IpYVEUzhTGvUn0p6u2v_RZo7ULmk/edit?usp=drivesdk",
          "cachedResultName": "Reddit "
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "1be411b7-51a2-4432-b250-082792e7db39",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1216,
        48
      ],
      "parameters": {
        "width": 768,
        "height": 912,
        "content": "\n\n\n# Setting up the workflow\n\n## 1. Select a schedule trigger time.  \n\n## 2. Connect your reddit account to n8n. Choose the subreddit's you want to scrape, with the key words you are looking for. Note: You can add more reddit nodes, and expanding the merge node. \n\n## 3. Connect your preferred LLM credentials to the AI Agent\n\n## 4. Create a copy of the Google Sheet, and connect it to the google sheet node.  \n## Google Sheet: https://docs.google.com/spreadsheets/d/1vmLGPnlCVdSU5_3IpYVEUzhTGvUn0p6u2v_RZo7ULmk/edit?usp=sharing (Make a copy)\n\n\n\n\n\n## Workflow Summary: This workflow automatically scrapes new Reddit posts from your chosen subreddits and keywords, analyzes them with AI to extract summaries, pain points, and content angles, and then saves the insights into a Google Sheet. It\u2019s a fully automated Content Research Engine that delivers fresh marketing ideas and community pain points straight into your database."
      },
      "typeVersion": 1
    },
    {
      "id": "29dbe4f2-f5a4-48ab-9ede-34ec60479546",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        16
      ],
      "parameters": {
        "width": 160,
        "height": 848,
        "content": "## Select the Subreddit and the keywords you would like to scrape"
      },
      "typeVersion": 1
    },
    {
      "id": "4da89c31-46c0-40ae-99e4-393b324b9a77",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        672,
        304
      ],
      "parameters": {
        "width": 272,
        "height": 352,
        "content": "## AI Agent will go through the items to find the pain point and content angle"
      },
      "typeVersion": 1
    },
    {
      "id": "b9715a73-0155-4c44-afc2-946ba93df79a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1072,
        304
      ],
      "parameters": {
        "width": 192,
        "height": 352,
        "content": "## Data is stored in google sheet. \nWhenever you need content idea, you\u2019ll find a list with great ideas inside"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f3def437-7e43-43ca-9797-d3fb7fa52911",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger1": {
      "main": [
        [
          {
            "node": "r/smallbusiness/automation",
            "type": "main",
            "index": 0
          },
          {
            "node": "r/smallbusiness/AI Automation",
            "type": "main",
            "index": 0
          },
          {
            "node": "r/smallbusiness/automation1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "r/smallbusiness/automation": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "r/smallbusiness/automation1": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "r/smallbusiness/AI Automation": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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

This workflow automatically scrapes new Reddit posts from your chosen subreddits and keywords, analyzes them with AI to extract summaries, pain points, and content angles, and then saves the insights into a Google Sheet. It’s a fully automated Content Research Engine that…

Source: https://n8n.io/workflows/8140/ — 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

⚠️ DISCLAIMER: This workflow uses the AnySite LinkedIn community node, which is only available on self-hosted n8n instances. It will not work on n8n.cloud.

OpenAI Chat, Output Parser Structured, Google Sheets +6
AI & RAG

This n8n automation workflow automates the creation, scripting, production, and posting of YouTube videos. It leverages AI (OpenAI), image generation (PIAPI), video rendering (Shotstack), and platform

Agent, OpenAI Chat, Airtable Tool +7
AI & RAG

This workflow is designed for: Content creators and marketers E-commerce and product-based businesses Agencies producing social media visuals and videos Automation builders looking for AI-powered crea

HTTP Request, Edit Image, Google Drive +7
AI & RAG

Generate product images with NanoBanana Pro to Veo videos and Blotato - vide 2 ok. Uses httpRequest, editImage, googleDrive, googleSheets. Scheduled trigger; 76 nodes.

HTTP Request, Edit Image, Google Drive +7
AI & RAG

Created by: Peyton Leveillee Last updated: October 2025

OpenAI Chat, Google Sheets, HTTP Request +5