AI求职搜索助手
一句话简介
基于 TypeScript 的 AI 求职搜索工具,帮助用户高效筛选职位、生成简历与求职信并优化投递策略。
标签
适用应用场景
- 根据个人条件智能匹配推荐岗位
- 一键生成针对不同公司的求职信
- 分析职位描述并优化简历关键词
- 追踪求职流程并提供面试准备建议
README 中文摘要
AI 求职助手
一个基于 Claude Code 构建的 AI 求职框架。Fork 本仓库后填入个人资料,即可让 Claude 评估职位、定制简历、撰写求职信,并为面试做准备。
项目背景
作者原本是地球物理学家,2025 年底被裁员后,用同一套工作流(/scrape、/apply、/interview)处理自己的求职,并在面试中向雇主坦诚说明使用方式,反而常常引发真诚的技术交流。在提交 69 份定制化申请、获得 20 次初面、签下 1 份合同之后,他以 AI 工程师身份入职,于是将这套流程开源。
核心特性
- 语言与市场无关:核心工作流(自我画像、岗位匹配度评估、撰稿-审稿流水线)适用于任何语言与国家;岗位门户搜索技能默认针对丹麦市场(Jobindex、Jobnet、Akademikernes Jobbank 等),但模式可被替换为本地求职门户。
- PDF 验证回路:
/apply在生成 LaTeX 后会编译并目视检查 PDF,针对版式问题(标题孤行、超页、字体回落)应用\needspace、\enlargethispage等修复,直至版面干净。 - ATS 文本层校验:用
pdftotext抽取 PDF 文本,验证联系方式、阅读顺序与职位关键词覆盖度。诚实原则:仅在资料真正支持的关键词处补充,不做关键词堆砌。 - 相关性加权裁剪:简历超过 2 页时,按「与职位相关性 × 文档内唯一性 × 求职信是否引用」三维度评分,从总分最低的行开始裁剪。
- 撰稿-审稿分离:撰稿智能体起草,独立的审稿智能体在干净上下文中调研公司与稿件、给出批评,撰稿方据此修订。
- 语言门槛:结构化处理语言要求,硬性拒绝完全未声明的语言岗位,对「要求水平高于声明」的情况作软标记等待人工判断。
工作流概览
/setup /scrape /apply <url>
| | |
v v v
填入个人资料 搜索职位门户 评估匹配度并打分
| | |
v v v
资料就绪 列出匹配岗位 起草 CV + 求职信
含匹配度评分 (LaTeX、定制化)
| |
v v
挑选岗位 审稿智能体批评
-> /apply -> 修订 -> 最终输出
前置条件
- Claude Code(CLI)。若使用 Codex、Gemini CLI 等其他代理工具,可从
AGENTS.md入手,门户搜索技能开箱即用。 - Python 3.10+。
- Bun(用于职位搜索 CLI)。
- 包含
lualatex与xelatex的 LaTeX 发行版(TeX Live / MacTeX / TinyTeX / MiKTeX)。CV 用lualatex编译,求职信用xelatex编译。使用 TinyTeX/BasicTeX 时需安装额外宏包。 - 可选:
poppler的pdftotext命令,用于 ATS 校验。
快速开始
1. Fork 与克隆
gh repo fork MadsLorentzen/ai-job-search --clone
cd ai-job-search
用于个人求职时,应克隆到私有仓库并把本仓库设为
upstream,因为 GitHub 不允许公开仓库的私有 fork,且/setup会把个人数据写入受跟踪的文件。
2. 安装职位搜索工具
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search freehire-search; do
(cd .agents/skills/$tool/cli && bun install)
done
linkedin-search 与 freehire-search 零运行时依赖,可直接用 bun 运行,bun install 仅拉取 TypeScript 类型。
3. 设置个人资料
claude
# 在 Claude Code 内:
/setup
/setup 提供三条路径:读取已有的 documents/ 目录(CV PDF、LinkedIn 导出、证书、推荐信等)、粘贴单份 CV、或进行结构化访谈。文档模式幂等,可重复运行。
4. 搜索职位
/scrape
搜索多个门户、去重并按匹配度排序。若返回过多岗位,可先运行 /rank 做批量打分得到排序后的短名单。
5. 申请某个岗位
/apply https://jobindex.dk/job/1234567
若 URL 无法抓取,可直接粘贴职位描述。该命令会执行完整流水线:评估匹配度、起草 CV 与求职信、审稿、修订、编译 PDF、ATS 校验、最终输出。
扩展命令
除核心三件套外,还有十余条命令扩展流程:
/interview:基于已归档的申请材料构建阶段专属面试准备包,研究公司与面试官,将可能问题映射到 STAR 案例。/outcome:记录申请结果(面试阶段、offer、拒信、无回应),归档提交的 CV/求职信/原始招聘文本,追踪沉默超过 10 天的申请并起草跟进。/notion-sync:通过 Notion MCP 将流水线单向只读同步到 Notion 数据库。/gmail-sync:通过 Gmail 连接器读取申请相关的状态信号(面试邀请、评估链接、offer 等),批量提议变更后再写入追踪表。/rank:批量评分新抓取的岗位,产出排序后的短名单。/expand:从 GitHub、Portfolio、Kaggle、Google Scholar 等已链接的公开来源补全能力。/upskill:分析资料、追踪中岗位与已评分未追踪岗位之间的技能差距,产出优先级热力图与学习计划。/html-report:从job_search_tracker.csv与申请归档生成自包含 HTML 仪表盘(内联 SVG,无外部依赖)。/add-template:注册自定义 CV/求职信模板(LaTeX、Typst 等),捕获编译指令并强制测试编译。/add-portal:为本地求职门户生成搜索技能,先调查搜索 URL 与结果结构,再脚手架化 CLI、测试查询后才注册。
扩展机制
框架有三个扩展点,均不需改动上游:
- 门户技能:
/scrape自动发现.agents/skills/下任何符合约定(search/detailCLI、--format输出、enabled:标志、本地测试)的技能。 - 文档模板:
/add-template注册任何可从命令行编译为 PDF 的工具链。 - 评估标准:候选人画像中的硬性排除项与偏好是自由格式文本,一行即可在
/rank与/apply的匹配度评估中产生实际权重。
从其他 fork 借用门户技能时,需手动复制并核查:阅读所有源码(确认仅向目标门户发起网络请求、package.json 无依赖与生命周期脚本、不越界读写),离线运行 bun test,检查 enabled: 标志与 ToS 备注。
常用配置
仅修改搜索查询而不重跑全套配置:
/setup --section search
清空个人资料:
/reset profile # 清除技能文件,保留框架规则
/reset documents # 删除 documents/ 文件
/reset all # 两者皆清
/reset 会列出待删内容并要求键入 RESET 才执行。
摘要更新于 2026-08-25 00:30:37
· 原文 32633 字符
· md5 797d51b52b02…