使用 Apify、AI 筛选和 Telegram 提醒发现 Threads 上的招聘帖子
高级
这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 19 个节点。主要使用 If, Set, Code, Merge, Telegram 等节点。 通过 Apify、AI 筛选和 Telegram 提醒发现 Threads 上的招聘帖子
前置要求
- •Telegram Bot Token
- •可能需要目标 API 的认证凭证
- •Google Sheets API 凭证
- •OpenAI API Key
使用的节点 (19)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "e08988aa0061610a374f1467cc80142fc7298a1ab25f75e8f07895c66f95c50a",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "db27ba69-f1f4-4891-8a8a-6b25c2338228",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
3024,
1904
],
"parameters": {
"text": "=This is the text that you have to check {{ $json.text_content }}{{ $json.created_at }}{{ $json.username }}{{ $json.profile_url }}{{ $json.post_url }}",
"options": {
"systemMessage": "=<goal> You are Hiring Post Classifier & Extractor. Read short social posts and return only posts where the author is hiring an n8n automation engineer in allowed geographies. Deduplicate against Google Sheets before output. If non-passing or duplicate → output nothing. </goal>\n\n<format_rules>\nInput (exact shape) is provided as:\n{\n\"text_content\": \"{{ $json.text_content }}\",\n\"created_at\": \"{{ $json.created_at }}\",\n\"post_url\": \"{{ $json.post_url }}\",\n\"username\": \"{{ $json.username }}\",\n\"profile_url\": \"{{ $json.profile_url }}\"\n}\n\nOutput: strict JSON in the same shape (see <output>), or no output (empty response) if rejected/duplicate.\n\nNo extra fields, no prose, no arrays, no explanations.\n</format_rules>\n\n<restrictions> - No separate bio/location field exists. Infer geography **only from `text_content`** (explicit city/country names found there). - If no location signal appears → treat as **unknown** and **allow** geo rule to pass. - Never fabricate locations. If ambiguous (e.g., “Birmingham”), **do not assume**. </restrictions>\n\n<geo_rules>\nAllowed countries (normalized): [\"US\",\"UK\",\"UAE\",\"CA\"]\n\nAliases:\nUS → [\"US\",\"USA\",\"United States\"]\nUK → [\"UK\",\"United Kingdom\",\"England\",\"Scotland\",\"Wales\",\"Northern Ireland\"]\nUAE → [\"UAE\",\"United Arab Emirates\"]\nCA → [\"CA\",\"Canada\"]\n\nStrong city→country inference (examples):\nUS: NYC/New York, Los Angeles/LA, Austin, SF/San Francisco, Chicago\nUK: London, Manchester, Bristol, Leeds\nUAE: Dubai, Abu Dhabi, Sharjah\nCA: Toronto, Vancouver, Montreal, Calgary, Ottawa\n</geo_rules>\n\n<decision_rules>\nHire-only (author as hirer; no replies/retweets unless restated by author as hirer).\nAccept if text clearly signals an open n8n automation engineer role.\nStrong cues (any): hiring, we’re hiring, hiring:, opening, role, position, join our team, bring on an n8n engineer, seeking an n8n automation engineer, need an automation engineer (n8n), apply, send your portfolio/resume, email to, link to job.\nHelpful (not required): full-time, part-time, contract, paid, salary, compensation.\n\nRole scope:\nAccept when automation duties are explicit with n8n (e.g., n8n engineer, n8n workflow engineer, AI automation engineer with n8n, workflow/no-code/low-code automation engineer mentioning n8n).\nExclude generic software/IT roles without n8n, RPA-only with no n8n mention, “consultant available” posts, and unrelated roles (e.g., videographer, designer).\n\nExclude self-promotion/service ads/bait.\nReject if the author markets themselves/services (e.g., “hire me,” “available for automation projects,” “my rates,” “portfolio,” “book me,” “services,” “I build automations for you”).\nIf the author appears to be a freelancer for hire and the post is ambiguous → treat as self-promo → exclude.\n\nGeography filter.\n\nExplicit location outside allowed set → exclude.\n\nExplicit allowed country/city or strong city signal → pass.\n\nNo location present → pass (unknown).\n\nMultiple locations → pass if any are allowed.\n\nDeduplication via Google Sheets.\nAfter passing 1–3, query the sheet for post_url. If found → output nothing. If not found → proceed to output.\n</decision_rules>\n\n<tools_and_usage>\n<google_sheets access=\"read-only\">\nmethod: find(post_url) → returns match if post_url already exists\n</google_sheets>\n</tools_and_usage>\n\n<planning_guidance>\nValidate hire intent (author hiring an n8n automation engineer) and exclude replies/retweets unless author restates as hirer.\nScreen out self-promo/service ads.\nApply geo rules using only text_content.\nIf pass, call Google Sheets to check post_url.\nIf duplicate → no output.\nIf unique → emit strict JSON (exact fields only).\n</planning_guidance>\n\n<output> For passing, non-duplicate posts, return **only**: { \"text_content\": \"{{ $json.text_content }}\", \"created_at\": \"{{ $json.created_at }}\", \"post_url\": \"{{ $json.post_url }}\", \"username\": \"{{ $json.username }}\", \"profile_url\": \"{{ $json.profile_url }}\" } Otherwise, **return nothing**. </output>"
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "8af119cd-a57b-4ab8-b1cf-043b8863d6b6",
"name": "条件判断",
"type": "n8n-nodes-base.if",
"position": [
3376,
1904
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d6b35f7a-4b86-4aa0-a826-c6992ad15da2",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $json.output }}",
"rightValue": "={}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "257a6531-8381-4360-9792-ce6b347d3c60",
"name": "OpenAI 聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
3024,
2128
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "LWvK49oyV3NIemKb",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "d4f04e25-b69f-47bd-81cf-4f55d62c5094",
"name": "追加或更新表格行",
"type": "n8n-nodes-base.googleSheets",
"position": [
3824,
1808
],
"parameters": {
"columns": {
"value": {
"Post": "={{ $json.text_content }}",
"Author": "={{ $json.username }}",
"Post URL": "={{ $json.post_url }}",
"Created at": "={{ $json.created_at }}",
"Profile URL": "={{ $json.profile_url }}"
},
"schema": [
{
"id": "Post",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Post",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created at",
"type": "string",
"display": true,
"required": false,
"displayName": "Created at",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Author",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Author",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Post URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Post URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Profile URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Profile URL",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Post"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 294603718,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b87NBYctXlv5e-cfjF8XrGgtfLElgnELyDBcumoM2bE/edit#gid=294603718",
"cachedResultName": "Thread"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1b87NBYctXlv5e-cfjF8XrGgtfLElgnELyDBcumoM2bE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b87NBYctXlv5e-cfjF8XrGgtfLElgnELyDBcumoM2bE/edit?usp=drivesdk",
"cachedResultName": "X and threads"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "BX6f5DraM0AGzqRA",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "4c12607c-22dd-450c-9884-b731066140c8",
"name": "代码",
"type": "n8n-nodes-base.code",
"position": [
3600,
1904
],
"parameters": {
"jsCode": "const results = [];\n\nfor (const item of $input.all()) {\n const data = item.json.output; // This is the string field to be parsed\n\n // Check if data is a valid string before trying to parse\n if (typeof data === 'string' && data.trim() !== '') {\n try {\n const obj = JSON.parse(data); // Attempt to parse the string into a JSON object\n results.push({ json: obj }); // If successful, add it to the results\n } catch (e) {\n // If parsing fails, this block catches the error.\n // We do nothing, effectively skipping the invalid item.\n }\n }\n}\n\nreturn results;\n"
},
"typeVersion": 2
},
{
"id": "cfef3a89-a750-4e58-a1d3-93c0b4db9f2a",
"name": "在 Google Sheets 中获取行",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
3152,
2128
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b87NBYctXlv5e-cfjF8XrGgtfLElgnELyDBcumoM2bE/edit#gid=0",
"cachedResultName": "X"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1b87NBYctXlv5e-cfjF8XrGgtfLElgnELyDBcumoM2bE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1b87NBYctXlv5e-cfjF8XrGgtfLElgnELyDBcumoM2bE/edit?usp=drivesdk",
"cachedResultName": "X and threads"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "BX6f5DraM0AGzqRA",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "1dafc4ff-5e4f-41dd-a57f-e054f0b5150b",
"name": "3 小时1",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
2128,
1904
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 12
}
]
}
},
"typeVersion": 1.2
},
{
"id": "5d8b8491-a548-4cea-bfdb-af5dfe8ccd6c",
"name": "编辑字段",
"type": "n8n-nodes-base.set",
"position": [
2800,
1904
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "773b819d-5075-45d7-9385-3c1522d1d75e",
"name": "text_content",
"type": "string",
"value": "={{ $json.text_content }}"
},
{
"id": "5a86b5a5-f555-46d0-9548-73f06a5fd76e",
"name": "created_at",
"type": "string",
"value": "={{ $json.created_at }}"
},
{
"id": "c26f0ddd-7b57-49de-980d-aa253ed4a242",
"name": "post_url",
"type": "string",
"value": "={{ $json.post_url }}"
},
{
"id": "1930f26c-1b3e-4797-9b94-8f599c9bf7f1",
"name": "username",
"type": "string",
"value": "={{ $json.username }}"
},
{
"id": "54930669-f800-43fa-a9bd-cd152c91fc59",
"name": "profile_url",
"type": "string",
"value": "={{ $json.profile_url }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9e2eeae8-a23a-456e-9465-527bdee7eef9",
"name": "HTTP 请求2",
"type": "n8n-nodes-base.httpRequest",
"position": [
2352,
1520
],
"parameters": {
"url": "https://api.apify.com/v2/acts/futurizerush~meta-threads-scraper/run-sync-get-dataset-items?",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "{\n \"headless\": true,\n \"keyword\": \"AI automation expert\",\n \"limit\": 50,\n \"mode\": \"keyword\",\n \"searchFilter\": \"recent\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer token"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "72d439a3-14f6-4136-97d9-49996ebe7fbb",
"name": "HTTP Request7",
"type": "n8n-nodes-base.httpRequest",
"position": [
2352,
1904
],
"parameters": {
"url": "https://api.apify.com/v2/acts/futurizerush~meta-threads-scraper/run-sync-get-dataset-items?",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "{\n \"headless\": true,\n \"keyword\": \"n8n freelance projects\",\n \"limit\": 50,\n \"mode\": \"keyword\",\n \"searchFilter\": \"recent\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer token"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "05b7851e-c398-4abc-b226-9f31ae19de46",
"name": "HTTP 请求8",
"type": "n8n-nodes-base.httpRequest",
"position": [
2352,
2096
],
"parameters": {
"url": "https://api.apify.com/v2/acts/futurizerush~meta-threads-scraper/run-sync-get-dataset-items?",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "{\n \"headless\": true,\n \"keyword\": \"n8n\",\n \"limit\": 50,\n \"mode\": \"keyword\",\n \"searchFilter\": \"recent\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer token"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "d3e5fdfd-4430-4a20-bcdf-43c227ee6a49",
"name": "HTTP Request9",
"type": "n8n-nodes-base.httpRequest",
"position": [
2352,
2288
],
"parameters": {
"url": "https://api.apify.com/v2/acts/futurizerush~meta-threads-scraper/run-sync-get-dataset-items?",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "{\n \"headless\": true,\n \"keyword\": \"hire n8n\",\n \"limit\": 50,\n \"mode\": \"keyword\",\n \"searchFilter\": \"recent\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer token"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "d2ffa80e-fc05-4cac-98f4-950c375668b2",
"name": "合并1",
"type": "n8n-nodes-base.merge",
"position": [
2576,
1840
],
"parameters": {
"numberInputs": 6
},
"typeVersion": 3.2
},
{
"id": "d4ad287f-2b72-4be5-b25a-f0657587f4af",
"name": "HTTP Request10",
"type": "n8n-nodes-base.httpRequest",
"position": [
2352,
1712
],
"parameters": {
"url": "https://api.apify.com/v2/acts/futurizerush~meta-threads-scraper/run-sync-get-dataset-items?",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "{\n \"headless\": true,\n \"keyword\": \"n8n expert\",\n \"limit\": 50,\n \"mode\": \"keyword\",\n \"searchFilter\": \"recent\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "18ed42a7-22b4-4c6b-99bc-12ba43feadfd",
"name": "发送短信1",
"type": "n8n-nodes-base.telegram",
"position": [
3824,
2000
],
"webhookId": "e7b7167d-a137-44ee-a7d1-f8bf6c99158e",
"parameters": {
"text": "=Post (using to match): {{ $json.text_content }}, \nCreated at: {{ $json.created_at }}, \nAuthor: {{ $json.username }}, \nPost URL: {{ $json.post_url }}, \nProfile URL: {{ $json.profile_url }}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "x5VuxQ3yh5aU8gPB",
"name": "Lead replied bot"
}
},
"typeVersion": 1.2
},
{
"id": "967f0073-b839-4114-ab88-485c07f90ffb",
"name": "HTTP 请求11",
"type": "n8n-nodes-base.httpRequest",
"position": [
2352,
2464
],
"parameters": {
"url": "https://api.apify.com/v2/acts/futurizerush~meta-threads-scraper/run-sync-get-dataset-items?",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "{\n \"headless\": true,\n \"keyword\": \"AI automation developer\",\n \"limit\": 50,\n \"mode\": \"keyword\",\n \"searchFilter\": \"recent\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer "
}
]
}
},
"typeVersion": 4.2
},
{
"id": "5d94ab04-3e50-49aa-8ebe-d7ee97b4e2a7",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
1296,
1456
],
"parameters": {
"color": 5,
"width": 672,
"height": 1184,
"content": "自动抓取 Meta Threads 中招聘特定职位(例如自动化工程师、视频编辑、平面设计师)的帖子,过滤真实招聘意图,去重,并发送警报。"
},
"typeVersion": 1
},
{
"id": "f7504095-a0d2-4024-a9b5-01648f0ebb1e",
"name": "便签 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1296,
2688
],
"parameters": {
"width": 672,
"height": 256,
"content": "# 寻找定制工作流?通过我的 Reddit 或网站预订——并关注未来的模板。"
},
"typeVersion": 1
},
{
"id": "944e6461-ea83-46bc-a14d-c0a24ba58556",
"name": "便签 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2560,
1456
],
"parameters": {
"color": 5,
"width": 672,
"height": 256,
"content": "## 1. 替换每个 Https 节点中的 API 密钥"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"If": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "Append or update row in sheet",
"type": "main",
"index": 0
},
{
"node": "Send a text message1",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"3 hours1": {
"main": [
[
{
"node": "HTTP Request2",
"type": "main",
"index": 0
},
{
"node": "HTTP Request10",
"type": "main",
"index": 0
},
{
"node": "HTTP Request7",
"type": "main",
"index": 0
},
{
"node": "HTTP Request8",
"type": "main",
"index": 0
},
{
"node": "HTTP Request9",
"type": "main",
"index": 0
},
{
"node": "HTTP Request11",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request2": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request7": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 2
}
]
]
},
"HTTP Request8": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 3
}
]
]
},
"HTTP Request9": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 4
}
]
]
},
"HTTP Request10": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"HTTP Request11": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 5
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Get row(s) in sheet in Google Sheets": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 内容创作, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
X/Twitter招聘帖监控与Apify、AI筛选及Telegram警报
使用Apify、AI筛选和Telegram警报监控X/Twitter上的招聘帖子
If
Set
Code
+8
13 节点A Z
内容创作
1. 播放列表详情设置机器人副本
使用 Suno、GPT-4、Runway 和 Creatomate 创建 AI 生成的 YouTube 音乐播放列表
If
Set
Code
+22
203 节点Joseph
内容创作
AI驱动视频创作与上传至Instagram、TikTok和YouTube
从云端硬盘进行AI驱动视频创作并上传至Instagram、TikTok和YouTube
If
Set
Code
+14
53 节点DevCode Journey
内容创作
WordPress博客自动化专业版(深度研究)v2.1市场
使用GPT-4o、Perplexity AI和多语言支持自动化SEO优化的博客创建
If
Set
Xml
+27
125 节点Daniel Ng
内容创作
💥 HeyGen II - 克隆我 - 从想法到发布:适用于 YouTube、TikTok 和 Instagram 的 GPT-5 视频自动化 - 视频
使用 HeyGen、GPT-5 和社交发布自动化语音输入视频创作
If
Set
Wait
+13
41 节点Dr. Firas
内容创作
基于 YouTube 视频的自主博客发布
使用 ChatGPT、Sheets、Apify、Pexels 和 WordPress 从 YouTube 视频自主发布博客
If
Set
Code
+18
80 节点Oriol Seguí
内容创作