8
n8n 中文网amn8n.com

自动化职位查找智能助手与 Scrapeless 和 Google Sheets

中级

这是一个HR领域的自动化工作流,包含 9 个节点。主要使用 Code, GoogleSheets, ScheduleTrigger, Scrapeless 等节点。 标题优秀,清晰传达了目的和关键工具

前置要求
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "RcWm1VlQCiJ2MMOB",
  "meta": {
    "instanceId": "33cec88bd6fe3cbda4c3583ef07d9defd96a3c8dd8a74d9aae590a735da1795c",
    "templateCredsSetupCompleted": true
  },
  "name": "自动化职位查找智能助手与 Scrapeless 和 Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "b5953186-c060-4aac-b22a-4b9025839b66",
      "name": "计划触发器",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        660,
        0
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "36da4916-543d-4569-bd02-a7518df18fd4",
      "name": "Scrapeless",
      "type": "n8n-nodes-scrapeless.scrapeless",
      "position": [
        880,
        0
      ],
      "parameters": {
        "url": "https://www.ycombinator.com/jobs",
        "resource": "crawler",
        "operation": "crawl",
        "limitCrawlPages": 2
      },
      "credentials": {
        "scrapelessApi": {
          "id": "4EwKYJkwkAfQgLHB",
          "name": "Scrapeless account 5"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "19c3e8cc-c94b-4fa5-b307-32c3b5ac51a1",
      "name": "代码",
      "type": "n8n-nodes-base.code",
      "position": [
        360,
        240
      ],
      "parameters": {
        "jsCode": "\nconst raw = items[0].json;             \n\nconst output = raw.map(obj => ({\n  json: {\n \n    markdown: obj.markdown,\n\n  }\n}));\n\n\nreturn output;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "a217d476-3bd6-4b2e-9bac-42a896c4c093",
      "name": "代码1",
      "type": "n8n-nodes-base.code",
      "position": [
        660,
        240
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const md = item.json.markdown;\n\n  // 1. Find the “jobs added recently” header line dynamically (case‑insensitive)\n  const splitRegex = /^#{1,3}\\s*.+jobs added recently\\s*$/im;\n  // Split into [introSection, jobsSection]\n  const parts = md.split(splitRegex);\n  const introSectionRaw = parts[0] || '';\n  const jobsSectionRaw = parts.slice(1).join('') || '';\n\n  // 2. Clean up the intro text\n  const intro = introSectionRaw\n    .replace(/^#+\\s*/gm, '') // strip any leading “#” headings\n    .trim();\n\n  // 3. Extract each job title + link (ignore image‑only links)\n  const jobs = [];\n  const re = /\\-\\s*\\[(?!\\!)([^\\]]+)\\]\\((https?:\\/\\/[^\\)]+)\\)/g;\n  let match;\n  while ((match = re.exec(jobsSectionRaw))) {\n    jobs.push({\n      title: match[1].trim(),\n      link:  match[2].trim(),\n    });\n  }\n\n  // 4. Return a new item\n  return {\n    json: {\n      intro,\n      jobs,\n    },\n  };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "1152e225-f480-4ccd-8f97-d4eced0aa24c",
      "name": "代码2",
      "type": "n8n-nodes-base.code",
      "position": [
        920,
        240
      ],
      "parameters": {
        "jsCode": "const output = [];\n\nitems.forEach(item => {\n  const intro = item.json.intro;\n  const jobs  = item.json.jobs || [];\n\n  jobs.forEach(job => {\n    output.push({\n      json: {\n        intro,             \n        jobTitle: job.title,\n        jobLink:  job.link\n      }\n    });\n  });\n});\n\nreturn output;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f45298a1-65bd-41a7-bad3-997024ebb08e",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        700,
        460
      ],
      "parameters": {
        "columns": {
          "value": {
            "Job Link": "={{ $json.jobLink }}",
            "Job Title": "={{ $json.jobTitle }}"
          },
          "schema": [
            {
              "id": "Job Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Link",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Job Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Job Title"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1FjjJjC-f6KqNLyVPgCTGusQs-e1cL-qCTD-7aCbI5-w/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1FjjJjC-f6KqNLyVPgCTGusQs-e1cL-qCTD-7aCbI5-w",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1FjjJjC-f6KqNLyVPgCTGusQs-e1cL-qCTD-7aCbI5-w/edit?usp=drivesdk",
          "cachedResultName": "Job Info"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "YcJirYpMwmsF4noM",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "4bd91f22-f338-4f5c-bf27-f63f58de3363",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 620,
        "height": 120,
        "content": "## 自动化职位爬虫(每 6 小时)"
      },
      "typeVersion": 1
    },
    {
      "id": "46375003-a127-4441-834f-261e7978c263",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1080,
        240
      ],
      "parameters": {
        "color": 6,
        "width": 580,
        "height": 120,
        "content": "## 数据清洗与标签功能"
      },
      "typeVersion": 1
    },
    {
      "id": "664c7215-bb23-43be-9c0a-648787c8d4c7",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        140,
        460
      ],
      "parameters": {
        "color": 5,
        "width": 500,
        "height": 120,
        "content": "## 保存到 Google Sheets"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "e4fe8bcd-ace3-4e61-9f3c-57220ecb6b06",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "Code2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code2": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrapeless": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Scrapeless",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

中级 - 人力资源

需要付费吗?

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

工作流信息
难度等级
中级
节点数量9
分类1
节点类型5
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

外部链接
在 n8n.io 查看

分享此工作流