mcpField
J
job-search

job-search

github.com/infrasity-labs生产力15074 次安装18 周前更新
代码仓库

关于 job-search

job-search 是通过浏览器自动化执行每日求职搜索的技能,依据候选人的简历和偏好评估职位。它记录搜索历史、为高匹配职位查找雇主发布页,并汇总新的高、中匹配职位。

主要功能

  1. 01通过浏览器搜索职位
  2. 02按简历和偏好评估职位
  3. 03记录职位以避免重复
  4. 04查找高匹配职位的雇主链接
  5. 05将结果与 LinkedIn 联系人匹配

适用场景

  1. 01查找符合候选人偏好的职位
  2. 02查看新匹配项并排除历史结果
  3. 03保存高匹配职位的雇主发布页
  4. 04识别匹配公司中的联系人

MCP 相关

工作流使用 Claude in Chrome MCP 工具进行浏览器求职搜索。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill job-search

安装后在 Claude Code 中输入/job-search确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/templates/
job-entry.md
job-history-init.md
matching-rules.md
references/
browser-setup.md
data-directory.md
fit-scoring.md
prerequisites.md
priority-hierarchy.md
scripts/
evaluate-jobs.md

详细介绍

求职搜索技能

优先级层级:如需解决冲突,请参阅 references/priority-hierarchy.md。

使用浏览器自动化进行每日自动求职搜索。

文件结构

scripts/
  evaluate-jobs.md     # Subagent for parallel job evaluation
assets/
  templates/           # Format templates (committed)

数据目录

根据 references/data-directory.md 确定数据目录。


工作流

步骤 0:检查前置条件

确定数据目录,然后根据 references/prerequisites.md 检查前置条件。简历和求职偏好都是必需的。

步骤 1:加载上下文

读取以下文件:

  • DATA_DIR/resume/*(候选人档案)
  • DATA_DIR/preferences.md(求职偏好)
  • DATA_DIR/job-history.md(用于避免重复)
  • DATA_DIR/linkedin-contacts.csv(如果存在——用于匹配人脉)

从以下内容中提取搜索词:

  1. 如果提供了 $ARGUMENTS,则使用其中的内容
  2. 求职偏好中的目标职位
步骤 2:浏览器搜索

根据 references/browser-setup.md 使用 Claude in Chrome MCP 工具,访问 https://hiring.cafe。对每个搜索词输入查询,并应用相关筛选条件(发布日期、地点等)。

**提取搜索结果——重要:**不要在 hiring.cafe 或任何大型职位列表页面上使用 get_page_text。它会返回整个页面的内容,导致上下文窗口被占满。

改用 javascript_tool 提取职位列表,只获取结构化数据:

// Extract visible job listing data from the page
Array.from(document.querySelectorAll('[class*="job"], [class*="listing"], [class*="card"], tr, [role="listitem"]'))
  .slice(0, 50)
  .map(el => el.innerText.trim())
  .filter(t => t.length > 20 && t.length < 500)
  .join('\n---\n')

如果该选择器无法匹配,请截取屏幕截图以了解页面结构,然后针对该网站编写专用的 JS 选择器。目标是只提取职位列表条目(职位名称、公司、地点、薪资)——绝不获取整个页面。

作为备用方案,可使用 read_page(不要使用 get_page_text)并查找职位列表元素。

**注意:**Hiring.cafe 只是我们的搜索工具。不要向用户分享 hiring.cafe 链接——你将在步骤 5 中为匹配度最高的职位找到雇主的直接链接。

步骤 3:评估职位

根据 references/fit-scoring.md 中的标准,结合候选人的简历和求职偏好为每个职位评分。

步骤 4:保存历史记录

将所有职位追加到 DATA_DIR/job-history.md:

## [DATE] - Search: "[terms]"

| Job Title | Company | Location | Salary | Fit | Notes |
|-----------|---------|----------|--------|-----|-------|
| ... | ... | ... | ... | ... | ... |
步骤 5:查找雇主 URL 并保存热门职位

对于每个高匹配度职位:

  1. 点击 hiring.cafe 职位列表,进入雇主实际的招聘页面
  2. 获取该职位发布页的雇主直接 URL
  3. 使用 javascript_tool 提取职位描述内容(例如 document.querySelector('[class*="description"], [class*="content"], article, main')?.innerText)。不要使用 get_page_text——雇主页面通常有很长的页脚、导航栏和相关职位列表,会导致输出膨胀并占满上下文窗口。
  4. 保存到 DATA_DIR/jobs/[company-slug]-[date]/posting.md,并将雇主 URL 放在文件顶部

对于中等匹配度职位,尝试查找雇主 URL,但不要保存完整的职位信息。

如果无法找到某个职位的直接链接,请记下公司名称,以便用户自行查找。绝不要向用户显示 hiring.cafe URL。

步骤 6:展示结果

仅展示之前的历史记录中没有的新高匹配度或中等匹配度职位。

如果已加载 LinkedIn 联系人,则将每个结果的公司名称与 CSV 中的“Company”列交叉匹配。使用模糊匹配(例如,“Google”可匹配“Google LLC”或“Alphabet/Google”)。如果匹配成功,请附上联系人的姓名和职位。

## Top Matches for [DATE]

### 1. [Title] at [Company]
- **Fit**: High
- **Salary**: $XXXk
- **Location**: Remote
- **Why**: [reason]
- **Network**: You know [First Last] ([Position]) at [Company]
- **Apply**: [direct employer URL]

如果该公司没有联系人,则省略“Network”行。

步骤 7:后续步骤

展示结果后,告知用户:

  • 立即申请(调整简历、按需撰写求职信并填写表单):使用 apply 技能
  • 仅调整简历:使用 tailor-resume 技能
  • 仅撰写求职信:使用 cover-letter 技能

**重要:**不要尝试自行调整简历、撰写求职信或填写申请表。这些都是独立技能,各自有专属工作流。如果用户要求你为某个职位执行其中任何操作,请引导他们使用相应的技能命令。

步骤 8:从反馈中学习

如果用户提供反馈,请更新 DATA_DIR/preferences.md:

  • “不要中介机构” → 添加到排除项
  • “优先考虑 AI 公司” → 添加到优先项
  • “最低薪资 $350k” → 更新薪资门槛

响应格式

面向用户的输出应包含以下部分:

  1. 最匹配项 — 使用表格或列表列出匹配度高/中等的职位,并包含公司、职位、匹配度评级、薪资、地点、人脉联系人和直接 URL
  2. 后续步骤 — 建议针对最匹配的职位调整简历并撰写求职信

评论

支持 Markdown