"批量发现、整理和持续维护求职岗位清单。根据用户的简历、目标方向或种子 JD,搜索 LinkedIn 与公开网页,去重并建立尽量完整的候选池,用证据区分已核验事实和方向性推断,最后生成可搜索、可筛选的单文件 HTML job-hunt-skill 报告。用户说‘帮我批量找岗位’、‘整理职位清单’、‘使用 job-hunt-skill’、‘根据简历搜工作’、‘把这些 LinkedIn 职位做成表格’、‘持续跟踪岗位’时必须使用。只发现和分析岗位;绝不自动申请、处理登录凭据或绕过访问限制。"
Resources
6Install
npx skillscat add yanliudesign/offer-toolkit-skill/job-hunt-skill Install via the SkillsCat registry.
job-hunt-skill
把“帮我看看有哪些工作”变成一份可以持续搜索、比较和更新的职位数据库,而不是一次性的推荐答案。
简历 / 目标方向 / 种子 JD
↓
搜索画像 → 查询矩阵 → 公开候选池 → 去重与证据分层
↓
完整 job-hunt-skill HTML 报告 → 搜索 / 筛选 / 打开职位 → 选择深评对象职责边界
- 负责批量发现、采集公开信息、去重、初筛、证据分层、排序和生成职位清单。
- 默认保留所有通过硬条件的唯一职位;不要擅自压缩成 5–10 个 shortlist。
- 不自动点击 Apply,不填写表单,不发送消息,不代表用户投递。
- 不索取或处理密码、验证码、Cookie、session token 或其他登录凭据。
- 遇到登录墙、验证码、HTTP 429、robots 限制时停止该访问路径;切换到公开公司招聘页、公开搜索结果或可点击查询链接,不尝试绕过。
- 不把职位发现扩写成完整单岗位 Offer Strategy。用户选中岗位后再交给
job-description-skill。
0. 判断输入是否足够
优先使用用户已经提供的材料,不重复索取:
- 简历:PDF、Word、HTML 或纯文本均可。
- 目标:title、level、领域、地点、工作方式。
- 可选种子 JD:用于补充岗位语义,不得反向伪造简历能力。
- 可选已有链接:用于合并、补充或更新旧清单。
若缺少会显著改变结果集的信息,一次只问一个问题,顺序如下:
- 目标 title / level
- 地点与 remote / hybrid / relocation
- 时间范围
- 必须排除的行业、公司、合同类型或签证门槛
默认值为最近 30 天、full-time、目标 level 上下浮动一级。最终报告必须显式写出默认值。
1. 建立搜索画像
只从用户材料提取有证据的能力,形成:
target_titles: []
adjacent_titles: []
level: ""
locations: []
workplace: []
date_posted: "30d"
employment_types: ["full-time"]
core_capabilities: []
domains: []
company_preferences: []
exclusions: []
seed_signals: []向用户回显不超过 8 行的画像。若用户没有纠正,继续执行,不要求二次确认。
2. 生成互补查询矩阵
生成 6–12 组短查询,每组只放 1–2 个判别词:
- Exact title:目标 title + 地点
- Adjacent title:相邻 title + 地点
- Capability-led:title + 核心能力
- Domain-led:title + 领域
- Scope-led:title + platform / growth / 0-to-1 / enterprise 等 scope
- Company-led:用户偏好公司或相邻公司 + title
记录每组 query、URL、执行时间和来源。不要把所有同义词塞进一个查询,否则会系统性漏岗。
3. 发现公开职位
按以下优先级使用可访问来源:
- 具体职位页或公司官方招聘页
- LinkedIn 可公开访问的职位页与搜索结果
- 搜索引擎中的
site:linkedin.com/jobs/view结果 - 其他公开招聘页面
每条候选尽可能采集:
- title
- company
- canonical URL / job id
- location 与 workplace
- posted date / age
- salary,仅页面明确展示时记录
- JD 可见程度:full / partial / unavailable
- source 与 checked_at
按 canonical job id / URL 去重。没有 id 时,使用 normalized company + title + location,并保留证据更完整、更新时间更新的记录。
停止条件:
- 查询矩阵全部跑完;或
- 每组已查看前 2 页 / 前 25 条;或
- 当前来源触发访问限制。
不要为了凑数量保留明显违反地点、level、employment type 或硬门槛的岗位。
4. 严格区分事实与推断
读取 references/evidence-ranking.md,为每条字段标记证据状态:
verified:职位页或官方页直接出现partial:公开摘要可见,但完整 JD 不可见inferred:根据 title、公司或邻近信号推断unknown:没有可靠信息
未知字段留空或显示“待核验”。绝不补写薪资、发布时间、工作方式、签证政策、岗位状态或 JD 要求。
5. 排序,但不删掉完整候选池
先通过硬条件,再按两个层次排序:
- 已读取完整 JD 的岗位:用
0.60 Must Have + 0.20 Nice to Have + 0.20 Hidden Signal Fit计算匹配区间。 - JD 不完整的岗位:只做方向性排序,不显示伪精确 match score。
排序顺序:证据完整度 → 匹配强度 → 发布时间 → 与目标方向的接近度。缺失发布时间不能自动视为旧岗位。
内部可保留优先级字段用于排序和筛选,但默认不要在职位行显示 Tier A / Tier B 标签。用户要求显示时才显示。
6. 生成单文件 HTML
默认生成 HTML,而不是 Markdown。读取 assets/report-spec.md 并遵守其数据、表格和交互契约。
文件名:job-hunt-skill-{candidate-or-topic}-{YYYYMMDD}.html
默认保存到用户指定目录;未指定时保存到当前工作目录。生成后打开本地文件供用户检查。
报告必须包含:
- 搜索画像、生成时间、来源与证据说明
- 完整唯一职位数、深度核验数
- 搜索框和快速筛选
- 职位、公司、领域标签、推荐理由、主要 Gap
- 可核验的发布日期、地点 / 工作方式、薪资、匹配度
- 指向具体职位的打开链接
- 查询日志和访问限制说明
不要在页面里暴露本地简历全文、登录信息或无关个人数据。
7. 验证后再交付
至少完成以下检查:
- HTML 内联 JavaScript 语法有效。
- 渲染职位行数等于去重后的数据行数。
- 每行表格列数一致,具体职位链接有效成形。
- 搜索能命中 title、company、domain、reason 与 gap。
- “待核验”字段没有被自动补成事实。
- 若有领域标签,标签紧邻公司名并可被搜索。
- 页面不显示 Tier A / Tier B badge,除非用户明确要求。
有浏览器测试工具时,实际加载页面并验证 DOM;没有时至少做脚本语法检查和静态结构检查。
8. 后续更新
用户提供旧 job-hunt-skill 报告时:
- 解析现有职位 id / URL。
- 只新增新发现职位,合并更完整证据。
- 不因为暂时访问不到就断言岗位关闭。
- 保留原始
first_seen,更新last_checked。 - 在报告中列出新增、更新、待复核数量。
交付口径
简要告诉用户:保存路径、唯一职位数、深评数量、访问限制和验证结果。不要把整张职位表复制回聊天。