基于 Claude Code 构建的 AI 求职申请框架,Fork 后填个人档案,让 Claude 评估职位/定制简历/写求职信/准备面试。11.4k stars,MIT 协议,TypeScript + LaTeX。

定位

与 career-ops 类似,都是”Fork 仓库、填档案、用 Claude Code 驱动求职全流程”的框架,但 ai-job-search 更聚焦单份申请材料的精细打磨(LaTeX 简历/求职信的 PDF 排版正确性 + ATS 解析验证),而不是批量投递或大盘筛选。核心工作流是三个命令:

/setup    → 填档案(读 documents/ 文件夹、粘贴 CV、或对话式访谈三选一)
/scrape   → 搜索职位门户(丹麦本地门户为主,模式可迁移到任意国家)
/apply    → 评估 + 定制简历/求信 + Reviewer Agent 审查 + PDF 编译校验

核心工作流语言/国家无关;职位门户搜索 Skill 是丹麦市场专用(Jobindex/Jobnet/Akademikernes Jobbank 等),但设计上可替换为本地门户。

核心特性

  • Drafter-Reviewer 双 Agent 工作流:一个 Agent 起草,另一个全新上下文 Agent 研究公司并批判草稿,起草者据此修订
  • PDF 编译校验闭环:lualatex 编译简历、xelatex 编译求职信,Claude 读取渲染后的 PDF 页面并迭代修 LaTeX,直到简历精确 2 页无孤行、求职信精确 1 页签名可见
  • ATS 文本层校验:用 pdftotext 提取编译后 PDF 的文本层,验证联系方式是否为可提取文本、无乱码字形、阅读顺序正常,并核对关键词覆盖率——诚实原则:档案不支撑的关键词标记为差距,绝不硬塞
  • 相关性加权简历裁剪:简历超 2 页时不machine机械裁最老的部分,而是按(相关性/独特性/求职信是否依赖该条目)三维打分,砍掉总分最低的条目
  • Token 高效 Reviewer 派发:Reviewer 直接接收 inline 草稿而非重新读取,验证清单只跑一次

六个扩展命令

命令作用
/outcome记录申请结果(面试/offer/拒绝/无回应),归档材料,反哺评分框架校准
/rank并行 Agent 批量给已抓取职位打分,返回排序短名单(一票否决项+截止日期提醒+过期标记)
/expand扫描档案中已链接的公开来源(GitHub/portfolio/Kaggle/Google Scholar)补充技能标签
/upskill分析档案与目标职位间的技能差距,生成优先级热力图 + 学习计划
/add-template注册自定义 LaTeX 简历/求职信模板,强制测试编译
/add-portal为本地职位门户生成搜索 Skill(调研 URL 模式/结果结构/robots.txt,鉴权门户会拒绝生成)

项目结构

ai-job-search/
├── CLAUDE.md                   # 主档案 + 工作流规则
├── .claude/
│   ├── commands/                # /setup /scrape /apply /rank /outcome /expand /add-template /add-portal /reset
│   └── skills/
│       ├── job-application-assistant/  # 核心 Skill:candidate-profile/behavioral-profile/writing-style/job-evaluation/cv-templates/cover-letter-templates/interview-prep
│       ├── job-scraper/                # 职位搜索编排
│       └── upskill/                    # 技能差距分析
├── .agents/skills/              # 职位门户 CLI 工具(jobindex/jobnet/jobbank/jobdanmark 丹麦 + linkedin-search 国家无关)
├── cv/main_example.tex          # moderncv LaTeX 简历模板
├── cover_letters/cover.cls       # 自定义求职信 LaTeX class(Lato/Raleway 字体)
├── documents/                   # CV/LinkedIn导出/学历证书/推荐信/历史申请记录
└── salary_lookup.py              # 薪资对标工具(需自备数据)

linkedin-search 值得单独一提:基于 LinkedIn 公开无鉴权的 jobs-guest 端点,零运行时依赖(仅需 bun),地区参数化(-l "Berlin, Germany"),是仓库里唯一开箱即用、国家无关的门户 Skill;仅限个人使用(自动化访问违反 LinkedIn 条款)。

前置依赖

Claude Code CLI + Python 3.10+ + Bun(丹麦 CLI 工具)+ LaTeX 全套(lualatex + xelatex,推荐 TeX Live/MiKTeX)+ 可选 pdftotext(poppler,ATS 校验用,缺失时降级为视觉关键词审查)。

中国用户适用性

内置的职位门户搜索 Skill 对国内求职基本无用:

  • 4 个丹麦本地门户(Jobindex/Jobnet/Jobbank/Jobdanmark)仅覆盖丹麦市场,与中国无关
  • linkedin-search 号称”国家无关”(零依赖,-l 参数传任意地区),但 LinkedIn 在中国大陆自 2021 年起访问不稳定,实际使用通常需要代理
  • /add-portal 生成器理论上可以自己写一个猎聘/BOSS直聘门户 Skill,但国内招聘网站普遍有较强的反爬(验证码/风控/登录墙),实操难度和 ToS 风险都不低
  • 简历/求职信模板是英文 LaTeX(moderncv banking 风格 + cover.cls),没有中文模板

核心工作流本身(/setup 自我建档、/apply 的评估-定制-审查-PDF 校验闭环、/upskill 技能差距分析)是语言/国家无关的,所以更适合的场景是:用中文材料建档,投递海外/远程/外企岗位(这些岗位本身也更可能挂在 LinkedIn 或用 Greenhouse/Lever 等海外 ATS 上)。投国内岗位需要自己补一个门户 Skill 或直接手动粘贴职位描述给 /apply(README 里 /apply <paste the full job description here> 支持直接粘贴文本,绕开门户抓取)。

与相关工具的关系

  • career-ops — 同属 Fork-and-run 的 Claude Code 求职框架,career-ops 侧重批量筛选+Go TUI 仪表盘+45+ 公司 Portal 预扫描,ai-job-search 侧重单份材料的 LaTeX 排版正确性+ATS 文本层校验+Drafter-Reviewer 双 Agent 审查
  • 职位搜索 CLI Skill 来自 mikkelkrogsholm/skills(作者致谢)

资源