ai-job-search:用 Claude Code 管理求职、筛岗位、改简历和写求职信

ai-job-search 是一个基于 Claude Code 的开源求职申请框架,可以整理个人资料、搜索岗位、评估匹配度、定制 CV 和求职信,并做 ATS 可读性检查。

找工作最麻烦的地方,往往不是“不会投简历”,而是流程太碎:岗位散在不同网站,简历要按岗位改,求职信要重新写,投完还要记录结果。时间一长,很容易变成一堆浏览器标签、几个版本的 PDF 和一个没人维护的表格。

MadsLorentzen/ai-job-search 的思路是把这些动作放进 Claude Code:先建立个人求职档案,再搜索岗位、打分排序、生成定制 CV 和 Cover Letter,最后把申请结果记录回系统。它更像一套求职工作流模板,不是一个点一下就自动海投的工具。

它解决什么问题

ai-job-search 主要想解决四件事:

  • 把你的经历、技能、教育背景和写作风格整理成结构化资料;
  • 批量查找岗位,并按匹配度筛出值得投的机会;
  • 针对单个岗位生成更贴合的 CV 和求职信;
  • 投递后记录结果,用真实反馈反过来校准下一轮申请。

这个设计比较务实。它没有承诺“自动帮你拿 offer”,而是把求职中重复、容易漏、容易乱的部分交给 AI 辅助处理。

核心流程

项目的核心命令是 /setup/scrape/apply

1. /setup:先建立你的求职档案

第一次使用时,需要先在 Claude Code 里运行:

1
/setup

项目提供三种初始化方式:

  • 读取 documents/ 文件夹里的资料,例如 CV、LinkedIn 导出、学历证明、推荐信和过往申请;
  • 直接在对话里粘贴一份 CV;
  • 通过问答方式逐步建立个人档案。

这一步很关键。后面所有岗位打分、简历改写和求职信生成,都依赖这里整理出来的真实经历。如果个人资料很空,AI 后面就只能泛泛而谈。

2. /scrape:搜索岗位并筛选

准备好档案后,可以运行:

1
/scrape

它会调用项目里的岗位搜索工具,抓取和个人资料匹配的岗位,并对结果做去重和初步排序。项目自带的求职门户工具偏向丹麦市场,例如 Jobindex、Jobnet、Akademikernes Jobbank 等;LinkedIn public job listings 相对更通用。

如果你不在丹麦,也不是完全不能用。更现实的做法是参考它的结构,替换成本地常用招聘网站,或者直接把岗位描述粘贴给 /apply

3. /rank:岗位太多时先排序

当搜索结果很多时,可以先运行:

1
/rank

这个命令会批量读取新抓到的岗位,并按项目的匹配框架给它们打分。它关注的不只是关键词,还包括技能、经验、文化、地点和职业方向等维度。

实际使用里,这一步的价值很大。很多人投简历失败,不是简历写得太差,而是把精力花在了明显不匹配的岗位上。先排序,可以少浪费一点力气。

4. /apply:生成定制 CV 和求职信

确定某个岗位后,可以运行:

1
/apply https://example.com/job/123

如果岗位网页抓不到,也可以直接粘贴完整岗位描述:

1
/apply <paste the full job description here>

/apply 会做一整套流程:

  1. 解析岗位描述;
  2. 根据你的档案评估匹配度;
  3. 生成定制版 CV 和 Cover Letter;
  4. 让第二个 reviewer agent 审查内容;
  5. 根据审查意见修改;
  6. 编译 LaTeX PDF;
  7. 检查 CV 的 ATS 可读性;
  8. 输出最终材料和检查清单。

这里最有意思的是 PDF 验证。项目不是只生成 Markdown 或纯文本,而是会用 LaTeX 编译简历和求职信,并检查页面是否溢出、标题是否孤立到下一页、字体是否一致、Cover Letter 是否控制在一页。

ATS 检查为什么重要

