YAMLResume

YAMLResume 与 Reactive Resume 对比

Reactive Resume 是 GitHub 上最流行的开源简历构建工具,由 Amruth Pillai 创建。它诞生于 2020 年,如今已 积累 43,000+ GitHub 星标,并在 rxresu.me 提供任何人 均可免费使用的托管版本。其代码库以 MIT 许可证开源,无追踪、无广告、无付费墙。

以下引自其官方仓库:

Reactive Resume is a free and open-source resume builder that makes it easy to
create, update, and share your resume.

- Pick a template, fill in your details, and export to PDF.
- Basic use needs no account.
- You own your data. The codebase is open source under the MIT license, with
  no tracking, no ads, and no hidden costs.

Reactive Resume 最初只是一个副业项目,于 2020 年初首次发布。同年晚些时候 推出 v2,到 2022 年初达到 v3,并于 2023 年末发布了基于 NestJS 和 PostgreSQL 后端的 v4。2026 年 1 月,v5 发布——这是一次彻底的重构,基于 TanStack Start(React 19、Vite、TypeScript、PostgreSQL + Drizzle ORM), 并带有 AI agent、MCP 服务器和求职申请追踪器。同年晚些时候,技术栈转向 TanStack Router + Hono + oRPC,服务端打印服务也被基于 @react-pdf/renderer 的客户端 PDF 渲染所取代。

Reactive Resume 与 YAMLResume 秉持相同的价值观——免费、开源、尊重隐私的 简历工具——但两者体现了截然相反的工作流。Reactive Resume 是一个 Web 应用:你在可视化的 WYSIWYG 构建器中编辑简历,数据保存在应用内 (PostgreSQL,或你自托管的实例)。YAMLResume 则是一个 基于文件的工具链: 你的简历是一个纯文本 YAML 文件,可以在任何编辑器中编辑、用 Git 进行版本 控制,并从命令行编译为多种输出格式。以下是两者的对比:

功能对比

功能YAMLResumeReactive Resume
类型CLI 工具链 + 文件格式Web 应用(托管或自托管)
语言TypeScript/Node.jsTypeScript(TanStack Router、React 19、Hono、Node.js)
许可证MITMIT
数据格式纯文本 YAML 文件存储在 PostgreSQL 中的 JSON,通过 Web UI 编辑
账号要求无需基础使用无需;云同步需要账号
编辑方式任意文本编辑器 + 开发模式自动重建浏览器中实时预览的 WYSIWYG 编辑器
排版引擎Docx、HTML、Markdown、LaTeX/XeTeX客户端 PDF 渲染器(@react-pdf/renderer)
输出格式DOCX、HTML、Markdown、LaTeX/PDFPDF、DOCX、Markdown、JSON
Schema 验证严格的 Zod Schema 验证,配合编译器 + IDE 集成服务端 Schema 验证,提供面向用户的错误信息
错误报告clang 风格的诊断信息,包含行号和位置信息表单内联错误和导入验证信息
国际化10 种语言、12 个语言区域代码,深度内容本地化UI 翻译为 55 个语言区域;PDF RTL 镜像;具备语言区域感知的回退字体
富文本支持在 summary 字段中支持精选的 Markdown 富文本语法所有字段均支持 WYSIWYG 富文本编辑器,带高亮颜色
字体自定义字体族、字号、行距 等按模板设置字体族、字号和间距
颜色自定义无(依赖主题)模板配色方案 + 带内容选择器的 Semantic CSS 编辑器
布局自定义页边距、页码、纸张尺寸 等A4/Letter、页边距、间距、侧栏宽度、图标样式、拖拽排版
章节自定义别名和重新排序自定义章节,带类型化字段、拖拽排序、按条目控制可见性
模板/主题多个官方 LaTeX、HTML 和 DOCX 模板15 个内置模板(Azurill、Bronzor、Chikorita、Ditto、Gengar、Lapras、Rhyhorn 等)
自定义样式基于模板(DOCX/HTML/LaTeX 源文件)可跨模板移植的 Semantic CSS 规则
开发模式开发模式,自动重建输入时实时预览
版本控制原生支持(Git 中的纯文本文件)JSON 导出/导入;应用内版本历史快照;无行级 diff
Docker 支持官方 Docker 镜像,预装 LaTeX 和 YAMLResume一体化自托管镜像(Docker Hub 和 GHCR);一键部署到 Vercel
GitHub Action官方 GitHub Action,用于 CI/CD无
HomebrewHomebrew formula,便于在 macOS 和 Linux 上安装无
网页 Playground交互式网页 Playground托管应用 rxresu.me 本身
AI 集成通过 CLI 和 API 内置生成和翻译应用内 AI agent,支持 OpenAI、Anthropic、Google、OpenRouter、Ollama 等,含 ATS 检查和 PDF/DOCX 导入
Agent 集成简历文件可与任意编码 agent 配合使用MCP 服务器(支持 OAuth),外加 OpenAPI REST API
分享将 HTML 输出托管到任何地方带浏览量统计的公开分享链接
其他精选示例简历、json2yamlresume 转换器求职信、求职申请追踪器、Application Copilot(自动填充、匹配评分、定制副本)
Node.js API@yamlresume/node,用于读取、验证、构建、监听、生成和翻译文件REST API + MCP(无本地库)
确定性输出是是(客户端 PDF 渲染器)

