AI求职搜索助手
MadsLorentzen/ai-job-search
访问 GitHub ↗
一句话简介
基于 TypeScript 的 AI 求职搜索工具,帮助用户高效筛选职位、生成简历与求职信并优化投递策略。
标签
适用应用场景
- 根据个人条件智能匹配推荐岗位
- 一键生成针对不同公司的求职信
- 分析职位描述并优化简历关键词
- 追踪求职流程并提供面试准备建议
README 中文摘要
AI 求职框架概述
一个运行在本机、由 AI 辅助的求职申请工作流,基于 Claude Code 构建。Fork 仓库并填写个人资料,即可让 Claude 完成职位匹配评估、简历定制、求职信撰写以及面试准备等全流程。
项目动机
作者本人在 2025 年末失业后,用这套框架运营自己的求职过程——包括 /scrape、/apply、/interview 命令——并对每位雇主坦诚相告。最终在发出 69 份定制化申请、获得 20 次一面机会后,于 2026 年 6 月以 AI 工程师身份入职。项目因此开源。
核心工作流(自我画像、匹配度评估、起草-审阅的申请流水线)与语言和国家无关;职位门户搜索功能默认面向丹麦市场(Jobindex、Jobnet、Akademikernes Jobbank 等),但可替换为本地求职网站。
工作流架构
/setup /scrape /apply <url>
| | |
v v v
填充个人资料 搜索职位门户 评估匹配度并打分
| | |
v v v
生成资料文件 展示带评级的匹配 起草 CV + 求职信
| |
v v
选定匹配 → /apply 审阅代理反馈 → 定稿输出
核心特性
/apply 命令运行起草-审阅双角色流水线,并强制要求 PDF 编译验证:
- 解析:从 URL 或文本读取职位描述
- 匹配度评估:根据技能、经验、文化、地点、职业方向五个维度打分
- 起草:用 LaTeX 编写定制化简历和求职信
- 审阅代理:派出独立 Claude 代理研究公司并对草稿提出批评
- 修订:根据审阅意见调整
- 编译与视觉检查:简历用
lualatex,求职信用xelatex,迭代直到简历严格 2 页、求职信严格 1 页 - ATS 验证:用
pdftotext提取 PDF 文本层,检查解析器实际看到的关键词覆盖情况 - 输出:附带验证清单的最终文件
与众不同的设计
- PDF 验证回路:编译每个 PDF 并视觉检查,自动修复孤立标题、字体回落等问题
- ATS 真实解析验证:从编译后的 PDF 提取文本,验证联系方式、关键词命中,而非仅靠肉眼
- 按相关性裁剪简历:评估每行内容的相关性、唯一性、与求职信的依赖度,裁剪时优先保留命中关键词的旧条目
- 起草-审阅分离:审阅代理在全新上下文中研究公司并批评草稿,单遍起草易遗漏的弱点可被捕获
扩展机制
框架有三个扩展点,均无需改动上游代码:
- 门户技能:
/add-portal生成新市场的职位门户集成;/scrape自动发现符合契约的任何*-search技能 - 文档模板:
/add-template注册任何可命令行编译为 PDF 的工具链(LaTeX、Typst 等) - 评估标准:个人资料中的红线条件和偏好以自由文本写入,评分时具有真实权重;语言门槛由
04-job-evaluation.md中的 Language Gate 强制执行
关键命令
/setup:通过 documents 文件夹导入、聊天中粘贴简历、或交互式访谈三种方式建立个人资料/scrape:搜索多个门户并按匹配度排序/apply <url>:完整申请流水线/rank:对抓取结果批量打分并生成排序短名单/interview:根据已跟踪申请构建分阶段面试准备包并提供模拟面试/outcome:记录申请结果,并支持对沉寂的申请生成跟进邮件草稿(仅草稿,从不代发)/html-report:从跟踪表生成离线 HTML 仪表盘/gmail-sync:读取 Gmail 自动识别申请状态信号(面试邀请、offer、拒信等),逐条变更需用户批准/notion-sync:通过官方 Notion MCP 服务单向发布只读流水线视图/upskill:分析个人资料与职位之间的技能差距,生成带学习资源与时间估算的热力图/expand:扫描公开资料(GitHub、Portfolio 等)补充未在文档中显式列出的能力/add-template//add-portal:注册自定义模板或门户技能/reset:重置个人资料或 documents 文件夹
环境要求
- Claude Code(CLI),需 Pro/Max/Team 订阅或 API 额度
- Python 3.10+ 与 Bun
- LaTeX 发行版(含
lualatex与xelatex) - 可选:
pypdf或 Popplerpdftotext(ATS 解析检查)
快速上手
# 1. Fork 并克隆(个人使用请用私有仓库,以本仓库为 upstream)
gh repo fork MadsLorentzen/ai-job-search --clone
cd ai-job-search
# 2. 安装门户 CLI
python3 tools/install_portal_clis.py
# 3. 设置个人资料
claude
> /setup
# 4. 搜索职位
/scrape
# 5. 申请某职位
/apply https://jobindex.dk/job/1234567
仓库结构
ai-job-search/
├── CLAUDE.md # 主个人资料与工作流规则
├── .claude/commands/ # 13 个命令定义(apply、setup、rank 等)
├── .claude/skills/ # 核心技能(候选人画像、行为画像、评分框架、STAR 示例)
├── .agents/skills/ # 门户 CLI 工具(丹麦 4 个 + LinkedIn + freehire)
├── cv/main_example.tex # moderncv LaTeX 简历模板
├── cover_letters/ # cover.cls + Lato/Raleway 字体
├── templates/ # /add-template 注册的自定义模板
├── documents/ # 求职源材料(CV、LinkedIn 导出、证书等)
├── tools/ # 安装脚本、安全守卫、PDF 验证、布局测量等
├── salary_lookup.py # 薪资基准工具
└── SETUP.md # 详细安装指南
安全模型
职位描述被视为不可信输入:工作流遵循确定性完整性门禁(隐藏文本、不可见字符、指令形态行、隐藏链接),不执行职位描述中嵌入的指令,也不获取其正文中的链接;但代理级防御是指令层面的,不是沙箱。使用不熟悉的求职网站时,建议在发送前审阅抓取与写入的内容。
摘要更新于 2026-10-20 00:30:35
· 原文 33919 字符
· md5 118cc7c65e1e…