AutomationFlowsAI & RAG › Monitor Reddit Job Posts with Gpt-4o Analysis & Telegram Alerts Using Google…

Monitor Reddit Job Posts with Gpt-4o Analysis & Telegram Alerts Using Google…

Original n8n title: Monitor Reddit Job Posts with Gpt-4o Analysis & Telegram Alerts Using Google Sheets

ByMeelioo @mookielian on n8n.io

Monitors Reddit:* Automatically searches specified subreddits for posts matching your keywords or flair filters (template is n8n - Now Hiring flair)

Event trigger★★★★☆ complexityAI-powered28 nodesHTTP RequestLm Chat Azure Open AiChain LlmGoogle SheetsTelegramTelegram Trigger
AI & RAG Trigger: Event Nodes: 28 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Chainllm → 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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "0882d1b3-7558-4e52-b0ba-0baa4a80fe02",
      "name": "Search N8N",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        688,
        1984
      ],
      "parameters": {
        "url": "https://oauth.reddit.com/r/n8n/search?q=flair%3A%22Now%20Hiring%20Or%20Looking%20For%20Cofounder%22&restrict_sr=1&sort=new&limit=2",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=bearer {{ $json.access_token }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b587eb48-ccb2-439e-931a-65226ea1ae98",
      "name": "Generate Token - Reddit",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        272,
        1984
      ],
      "parameters": {
        "url": "https://www.reddit.com/api/v1/access_token",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "grant_type",
              "value": "password"
            },
            {
              "name": "username",
              "value": "YOUR_USERNAME"
            },
            {
              "name": "password",
              "value": "YOUR_PASSWORD"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "your-app-name/0.1 by YOUR_USERNAME"
            },
            {
              "name": "authorization",
              "value": "Basic automatically_generated_token_after_curl_import"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "362103a2-c492-4b37-9947-576c8c043aab",
      "name": "Point Out Posts",
      "type": "n8n-nodes-base.set",
      "position": [
        1072,
        1984
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "6dee466b-4569-4b40-a025-0d75e92d1eea",
              "name": "posts",
              "type": "array",
              "value": "={{ $json.data.children }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a1c511f8-eb69-4372-8778-24cbf4c9f9da",
      "name": "Azure OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        2512,
        2016
      ],
      "parameters": {
        "model": "gpt-4o-mini",
        "options": {}
      },
      "credentials": {
        "azureOpenAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b55491a4-591f-4a51-8f46-39ee749eb813",
      "name": "Basic LLM Chain",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        2432,
        1856
      ],
      "parameters": {
        "text": "={{ $('Split Out Code').item.json.data.selftext }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "=You will receive a Reddit post in the category 'Now Hiring' from the user called '{{ $('Split Out Code').item.json.data.author }}' . Your main goal is to turn this Reddit post into a single short sentence.\n\nExample:\n\n* Reddit Post: 'Hello Reddit community, I am the owner of... I need someone to... I really would appreciate...'\n\n* Your summary: 'The user called {{ $('Split Out Code').item.json.data.author }} ... is looking for...'"
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "8da2ada6-3ed0-44c2-bf31-6ec94a8ef2c9",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1696,
        1984
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "b4bd940c-121b-44fe-8ce3-072e1af61ce9",
      "name": "If It Doesn't Exist",
      "type": "n8n-nodes-base.if",
      "position": [
        2144,
        1856
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "ce21f18d-3ca3-4c2e-84d1-41996d67a317",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.title }}",
              "rightValue": "={{ $('Split Out Code').item.json.data.title }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "881e5d0e-7cb9-4910-9909-f971226480e0",
      "name": "Get Rows That Match",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1920,
        1856
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $json.data.title }}",
              "lookupColumn": "title"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/102QmSANXXYBfWu2JKzYtKFjbjkFCeGZuIsQ-VtY6I3g/edit#gid=0",
          "cachedResultName": "reddit_lead_sheet"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "102QmSANXXYBfWu2JKzYtKFjbjkFCeGZuIsQ-VtY6I3g",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/102QmSANXXYBfWu2JKzYtKFjbjkFCeGZuIsQ-VtY6I3g/edit?usp=drivesdk",
          "cachedResultName": "reddit_hiring_lead"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7,
      "alwaysOutputData": true
    },
    {
      "id": "5ed40729-8a0a-4344-9710-2a9aba99cc77",
      "name": "Split Out Code",
      "type": "n8n-nodes-base.code",
      "position": [
        1376,
        1984
      ],
      "parameters": {
        "jsCode": "// Extract the posts array and convert each object to a separate n8n item\nconst postsArray = $input.all()[0].json.posts;\n\n// Map each post object to an n8n item format\nreturn postsArray.map(post => ({ json: post }));"
      },
      "typeVersion": 2
    },
    {
      "id": "76a93245-30e5-4ef8-a8dd-5b8f465a1bca",
      "name": "Send a Text Message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3088,
        1984
      ],
      "parameters": {
        "text": "={{$json.summary}}",
        "chatId": "YOUR_CHAT_ID",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "83d05f23-28f6-45f0-a17a-b933e0dfd33b",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "disabled": true,
      "position": [
        -144,
        1600
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9bf34dd3-98f1-4e2d-b9dc-789a7701f4af",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -144,
        1984
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 2
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a587cf5c-6d04-4575-981b-c0d95c712219",
      "name": "Finished",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1920,
        1584
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "23e40a02-e96e-4200-9af1-b90654df4a93",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -208,
        1856
      ],
      "parameters": {
        "color": 5,
        "height": 288,
        "content": "## Change The Trigger Interval As You Wish"
      },
      "typeVersion": 1
    },
    {
      "id": "6a916438-7ef5-4f2d-b668-99753eec41e1",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        1904
      ],
      "parameters": {
        "width": 800,
        "height": 256,
        "content": "## Generate an Access Token And Use It"
      },
      "typeVersion": 1
    },
    {
      "id": "801182f9-818d-46e3-ba30-894824b290c2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        1952
      ],
      "parameters": {
        "color": 5,
        "width": 384,
        "height": 336,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Import The cURL Command I Provided Beneath"
      },
      "typeVersion": 1
    },
    {
      "id": "b6cd8a57-a680-41ab-94ef-735256fc3ed7",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        2304
      ],
      "parameters": {
        "width": 384,
        "content": "curl -X POST \\\n  -u \"script_app_id:script_app_secret\" \\\n  -A \"YOUR_APP_NAME/0.1 by YOUR_USERNAME\" \\\n  -d 'grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD' \\\n  https://www.reddit.com/api/v1/access_token"
      },
      "typeVersion": 1
    },
    {
      "id": "7942573a-9c72-463c-a757-f7f19bf47c98",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        1440
      ],
      "parameters": {
        "color": 6,
        "width": 304,
        "height": 352,
        "content": "## Activate This Node And Send Your Bot A Message (Outputs Your Chat ID)"
      },
      "typeVersion": 1
    },
    {
      "id": "71fcddb8-cfde-4ac5-8f81-3c66a2d441cb",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        1952
      ],
      "parameters": {
        "color": 5,
        "width": 384,
        "height": 336,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Customize The URL If You Wish To Change The Limit Or Sub-reddit"
      },
      "typeVersion": 1
    },
    {
      "id": "eb407c2f-edb7-45f8-a3ea-57cbd1ee164d",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        1872
      ],
      "parameters": {
        "color": 5,
        "width": 288,
        "height": 272,
        "content": "## Output Posts Only, Ignore Other Items"
      },
      "typeVersion": 1
    },
    {
      "id": "3ab59251-53d7-4230-b73f-b1655ab7bb31",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        1808
      ],
      "parameters": {
        "color": 5,
        "width": 288,
        "height": 336,
        "content": "## Split Objects Into Separate Items, You Can Use The 'Split Out' Node Too"
      },
      "typeVersion": 1
    },
    {
      "id": "821495b8-e848-4368-b987-cee009dd8a7c",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2352,
        1712
      ],
      "parameters": {
        "color": 5,
        "width": 400,
        "height": 496,
        "content": "## Customize This LLM As You Wish Or Use An Agent If You Want To Add More Complexity"
      },
      "typeVersion": 1
    },
    {
      "id": "20f35821-447a-404f-80c6-38ba219cd06e",
      "name": "Append Data In Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2864,
        1856
      ],
      "parameters": {
        "columns": {
          "value": {
            "title": "={{ $('Split Out Code').item.json.data.title }}",
            "summary": "={{ $json.text }}",
            "username": "={{ $('Split Out Code').item.json.data.author }}"
          },
          "schema": [
            {
              "id": "username",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "username",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": true
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/102QmSANXXYBfWu2JKzYtKFjbjkFCeGZuIsQ-VtY6I3g/edit#gid=0",
          "cachedResultName": "reddit_lead_sheet"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "102QmSANXXYBfWu2JKzYtKFjbjkFCeGZuIsQ-VtY6I3g",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/102QmSANXXYBfWu2JKzYtKFjbjkFCeGZuIsQ-VtY6I3g/edit?usp=drivesdk",
          "cachedResultName": "reddit_hiring_lead"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "c7ae19d6-34a8-4981-a89e-38e50770f66a",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        1440
      ],
      "parameters": {
        "width": 272,
        "height": 304,
        "content": "## This Is The End Of The Workflow, Add Next Steps From Here"
      },
      "typeVersion": 1
    },
    {
      "id": "78733d09-6210-4acd-868a-faad7f64cdad",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        1312
      ],
      "parameters": {
        "color": 4,
        "width": 3584,
        "height": 1200,
        "content": "# REDDIT HIRING LEAD"
      },
      "typeVersion": 1
    },
    {
      "id": "18ff0301-7fd8-4c7c-8b51-f77cf31606a1",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        944
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 352,
        "content": "# Credentials\n\n* Telegram Bot Token -> [Telegram Integration Docs](https://docs.n8n.io/integrations/builtin/credentials/telegram/?utm_source=n8n_app&utm_medium=credential_settings&utm_campaign=create_new_credentials_modal)\n\n* Reddit App Info -> [Reddit Integration Docs](https://docs.n8n.io/integrations/builtin/credentials/reddit/?utm_source=n8n_app&utm_medium=credential_settings&utm_campaign=create_new_credentials_modal): Basically make a new script app from [Reddit Developers](https://reddit.com/prefs/apps)\n\n* Google Sheets -> [Google Cloud Integration](https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/?utm_source=n8n_app&utm_medium=credential_settings&utm_campaign=create_new_credentials_modal) (You can use a different application that you have already integrated if you wish)\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a4c60e1c-3a75-4641-b1a3-21b1e6f8e49b",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        944
      ],
      "parameters": {
        "color": 7,
        "width": 1376,
        "height": 352,
        "content": "# Start Using This Workflow\n\n* If you have set up all the credentials then starting from the first node here is what you have to do;\n\n1. Set Schedule Trigger to your preferred interval\n\n2. Customize the cURL command I provided and import it into the HTTP Request node above it\n\n3. Set the 'Search N8N' to your preferred sub-reddit and set the correct flair or keyword you want to search for. You can also customize the limit for how many posts you want to have in your response\n\n4. Change the system prompt of the AI and its model to your liking\n\n5. Point the 'Send a Text Message' Telegram node to your personal chat using the ID the trigger outputs."
      },
      "typeVersion": 1
    },
    {
      "id": "4b3fbf3b-1624-4191-a72f-3f66a728b656",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1424,
        944
      ],
      "parameters": {
        "color": 3,
        "width": 400,
        "height": 352,
        "content": "## About The Google Sheets Nodes\n\n* These nodes are being used to keep track of the posts you have already received a message for.\n\n* The logic is to add the title of the post into an external database and when the workflow executes again it will filter those that already exist\n\n* You can change them and use a different database, just make sure the same logic stays and column names are not different."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Search N8N": {
      "main": [
        [
          {
            "node": "Point Out Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out Code": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Append Data In Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Finished",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get Rows That Match",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Point Out Posts": {
      "main": [
        [
          {
            "node": "Split Out Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Generate Token - Reddit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Rows That Match": {
      "main": [
        [
          {
            "node": "If It Doesn't Exist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If It Doesn't Exist": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a Text Message": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Data In Sheet": {
      "main": [
        [
          {
            "node": "Send a Text Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Azure OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate Token - Reddit": {
      "main": [
        [
          {
            "node": "Search N8N",
            "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

Monitors Reddit:* Automatically searches specified subreddits for posts matching your keywords or flair filters (template is n8n - Now Hiring flair)

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

This workflow creates a multi-talented AI assistant named Simran that interacts with users via Telegram. It can handle text and voice messages, understand the user's intent, and perform various tasks.

MongoDB, Chain Llm, Google Gemini Chat +11
AI & RAG

Automatically capture, categorize, and log expenses from receipts, PDFs, voice notes, or text — powered by AI and integrated with Telegram and Google Sheets.

HTTP Request, OpenAI, Chain Llm +6
AI & RAG

This workflow turns any URL sent to a Telegram bot into ready-to-publish social posts: Trigger: Telegram message (checks if it contains a URL). Fetch & parse: Downloads the page and extracts readable

Telegram Trigger, HTTP Request, Google Sheets +5
AI & RAG

Auto-Generate Social Media Posts From Urls With Ai Telegram Multi-Platform Posting. Uses telegramTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 42 nodes.

Telegram Trigger, HTTP Request, Google Sheets +5
AI & RAG

Generate AI images using Pollinations API, or Generate blog articles using Gemini AI

Google Gemini Chat, Telegram Trigger, Telegram +4