关键差异详解

如果必须用一个词组来概括 YAMLResume 与 Reactive Resume 的区别,那就是文件 与应用。YAMLResume 将简历视为纯文本源代码;Reactive Resume 将其视为应用内 的数据。几乎所有其他差异都源自这一决策。

文件与应用

使用 YAMLResume 时,简历就是磁盘上的一个 YAML 文件:

$ yamlresume build resume.yml
✔ Generated resume pdf file successfully: resume.pdf
✔ Generated resume docx file successfully: resume.docx
✔ Generated resume markdown file successfully: resume.md
✔ Generated resume html file successfully: resume.html

你可以将其提交到 Git、对比两个版本、按求职申请创建分支、在 Pull Request 中 审查变更,并让 CI 编译产物。GitHub Action 可以自动构建 PDF 并附加到 Release。没有任何东西在后台运行,除了你选择发布的 文件,也没有任何数据离开你的机器。

使用 Reactive Resume 时,简历保存在应用内部。你通过 Web UI 编辑,数据存储在 PostgreSQL 中(托管服务或你的自托管实例),需要时导出产物。该应用提供 JSON 导出/导入、基于快照的版本历史及恢复(在导入、AI 编辑等里程碑处捕获),以及 完整的数据删除——但没有行级 diff 或分支;如果你需要这些,必须自己在 JSON 导出之上构建该工作流。

两种方法都合理。应用模式免去了所有设置,是从零到一份成品 PDF 最快的路径; 文件模式则随着时间的推移而回报丰厚——你的简历不断积累历史、变体和自动化。

数据模型

与允许任意章节标题的 RenderCV 不同, YAMLResume 和 Reactive Resume 都采用固定的结构化 Schema,包含定义明确的 章节。这使得两款工具生成的简历都可预测、机器可读。

YAMLResume 的内容模型分离了三个关注点:

  • content:简历本身(basics、location、profiles、work、 education、skills、projects、publications、awards、 certificates、volunteer、references、languages、interests)
  • locale:简历所用的语言和地区
  • layouts:展示设置(模板选择、章节别名与排序、排版、页面设置)

由于数据模型是固定的,且与 JSON Resume 保持一致,YAMLResume 可以对其进行严格验证,将值规范化为固定词汇表(教育学 位、技能等级、语言熟练度、翻译为每种支持语言的国家和地区),并与更广泛的 JSON Resume 生态系统交换数据。编译器甚至可以直接接受 JSON Resume 文件, 而 json2yamlresume 转换器可以处理 整个项目。

