AI求职搜索助手

MadsLorentzen/ai-job-search 访问 GitHub ↗
🔤 Python ★ 34058 ⑂ 0 daily #3 (+434) 抓取 2026-08-25

一句话简介

基于 TypeScript 的 AI 求职搜索工具,帮助用户高效筛选职位、生成简历与求职信并优化投递策略。

标签

  • AI求职
  • TypeScript
  • 求职工具
  • 简历优化
  • 职位搜索

适用应用场景

  • 根据个人条件智能匹配推荐岗位
  • 一键生成针对不同公司的求职信
  • 分析职位描述并优化简历关键词
  • 追踪求职流程并提供面试准备建议

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)。
  • 包含 lualatexxelatex 的 LaTeX 发行版(TeX Live / MacTeX / TinyTeX / MiKTeX)。CV 用 lualatex 编译,求职信用 xelatex 编译。使用 TinyTeX/BasicTeX 时需安装额外宏包。
  • 可选:popplerpdftotext 命令,用于 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-searchfreehire-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、测试查询后才注册。

扩展机制

框架有三个扩展点,均不需改动上游:

  1. 门户技能/scrape 自动发现 .agents/skills/ 下任何符合约定(search/detail CLI、--format 输出、enabled: 标志、本地测试)的技能。
  2. 文档模板/add-template 注册任何可从命令行编译为 PDF 的工具链。
  3. 评估标准:候选人画像中的硬性排除项与偏好是自由格式文本,一行即可在 /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…