很多简历 PDF 看起来很漂亮,但 ATS 解析时可能读不到正确文本。尤其是 LaTeX 模板、多栏布局、图标字体和特殊符号,有时会让邮箱、电话、技能关键词变成乱码或顺序错乱。

ai-job-search 的 /apply 会尝试用 pdftotext 读取 PDF 文本层,检查联系方式、阅读顺序和岗位关键词覆盖情况。项目 README 里也明确说,关键词必须来自真实经历,不支持为了过筛而硬塞不存在的技能。

这一点很加分。求职 AI 工具最容易滑向“包装过度”,而这个项目至少在流程上保留了真实性约束。

其他实用命令

除了核心流程,项目还提供了几个扩展命令:

  • /outcome:记录投递后的结果,例如面试、offer、拒信或无回复;
  • /expand:根据 GitHub、作品集、Kaggle、Google Scholar 等公开资料补充能力画像;
  • /upskill:分析岗位和个人能力之间的差距,生成学习计划;
  • /add-template:注册自己的 LaTeX CV 或求职信模板;
  • /add-portal:为本地招聘网站生成新的搜索工具;
  • /reset:清理资料,重新开始。

这些命令让它不像一次性简历生成器,更像一个能持续维护的求职系统。你投得越多、记录越完整,它越能帮你发现哪些岗位更值得追。

安装和依赖

项目依赖比较明确:

  • Claude Code CLI;
  • Python 3.10+;
  • Bun,用于岗位搜索 CLI 工具;
  • LaTeX 发行版,例如 TeX Live 或 MiKTeX;
  • 可选的 pdftotext,用于 ATS 文本层检查。

快速开始大致是:

1
2
gh repo fork MadsLorentzen/ai-job-search --clone
cd ai-job-search

然后安装各个岗位搜索工具的依赖,再进入 Claude Code 运行 /setup

这套依赖对普通非技术用户不算轻。它更适合已经会用命令行、愿意配置 Claude Code 和 LaTeX 的人。如果只是想简单改一份简历,用在线工具可能更省事。

适合谁

ai-job-search 比较适合这几类人:

  • 正在密集求职,需要管理很多岗位;
  • 想给不同岗位定制简历和求职信;
  • 已经在用 Claude Code,愿意把求职流程放进仓库管理;
  • 对 LaTeX 简历和 PDF 质量有要求;
  • 希望记录投递结果,并反过来优化求职策略。

不太适合这几类情况:

  • 只投一两个岗位,不需要复杂流程;
  • 不想碰命令行、Bun、LaTeX;
  • 希望一键自动海投;
  • 不愿意整理真实经历和资料;
  • 所在地区招聘网站需要大量登录、验证码或反爬处理。

使用时要注意什么

第一,不要让 AI 编造经历。项目本身强调简历和求职信里的声明要来自真实档案,但最终检查责任还是在你自己。

第二,不要把隐私资料随便放进公开仓库。CV、学历证明、推荐信、过往申请记录都可能包含敏感信息。最好用私有仓库,并认真检查 .gitignore

第三,本地招聘网站适配需要成本。项目自带的岗位搜索工具有明显地区特征,换到其他国家和平台时,很可能要自己写或调整搜索技能。

第四,PDF 好看不等于能过筛。即使项目做了 ATS 检查,正式投递前也建议自己用文本提取工具再看一遍,确认联系方式、技能和经历没有乱码。

总结

ai-job-search 的价值不在于“让 AI 替你找工作”,而在于把求职流程拆成可复用的步骤:建档、找岗位、排优先级、定制材料、检查 PDF、记录结果、复盘反馈。

如果你已经会用 Claude Code,并且正在进行一轮认真求职,它会是一个很有参考价值的开源框架。它需要配置成本,但换来的是更清楚的流程和更少的重复劳动。

参考来源:

记录并分享
使用 Hugo 构建
主题 StackJimmy 设计