Reactive Resume 的 Schema 覆盖了类似的内容(basics、experience、 education、skills、projects、certifications、languages、 interests、references、awards、volunteer work、publications、 profiles),并增加了 YAMLResume 所不具备的能力:

  • 自定义章节:定义带类型化扩展字段的全新章节,适用于作品集、演讲或专利
  • 按条目可见性:隐藏单个条目而不删除它们,因此一份简历可以产出多个定制 变体
  • 页面即画板:在页面之间拖拽条目,并精确查看分页位置
  • 求职信:从简历的样式生成独立的信件,导出为 PDF、DOCX 或 Markdown
  • 求职申请追踪器:带有阶段、备注、跟进和附件的求职流程管道,也可通过 REST API 和 MCP 工具访问

Reactive Resume 同样可以导入 JSON Resume 文件(并带有拒绝不可能日期的验 证),因此从任一方向在两个生态系统之间迁移都是可行的。

编辑体验

Reactive Resume 提供了一个精致的 WYSIWYG 编辑器:你在浏览器中看到的就是 最终 PDF 的样子。每个文本字段都支持富文本编辑器,提供粗体、斜体、链接、列 表,甚至高亮颜色。对大多数人来说,这是写简历最友好的方式——无需学习语法, 无需运行构建步骤。

YAMLResume 则有意放弃了部分即时性,以换取可移植性和规模。你在自己 的编辑器中编写 YAML,summary 字段中支持一组受约束的 Markdown 语法(粗体、斜体、链接、列表、段落)。 其回报是:

  • 你的简历可 grep、可脚本化、可 diff
  • 多行 YAML 字符串 让冗长的个人总结保持可读
  • 同一份内容可编译为 LaTeX、HTML、DOCX 和 Markdown
  • 批量编辑(在十个变体中重命名雇主)一条 sed 命令即可搞定

布局与渲染

两者的渲染架构完全不同。

引擎

YAMLResume 提供四种渲染引擎:

  • DOCX 引擎:Microsoft Word 文档,便于编辑和分享
  • HTML 引擎:响应式、适合网页展示的简历,带 SEO 元数据
  • Markdown 引擎:干净的纯文本,适用于 LLM、ATS 系统和静态站点
  • LaTeX 引擎:像素级完美的 PDF,通过 XeTeX 实现 专业排版

一条 yamlresume build 命令即可从同一份源文件生成所有四种格式。

Reactive Resume 使用 @react-pdf/renderer 在浏览器中渲染 PDF (v5 发布时带有服务端打印服务;该服务在 v5.1 中被移除)。导出格式包括 PDF、DOCX、Markdown 和 JSON。由于构建器预览与导出使用相同的文档树、通过 pdfjs 渲染,输出是确定性的,分页也像画板一样精确预览。代价是:PDF 和 DOCX 是主要的文档输出,Markdown 导出在 v5 中加入——没有 LaTeX 流水线, 也没有独立的 HTML 导出。

设计自定义

Reactive Resume 提供了更丰富的视觉工具箱:

  • 15 个模板(Azurill、Bronzor、Chikorita、Ditgar、Ditto、Gengar、 Glalie、Kakuna、Lapras、Leafish、Meowth、Onyx、Pikachu、Rhyhorn 和 Scizor),大多以 Pokémon 命名
  • 按模板的选项:颜色、字体、字号、间距、A4 或 Letter、侧栏宽度、全宽页 面、技能/语言指示器的图标样式
  • Semantic CSS:一种类似 CSS 的样式语言,其选择器描述的是简历内容 (section[type="experience"]、field[name="position"]、list-marker) 而非模板标记,因此样式在切换模板后仍然保留,并可在简历之间复制
  • 拖拽排版:对章节、条目和页面进行拖放排列

