场景挑战
HR 在猎聘等平台重复筛选简历时面临的典型挑战。
重复劳动多
每次搜索都要重复点击相同的筛选控件,一个岗位反复搜、多个岗位轮着搜,机械操作消耗大量时间。
单次搜索耗时长
一次完整搜索 + 逐条查看 + 手动下载,通常需要 20-30 分钟,挤占 HR 与候选人沟通的时间。
人工操作易遗漏
翻页不彻底、操作疲劳后容易漏看合适候选人,优质人才在浏览过程中被错过。
无法批量下载
猎聘平台不支持批量下载简历,只能逐份点击下载,效率低且打断工作节奏。
数据难以沉淀
搜索结果散落在浏览器里,关闭就没了,无法形成可追溯、可复用的人才数据资产。
筛选条件学习成本高
猎聘筛选条件多达 30+ 项,新 HR 往往不知道有哪些筛选项、怎么组合使用,难以上手。
方案概述
本项目旨在将 HR 从重复、繁重的人员筛选中解放出来,不是「替代 HR 做判断」,而是让 HR 跨过简历筛选的重复性工作,专注于候选人沟通、面试评估等高价值环节。系统基于 Playwright 浏览器自动化构建猎聘简历搜索能力,自动完成从登录、条件筛选、候选人提取、简历下载到数据导出的全流程,并通过 MCP(Model Context Protocol)协议将搜索能力对外开放,使 openclaw 等大模型可以直接驱动简历搜索,实现「自然语言 → 自动化搜索」的智能招聘工作流。内核采用三层解耦设计,以 JSON 配置文件为单一真相源:L1 输入标准化与校验层清洗外部输入并强类型校验,L2 字段映射与冲突仲裁层将外部字段映射到标准字段并归一化多值,L3 Web 执行层将标准化条件字典翻译为浏览器实际操作(点击、填入、选择、下载)。
核心能力
浏览器自动化 + MCP 协议驱动的 8 项核心能力。
全字段覆盖:30+ 筛选条件自动填充
全面对齐猎聘平台所有筛选能力,覆盖关键词、学历经验、地域、薪资、行业职能、个人信息与高级筛选等 30+ 字段,每个字段对应独立方法,通过 Playwright 定位真实 DOM 元素精确操作,自定义范围字段分别填入最小/最大值,多选树形字段完整模拟展开 → 搜索 → 勾选的人工路径。
浏览器拟人化:对抗反爬检测
隐藏 navigator.webdriver 标记并伪造 Plugins、Languages、Chrome 版本等浏览器指纹;逐字符输入每字符间隔 50-150ms 随机延迟,点击前随机移动鼠标、点击前后添加随机等待;登录后持久化 Cookie 减少重复登录,完整模拟人工操作路径,降低触发风控的概率。
结构化数据产出
每次搜索完成自动产出两份结构化文件:JSON 含每位候选人姓名、公司、职位、履历与下载链接等完整信息;CSV 为扁平化表格可直接用 Excel 打开排序筛选。简历 PDF 按任务名称分文件夹归档存储,从网页数据沉淀为可追溯的数据资产。
AI 原生接入:MCP 让大模型驱动搜索
通过实现 MCP(Model Context Protocol)服务,大模型可直接调用搜索能力:用户在对话中说「搜索上海 3-5 年 Python 开发,期望薪资 25-35K」→ 模型理解意图提取参数 → 调用搜索工具 → 返回候选人总数与结构化结果。基于 FastMCP 暴露 8 个工具,纯 HTTP 代理模式不重复业务逻辑,支持 17 个顶层便利参数 + conditions 字典透传。
三模式搜索保障
validate_only 先校验条件合法性 → ready_check 检查浏览器与登录状态 → auto_execute 执行,分步保障,避免执行到一半才发现参数有问题;全程状态可控、可中断。
幂等与互斥控制
相同幂等键 10 分钟内不重复执行并返回缓存结果,避免误重复操作;同一时间只允许一个搜索任务运行,避免浏览器状态冲突;可配置超时时间,超时不崩溃而是优雅返回已提取数据。
错误分类与状态机日志
区分 timeout / login_required / cancelled 等错误类型,调用方可精确处理;全流程记录每个字段的操作状态(成功/失败/跳过),形成状态机日志,便于排障与复盘。
定时任务与人才监控
基于 APScheduler 支持定时执行,可设置每周一自动搜索行业人才趋势,建立长期人才储备库,实现人才市场的持续扫描与增量监控。
Demo 演示
点击切换实时体验与演示视频。
