如何根据职位描述定制简历(CV)
一套按步骤把简历(CV)定制到任意职位描述的方法,附工程岗位实例,以及一个能加快流程的免费开源工具。
你看到一个自己能胜任的岗位,把投给前十个岗位的那份简历原样再投一次,然后杳无音信。招聘专员面对长长的队列,每份文件只是扫一眼,而在她打开之前,软件已经给这堆简历排好了序。一份不针对任何职位写的简历(CV),在这两位读者面前都会输。
定制简历能解决这个问题。你保留一份完整的主简历,带着目的去读每份职位描述,然后产出一个版本,用雇主自己的词汇描述你做过的工作。下面这套方法可以用文本编辑器完成,可以配合 Claude 或 ChatGPT,也可以用我维护的开源工具 Resume Matcher。
为什么要针对每份职位描述定制简历
你的简历有两位读者,两位都看重契合度。
第一位是解析器。很多公司会把申请送进申请人跟踪系统,也就是 ATS(招聘管理系统 / 申请人跟踪系统),它从文件里提取文本,抽出技能和职位,让招聘专员据此筛选和排序。如果职位要求写的是「Kubernetes」,而你的简历写的是「k8s」,严格的过滤器就会漏掉你。我们的简历匹配算法原理一文详细讲了关键词、语义和结构化这三层。
第二位是赶时间的人。招聘经理扫你的简历时,希望在第一屏就看到她自己列的要求:她写的技术栈,她描述的那类问题。通用简历让她自己做翻译;定制简历替她做好了。
让简历对齐职位描述,就是用雇主选的词来描述你做过的工作。这是一项翻译工作,下面六步能让它保持诚实。
六步把简历定制到职位描述
1. 维护一份主简历
在定制任何东西之前,先建一份囊括整个职业生涯的文档:每段经历写六到十条要点而不是三条,再加上业余项目、开源贡献、证书、演讲,以及那些只存在于团队 wiki 里的内部工具。四五页都没问题。没有雇主会看到这份文件。
主简历是你取材的来源。没有它,你只能凭记忆定制,然后忘掉两份工作前做过的那次 Terraform 迁移,而那恰好能对上眼前的职位。有了它,定制就变成了挑选:挑出合适的要点,用雇主的措辞改写,其余的删掉。
如果你跨方向投递,比如后端和数据工程各投一些,就分别维护主简历。每份主简历在自己的方向上保持完整,根据职位选用对应的那份。
写主简历要点时把细节带上:语言、规模和结果。定制时可以删减细节,而一条含糊的主简历要点让你无从删减。
2. 拆解职位描述
把整个职位描述读一遍,然后开一个草稿文件再读一遍。把找到的内容分成四类。
必备技能。 硬性要求,通常标着「required」或「你需要具备」。写着「3 年以上生产环境 Python 经验」的职位是认真的。如果你有,就放到简历靠前的位置。如果这个列表你大半都不满足,把时间花在别的职位上。
加分技能。 「nice to have」那一栏。它们把你和其他过了硬性门槛的候选人区分开,所以有的就写上,没有的就不写。
职责动词。 「你将负责」下面的那些短语:「负责……的可靠性」、「设计并运维」、「与产品团队协作」。它们告诉你要点里该用哪些动词,以及该把哪些项目放在最前面。
领域和背景术语。 金融科技的职位会提到 PCI DSS、清算和对账。医疗领域会提到 HIPAA、HL7 和 FHIR。这些词表明你了解工作发生的场景。我们的简历关键词指南更深入地讲了如何找到和放置这些术语。
数一数重复次数。一个词在职位描述里出现三次,对写它的人来说就比只出现一次的更重要,它应该同时出现在你的个人简介和技能列表里。
如果你用 Claude 或 ChatGPT,把职位描述粘贴进去,让它列出这四类,每一项都从原文逐字引用。类似这样的提示词就行:
根据下面的职位描述,列出必备技能、加分技能、职责短语和领域术语。每一项都从原文逐字引用。标出出现不止一次的术语。
逐字引用很重要,因为放任模型自由发挥它就会改写,而你要的是雇主的拼写。
3. 把你的经历映射到每条要求
把四类内容放在一栏,主简历放在另一栏,然后逐条过要求。对每条要求,在主简历里找到能证明它的那条要点,标记匹配。
最后你会得到三组:
- 直接匹配。 你用职位点名的工具做过这件事。把要点拉进来,看下一条。
- 相近匹配。 职位要 Kafka,而你在生产环境跑过 RabbitMQ。你有底层能力(事件驱动系统),只是工具不同。把要点拉进来,写明你用的工具;措辞的问题下一步处理。
- 空缺。 主简历里没有任何相关内容。别动这条要求。十条要求中有证据地覆盖七条,胜过靠两处编造覆盖十条,因为面试官会在第一轮技术面就追问那些编造。
映射也决定了顺序。每段经历里,匹配必备技能的要点排最前。顶部的个人简介点出你匹配得最好的两三条要求。只读页面上三分之一就停下的人,也应该能看出契合。
4. 用职位自己的措辞,并保持诚实
雇主写「PostgreSQL」,你写「Postgres」。人知道这是同一个东西,过滤器未必。照着职位描述的拼写和形式来:写 Kubernetes 而不是 k8s,写 CI/CD 而不是「流水线」,职位用连字符写「on-call」你也照写。
动词和框架也要照着来。如果职位写「负责面向客户的 API 的可靠性」而你确实做过,就写「负责公开 API 的可靠性」,而不是「和团队一起做 API 相关的事」。工作是同一份;框架用雇主的。
三条规则保持诚实:
- 只给你做过的事换个说法,别的不动。把「Postgres」改成「PostgreSQL」是修正拼写。把「MySQL」改成「PostgreSQL」是撒谎。
- 相近经历要写明你的工具,借用类别。「用 RabbitMQ 做事件流」在类别层面匹配 Kafka 的要求,同时在工具上说了实话。如果你确实在学职位点名的那个工具,可以加一句。
- 每个数字都要能追溯到你能解释的东西。面试里站不住的指标不该出现在纸上。
缩写要把两种形式各写一次:「持续集成(CI)」。解析器拿到两种拼写,读者得到清晰的信息。
5. 把简历排版成 ATS 能解析的样子
内容对齐得再好,解析器读不出来也白搭。文件结构保持朴素。
- 用标准的栏目标题:个人简介、工作经历、技能、教育背景、项目经历。解析器会把它们映射到字段。「我的旅程」什么都映射不到。
- 避免表格、文本框和含文字的图片。很多解析器会把它们读乱顺序或者直接跳过。如果用双栏,确保主要内容在阅读顺序上靠前。
- 用标准字体和真实文本。从设计工具导出成扁平图片的 PDF,屏幕上看着挺好,解析出来是一张白纸。
- 每段经历的日期用统一格式,比如「2022 年 1 月至今」。
- 除非表单要求 .docx,否则提交 PDF。现代解析器处理文本型 PDF 没有问题。
- 联系方式放在文档正文里。有些解析器会跳过页眉和页脚。
打开导出的 PDF,试着选中文字。如果你能把姓名和一条要点复制进文本编辑器,而且顺序正确,解析器也能读。
6. 做最后检查
把职位描述和定制后的简历并排放着,再过一遍要求。对每项必备技能,指出证明它的那一行。对每个重复出现的词,确认它至少在你的文字里出现一次。
然后像招聘经理那样从头到尾读一遍简历。个人简介描述的是这个岗位吗?前三条要点证明了最重要的三条要求吗?换要点的时候有没有留下半截句子或者时态不一致?
关键词重合度统计在这里可以作为一个基本检查。把两段文本粘贴进一个工具,统计职位描述里的有效词有哪些出现在你的简历里,然后看漏掉的词,忽略百分比。一个改拼写就能补上的漏项(PostgreSQL)值得补。一个你没用过的工具,漏了就漏了。
实例:把简历对齐一份后端工程师职位
一份有代表性的职位描述,节选压缩版:
高级后端工程师,支付方向
- 设计、构建并运维运行在 Kubernetes 上的 Go 服务,高吞吐处理支付
- 负责支付 API 的可靠性:SLO、告警、事故响应和值班轮换
- 扎实的 PostgreSQL 经验;熟悉事件流(优先 Kafka)
- 与产品和财务团队合作,交付合规的支付流程
- 加分项:gRPC、Terraform、接触过 PCI DSS
拆解后:必备技能是 Go、Kubernetes、PostgreSQL、SLO 与告警、值班。加分项:Kafka、gRPC、Terraform、PCI DSS。职责动词:设计、构建、运维、负责……的可靠性。领域术语:支付、合规、高吞吐。「支付」出现了三次。
再看一条主简历里的要点,写的时候没有针对任何职位:
用 Go 为结账团队开发后端服务,部署在 Kubernetes 上,使用 PostgreSQL。负责团队的值班轮换,设定了可用性目标和 Grafana 告警,每周告警呼叫减少约一半。
职位想要的事实都在里面,只是藏在泛泛的动词下。定制后的版本:
为结账流程构建并运维运行在 Kubernetes 上的 Go 服务,底层使用 PostgreSQL。负责支付 API 的可靠性:定义 SLO 和 Grafana 告警,承担值班,每周告警呼叫减少约一半。
定制后要点里的每个事实在主简历要点里都有:Go、Kubernetes、PostgreSQL、值班、告警、呼叫减半。改动的只是从职位描述里搬来的动词(「构建并运维」替代「开发」和「部署」,「负责可靠性」替代承担值班和设定目标),用「支付 API」指代处理支付的结账接口,以及用雇主的叫法「SLO」来称呼这位工程师设定的可用性目标。定制后的要点没有新增数字,没有新增工具,也没有新增架构方面的说法。
Kafka 没有写进去,因为这位工程师没有跑过。如果主简历里有一条 RabbitMQ 的要点,它会以「用 RabbitMQ 做事件流」的形式进来,匹配类别而不冒认工具。
技能行也变了。主简历:Go, Python, Postgres, k8s, Docker, Grafana, Terraform。定制后:Go, Kubernetes, PostgreSQL, Terraform, Docker, Grafana, Python。同一份列表,换成雇主的拼写,必备项排前面,Terraform 往前挪,因为职位点了名。
用 Resume Matcher 把简历匹配到职位描述(免费)
Resume Matcher 用你已有的 AI 模型跑完上面六步。我手动做了太多次申请之后把它做了出来。它免费且开源,采用 Apache 2.0 许可证,有超过 20 万求职者在用,GitHub 上有 28,000 多颗 Star。斯坦福大学的研究人员在一篇 ICML 2025 论文中把它用作简历评分器。
没有托管版本;你下载后在笔记本电脑上或 Docker 里运行。它不扫描你的简历,也不模仿任何雇主的 ATS;它的分数是关键词重合度,下面会说明。
工作流程:
- 添加主简历。 上传 PDF 或 Word 文件(最大 4 MB),或者在简历向导里回答问题来创建一份。你的模型会把它转成可编辑的栏目。你最多可以保存五份主简历,每个职业方向一份,定制不会覆盖它们。
- 接入模型。 在设置页面选择服务商并粘贴密钥:Anthropic(Claude)、OpenAI(ChatGPT)、Google Gemini、DeepSeek、OpenRouter、Groq、Azure AI Foundry,或者用 Ollama 跑免费的本地模型。任何兼容 OpenAI 接口的服务,比如 llama.cpp、vLLM 或 LM Studio,也都可以。应用本身不附带任何模型。
- 粘贴职位描述。 你的模型会提取必备技能、加分技能、职责和关键术语。这就是上面的第 2 步,替你做好了。
- 审核建议的修改。 模型会用职位描述的措辞,对你的个人简介、要点和技能提出针对性修改。然后代码检查每一处改动。它锁定你的姓名、联系方式、雇主、职位、日期和学位,并撤销任何主简历里没有的新数字。唯一有意保留的例外是技能:应用可能添加职位点名要求的技能,并在预览里把这些标记为高风险。你会看到修改前后的差异对比,然后选择「确认并保存」或「拒绝并重新生成」。
- 查看「JD 匹配」标签页。 这是纯代码,不涉及 AI。它去掉职位描述里的常见词,统计剩下的词有多少出现在你的简历里,显示百分比并高亮匹配项。把它当作第 6 步的基本检查:扫一遍未匹配的词,看有没有能改拼写补上的,其余情况忽略那个数字。它不能预测任何真实 ATS 的结果。
- 导出并跟进。 从七套模板(单栏、双栏、现代、现代双栏、LaTeX、简洁、鲜明)中选一套,设置 A4 或美式信纸(US Letter),然后下载 PDF。无头浏览器从真实文本打印 PDF,解析器可以选中每个词。针对同一个职位,它还能写一封 100 到 150 词的求职信、一封 70 到 100 词的联系邮件(适合邮件或 LinkedIn),以及包含预期问题和待补技能的面试准备。每份定制简历都会出现在看板式的申请追踪上。
关于隐私:应用把你的简历和职位描述发给你选定的服务商,不会发到别处;它不含任何分析代码。用 Ollama 或其他本地服务时,文本留在你的电脑上。应用本身不收费。云端服务商会为你自己的 API 调用向你收费,本地模型没有按次费用。
安装只需一条 Docker 命令:
docker run --name resume-matcher -p 3000:3000 -v resume-data:/app/backend/data ghcr.io/srbhr/resume-matcher:latest
打开 http://localhost:3000/settings,选择服务商,粘贴密钥,点击「测试连接」。想从源码运行,需要 Python 3.13+、Node.js 22+ 和 uv。快速上手指南覆盖了两种方式,功能页面列出了其他所有内容。仓库自带 CLAUDE.md 文件和一个 docs/agent/ 文件夹,所以你可以把 Claude Code 或其他编程 Agent 指向它,让它完成项目配置。
让定制简历露出定制痕迹的错误
关键词没有证据。 因为职位提到「机器学习」就把它加进技能列表,却没有任何要点支撑,招聘专员看着像凑数,面试官看着像陷阱。只在有要点证明的地方列技能。
过度定制,故事断裂。 如果每次申请都重写整个履历,结果读起来就像一堆职位描述的拼贴。改变侧重、顺序和措辞,保持职业脉络完整。
忽略语气。 一家写「快速交付、对结果负责」的创业公司和一家写「确保各运营环节遵守管控要求」的银行,要的是不同的语体。术语要对上,语体也要对上。
跳过校对。 在不同版本之间换要点,会产生重复的技能和一段还写着上一家公司名字的个人简介。上传前把最终 PDF 读一遍。
把匹配分数当成裁决。 关键词重合度告诉你缺了哪些词。它说明不了你能否拿到面试,而且雇主自家系统之外的任何工具都无法告诉你那个系统会怎么给你排名。
如果这篇文章帮到了你
定制比点一下「申请」花的时间长,但它是申请过程中你能掌控的部分。如果这套方法或这个工具为你省了时间,给 GitHub 上的 Resume Matcher 点个 Star 能帮更多求职者找到它,你也可以在 GitHub、X 或 LinkedIn 上关注我,Saurabh Rai。