YAMLResume 的 LaTeX 引擎提供页面自定义 (纸张尺寸、页边距、页码)和排版控制 (字体族、字号、行距),而模板封装了视觉决策——有意不提供逐元素的颜色和细 粒度间距控制。如果你想为独特设计雕琢每一个像素,Reactive Resume 会给你更 多杠杆。如果你想要专业设计的成果,又不想成为排版师,YAMLResume 的约束式 方法正是其意义所在。

章节自定义

YAMLResume 通过章节别名和章节重新 排序重塑结构,而无需修改数据——把 work 重命名为 "Employment History",或在布局配置中把 skills 移到 education 上方。

Reactive Resume 以交互方式实现类似效果:章节可以重命名、拖拽重新排序,并 可通过自定义章节进行扩展。由于它是应用数据而非源代码,这些更改是即时的, 但除非你导出 JSON,否则它们不在版本控制之内。

国际化

两款工具在不同的层面进行本地化。

Reactive Resume 本地化界面:应用 UI 通过 Crowdin 翻译为 55 个语言区域, PDF 流水线在所有模板中处理从右到左(RTL)的镜像,并为韩语、日语、中文、阿拉 伯语、希伯来语和泰语提供具备语言区域感知的回退字体。然而,简历内容没有 本地化层:章节标题来自模板,日期遵循单一格式,学位或技能等级等词汇就是你所 输入的内容。一份法语简历意味着手工用法语编写内容。

YAMLResume 本地化内容。设置 locale 键即可切换章节标题、国家名称、教 育学位、技能等级、语言熟练度等级、地道的日期和地址格式、适合语言区域的标点 符号,以及跨 10 种语言、12 个语言区域代码的 LaTeX babel 配置。一份源文件可以按语言分别编译, yamlresume ai translate 可生成保持结构的翻译 ——因此维护一份英文简历和一份中文简历只是一个文件加上一个翻译步骤,而不是 两份逐渐偏离的平行文档。

对于 CJK 和复杂文字,YAMLResume 的 LaTeX 引擎还带来了数十年成熟的排版支持 ——用于中文的 ctex、用于日文的 luatexja、用于韩文的 kotex,以及用于 XeLaTeX 的 xeCJK——处理字体回退、全角标点压缩、CJK-拉丁间距和语言区域感知 断行。

AI 工作流

两个项目都拥抱了 AI,但方式各有特色。

Reactive Resume 将 AI 嵌入应用:自带来自 OpenAI、Anthropic、Google Gemini、OpenRouter 和 Ollama(以及任何 OpenAI 兼容端点)等提供商的 API key,应用内 agent 即可修改内容、修正语法、调整语气,并带有可恢复的操作 历史。其 ATS 检查刻意保持确定性——基于证据的反馈,加上可选的 AI 第二意见 (它本身不返回评分)。AI 还支持从 PDF 或 DOCX 导入简历,从现有文档中重 建结构化数据。通过 MCP 服务器,agent 可以端到端管理简历、求职信和求职申请 追踪器。

YAMLResume 将 AI 嵌入流水线:

  • yamlresume ai generate:根据职位名称和语言区域引导生成一份完整的、 通过 Schema 验证的简历
  • yamlresume ai translate:在保留结构和布局配置的前提下翻译简历

两者都从终端或 CI 运行,不在服务端存储任何内容,并将结果反馈到同一个经验 证的文件工作流。结合 Markdown 引擎, YAMLResume 文件还是最 LLM 友好的简历格式之一——可为任何编码 agent 提供 可读的上下文,无需专用集成。

API 与自动化

Reactive Resume 暴露的是远程 API 面:带 OpenAPI 文档的 REST API、带 OAuth 的 MCP 服务器、passkey 和双因素认证。它是一种服务端集成——你需要针 对某个实例进行认证。

YAMLResume 暴露的是本地 API:@yamlresume/node 可从任何 Node.js 应用读取、验证、构建、监听、生成和翻译文件,另有 create-yamlresume 用于搭建项目。 结合 GitHub Action、Docker 镜像和纯文件,它无需架设服务即可实现自动化。

