8
n8n 中文网amn8n.com

使用 GPT-5-mini 摘要和邮件摘要自动抓取 Make.com 招聘板

高级

这是一个自动化工作流,包含 18 个节点。主要使用 Code, Html, Merge, Filter, EmailSend 等节点。 使用 GPT-5-mini 摘要和邮件摘要自动抓取 Make.com 招聘板

前置要求
  • 可能需要目标 API 的认证凭证

分类

-
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "42450f423595f391b7c323eb4191c0bc81df9f6de5483a12f34f76cb4146556c",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "65c33726-bacc-4180-b62f-15701697516d",
      "name": "结构化输出解析器",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1488,
        400
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"summary\": \"What the client is looking to build\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "652bb452-ea0e-4719-813d-994436d15960",
      "name": "OpenRouter 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1360,
        400
      ],
      "parameters": {
        "model": "openai/gpt-5-mini",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "aCsTDT5LGS5D8Ndl",
          "name": "OpenRouter account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c92e0da2-85ff-4a57-970f-1b9f636b8a1b",
      "name": "获取主招聘板",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        224,
        144
      ],
      "parameters": {
        "url": "https://community.make.com/tag/professional-service",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "45216826-c35d-4724-808a-0fc119fb60f4",
      "name": "提取招聘帖子链接",
      "type": "n8n-nodes-base.html",
      "position": [
        448,
        144
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "jobTitle",
              "cssSelector": ".topic-list-item .main-link .link-top-line a",
              "returnArray": true
            },
            {
              "key": "jobLink",
              "attribute": "href",
              "cssSelector": ".topic-list-item .main-link .link-top-line a",
              "returnArray": true,
              "returnValue": "attribute"
            },
            {
              "key": "date",
              "cssSelector": ".topic-list-item td:last-child",
              "returnArray": true
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "3fb97846-8387-430c-bc8a-a20528978a46",
      "name": "筛选新/有效职位",
      "type": "n8n-nodes-base.filter",
      "position": [
        896,
        144
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "9db031ce-cbcc-4ccf-8f68-ca6fee8cd510",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ $json.date }}",
              "rightValue": "={{$now.minus({days: 7})}} "
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "bdabba9a-ba1f-4261-8b97-d8e19987a730",
      "name": "获取单个职位页面",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1120,
        32
      ],
      "parameters": {
        "url": "={{ $json.jobLink }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "0bcf04e4-f4c6-4530-8f42-58baa8e7f19d",
      "name": "获取页面 HTML 供 LLM 使用",
      "type": "n8n-nodes-base.html",
      "position": [
        1408,
        -128
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "jobDescription",
              "attribute": "content",
              "cssSelector": "meta[property=\"og:description\"]",
              "returnValue": "attribute"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d16a28e9-c6cd-4aa9-9ed6-c25f3a8a6ea6",
      "name": "使用 AI 提取职位详情",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1344,
        176
      ],
      "parameters": {
        "text": "={{ $json.data }}",
        "messages": {
          "messageValues": [
            {
              "message": "=<prompt>\n    <purpose>\n        Based on this HTML your task is to provide a summary of what the client is looking to build with the automation software make.com\n    </purpose>\n\n    <instructions>\n        <instruction>Output in json format</instruction>\n        <instruction>Give a high level summary of what the client wants to build</instruction>\n        <instruction>Make sure to only distill the relevant text from all the HTML input</instruction>\n    </instructions>\n</prompt>"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.5
    },
    {
      "id": "eb84699b-e02c-4ef8-b37a-2ffaf395396e",
      "name": "合并 AI 数据和 URL",
      "type": "n8n-nodes-base.merge",
      "position": [
        1696,
        160
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition",
        "numberInputs": 3
      },
      "typeVersion": 3
    },
    {
      "id": "c598080e-3716-4ac4-b1a3-e18c3acb4ba5",
      "name": "格式化职位列表项",
      "type": "n8n-nodes-base.code",
      "position": [
        672,
        144
      ],
      "parameters": {
        "jsCode": "const titles = items[0].json[\"jobTitle\"];\nconst links = items[0].json[\"jobLink\"];\nconst dates = items[0].json[\"date\"];\n\nconst merged = titles.map((link, index) => ({\n  \"jobTitle\": link,\n  \"jobLink\": links[index],\n  \"date\": dates[index],\n  \"source\": \"make-forum\"\n}));\n\nreturn merged.map(item => ({ json: item }));\n"
      },
      "typeVersion": 2
    },
    {
      "id": "9f811105-07b4-4c4e-ba7d-85183b718e1f",
      "name": "清理 AI 响应",
      "type": "n8n-nodes-base.code",
      "position": [
        1920,
        176
      ],
      "parameters": {
        "jsCode": "return $input.all().map((item) => ({...item.json, summary:item.json.output.summary, output: undefined}))\n"
      },
      "typeVersion": 2
    },
    {
      "id": "1ce88c89-4780-4c6f-9781-0c065ff6473f",
      "name": "汇总所有职位",
      "type": "n8n-nodes-base.code",
      "position": [
        2144,
        176
      ],
      "parameters": {
        "jsCode": "const items = $input.all().map((item) => {\n    const itemJson = item.json;\n    return {\n        ...itemJson\n    }\n})\n\nconsole.log(items.length)\n\nreturn {data: items}\n"
      },
      "typeVersion": 2
    },
    {
      "id": "16173a79-9c23-47b6-8582-ee2c870fdc1a",
      "name": "发送每周职位摘要",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2368,
        176
      ],
      "webhookId": "d53405e8-9964-43c2-8fe4-38eeebf65d34",
      "parameters": {
        "html": "={{(() => {\n  const grouped = $json.data.sort((a,b) => new Date(b.date.replace(/\\s/, 'T')) - new Date(a.date.replace(/\\s/, 'T'))).reduce((acc, job) => {\n    const source = job.source === 'n8n-forum' ? 'n8n-forum' : \n                  job.source === 'make-forum' ? 'make-forum' : \n                  'reddit';\n    if (!acc[source]) acc[source] = [];\n    acc[source].push(job);\n    return acc;\n  }, {});\n  \n  return Object.entries(grouped).reduce((html, [source, jobs]) => \n    html + '<div class=\"section\"><h2>' + \n    (source === 'n8n-forum' ? 'n8n Forum Jobs' : \n     source === 'make-forum' ? 'Make Forum Jobs' : \n     'Reddit Jobs') + '</h2>' +\n    jobs.map(job => \n      '<div class=\"job-item\"><h3><a href=\"' + job.jobLink + '\">' + \n      job.jobTitle + '</a></h3><div class=\"date\">Posted: ' + \n      job.date + '</div><div class=\"source\">Source: ' + \n      (job.source === 'n8n-forum' ? 'n8n Forum' : \n       job.source === 'make-forum' ? 'Make Forum' : \n       'Reddit - ' + job.origin) + '</div><p class=\"summary\">' + \n      job.summary + '</p></div>'\n    ).join('') + '</div>',\n    '<!DOCTYPE html><html><head><style>body{font-family:Arial,sans-serif;line-height:1.6;color:#333;max-width:800px;margin:0 auto;padding:20px}.section{margin-bottom:30px}.job-item{border:1px solid #ddd;margin-bottom:20px;padding:15px;border-radius:5px}h2{color:#2c5282;border-bottom:2px solid #2c5282;padding-bottom:10px;margin-top:30px}h3{color:#2c5282;margin:0 0 10px}a{color:#2b6cb0;text-decoration:none}a:hover{text-decoration:underline}.date,.source{color:#666;font-size:0.9em;margin-bottom:8px}.summary{background:#f8f9fa;padding:10px;border-left:4px solid #4299e1;margin:10px 0}</style></head><body><h1>Latest Job Opportunities</h1><p>Generated on: ' + new Date().toLocaleString() + '</p>'\n  ) + '</body></html>';\n})()}}\n",
        "options": {},
        "subject": "Job Opportunities",
        "toEmail": "test@example.com",
        "fromEmail": "test@example.com"
      },
      "credentials": {
        "smtp": {
          "id": "JN7BvujMXvFvoUMh",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "ebe89e2a-da83-4150-9204-db0313daf256",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -96,
        -64
      ],
      "parameters": {
        "width": 336,
        "height": 176,
        "content": "## 📋 工作流概述"
      },
      "typeVersion": 1
    },
    {
      "id": "e5334bb7-116e-4227-b938-3a4ae1c8c540",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        -64
      ],
      "parameters": {
        "height": 176,
        "content": "## ⏱️ 日期筛选"
      },
      "typeVersion": 1
    },
    {
      "id": "33890a9f-ae80-4dcf-a430-3924fdc6c891",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1312,
        544
      ],
      "parameters": {
        "width": 320,
        "height": 208,
        "content": "## 🤖 AI提取"
      },
      "typeVersion": 1
    },
    {
      "id": "e19f09cd-617a-45f9-bc2c-47b1ec92a608",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2304,
        -64
      ],
      "parameters": {
        "height": 192,
        "content": "## 📧 邮件格式化"
      },
      "typeVersion": 1
    },
    {
      "id": "050341ef-70f2-4e06-9e44-61d519a8910e",
      "name": "每周一早上运行",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        144
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * 1"
            }
          ]
        }
      },
      "typeVersion": 1.2
    }
  ],
  "pinData": {},
  "connections": {
    "Clean AI Response": {
      "main": [
        [
          {
            "node": "Aggregate All Jobs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate All Jobs": {
      "main": [
        [
          {
            "node": "Send Weekly Job Digest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Main Job Board": {
      "main": [
        [
          {
            "node": "Extract Job Post Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine AI Data & URL": {
      "main": [
        [
          {
            "node": "Clean AI Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter New/Valid Jobs": {
      "main": [
        [
          {
            "node": "Get Individual Job Page",
            "type": "main",
            "index": 0
          },
          {
            "node": "Combine AI Data & URL",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Format Job List Items": {
      "main": [
        [
          {
            "node": "Filter New/Valid Jobs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Page HTML for LLM": {
      "main": [
        [
          {
            "node": "Combine AI Data & URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Extract Job Details with AI",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Extract Job Post Links": {
      "main": [
        [
          {
            "node": "Format Job List Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Individual Job Page": {
      "main": [
        [
          {
            "node": "Get Page HTML for LLM",
            "type": "main",
            "index": 0
          },
          {
            "node": "Extract Job Details with AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Extract Job Details with AI",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Extract Job Details with AI": {
      "main": [
        [
          {
            "node": "Combine AI Data & URL",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Run Weekly on Monday Morning": {
      "main": [
        [
          {
            "node": "Fetch Main Job Board",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量18
分类-
节点类型11
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Julian Kaiser

Julian Kaiser

@jksr

Full Stack Developer turned AI & Automation Engineer, implementing intelligent solutions with custom code, LLMs & n8n. Use my link to book a free 30-minute call to discuss your AI challenges and see if my services might be a good fit for your needs.

外部链接
在 n8n.io 查看

分享此工作流