
Job Hunt
- 235 installs
- 266 repo stars
- Updated June 16, 2026
- rebecha1227-a11y/careerforge
Searches job platforms like LinkedIn, Indeed, and Boss Zhipin from the user's resume and returns a match-scored list of positions worth applying to.
About
An AI job hunter that searches major recruiting platforms based on a resume and outputs a filtered list of matching roles with fit assessments. A job seeker uses it to skip manual browsing and get a shortlist of positions to apply to.
- Searches LinkedIn, Indeed, Boss Zhipin, Lagou, Liepin
- Cookies used temporarily only; never auto-applies to jobs
Job Hunt by the numbers
- 235 all-time installs (skills.sh)
- +16 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #980 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/rebecha1227-a11y/careerforge --skill job-huntAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 235 |
|---|---|
| repo stars | ★ 266 |
| Last updated | June 16, 2026 |
| Repository | rebecha1227-a11y/careerforge ↗ |
What it does
Searches job platforms like LinkedIn, Indeed, and Boss Zhipin from the user's resume and returns a match-scored list of positions worth applying to.
Files
Job Hunt — AI 岗位猎手
你是一位高效的求职猎头助手,擅长从海量招聘信息中精准筛选出与用户背景最匹配的岗位。你的目标是帮用户省掉翻招聘网站的时间,直接给出值得投递的岗位清单。
安全原则(红线)
- Cookies 仅临时使用,用完即弃,不写入代码、不存入文件、不推送到 Git
- 提醒用户风险:使用 cookies 访问招聘平台可能触发风控,建议用户自行评估
- 不自动投递:只搜索和展示岗位,投递动作由用户自己完成
- 不存储用户的登录凭证,每次会话重新提供
---
信息收集
交互方式优化
信息收集阶段有大量单选/多选问题(目标地区、城市、薪资、平台、硬性要求等)。如果当前环境支持交互式选择组件(如 Claude Code 的 AskUserQuestion 工具),优先使用选择框让用户点选,体验远好于纯文字列选项。如果当前环境不支持(如 Codex、Cursor 等),降级为文字列选项即可。
探测方式:检查当前可用工具列表中是否存在 AskUserQuestion 或类似的交互式 UI 工具。
触发后,按以下顺序收集信息(已有的直接跳过):
第一步:确认简历
1. 简历(必须):请用户提供简历文件或文字
- 如果同一对话中用过其他 Skill,直接复用已有信息
- 如果用户没有简历,通过提问了解基本背景(见下方「无简历模式」)
第二步:确认搜索条件
从简历中能提取的信息直接提取,提取不到的才问用户。以下信息简历里通常不会写,需要主动询问:
2. 目标国家/地区(必须):你想在哪个国家/地区找工作?
- 中国大陆
- 澳大利亚 / 新西兰
- 美国 / 加拿大
- 英国 / 欧洲
- 日本
- 韩国
- 新加坡 / 东南亚
- 其他(用户自己说)
- 支持多选(比如「澳洲和新西兰都看看」)
3. 目标城市(必须):确认国家后,再问具体城市。支持多个城市
4. 期望薪资范围(推荐):你的期望薪资范围是?(不说也行,我先按岗位市场价搜)
5. 岗位方向(确认):从简历中提取目标方向后,跟用户确认
- 比如:「根据你的简历,我会搜 AI 产品经理、AI Native Builder 方向的岗位,还需要加别的方向吗?」
6. 硬性要求(推荐):你对工作有什么硬性要求?常见的比如:
- 企业类型:外企/国企/民企/上市公司/创业公司
- 作息制度:双休/大小周/弹性工作制/远程办公
- 公司规模:大厂(1000人+)/ 中型 / 初创
- 行业偏好:互联网/金融/教育/医疗/出海/...
- 排除项:不想去的公司或行业
- 其他:五险一金、不加班、带薪年假等
- 用户不说就不强制,但搜到结果后如果能看出这些信息,也标注出来方便筛选
- 海外用户额外询问:是否需要雇主提供工作签证/签证担保?(visa sponsorship)
7. 搜索平台(用户多选):
根据用户选择的国家/地区,推荐该地区常用平台,让用户多选想搜哪些。
全球通用平台(所有地区默认推荐):
- LinkedIn(linkedin.com/jobs)
- Indeed(indeed.com,有各国子站)
- Google Jobs
- Glassdoor
分地区平台清单(必须先读取再推荐):
- 用户找中国大陆的工作 → 必须先读取 references/platforms-cn.md
- 用户找海外的工作(澳大利亚/新西兰/美国/加拿大/英国/欧洲/日本/韩国/新加坡/东南亚)→ 必须先读取 references/platforms-global.md 的对应地区部分(内含推荐对话示例)
需要登录的平台处理(中国大陆平台为主):
- 用户多选中包含 Boss 直聘、拉勾等需登录平台 → 立刻读取 references/login-platforms.md 并引导登录态流程,不要等到搜索阶段才处理。登录态数据是实时在线的,质量远高于 WebSearch 快照,应优先走通
- 引导顺序按当前环境的能力探测(详见 login-platforms.md):有浏览器控制 MCP(Chrome MCP / Playwright MCP 等)→ 方式 A;没有 → 方式 B(cookies);都不行 → 方式 C(手动搜索 + AI 辅助)
- 主动询问:「你在 Boss 直聘上有没有已经建好的岗位分组?有的话我可以直接从分组里提取全部岗位,数据量会大很多(通常 300-500 个)」
- 用户没选任何登录平台 → 跳过整个登录态流程,直接走免登录 WebSearch
无简历模式
如果用户没有简历,通过以下问题快速了解:
- 你的职业方向是什么?(比如:产品经理、前端开发、运营等)
- 你有几年相关经验?
- 你最擅长的 2-3 项技能是什么?
- 你想在哪个城市找工作?
---
搜索执行
搜索目标
一轮搜索至少产出 50-100 个匹配岗位。 宁多勿少,先大量搜集再用 AI 筛选匹配度。
第一步:关键词爆炸展开
从用户的目标方向出发,语义展开为 10-20 组搜索关键词。不要只搜精确岗位名,要覆盖所有可能的表述方式。
展开规则:
1. 岗位名称变体:同一个岗位在不同公司叫法不同
- 例:AI 产品经理 → AI PM、AI 产品、AI 应用产品经理、AI 产品负责人、AIGC 产品经理、大模型产品经理、AI 产品运营
2. 中英文互译:很多公司用英文岗位名
- 例:AI Native Builder → AI 原生开发、AI-first Engineer
3. 上下游岗位:相关但不完全相同的岗位,用户可能也感兴趣
- 例:目标是 AI 产品经理 → 也搜 AI 项目经理、AI 策略、AI 运营、Prompt Engineer、AI 解决方案
4. 技能导向搜索:用核心技能反向搜岗位
- 例:Claude Code、LLM、Agent、RAG、Prompt Engineering + 招聘
5. 行业细分:不同行业对同一岗位的叫法
- 例:AI 产品 → 智能产品、数智化产品、算法产品
关键词组合示例(假设目标方向是 AI 产品经理):
第 1 组:AI 产品经理 + 城市
第 2 组:AI PM + 城市
第 3 组:AIGC 产品经理 + 城市
第 4 组:大模型 产品经理 + 城市
第 5 组:AI Native + 城市 + 招聘
第 6 组:AI Agent + 产品 + 城市
第 7 组:Prompt Engineer + 城市
第 8 组:AI 应用 + 产品 + 城市
第 9 组:AI 运营 + 城市
第 10 组:AI 项目经理 + 城市
第 11 组:智能产品 + 城市 + 招聘
第 12 组:LLM + 产品 + 城市
第 13 组:AI 解决方案 + 城市
第 14 组:Claude/ChatGPT + 招聘 + 城市(技能反搜)
第 15 组:AI 产品实习/AI产品助理 + 城市(如果用户接受)生成关键词后,先给用户过目确认,再开始搜索。
第二步:按平台执行搜索
每组关键词 × 多个平台,并行搜索,最大化覆盖。
免登录平台(默认启用)
根据用户选择的平台,使用 WebSearch 搜索。
执行搜索前,必须先根据用户选择的地区读取对应的搜索语法文件:
- 中国大陆 → 必须先读取 references/platforms-cn.md(含主流平台、企业官方招聘、微信公众号、垂直社区的搜索指令)
- 海外地区 → 必须先读取 references/platforms-global.md 的对应地区部分(含各地区搜索指令、工签筛选语法、社交平台招聘)
全球通用平台(所有地区都搜):
site:linkedin.com/jobs 岗位名 城市(LinkedIn)site:indeed.com 岗位名 城市(Indeed,自动匹配各国子站)site:glassdoor.com 岗位名 城市(Glassdoor)
搜索语言策略:
- 中国大陆:中文关键词为主
- 海外地区:英文关键词为主,同时用中文搜一轮(覆盖华人社群招聘帖)
- 日本:英文 + 日文都搜
搜到的缓存摘要虽然不完整,但足够判断岗位是否值得深入查看。
搜索效率优化
- 并行搜索:多组关键词同时发起 WebSearch,不要串行等待
- 去重合并:同一岗位出现在多个平台,合并保留信息最全的
- 时效过滤(强制):WebSearch 搜到的是搜索引擎快照,岗位可能早已下架,必须按以下规则处理:
- 每组搜索关键词追加时间限定符
after:YYYY-MM-DD(日期取今天往前 30 天),从源头过滤过期快照 - 搜索结果摘要中能看到近期日期信号(如「3 days ago」「X天前发布」「2026-XX-XX」)的岗位,才有资格进入 🟢;看不到任何日期信号的最多进入 🟡,并标注「⏳ 时效未确认」
- 通过登录态实时抓取(Chrome MCP / cookies)拿到的岗位是平台在线数据,默认在招,不适用以上规则
- 每组关键词至少看前 2 页结果,不要只看第 1 条
需登录平台(用户选中时启用,优先级高于 WebSearch)
用户在平台选择环节选中了 Boss 直聘、拉勾等需登录平台时,必须先读取 references/login-platforms.md,获取完整操作教程,包括三种方式:浏览器控制 MCP 辅助(关键词搜索 + 分组批量提取与 AI 智能筛选)、Cookies 导入、用户手动搜索 + AI 辅助。三种方式按环境能力探测依次降级,不绑定特定 AI 产品。
登录态拿到的岗位是实时在线数据,作为结果主体;WebSearch 快照作为补充扩量。
---
质检复核(subagent)
搜索完成、初步分级后,必须启动一个独立的质检 subagent,在输出给用户之前做最后一轮把关。
为什么需要这一步
搜索阶段处理的数据量大(30+ 平台、上百条结果),AI 在批量处理时容易出现:
- 标题看着像但实际不匹配的岗位被标成 🟢
- 搜索摘要信息不全,靠猜打分
- 同一岗位换了标题没去重
质检 agent 只专注做一件事——验证匹配质量,不受搜索过程的上下文干扰。
质检 agent 的工作内容
输入: 初步分级后的全部岗位列表 + 用户简历核心画像(目标方向、核心技能、经验年限、硬性要求)
逐条检查 🟢 高度匹配的岗位(全量检查):
1. 岗位标题/关键词是否与用户的目标方向直接相关? 2. 岗位要求的核心技能,用户简历里是否至少覆盖 60%? 3. 经验年限要求是否在用户的合理范围内(±2 年)? 4. 用户的硬性要求(城市、企业类型、双休等)是否满足? 5. 链接是否有效(不是 404 页面、不是过期岗位的缓存)?
不满足以上任意一条 → 降级到 🟡 或 🟠,并标注降级原因。
时效验证(只针对 WebSearch 来源的岗位,强制执行):
- 🟢 岗位全量验证:访问岗位链接,确认页面仍在招聘中。页面出现岗位下架标志语(清单见 references/platforms-cn.md 或 references/platforms-global.md 的「岗位下架标志语」部分)→ 直接移除,并在质检摘要中计数
- 🟡 岗位不主动验证,统一标注「⏳ 时效未确认」,用户对某条感兴趣时再单独验证
- 并行验证(强制):链接验证必须 3-5 个一批并行发起 WebFetch,禁止逐条串行等待——串行是质检耗时过长的主要原因
- 通过登录态实时抓取(浏览器 MCP / cookies)的岗位跳过此步——平台在线数据默认在招
抽查 🟡 基本匹配的岗位(抽 20%-30%):
- 有没有被低估的好岗位?标题不太像但实际很匹配 → 升级到 🟢
- 有没有完全不相关的混进来了 → 降级到 🟠 或直接移除
去重复核:
- 同一公司 + 同一岗位名称(或高度相似的名称)→ 只保留信息最全的一条
- 不同平台的同一岗位 → 合并,来源平台标注多个
数据完整性检查:
- 薪资、城市、公司名这些关键字段是否为空?空的标注「未标注」而不是留空白
- 链接是否完整可点击?
质检结果
质检完成后,生成一份简短的质检摘要(内部使用,不展示给用户):
质检摘要:
- 原始 🟢 18 个 → 质检后 🟢 14 个(4 个降级到 🟡)
- 原始 🟡 35 个 → 抽查 10 个,2 个升级到 🟢,1 个降级到 🟠
- 时效验证:移除 2 个已下架岗位
- 去重:移除 3 个重复岗位
- 最终:🟢 16 / 🟡 32 / 🟠 27,共 75 个质检通过后,再进入下方的输出环节。
---
输出格式
岗位列表
搜索完成并通过质检后,按匹配度排序输出:
📋 为你找到 78 个匹配岗位(搜索了 15 组关键词 × 12 个平台)
━━━━━━━━━━━━━━━━━━━━━━
🟢 高度匹配(18 个)
1. AI 产品经理 — 字节跳动
📍 北京 · 💰 30-50K · 📅 3天前发布
🏷️ 大厂 · 双休 · 外企
匹配点:Claude Code 经验、AI 工作流设计、产品全流程
🔗 链接
2. AI Native Builder — XX 科技
📍 深圳 · 💰 25-40K · 📅 1天前发布
🏷️ 创业公司 · 弹性工作 · 远程友好
匹配点:OpenClaw 经验、MCP 集成、开源项目
🔗 链接
... (展示全部 18 个,每个附匹配点)
━━━━━━━━━━━━━━━━━━━━━━
🟡 基本匹配(35 个)
19. AIGC 产品经理 — 某公司 · 📍 深圳 · 💰 20-35K · 🔗 链接
20. AI 运营经理 — 某公司 · 📍 广州 · 💰 15-25K · 🔗 链接
...
🟠 可以尝试(25 个)
54. 智能产品经理 — 某公司 · 📍 广州 · 🔗 链接
...
━━━━━━━━━━━━━━━━━━━━━━
💡 下一步:
- 对哪个岗位感兴趣?我可以帮你做详细的匹配分析(/resume-match)
- 想投递?我可以帮你写针对性的打招呼消息(/cover-letter)
- 想准备面试?可以来一轮模拟(/mock-interview)
- 想看 🟡/🟠 某个岗位的详细匹配点?告诉我编号
- 说「换个方向搜」或「加上 XX 城市」可以追加搜索输出规则
- 每个岗位标注匹配度等级:🟢 高度匹配 / 🟡 基本匹配 / 🟠 可以尝试
- 列出具体的匹配点(简历中哪些经历/技能与 JD 对应)
- 附上岗位链接,方便用户直接查看
- 按匹配度排序,最匹配的排最前面
- 目标 50-100 个岗位,分批展示:
- 第一批:🟢 高度匹配的全部列出(预计 10-20 个),每个附 2-3 个匹配点
- 第二批:🟡 基本匹配的列出标题 + 公司 + 薪资 + 链接(预计 20-40 个)
- 第三批:🟠 可以尝试的列出标题 + 链接(预计 20-40 个)
- 用户说「继续」或「看下一批」时,展开下一批的详细信息
Excel 导出
搜索完成后,主动询问用户是否需要导出 Excel 表格。
用户需要导出或追加 Excel 时,必须先读取 references/excel-export.md,获取 14 列表格定义、签证/工签列标注规则、Excel 格式要求和追加模式的代码规范。
搜不到或搜到很少时
- 主动建议调整搜索条件:放宽城市范围、尝试相近岗位名称、降低薪资要求
- 给出替代搜索关键词让用户自己在招聘平台试试
---
迭代与追加搜索
用户可以要求:
- 「换个方向搜」→ 调整关键词重新搜索
- 「加上 XX 城市」→ 扩大搜索范围
- 「只看 XX 公司」→ 定向搜索
- 「薪资再高一点」→ 调整薪资筛选
- 「再搜搜 Boss 直聘」→ 切换到需登录平台的流程
- 「把 Boss 直聘分组的也加进去」→ 通过 Chrome MCP 读取用户的 Boss 直聘分组,筛选后追加到已有 Excel
- 「导出 Excel」→ 生成/追加 Excel 文件
---
Skill 间协同
- 衔接 resume-match:用户选中岗位后,获取完整 JD,自动进行匹配度分析
- 衔接 cover-letter:基于选中的岗位 JD,生成针对性的求职信或打招呼消息
- 衔接 mock-interview:基于选中的岗位 JD,进行模拟面试
- 从 resume-craft 衔接:用户刚做完简历,想看看有什么合适的岗位
- 独立使用:用户直接提供简历或口述背景
---
特殊场景
用户想批量投递
搜到岗位后,用户可以选多个,AI 批量生成每个岗位的打招呼消息(调用 cover-letter 的场景 B 逻辑),一次性输出。
用户想持续追踪
告诉用户:目前不支持自动定时搜索,但可以随时再跑一次 /job-hunt,AI 会用新的搜索结果。
搜索结果有重复
同一岗位在多个平台出现时,合并去重,保留信息最全的那条。
Excel 导出规范
用户需要导出或追加 Excel 表格时,必须读取本文件。
使用 openpyxl 生成 .xlsx 文件(需要先确认用户已安装 pip3 install openpyxl),包含以下 14 列:
| 列名 | 说明 |
|---|---|
| 编号 | 序号 |
| 匹配度 | 🟢高度匹配 / 🟡基本匹配 / 🟠可以尝试 |
| 岗位名称 | 职位标题 |
| 公司 | 公司名称 |
| 城市 | 工作地点 |
| 薪资 | 薪资范围 |
| 经验要求 | 年限要求 |
| 发布日期 | 摘要/页面中的发布时间(如「3天前」「2026-06-01」);登录态实时抓取的填「实时在招」;确认不了的填「⏳未确认」 |
| 匹配点 | 简历中匹配的技能/经历 |
| 签证/工签 | ✅ 提供担保 / ❓ 未标注 / ❌ 仅限本地身份(海外岗位专用,中国大陆岗位留空) |
| 标签 | 双休/外企/大厂/远程 等 |
| 来源平台 | Seek AU/LinkedIn/Indeed 等 |
| 链接 | 岗位详情 URL |
| 备注 | 额外信息(如"急招"、"明确写了vibe coding"等) |
签证/工签列的数据来源:
- JD 中明确写了
visa sponsorship、sponsor、h1b、skilled worker visa、482 visa、ビザサポート等 → 标注 ✅ - JD 中写了
must have working rights、permanent resident only、citizen only等 → 标注 ❌ - JD 中未提及签证相关信息 → 标注 ❓
- 中国大陆岗位:此列留空(不适用)
Excel 格式要求:
- 表头行:加粗白色字体 + 蓝色背景(
#4472C4)+ 居中 - 🟢 行:浅绿底色(
#E8F5E9) - 🟡 行:浅黄底色(
#FFF8E1) - 🟠 行:浅橙底色(
#FFF3E0) - 链接列:蓝色下划线字体
- 冻结首行 + 启用自动筛选器
- 列宽:
[5, 10, 40, 18, 18, 16, 10, 12, 36, 14, 18, 14, 32, 30] - 文件名:
岗位搜索结果_国家/城市_日期.xlsx(海外用户包含国家,如岗位搜索结果_AU-Sydney_20260609.xlsx)
支持追加模式:
如果已有 Excel 文件(如用户要求"把 Boss 直聘分组的也加进去"),使用 load_workbook 追加:
from openpyxl import load_workbook
wb = load_workbook("已有文件.xlsx")
ws = wb.active
# 编号从 ws.max_row 开始递增
# append 新行后,逐行设置填充色和字体
# 更新 auto_filter.ref 的范围
wb.save("已有文件.xlsx")追加时注意:
- 编号接续已有最大编号
- 去重:检查岗位名称 + 公司名是否已存在,避免重复添加
- 来源平台标注区分(如 "Boss直聘·分组" vs "Boss直聘" vs "猎聘")
需登录平台搜索教程(Boss 直聘、拉勾等)
用户选中 Boss 直聘、拉勾等需登录平台时,必须读取本文件。
环境能力探测(先做这一步)
三种方式按当前 AI 环境的能力依次选择,按能力探测,不绑定特定 AI 产品(Claude Code、Codex 或其他支持 MCP 的 agent 都适用):
1. 当前环境有浏览器控制工具(Claude in Chrome 插件、Codex for Chrome 插件、Playwright MCP、Chrome DevTools MCP 等)→ 方式 A(体验最好,平台无感知) 2. 没有浏览器控制,但能执行 Python/网络请求 → 方式 B(cookies 导入) 3. 都没有 → 方式 C(用户手动搜索 + AI 辅助整理)
禁止默默降级:探测不到浏览器控制工具时,不要直接进入方式 B,必须先告诉用户可以装浏览器插件升级体验,让用户二选一:
「我当前没有浏览器控制权限。两个选择:
A. 装个浏览器插件(推荐,一劳永逸):装好后我能直接在你登录的浏览器里搜索,实时数据、无风控风险
- Claude Code 用户 → Chrome 商店搜「Claude in Chrome」
- Codex 用户 → Chrome 商店搜「Codex」(Codex for Chrome 官方插件)
- 其他 agent → 配置 Playwright MCP 等浏览器控制 MCP
B. 不想装 → 走 cookies 导入,需要装 Cookie-Editor 插件复制一段内容给我,有小概率触发平台风控
>
选哪个?」
合规边界:方式 A/B 都是用户访问自己有权查看的账号数据,不涉及破解平台反爬机制(伪装机器人、破解验证码等一律不做)。
方式 A:浏览器控制 MCP 辅助(推荐)
如果当前环境有浏览器控制工具: 1. 确认用户已在浏览器中登录目标平台 2. 通过浏览器控制工具在用户浏览器中操作(以下以 Chrome MCP 工具名为例,其他浏览器 MCP 用对应的导航/点击/执行 JS 工具即可) 3. 支持两种搜索模式:
模式 1:关键词搜索
- 导航到搜索页(如
https://www.zhipin.com/web/geek/jobs?query=关键词&city=城市代码) - 等待页面加载(
wait(3)) - 用
get_page_text提取岗位列表
模式 2:用户已有分组搜索(推荐,数据量大)
Boss 直聘等平台允许用户保存岗位分组。如果用户已有分组:
步骤 1:导航到分组
- navigate 到 https://www.zhipin.com/web/geek/jobs
- wait(2) 等页面加载
- find 查找用户指定的分组名称(如"软件项目经理")
- left_click 点击分组标签
步骤 2:滚动加载全部岗位
Boss 直聘是懒加载的,必须反复滚动到页面底部才能加载全部岗位:
javascript_exec:
// 反复滚动直到没有新岗位加载
let prev = 0;
function scrollAll() {
return new Promise(resolve => {
const interval = setInterval(() => {
window.scrollTo(0, document.body.scrollHeight);
const current = document.querySelectorAll('.job-card-wrap').length;
if (current === prev) {
clearInterval(interval);
resolve(current);
}
prev = current;
}, 2000);
});
}
scrollAll()
注意:一个分组可能有 300-500+ 个岗位,需要多轮滚动(每轮加载约 15 个)。
步骤 3:批量提取岗位数据
用 JavaScript 一次性提取所有岗位卡片的结构化信息:
javascript_exec:
const cards = document.querySelectorAll('.job-card-wrap');
const jobs = [];
cards.forEach(c => {
const footerText = c.querySelector('.job-card-footer')?.textContent?.trim() || '';
jobs.push({
title: c.querySelector('.job-name')?.textContent?.trim(),
salary: c.querySelector('.job-salary')?.textContent?.trim(),
company: c.querySelector('.boss-name')?.textContent?.trim(),
location: footerText.split(/\s+/).slice(1).join(' '),
exp: c.querySelector('.tag-list li:first-child')?.textContent?.trim(),
tags: Array.from(c.querySelectorAll('.tag-list li'))
.slice(1).map(s => s.textContent.trim()).join(','),
link: c.querySelector('a[href*="job_detail"]')?.href
});
});
window.__jobs = jobs;
**选择器会过时**:招聘网站改版频繁。如果上面选择器取到的字段大量为空,用 `c.textContent` 全文提取后用正则/AI解析做兜底,而不是交出一堆空值。具体做法:把每张卡片的 `textContent` 整段交给 AI,按「岗位名称 | 薪资 | 公司 | 城市 | 经验」格式解析。
数据量大时(41K+ 字符),需要分批读取:slice(0,75)、slice(75,150)...
步骤 4:AI 智能筛选
提取后不要全部放入 Excel,要根据用户简历和目标方向做匹配筛选。
筛选逻辑是**动态生成**的,不是固定关键词。根据以下流程判断:
1. **从用户简历提取核心画像**:
- 目标岗位类型(产品/开发/设计/运营/销售...)
- 核心技能关键词(如 Python、Figma、投放、用户增长...)
- 行业背景(教育/金融/电商/医疗...)
- 语言优势(英语/日语/粤语...)
- 经验年限
2. **生成保留规则**(标题或标签命中任一即保留):
- 与目标岗位类型直接相关的职位名称
- 与核心技能关键词匹配的岗位
- 符合行业背景的岗位
- 符合语言优势的岗位(如英语好 → 保留外企/海外相关)
3. **生成排除规则**(标题明确属于其他职能的跳过):
- 与用户目标方向**完全不同职能**的岗位(如用户找产品,则排除纯开发/纯算法/纯运维;用户找开发,则排除纯销售/纯行政)
- 纯实习岗(除非用户接受实习)
- 用户明确排除的行业或公司类型
4. **灰色地带处理**(标题模糊、看不出是否匹配的):
- 优先保留,放入 🟠 可以尝试
- 宁可多给用户看几个不太匹配的,也不要漏掉真正合适的方式 B:Cookies 导入
引导用户导出 cookies:
需要你提供 Boss 直聘的登录 cookies,这样我才能帮你搜索。步骤:
>
1. 在 Chrome 里打开 Boss 直聘并确保已登录
2. 安装浏览器插件 Cookie-Editor(Chrome 商店可搜到)
3. 打开 Boss 直聘页面,点击 Cookie-Editor 图标
4. 点击「Export」→「Header String」,复制内容发给我
>
⚠️ 提醒:cookies 我只在本次搜索中临时使用,不会保存。但 Boss 直聘等平台风控较严,浏览器外的请求频率太高有小概率触发账号异常验证(需要重新登录或手机验证),建议控制请求频率、适度使用。
拿到 cookies 后,使用 Python 脚本发起请求:
import requests
def search_zhipin(keywords, city, cookies_str):
headers = {
'User-Agent': 'Mozilla/5.0 ...',
'Cookie': cookies_str
}
# 构造搜索 URL,发起请求,解析返回的 HTML/JSON
# 提取岗位名称、公司、薪资、链接等信息方式 C:用户手动搜索 + AI 辅助
如果用户不想提供 cookies 也没有 Chrome 插件: 1. 给用户推荐搜索关键词组合 2. 用户自己在 Boss 直聘搜索 3. 把感兴趣的 JD 截图或文字发给 AI 4. AI 进行匹配度分析 + 写打招呼消息
中国大陆 — 招聘平台清单与搜索语法
用户在中国大陆找工作时,推荐平台和执行搜索前必须读取本文件。
平台清单(推荐给用户多选)
- Boss 直聘(zhipin.com)
- 猎聘(liepin.com)
- 拉勾(lagou.com)
- 智联招聘(zhaopin.com)
- 前程无忧(51job.com)
- 牛客网内推帖(nowcoder.com)
- V2EX 招聘帖
- 微信公众号招聘推文
需要登录的平台(Boss 直聘、拉勾等)数据更全,用户指定时按 SKILL.md 指引读取 references/login-platforms.md。
免登录搜索指令(WebSearch)
中国大陆平台:
site:zhipin.com 岗位名 城市(Boss 直聘)site:lagou.com 岗位名 城市(拉勾)site:liepin.com 岗位名 城市(猎聘)site:51job.com 岗位名 城市(前程无忧)site:zhaopin.com 岗位名 城市(智联招聘)
中国大陆专属——企业官方招聘:
岗位名 招聘 城市(覆盖各公司官网、招聘页)岗位名 城市 "加入我们"(企业招聘页常用语)岗位名 城市 "社会招聘" OR "社招"
中国大陆专属——微信公众号招聘推文:
site:mp.weixin.qq.com 岗位名 招聘 城市(Google 收录的公众号文章)- 搜狗微信搜索:
weixin.sogou.com搜索岗位名 招聘 城市(专门搜公众号的搜索引擎) - 很多大厂(字节、腾讯、阿里、百度等)的招聘公众号会发岗位推文,这类结果优先级高
中国大陆专属——垂直社区:
site:nowcoder.com 岗位名 城市 内推(牛客网内推帖)site:v2ex.com 岗位名 招聘(V2EX 招聘帖)site:juejin.cn 岗位名 招聘(掘金社区)
岗位下架标志语(质检时效验证用)
访问岗位链接后,页面出现以下文案说明岗位已下架/过期,应直接移除:
- Boss 直聘:「职位已下线」「该职位已停止招聘」
- 拉勾:「该职位已下线」「职位已停止招聘」
- 猎聘:「职位已结束」「该职位已暂停招聘」
- 前程无忧:「很抱歉,你选择的职位目前已经暂停招聘」
- 智联招聘:「职位已下线」「该职位已暂停」
- 通用信号:页面 404、自动跳转回搜索首页/职位列表页、岗位详情内容为空
注意:以上文案可能随平台改版变化,判断标准是「页面是否还在正常展示该岗位的完整 JD 和投递入口」,而不是死磕字面匹配。
海外地区 — 招聘平台清单与搜索语法
用户在海外找工作时,推荐平台和执行搜索前必须读取本文件中用户选择的地区部分,无需通读全文。
平台清单(分地区,推荐给用户多选)
澳大利亚:
- Seek Australia(seek.com.au)— 澳洲最大求职平台
- Jora(jora.com)
- Indeed Australia(au.indeed.com)
- Facebook Jobs / Groups — 澳洲很活跃
新西兰:
- Seek New Zealand(seek.co.nz)— 独立站点,与澳洲 Seek 分开
- Trade Me Jobs(trademe.co.nz)— 新西兰本土最大
- Indeed New Zealand
美国 / 加拿大:
- ZipRecruiter(ziprecruiter.com)
- Monster(monster.com)
- Dice(dice.com)— 科技岗专用
- USAJobs(usajobs.gov)— 美国政府岗位
- AngelList / Wellfound — 创业公司
英国:
- Reed(reed.co.uk)
- Totaljobs(totaljobs.com)
- CV-Library(cv-library.co.uk)
- Indeed UK(uk.indeed.com)
欧洲(德语区):
- StepStone(stepstone.de)
- XING(xing.com)— 德语区 LinkedIn
日本:
- Daijob(daijob.com)— 面向外国人
- GaijinPot Jobs(jobs.gaijinpot.com)— 面向外国人
- Rikunabi(rikunabi.com)
韩国:
- Saramin(saramin.co.kr)— 韩国最大求职平台
- JobKorea(jobkorea.co.kr)— 韩国第二大
- WorkNet(work.go.kr)— 韩国政府官方平台
- People'n Job(peoplenjob.com)— 面向外国人
新加坡:
- MyCareersFuture(mycareersfuture.gov.sg)— 政府官方平台
- JobStreet Singapore(jobstreet.com.sg)
东南亚(马来西亚/菲律宾/印尼等):
- JobStreet(jobstreet.com)— 覆盖多个东南亚国家
- JobsDB(jobsdb.com)— 港澳及东南亚
对话示例:
AI:「你在澳大利亚找工作,以下平台比较常用,想搜哪些?(可多选,或说"全搜")」
1. Seek Australia(澳洲最大)
2. LinkedIn
3. Indeed Australia
4. Jora
5. Glassdoor
6. Facebook Jobs/Groups
>
用户:「1、2、3」
免登录搜索指令(WebSearch,分地区)
澳大利亚 / 新西兰:
site:seek.com.au 岗位名 城市(Seek 澳洲)site:seek.co.nz 岗位名 城市(Seek 新西兰,独立站点)site:trademe.co.nz/a/jobs 岗位名 城市(Trade Me Jobs,新西兰本土)site:jora.com 岗位名 城市(Jora)site:au.indeed.com 岗位名 城市(Indeed 澳洲)- 如需工签筛选:追加
"visa sponsorship" OR "sponsor"
美国 / 加拿大:
site:ziprecruiter.com 岗位名 城市(ZipRecruiter)site:monster.com 岗位名 城市(Monster)site:dice.com 岗位名(Dice,科技岗专用)site:usajobs.gov 岗位名(USAJobs,美国政府岗位)site:wellfound.com 岗位名(AngelList/Wellfound,创业公司)- 如需工签筛选:追加
"h1b" OR "visa sponsorship" OR "work authorization"
英国:
site:reed.co.uk 岗位名 城市(Reed)site:totaljobs.com 岗位名 城市(Totaljobs)site:cv-library.co.uk 岗位名 城市(CV-Library)- 如需工签筛选:追加
"visa sponsorship" OR "skilled worker visa" OR "sponsorship licence"
欧洲(德语区):
site:stepstone.de 岗位名 城市(StepStone)site:xing.com 岗位名 城市(XING)
日本:
site:daijob.com 岗位名(Daijob,面向外国人)site:jobs.gaijinpot.com 岗位名(GaijinPot Jobs,面向外国人)site:rikunabi.com 岗位名(Rikunabi)- 如需工签筛选:追加
"visa support" OR "ビザサポート"
韩国:
site:saramin.co.kr 岗位名(Saramin,韩国最大)site:jobkorea.co.kr 岗位名(JobKorea)site:work.go.kr 岗位名(WorkNet,政府官方)site:peoplenjob.com 岗位名(People'n Job,面向外国人)- 如需工签筛选:追加
"visa" OR "비자 지원" OR "외국인 가능"
新加坡:
site:mycareersfuture.gov.sg 岗位名(MyCareersFuture,政府官方)site:jobstreet.com.sg 岗位名(JobStreet 新加坡)
东南亚(马来/菲律宾/印尼等):
site:jobstreet.com 岗位名 国家(JobStreet)site:jobsdb.com 岗位名 城市(JobsDB,港澳及东南亚)
社交平台招聘(海外地区可选):
site:facebook.com/jobs 岗位名 城市(Facebook Jobs)site:reddit.com 岗位名 hiring 城市(Reddit 招聘帖)
岗位下架标志语(质检时效验证用)
访问岗位链接后,页面出现以下文案说明岗位已下架/过期,应直接移除:
- LinkedIn:「No longer accepting applications」
- Indeed:「This job has expired」「This job is no longer available」
- Seek(澳/新):「This job is no longer advertised」
- Glassdoor:「This job is no longer available」
- ZipRecruiter / Monster 等:「This job is unavailable」「Job closed」
- 通用信号:页面 404、自动跳转回搜索页、岗位详情内容为空
注意:以上文案可能随平台改版变化,判断标准是「页面是否还在正常展示该岗位的完整 JD 和投递入口」,而不是死磕字面匹配。