找工作这件事,最累的不是面试,是--
重复。
每一份职位,你都要:读 JD、判断匹不匹配、改简历、写求职信、准备面试问题。
投十个岗位,这套流程来十遍。精疲力竭,还容易糊弄。
有人把整套求职流程做成了一个 Claude Code 框架。
fork 下来,填好你的资料,剩下的交给 Claude--评估匹配、改简历、写求职信、备面试。
这个仓库叫 ai-job-search
,目前 GitHub 1.2 万星,MIT 协议,作者是 Mads Lorentzen。
今天这篇,我们就用一篇公众号文章,把它讲清楚:
○ 它到底是什么
○ 核心工作流是怎么跑的
○ 最硬核的设计在哪
○ 怎么上手
○ 适合谁用、有什么要注意
它到底是什么?
一句话版:
ai-job-search 是一个基于 Claude Code 的 AI 求职框架,你 fork 之后填好个人资料,让 Claude 帮你评估岗位、定制简历、写求职信、准备面试。
它不是又一个聊天壳子,而是一套结构化的工作流:把 Claude Code 变成一个“全栈求职助手”。
核心工作流是语言和国家无关的--评估、起草这套逻辑放之四海皆准。
它自带的是丹麦几个招聘门户(Jobindex、Jobnet 等)的抓取技能,但作者明确说了:这套模式设计出来就是给你替换成本地招聘网站的。
所以它的定位很清楚:一个可复用、可本地化的求职自动化框架。
核心工作流:三段式
整个框架围绕三个核心命令转:
/setup
-- 录入你的画像
第一次用,先填资料。
它提供三条路径,自动检测你有什么:
○ 有 documents/
文件夹(CV PDF、领英导出、学历证、推荐信、过往申请)--它直接读
○ 贴一份现成 CV 进对话--它导入
○ 都没有--走一段结构化访谈,一点点问出来
资料越详细,后续产出越精准。这是后面所有质量的根。
/scrape
-- 搜岗位
搜多个招聘门户,按你的画像匹配,去重,按匹配度排序呈现。
岗位太多看不过来时,还有个 /rank
--批量给所有抓到的岗位打分(五个维度并行评估),给你一个排好序的短名单,再挑着投。
/apply <url>
-- 投一个岗位
给一个职位链接(或直接粘贴 JD 全文),跑完整流程:
1. 解析职位
2. 评估匹配度(技能、经验、文化、地点、职业方向)
3. 起草定制的 CV 和求职信(LaTeX)
4. 派一个 reviewer agent 去调研公司、批评草稿
5. 根据反馈修订
6. 编译并检查两个 PDF
7. ATS 检查
8. 给出最终产出和核对清单
一条命令,从看到岗位到拿到可投的材料。
最硬核的设计:PDF 验证循环
这是这个框架和“随便让 AI 写个简历”最大的区别。
大多数 LaTeX 简历模板的通病是:.tex
看着没问题,编译出来的 PDF 一塌糊涂--标题孤行到下一页、求职信溢出第二页、项目符号字体悄悄回退成正文体。
/apply
不只是写 .tex
,它会真的编译、真的看渲染结果、真的修:
○ CV 强制 2 页,没有孤行标题
○ 求职信强制 1 页,签名可见、字体一致
○ 用 lualatex 编 CV、xelatex 编求职信(避开现代 MiKTeX 上 fontawesome5 的坑)
这个“编译 -> 检查 -> 修 -> 再编译”的循环每次申请都自动跑,保证你拿到的不是“看着能投”,而是“真能投”。
第二个硬核设计:ATS 文本层验证
ATS(招聘管理系统)读的不是渲染后的页面,而是 PDF 里嵌的文本层。
而 LaTeX 经常静默地生成文本层是乱码的 PDF--邮箱位置变成图标字形、多栏布局的行交错在一起。
/apply
会用 pdftotext
把编译后的 CV 文本层抽出来,按 ATS 看到的样子检查:
○ 联系方式是不是可读的纯文本
○ 阅读顺序对不对
○ 这个岗位的关键词覆盖率多少
而且守一条“诚实规则”:你资料里真没有的关键词,会被如实标成缺口,绝不硬塞进去。
这点很重要--很多 AI 简历工具的问题就是无中生有,这个框架明确拒绝造假。
第三个硬核设计:drafter-reviewer 双 agent
起草和评审是两个独立的 Claude agent。
起草 agent 写完,reviewer 拿着全新上下文去调研这家公司、再批评草稿。然后起草 agent 根据反馈修订。
为什么要分开?
单 agent 一遍过,最容易留下:漏掉关键词、框架太弱、语言太套话。
加一个独立的“挑刺的”,能把这些捞回来。这比一个人闷头搞强得多。
作者还很在意 token 成本:reviewer 直接内联读草稿,不重新拉一遍;核对清单只在工作流末尾跑一次,不两个 agent 重复跑。
还有几个实用命令
核心三件套之外,还有六个:
○ /outcome
-- 记录一个申请的结果(面试到哪步、offer、拒信、石沉大海),归档材料,更新追踪表。攒几条之后,它会提示你回 /setup
校准评估框架--用“哪些真拿到面试了”来修正判断。
○ /rank
-- 给抓到的岗位批量打分,出排好序的短名单。
○ /expand
-- 扫你资料里链接的公开来源(GitHub、作品集、Kaggle、Scholar),把没写明的技能补进画像,带来源标签。
○ /upskill
-- 分析你画像和目标岗位的差距,出一张优先级热力图 + 学习计划(带网搜学习资源和时间估算)。求职空档期做职业规划很好用。
○ /add-template
-- 注册你自己的 LaTeX 简历/求职信模板,替换自带的。
○ /add-portal
-- 给你本地的招聘网站生成一个抓取技能。
/add-portal
特别值得一提:你给它一个本地招聘网站,它会自己去摸清搜索 URL 规律、结果页结构、robots.txt/访问规则,照着自带的那套脚手架出一个 CLI 技能,还先跑一次真实查询验证再注册。需要登录的门户直接拒掉,条款严苛的会标“仅个人使用”警告。
怎么上手?
前置条件:
○ Claude Code(CLI)
○ Python 3.10+
○ Bun(跑招聘门户的 CLI 工具)
○ LaTeX 发行版,带 lualatex
和 xelatex
(TeX Live 或 MiKTeX)
○ 可选:pdftotext
(poppler),用于 ATS 检查,没装会降级成视觉关键词复核
步骤:
# 1. fork 并 clone gh repo fork MadsLorentzen/ai-job-search --clone cd ai-job-search # 2. 装招聘搜索工具 cd .agents/skills/jobindex-search/cli && bun install && cd ../../../.. # (其余几个门户同理) # 3. 录入资料 claude # 进入 Claude Code 后: /setup # 4. 搜岗位 /scrape # 5. 投一个 /apply https://jobindex.dk/job/1234567
链接抓不到时(有些门户挡自动化),可以直接粘 JD 全文:
/apply <把 JD 全文粘在这里>
适合谁用?要注意什么?
如果你满足下面任意一条,值得试:
○ 正在找工作,想用 AI 把重复的申请流程自动化
○ 想要“能真投出去”而非“看着像”的简历和求职信
○ 投海外岗位,尤其丹麦/北欧市场(自带门户)
○ 想做求职技能差距分析和学习计划
几个要注意的点:
○ profile 深度决定一切:薄资料出糊弄货,详细资料才能真定制。别只写职位名,要写具体做了什么、用了什么工具、有什么可量化的成果。
○ LinkedIn 工具是灰色地带:仓库自带的 linkedin-search
走的是 LinkedIn 公开未认证接口,违反其 ToS,作者明确说仅限个人使用、控制频率。别拿去批量爬。
○ LaTeX 是核心:这套流程深度绑 LaTeX 简历。如果你不用 LaTeX,要自己换模板(/add-template
)。
○ 核心流程国家无关,门户要换:丹麦那几个门户对你未必有用,用 /add-portal
适配本地招聘网站。
最后一句
ai-job-search 代表的是一种很实在的取向:
把求职里那些重复、消耗人但不需要创造力的环节,交给 AI 自动化。
它的设计有几个很懂行的点:
○ 不造假(缺关键词就标缺口)
○ 看结果不看源码(PDF 编译验证循环)
○ 双 agent 互相挑刺(drafter-reviewer)
○ 从结果反推校准(/outcome
回喂 /setup
)
这比“让 AI 帮我写封求职信”深得多,是一整套可迭代的求职工程。
如果你正在找工作,花一个晚上把它 fork 下来填好资料,后面每个岗位能省下不少重复劳动。
如果这篇对你有帮助,欢迎点个在看。 也可以留言聊聊:你求职时最想自动化的是哪一步?
参考资料/来源
https://github.com/MadsLorentzen/ai-job-search




