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 →
{
"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.
azureOpenAiApigoogleSheetsOAuth2ApitelegramApi
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
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.
Automatically capture, categorize, and log expenses from receipts, PDFs, voice notes, or text — powered by AI and integrated with Telegram and Google Sheets.
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
Auto-Generate Social Media Posts From Urls With Ai Telegram Multi-Platform Posting. Uses telegramTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 42 nodes.
Generate AI images using Pollinations API, or Generate blog articles using Gemini AI