生态系统与社区

自托管与本地优先

Reactive Resume 可自托管:提供一体化 Docker 镜像 (Docker Hub amruthpillai/reactive-resume,GHCR ghcr.io/reactive-resume/reactive-resume),以及一键部署到 Vercel 的方案 (自动配置 Neon PostgreSQL、Upstash Redis 和 Vercel Blob 存储)。自托管给 你完全的控制权,但你是在运维一个应用:数据库迁移、存储、认证和备份都由 你自己负责。

YAMLResume 是本地优先的:一切都在你的机器上运行, 官方 Docker 镜像 的存在仅仅是为了提供预配 置的构建环境(Node.js、XeTeX、字体)。没有需要运维的服务器、没有需要备份 的数据库、没有需要保护的账号。

分发

YAMLResume 在开发者工作的地方与你相遇:

  • npm/pnpm/yarn/bun:npm install -g yamlresume
  • Homebrew:brew install yamlresume,支持 macOS 和 Linux
  • GitHub Action:在 CI/CD 中构建简历
  • Docker:在任何地方一条命令完成构建

Reactive Resume 以托管应用加容器镜像和源代码的形式分发;没有 CLI、 Homebrew formula 或 CI 集成。

JSON Resume 互操作

两款工具都可以导入 JSON Resume 文件, 这降低了向任一方向切换的成本。YAMLResume 更进一步:其编译器原生接受 JSON Resume,Schema 保持一致,json2yamlresume 还可以转换包含布局的整个项目。

Web 界面

YAMLResume 提供了一个交互式网页 Playground,完全在浏 览器中运行,无需服务端渲染——无需安装任何东西即可试用该格式。

Reactive Resume 的"Playground"就是产品本身:一个精致的托管应用 rxresu.me,基础使用无需账号、免费。

总结

Reactive Resume 适合如果你需要:

  • 零设置、无构建步骤的可视化 WYSIWYG 简历构建器
  • 15 个精致的模板,具备深度视觉自定义,包括 Semantic CSS 编辑器和拖拽布局 控制
  • 覆盖每个字段的 WYSIWYG 富文本编辑
  • 带浏览量统计的公开分享链接
  • 内置求职信和带流程阶段的求职申请追踪器
  • 应用内 AI agent,支持 OpenAI、Anthropic、Google、OpenRouter 和 Ollama, 支持从 PDF/DOCX 的 AI 导入,以及 ATS 检查
  • 通过托管的 MCP 服务器和 OpenAPI REST API 实现的 agent 与自动化集成
  • 可以在 Vercel 上一键部署或通过 Docker 部署的自托管 Web 应用

YAMLResume 适合如果你需要:

  • 简历作为 Git 中的纯文本 YAML 文件,原生支持 diff、分支和代码评审
  • 从单一源文件输出四种渲染引擎(DOCX、HTML、Markdown、LaTeX/PDF)
  • 深度内容国际化:10 种语言、12 个语言区域代码,带翻译词汇表、地道的日期 和地址格式,以及 CJK 就绪的 LaTeX 排版
  • CLI 优先的开发者体验,带监听模式、Schema 感知诊断和确定性构建
  • 在本地终端或 CI 中运行的 AI 生成与翻译
  • 为自动化打造的生态工具:Homebrew、Docker、GitHub Action、Node.js API, 以及可嵌入的浏览器 Playground
  • 没有账号、没有服务器、没有数据库——只有文件

如果你更喜欢一个精致的视觉应用来统一管理简历、求职信和求职流程,并且希望 获得最丰富的模板和 AI agent 体验、无需接触命令行,请选择 Reactive Resume。

如果你把简历视为源代码——可版本化、可评审、可编译、可自动化——并希望一个文 件产出像素级完美的 PDF、Word 文档、网页和 LLM 友好的文本版本,涵盖十几种 语言区域,并在每次提交时完成这一切,请选择 YAMLResume。

Edit on GitHub

Last updated on

On this page