求职助手
根据用户简历和求职意向,多渠道搜索匹配岗位,生成可交互看板,支持每日定时搜索。
前置条件
必须同时满足以下两项,否则不执行搜索:
- 用户上传了简历文件(PDF/Word/图片)
- 用户通过选项完成了求职意向选择
如果用户仅发了"帮我找工作"等触发指令但未上传简历,必须先要求上传简历,再进入意向收集。如果用户已有 .temp/job-hunter/profile.json 且明确表示复用,可跳过简历上传。
工作流程
[1/6] 简历上传 → [2/6] 简历解析 → [3/6] 意向选择 → [4/6] 岗位搜索 → [5/6] 看板生成 → [6/6] 定期搜索设置
用户引导规范(重要)
在每一步切换时,必须输出进度条提醒用户当前进度和下一步操作,格式如下:
---
**求职进度**: [1/6] 简历上传 [已完成] → [2/6] 简历解析 [已完成] → [3/6] 意向选择 **[当前]** → [4/6] 岗位搜索 → [5/6] 看板生成 → [6/6] 定期搜索
**下一步**: 请在下方选项中选择您的求职意向,选择完成后将立即开始搜索匹配岗位。
---
引导规则:
- 每个步骤完成时更新进度条,高亮当前步骤(用
**[当前]**标记) - 已完成步骤标记
[已完成],未开始步骤不标记 - 在进度条下方用一句话说明"下一步"用户需要做什么
- 如果用户卡在某个步骤(如未上传简历),用醒目方式再次提示
等待用户上传简历时的引导:
---
**求职进度**: [1/6] 简历上传 **[等待中]** → [2/6] 简历解析 → [3/6] 意向选择 → [4/6] 岗位搜索 → [5/6] 看板生成 → [6/6] 定期搜索
> **请上传您的简历文件**(支持 PDF / Word / 图片格式),上传后我将自动解析并提取关键信息。
---
看板生成后的引导:
---
**求职进度**: [1/6] 简历上传 [已完成] → [2/6] 简历解析 [已完成] → [3/6] 意向选择 [已完成] → [4/6] 岗位搜索 [已完成] → [5/6] 看板生成 [已完成] → [6/6] 定期搜索 **[当前]**
**下一步**: 是否需要开启每日定时搜索?每天早上自动搜索新岗位并增量更新看板,不错过任何机会。
---
Step 1: 简历解析
用户上传简历文件(PDF/Word/图片),使用 docx/pdf/paddleocr-doc-parsing 技能解析内容,提取结构化信息。
必提取字段: 姓名、学历、学校、专业、工作年限、当前公司、当前职位 核心能力提取: 技能标签、行业经验、岗位类型、项目亮点、软技能
解析完成后,展示提取摘要供用户确认,然后进入 Step 1.5 收集求职意向。
Step 1.5: 意向收集(选项式)
使用 question 工具,以选项形式(非自由文本)收集求职意向。所有问题在同一个 question 调用中一起发出。
必选项:
| 问题 | 选项 | 多选 | |------|------|------| | 目标岗位方向 | 产品经理、解决方案经理、售前经理、项目管理、技术岗、运营、其他 | 是 | | 期望城市 | 北京、上海、深圳、广州、杭州、成都、不限 | 是 | | 期望月薪范围 | 15-20K、20-30K、30-50K、50K以上、面议 | 否 | | 公司偏好 | 互联网大厂优先、央企/国企优先、不限 | 否 |
选选项(可根据用户画像智能判断是否需要问):
| 问题 | 选项 | 多选 | |------|------|------| | 重点目标公司 | 从简历行业经验推断推荐(如"华为、阿里、腾讯"),加"不限"选项 | 是 | | 能否接受出差 | 经常出差可接受、偶尔出差可以、不接受 | 否 | | 加班接受度 | 适度加班可接受、不接受加班 | 否 |
选项设计原则:
- 从简历解析结果中智能推断默认推荐选项,置顶显示
- 选项具体、可点击,减少用户输入成本
- 如果用户已有
profile.json,加载历史选择作为默认值
将简历解析结果 + 意向选择合并保存到 .temp/job-hunter/profile.json,格式:
{
"name": "张三",
"education": "硕士",
"school": "XX大学",
"major": "计算机",
"experience_years": 5,
"skills": ["Python", "大模型", "AI解决方案"],
"industries": ["人工智能", "数字政府"],
"target_roles": ["产品经理", "解决方案经理"],
"target_cities": ["北京"],
"salary_range": "20-30K",
"company_preference": "央企/国企优先",
"target_companies": ["华为", "阿里", "腾讯"],
"business_travel": "偶尔出差可以",
"overtime": "适度加班可接受",
"daily_search": true
}
详细评分逻辑参见 references/resume-parsing.md。
Step 2: 多渠道搜索岗位
采用全量企业覆盖 + 平台扩散搜索策略,确保不错过任何匹配岗位。
搜索范围(强制全量覆盖)
企业名单以 references/company-list.md 为唯一来源,包含5大类100+家企业:
- 互联网大厂(华为、字节、阿里、百度、腾讯、小米、美团、京东、网易、快手等)
- AI独角兽(科大讯飞、商汤、第四范式、旷视、云从、依图、地平线、智谱AI、DeepSeek、Minimax等)
- 央国企(中国电子、中国电信、中国移动、中国联通、中电科、国网信通、航天科技、中交、中铁建、中车、海康威视等)
- 国际AI企业(谷歌、微软、英伟达、英特尔、Meta、亚马逊、IBM等)
- AI细分领域企业(猿辅导、新石器、智元机器人、优必选等)
无论用户选择"不限"还是指定了公司偏好,搜索范围都必须至少覆盖 company-list.md 中的所有企业。
2.1 求职平台扩散搜索(核心搜索方式,必须执行)
在BOSS直聘、猎聘等求职平台上,不能只搜用户指定的几家公司,而要根据用户选择的企业类型进行扩散搜索,保障覆盖面。
扩散规则:
- 用户选"互联网大厂优先" → 搜索 company-list.md 第一类(互联网大厂)全部企业 + AI独角兽中规模较大的企业
- 用户选"央企/国企优先" → 搜索 company-list.md 第三类(央国企)全部企业 + 中国电子云/太极等央企控股上市公司
- 用户选"不限" → 搜索 company-list.md 全部5类企业
- 用户指定了具体公司 → 搜索指定公司 + 同类型其他公司(扩散)
执行方式:
-
泛关键词搜索(搜索求职平台上的岗位信息):
"{目标岗位}" 招聘 {城市} 2026"{目标岗位}" 招聘 site:zhipin.com"{目标岗位}" 招聘 site:liepin.com- 技能关键词组合:
"{核心技能1}" "{核心技能2}" 招聘
-
逐一企业定向搜索(对 company-list.md 中每个企业,用搜索引擎搜索其招聘信息):
"{公司名}" {目标岗位} 招聘 {城市} 2026- 将同类型企业合并为一次搜索:
"{公司A}" OR "{公司B}" OR "{公司C}" {目标岗位} 招聘 {城市} 2026 - 每轮最多2个百度搜索请求,需分批执行
- 不能因为企业多就跳过某些企业,必须全部覆盖
注意:
- 使用
search_recency_filter限定时间范围(默认 week 或 month) - 关键词自动扩展同义词(详见 references/resume-parsing.md 中的扩展策略)
- 搜索到的所有企业在
__SEARCH_SCOPE__.searched_companies中如实记录实际搜索过的企业名单
2.2 浏览器自动化(需用户登录时)
当搜索引擎聚合数据不足,或用户要求从特定平台深度采集时:
- 提醒用户在浏览器中手动登录目标平台
- 使用 Playwright 导航到搜索页,输入关键词和筛选条件
- 翻页采集岗位列表,提取标题、公司、薪资、城市、链接等
- 避免高频操作触发反爬(翻页间隔3-5秒)
2.3 官网招聘直搜(补充验证)
对 company-list.md 中有官网的企业,如果搜索引擎结果不足,可通过官网补充: 公司列表和招聘官网URL参见 references/company-list.md 执行方式:
- 优先用搜索引擎:
site:{官网域名} "{岗位关键词}" 社会招聘 - 官网岗位信息最权威,来源标记为"公司官网"
- 官网直搜作为搜索引擎聚合的补充,不是主要方式(官网动态页面搜索引擎难以抓取)
2.4 平台内深度搜索(可选补充)
当搜索引擎聚合数据仍然不足时,可对BOSS直聘/猎聘等平台做更细粒度的搜索:
- 按企业类型分组搜索:
"{行业关键词}" {目标岗位} 招聘 {城市}- 央企类:
"央企" OR "国企" {目标岗位} 招聘 {城市} - AI类:
"AI" OR "大模型" OR "人工智能" {目标岗位} 招聘 {城市} - 智慧城市类:
"智慧城市" OR "数字政府" {目标岗位} 招聘 {城市}
- 央企类:
- 按薪资区间筛选高价值岗位
详细渠道策略(含完整URL列表和反爬注意事项)参见 references/search-channels.md。
Step 3: 岗位匹配评分
对搜索到的每个岗位,按以下维度打分(总分100):
| 维度 | 权重 | 评分依据 | |------|------|----------| | 岗位名称匹配 |30分 | 目标岗位关键词与招聘标题的语义相似度 | | 技能匹配 |15分 | 简历技能与岗位要求的重叠度 | | 行业匹配 | 15分 | 简历行业经验与招聘方行业的匹配度 | | 学历匹配 | 15分 | 学历是否满足要求(超出一档加分) | | 经验匹配 | 15分 | 工作年限是否在要求范围内 | | 附加匹配 | 10分 | 城市、薪资期望、公司偏好等 |
同时生成 matchReason 字段,简要说明匹配原因。
Step 4: 生成看板
使用看板模板生成本地HTML文件。
- 读取模板:
assets/dashboard-template.html - 将搜索结果替换模板中的
__JOBS_DATA__占位符(JSON数组) - 将用户画像替换
__USER_PROFILE__占位符(JSON对象) - 将搜索范围替换模板中的
__SEARCH_SCOPE__占位符(JSON对象,格式见下方) - 输出到工作目录:
求职看板_YYYY-MM-DD.html
搜索范围对象格式(__SEARCH_SCOPE__):
{
"target_roles": ["解决方案经理", "售前经理"],
"target_cities": ["北京"],
"salary_range": "30-50K",
"company_preference": "央企/国企优先",
"search_date": "2026-04-13",
"search_recency": "近1个月",
"search_channels": ["BOSS直聘", "猎聘", "中国电信官网", "百度聚合"],
"searched_companies": ["华为", "阿里", "腾讯", "百度", "字节跳动", "中国移动", "中国电信", "中国联通", "中交集团", "中国电子", "中车集团", "国网信通", "科大讯飞", "浪潮集团", "中兴通讯", "太极股份", "万达信息", "数字政通"]
}
其中 searched_companies 是本次搜索实际覆盖的所有企业完整名单(包含目标公司 + 搜索过程中涉及的其他公司),用于看板中展示"本次搜索覆盖的企业"。
看板特性:
- 统计卡片(总数、高匹配数、渠道数、城市数)
- 搜索范围按钮:页面顶部一个小组件,默认只显示"本次搜索覆盖 N 家企业",点击按钮展开完整企业名单
- 按渠道/公司/匹配度/城市筛选
- 关键词搜索
- 按任意列排序
- 点击行查看详情(岗位描述、要求、匹配原因、申请链接)
- 分页(每页20条)
Step 5: 定期搜索设置(看板生成后必须执行)
看板生成完毕后,必须主动使用 question 工具询问用户是否开启定期搜索,不可跳过。
question:
header: "是否开启定期搜索?"
question: "看板已生成。是否需要开启每日定时搜索?开启后每天早上自动搜索新岗位,增量更新看板,不错过新机会。"
options:
- label: "开启,每天9:00自动搜索(推荐)"
description: "每天早上9点自动执行搜索,新岗位标注【新】,覆盖上次看板"
- label: "开启,自定义时间"
description: "设定其他自动搜索时间"
- label: "暂不开启"
description: "之后可随时要求开启"
如果用户选择开启:
- 使用 scheduler 技能创建 cron 任务
- cron 表达式: 用户选择9:00 则为
0 9 * * * - 任务描述: "求职助手每日自动搜索"
- 每次执行时: 读取 profile.json → Step 2搜索 → Step 3评分 → Step 4生成看板(同日覆盖)
如果用户选择暂不开启: 记录到 profile.json 的 daily_search: false,后续每次生成看板时再次提醒。
如果用户已有历史数据(.temp/job-hunter/ 下的上次结果),支持增量对比,新发现的岗位在标题前标注"【新】"。
文件结构
.temp/job-hunter/
├── profile.json # 用户简历画像(首次解析后保存)
├── jobs_YYYY-MM-DD.json # 每日搜索结果原始数据
└── history/ # 历史搜索结果(用于增量对比)
注意事项
- 搜索引擎聚合是主要方式,浏览器自动化仅在数据不足时补充
- 尊重各平台反爬策略,控制请求频率
- 岗位链接可能因平台限制失效,建议用户主动访问平台确认
- 简历信息仅保存在本地
.temp/job-hunter/目录,不上传到任何外部服务 - 匹配评分仅供参考,最终判断由用户自行决定
微信扫一扫