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": "\u62db\u8058\u4fe1\u606f\u805a\u5408Bot",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 12
}
]
}
},
"id": "e25ccbcc-98e9-4416-b6c7-1230be66c456",
"name": "\u5b9a\u65f6\u89e6\u53d1\uff08\u6bcf12\u5c0f\u65f6\uff09",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-448,
16
],
"typeVersion": 1.3
},
{
"parameters": {
"method": "=POST",
"url": "=http://browserless:3000/content",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"url\": \"{{ $('vars').item.json.COMPANY_JOBS_URL }}\",\n \"waitFor\": 3000,\n \"gotoOptions\": {\n \"waitUntil\": \"networkidle2\"\n }\n}",
"options": {
"timeout": 30000
}
},
"id": "0cfa51a1-ef78-4dce-9f09-ad4b42687495",
"name": "\u4f01\u4e1a\u5b98\u7f51\u722c\u53d6",
"type": "n8n-nodes-base.httpRequest",
"position": [
-32,
224
],
"typeVersion": 4.4,
"notes": "\u5728 Variables \u4e2d\u8bbe\u7f6e COMPANY_JOBS_URL \u4e3a\u76ee\u6807\u4f01\u4e1a\u62db\u8058\u9875URL\n\u4f8b\u5982\uff1ahttps://careers.example.com/jobs"
},
{
"parameters": {
"url": "={{ $('vars').item.json.UNIVERSITY_JOBS_URL }}",
"options": {
"timeout": 30000
}
},
"id": "a06c9311-1426-410f-a581-7a3b2d1280a4",
"name": "\u9ad8\u6821\u5c31\u4e1a\u7f51\u722c\u53d6",
"type": "n8n-nodes-base.httpRequest",
"position": [
-32,
400
],
"typeVersion": 4.4,
"notes": "\u5728 Variables \u4e2d\u8bbe\u7f6e UNIVERSITY_JOBS_URL\n\u4f8b\u5982\uff1ahttps://career.university.edu.cn/jobs"
},
{
"parameters": {
"extractionValues": {
"values": [
{
"key": "title",
"cssSelector": "=.post_list"
}
]
},
"options": {}
},
"id": "588be3bb-90dd-42f9-8c9d-380c0c8e0320",
"name": "HTML\u5b57\u6bb5\u63d0\u53d6",
"type": "n8n-nodes-base.htmlExtract",
"position": [
176,
304
],
"typeVersion": 1,
"notes": "\u26a0\ufe0f CSS\u9009\u62e9\u5668\u9700\u8981\u6839\u636e\u76ee\u6807\u7f51\u7ad9\u5b9e\u9645\u7ed3\u6784\u8c03\u6574\n\u5efa\u8bae\uff1a\u5148\u7528\u6d4f\u89c8\u5668\u5f00\u53d1\u8005\u5de5\u5177\u627e\u5230\u6b63\u786e\u7684\u9009\u62e9\u5668"
},
{
"parameters": {
"mode": "combine",
"fieldsToMatchString": "title",
"joinMode": "keepEverything",
"options": {}
},
"id": "96369b98-a68e-4c5d-b3e6-f6ea46133075",
"name": "\u5408\u5e76\u6240\u6709\u6765\u6e90",
"type": "n8n-nodes-base.merge",
"position": [
176,
160
],
"typeVersion": 3.2
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"leftValue": "={{ $json.title }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "isNotEmpty"
},
"id": "50625082-6568-4d9e-b6af-987cfef1f475"
}
],
"combinator": "and"
},
"options": {}
},
"id": "bf28853e-cb55-448a-9669-e6d5fadfa833",
"name": "\u8fc7\u6ee4\u7a7a\u6570\u636e",
"type": "n8n-nodes-base.filter",
"position": [
368,
160
],
"typeVersion": 2.3,
"alwaysOutputData": false,
"disabled": true
},
{
"parameters": {
"options": {}
},
"id": "cbdf45ab-56d2-44df-acd1-574f7cac5a6e",
"name": "\u53bb\u91cd\uff08\u6309\u6807\u9898+\u94fe\u63a5\uff09",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
560,
160
],
"typeVersion": 2
},
{
"parameters": {
"batchSize": 10,
"options": {}
},
"id": "55f84c03-2790-4a05-931c-5c1e8923303d",
"name": "\u5206\u6279\u5904\u7406\uff08\u6bcf\u627910\u6761\uff09",
"type": "n8n-nodes-base.splitInBatches",
"position": [
736,
224
],
"typeVersion": 3,
"notes": "\u63a7\u5236\u6bcf\u6b21AI\u8bf7\u6c42\u7684\u6570\u636e\u91cf\uff0c\u907f\u514dtoken\u8d85\u9650"
},
{
"parameters": {
"method": "POST",
"url": "https://api.deepseek.com/v1/chat/completions",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "=application/json",
"body": "={{ $json.body }}",
"options": {}
},
"id": "34474d02-f2ac-4ff3-9251-1e29076b20a1",
"name": "DeepSeek AI\u63d0\u70bc",
"type": "n8n-nodes-base.httpRequest",
"position": [
912,
160
],
"typeVersion": 4.4,
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"notes": "\u8c03\u7528DeepSeek API\u63d0\u70bc\u5173\u952e\u5b57\u6bb5\n\u9700\u8981\u5728Credentials\u4e2d\u521b\u5efa HTTP Header Auth\uff0cKey\u586bAuthorization\uff0cValue\u586b Bearer sk-\u4f60\u7684key"
},
{
"parameters": {
"jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n item.json.myNewField = 1;\n}\n\nreturn $input.all();"
},
"id": "04cdd993-5797-4da8-82c6-8f1a0e4622eb",
"name": "\u683c\u5f0f\u5316Telegram\u6d88\u606f",
"type": "n8n-nodes-base.code",
"position": [
1104,
160
],
"typeVersion": 2
},
{
"parameters": {
"chatId": "={{ $json.TELEGRAM_CHAT_ID }}",
"text": "={{ $json.choices[0].message.content }}",
"additionalFields": {
"disable_web_page_preview": true,
"parse_mode": "Markdown"
}
},
"id": "fc4b6044-72f1-46a8-b65e-25daab6fa24e",
"name": "Telegram\u53d1\u9001",
"type": "n8n-nodes-base.telegram",
"position": [
1408,
144
],
"typeVersion": 1.2,
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"notes": "\u9700\u8981\u5728Credentials\u4e2d\u914d\u7f6eTelegram Bot API Token\n\u5728Variables\u4e2d\u8bbe\u7f6e TELEGRAM_CHAT_ID\uff08\u4f60\u7684Chat ID\uff09"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "ebae294f-c1d6-4264-bd5a-5125220ba333",
"name": "COMPANY_JOBS_URL",
"value": "https://join.qq.com/post.html?query=p_1",
"type": "string"
},
{
"id": "975ef74e-6d8d-423c-8f2a-9335aaaadfa7",
"name": "UNIVERSITY_JOBS_URL",
"value": "https://job.tju.edu.cn/",
"type": "string"
},
{
"id": "1526e25f-b8f5-4e52-86d9-87c5b65dac5a",
"name": "WECHAT_MP_ID_1",
"value": "sogou_vr_11002601_title_0",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-224,
304
],
"id": "615b2759-7337-4862-a91a-3dd399b32d27",
"name": "vars"
},
{
"parameters": {
"jsCode": "const items = $input.all();\n\nconst jobList = items.map(item => ({\n title: item.json.title,\n link: item.json.link,\n deadline: item.json.deadline,\n requirements: item.json.requirements,\n type: item.json.type,\n source: item.json.source\n}));\n\nconst body = {\n model: \"deepseek-chat\",\n max_tokens: 2000,\n messages: [\n {\n role: \"system\",\n content: \"\u4f60\u662f\u4e00\u4e2a\u62db\u8058\u4fe1\u606f\u63d0\u70bc\u52a9\u624b\u3002\u7528\u6237\u4f1a\u7ed9\u4f60\u4e00\u6279\u62db\u8058\u4fe1\u606f\u539f\u59cb\u6570\u636e\uff0c\u4f60\u9700\u8981\u63d0\u70bc\u6210\u7ed3\u6784\u5316JSON\u6570\u7ec4\u3002\\n\u6bcf\u6761\u8bb0\u5f55\u5305\u542b\uff1a\\n- title: \u5c97\u4f4d\u540d\u79f0\\n- link: \u7533\u8bf7\u94fe\u63a5\\n- deadline: \u622a\u6b62\u65e5\u671f\uff08\u683c\u5f0fYYYY-MM-DD\uff0c\u65e0\u6cd5\u8bc6\u522b\u5219\u586bnull\uff09\\n- education: \u5b66\u5386\u8981\u6c42\uff08\u65e0\u5219\u586bnull\uff09\\n- major: \u4e13\u4e1a\u8981\u6c42\uff08\u65e0\u5219\u586bnull\uff09\\n- type: \u7c7b\u578b\uff08\u6821\u62db/\u5b9e\u4e60/\u793e\u62db\uff09\\n- source: \u6765\u6e90\\n\\n\u53ea\u8f93\u51faJSON\u6570\u7ec4\uff0c\u4e0d\u8981\u4efb\u4f55\u89e3\u91ca\u6587\u5b57\u3002\"\n },\n {\n role: \"user\",\n content: \"\u8bf7\u63d0\u70bc\u4ee5\u4e0b\u62db\u8058\u4fe1\u606f\uff1a\\n\" + JSON.stringify(jobList)\n }\n ]\n};\n\nreturn [{ json: { body: JSON.stringify(body) } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
736,
96
],
"id": "9e1e9cb7-e204-41dd-abc2-a312a8840c3a",
"name": "Code in JavaScript"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "bee8ad8e-e2ab-490a-9bb4-03de03729e49",
"name": "TELEGRAM_CHAT_ID",
"value": 7054214273,
"type": "number"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1104,
16
],
"id": "e79b9a3b-6a0e-4ac4-9bd8-a3885319d908",
"name": "vars2"
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineAll",
"options": {}
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
1264,
144
],
"id": "ad1e3e24-0712-4ebb-b9d1-a4217cf7413b",
"name": "Merge"
}
],
"connections": {
"\u5b9a\u65f6\u89e6\u53d1\uff08\u6bcf12\u5c0f\u65f6\uff09": {
"main": [
[
{
"node": "vars2",
"type": "main",
"index": 0
},
{
"node": "vars",
"type": "main",
"index": 0
}
]
]
},
"\u4f01\u4e1a\u5b98\u7f51\u722c\u53d6": {
"main": [
[
{
"node": "HTML\u5b57\u6bb5\u63d0\u53d6",
"type": "main",
"index": 0
}
]
]
},
"\u9ad8\u6821\u5c31\u4e1a\u7f51\u722c\u53d6": {
"main": [
[
{
"node": "HTML\u5b57\u6bb5\u63d0\u53d6",
"type": "main",
"index": 0
}
]
]
},
"HTML\u5b57\u6bb5\u63d0\u53d6": {
"main": [
[
{
"node": "\u5408\u5e76\u6240\u6709\u6765\u6e90",
"type": "main",
"index": 1
}
]
]
},
"\u5408\u5e76\u6240\u6709\u6765\u6e90": {
"main": [
[
{
"node": "\u8fc7\u6ee4\u7a7a\u6570\u636e",
"type": "main",
"index": 0
}
]
]
},
"\u8fc7\u6ee4\u7a7a\u6570\u636e": {
"main": [
[
{
"node": "\u53bb\u91cd\uff08\u6309\u6807\u9898+\u94fe\u63a5\uff09",
"type": "main",
"index": 0
}
]
]
},
"\u53bb\u91cd\uff08\u6309\u6807\u9898+\u94fe\u63a5\uff09": {
"main": [
[
{
"node": "\u5206\u6279\u5904\u7406\uff08\u6bcf\u627910\u6761\uff09",
"type": "main",
"index": 0
},
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"\u5206\u6279\u5904\u7406\uff08\u6bcf\u627910\u6761\uff09": {
"main": [
[
{
"node": "DeepSeek AI\u63d0\u70bc",
"type": "main",
"index": 0
}
]
]
},
"DeepSeek AI\u63d0\u70bc": {
"main": [
[
{
"node": "\u683c\u5f0f\u5316Telegram\u6d88\u606f",
"type": "main",
"index": 0
}
]
]
},
"\u683c\u5f0f\u5316Telegram\u6d88\u606f": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"vars": {
"main": [
[
{
"node": "\u4f01\u4e1a\u5b98\u7f51\u722c\u53d6",
"type": "main",
"index": 0
},
{
"node": "\u9ad8\u6821\u5c31\u4e1a\u7f51\u722c\u53d6",
"type": "main",
"index": 0
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "DeepSeek AI\u63d0\u70bc",
"type": "main",
"index": 0
}
]
]
},
"vars2": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Telegram\u53d1\u9001",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false
},
"versionId": "2bedfca9-5bc6-4560-a3fe-423678745818",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "qhduwVhE8Zm5XndV",
"tags": []
}
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.
httpHeaderAuthtelegramApi
About this workflow
招聘信息聚合Bot. Uses scheduleTrigger, httpRequest, htmlExtract, removeDuplicates. Scheduled trigger; 15 nodes.
Source: https://github.com/2p1c/job-bot/blob/b6b6febd4748cbb6ba3467fd2cede80feb570370/workflows/job-bot.json — original creator credit. Request a take-down →