Todo desarrollador necesita un currículum a menos que seas un profesional mundialmente famoso. Escribir un currículum puede no ser difícil, pero definitivamente no es divertido y es tedioso. Muchos pasan días elaborando sus currículums, persiguiendo currículums 100% libres de errores tipográficos, con gramática revisada y con diseño y tipografía profesional.
YAMLResume te permite crear y versionar tus currículums usando YAML y generar PDFs de aspecto profesional con hermosa tipografía en un instante.
Comenzó como el motor de composición central para PPResume—un generador de currículums comercial, perfecto a nivel de píxel, basado en LaTeX—que ya ayuda a miles de personas a crear currículums bellamente compuestos. Sin mucha vacilación, decidimos hacerlo de código abierto para que las personas siempre tengan el derecho de decir no al bloqueo de proveedores.

Inicio Rápido
YAMLResume proporciona una herramienta CLI, además, tiene una dependencia obligatoria en un motor de composición para generar PDF. En otras palabras, debes instalar un motor de composición primero si quieres generar PDF.
Instalar yamlresume CLI es pan comido. Puedes instalarlo usando tu
administrador de paquetes de Node.js favorito:
npm install -g yamlresumepnpm add -g yamlresumeyarn global add yamlresumebun add -g yamlresumeVerifica que yamlresume esté instalado correctamente:
$ yamlresume help
Usage: yamlresume [options] [command]
YAMLResume — Resume as Code in YAML
__ __ _ __ __ _ ____
\ \ / // \ | \/ | | | _ \ ___ ___ _ _ ___ ___ ___
\ V // _ \ | |\/| | | | |_) / _ \/ __| | | / _ \/ _ \ / _ \
| |/ ___ \| | | | |___| _ < __/\__ \ |_| | | | | | | __/
|_/_/ \_\_| |_|_____|_| \_\___||___/\____|_| |_| |_|\___|
Options:
-V, --version output the version number
-v, --verbose verbose output
-h, --help display help for command
Commands:
new [filename] create a new resume
build <source> build a resume to LaTeX and PDF
languages i18n and l10n support
templates manage resume templates
help [command] display help for commandTambién recomendamos que instales la fuente Linux Libertine para obtener los PDFs de mejor aspecto.
Por último pero no menos importante, si quieres crear un currículum CJK, también recomendamos que instales fuentes Google Noto para la mejor cobertura unicode.
Crear un Nuevo Currículum
Puedes crear un nuevo currículum con una sola línea:
$ yamlresume new my-resume.yml
✔ Created my-resume.yml successfully.Bajo el capó yamlresume new clonará un currículum de muestra desde
aquí.
Luego puedes obtener un PDF con una sola línea nuevamente:
$ yamlresume build my-resume.yml
◐ Generating resume PDF with command: xelatex -halt-on-error my-resume.tex...
✔ Generated resume PDF successfully.¡Listo! Revisa el PDF de currículum generado:

Puedes revisar la Galería de PPResume para más ejemplos impulsados por YAMLResume como motor de composición.
Solución de Problemas
YAMLResume CLI proporciona una bandera verbose -v/--verbose para mostrar información de registro más detallada. Si tienes problemas para construir un currículum, puedes intentar ejecutar
los comandos nuevamente con esta bandera verbose y pegar la salida en problemas de github, lo revisaré y
te responderé.
¿Cómo Funciona?
Bajo el capó, YAMLResume funciona como un mini compilador, es decir, toma una entrada, la analiza en un AST y luego genera una salida.
El principio de diseño central de YAMLResume es la separación de preocupaciones. Uno de los ejemplos más famosos que sigue este principio es HTML & CSS, que son la base de la web moderna—HTML se usa para organizar el contenido en una página web, CSS se usa para definir el estilo de presentación del contenido.
Siguiendo el principio central, YAMLResume está diseñado basándose en los siguientes requisitos:
- el contenido del currículum debe escribirse en texto plano, lo cual es amigable con el control de versiones
- el texto plano debe usar un formato totalmente estructurado, lo que nos da más control y flexibilidad
- YAML es mejor que JSON porque es más legible y escribible para humanos
- el texto plano YAML se renderiza luego en un PDF con un motor de composición conectable
- se debe proporcionar un diseño opinado de fábrica, mientras se permite a las personas ajustar opciones en consecuencia como tamaños de fuente, márgenes de página, etc.
¿Por Qué YAML?
JSON Resume es otro proyecto que permite a las personas crear currículums en un formato estructurado. Sin embargo, la mayoría de los desarrolladores estarían de acuerdo en que YAML es mejor que JSON con respecto a la legibilidad y escritura humana. Por ejemplo, es bastante inconveniente representar cadenas de múltiples líneas en JSON, mientras que YAML tiene soporte nativo para ello.
Compara un fragmento de currículum en JSON y YAML:
{
"content": {
"basics": {
"name": "Andy Dufresne",
"headline": "Headed for the Pacific",
"phone": "(213) 555-9876",
"email": "hi@ppresume.com",
"url": "https://ppresume.com/gallery",
"summary": "- Computer Science major with strong foundation in data structures, algorithms, and software development\n- Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites\n- Experiened in databases (SQL, NoSQL), familiar with server-side technologies (Node.js, Express, etc.)\n- Team player, with detail-oriented mindset and a keen eye for design and user experiences"
}
}
}content:
basics:
name: Andy Dufresne
headline: Headed for the Pacific
phone: "(213) 555-9876"
email: hi@ppresume.com
url: https://ppresume.com/gallery
summary: |
- Computer Science major with strong foundation in data structures, algorithms, and software development
- Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites
- Experiened in databases (SQL, NoSQL), familiar with server-side technologies (Node.js, Express, etc.)
- Team player, with detail-oriented mindset and a keen eye for design and user experiences¿Cuál es más legible y escribible? La respuesta es obvia.
JSON Resume no tiene preocupación sobre el diseño del currículum. En el mundo real, ¿no puedes simplemente enviar un archivo JSON a los reclutadores, verdad? El formato de currículum estructurado necesita ser convertido a un formato de documento legible por humanos como docx, PDF, etc. YAMLResume ofrece una configuración de diseño opinada, y garantiza salida PDF perfecta a nivel de píxel.
Al momento de escribir, el diseño opinado de YAMLResume soporta:
- idiomas locales
- Inglés
- Chino Simplificado
- Chino Tradicional
- Español
- márgenes
- superior
- izquierdo
- derecho
- inferior
- números de página
- plantilla
- tipografía
- tamaño de fuente
Aquí hay un fragmento de código de muestra para la configuración de diseño en YAMLResume:
layout:
locale:
language: en
margins:
top: 2.5cm
left: 1.5cm
right: 1.5cm
bottom: 2.5cm
page:
showPageNumbers: true
template: moderncv-banking
typography:
fontSize: 11pt¿Por Qué No Markdown?
Markdown es otra opción popular para escribir currículums, también hay algunos generadores de currículums que adoptan markdown como el formato de entrada principal. Sin embargo, markdown es un lenguaje de marcado de propósito general para crear texto formateado, mientras que los currículums solo usan un conjunto muy limitado de características de markdown.
Por ejemplo, la siguiente sintaxis de markdown es muy poco probable que se use en un currículum:
- blockquote
- bloques de código
- reglas horizontales
- imágenes
- tablas
- marcado html
- etc.
Segundo, markdown es demasiado flexible, a menudo dando a los usuarios más libertad de la que necesitan para crear un currículum. Sería bastante difícil analizar de manera confiable un documento markdown genérico como un currículum.
Tercero, características como cambio de plantillas, control preciso de diseño (como \hfill
y \hspace en LaTeX) es muy difícil de implementar en markdown.
En conclusión, usar un formato totalmente estructurado como YAML/JSON nos da más control y confiabilidad sobre el formato y diseño de los currículums.
¿Por Qué Todavía LaTeX?
LaTeX es un motor de composición muy maduro y estable
que puede producir PDFs de extremadamente alta calidad. Sin embargo, muchos usuarios de LaTeX,
incluso entusiastas de LaTeX, estarían de acuerdo en que el lenguaje LaTeX está algo
desactualizado—sus mensajes de error son a menudo bastante confusos, y la dependencia de
variables globales a menudo lleva a conflictos entre paquetes, la velocidad de compilación
es lenta para documentos grandes y a menudo bastante complicada, y produce
archivos intermedios feos (.aux, .log, etc.).
Algunos sugieren reemplazar LaTeX con typst, que es un motor de composición moderno, con mucho mejor DX y compilación mucho más rápida. Sin embargo, después de una cuidadosa evaluación, decidí quedarme con LaTeX. El factor decisivo aquí es que, YAMLResume está diseñado para soportar múltiples idiomas con la mejor calidad de composición posible, sin embargo, el soporte CJK de typst todavía es inestable y carente.
Más adelante podría agregar un nuevo backend de renderizador para soportar typst.
Soporte de Texto Enriquecido
Aunque hemos decidido no usar markdown como el formato de entrada del currículum, sí
soportamos un conjunto limitado de sintaxis de texto enriquecido markdown para el campo summary en
varias secciones.
Por ahora, soportamos la siguiente sintaxis de markdown:
**negrita***cursiva*[enlace](https://www.google.com)- lista ordenada
- lista desordenada
- lista anidada
- párrafos
Por ejemplo, este es un fragmento de muestra para el campo content.basics.summary:
---
content:
basics:
# ...
summary: |
This is a sample YAML resume that support limited set of markdown rich text syntax (bold, italics, links, lists):
- Computer Science major with **strong foundation** in data structures, *algorithms*, and software development
1. Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites
2. Experiened in databases (SQL, NoSQL), familiar with server-side technologies ([Node.js](https://nodejs.org/en), Express, etc.)
- Team player, with detail-oriented mindset and a keen eye for design and user experiencesY este es el PDF generado:

Puedes ver que la sintaxis de texto enriquecido se renderiza correctamente con negrita, cursiva, enlaces, listas, bastante sólido, ¿verdad?
Hoja de Ruta
En general, el proyecto todavía está en una etapa muy temprana, tenemos un largo camino por recorrer. Ya he planeado una lista de características por hacer en el futuro cercano:
- más idiomas, Japonés, Alemán, Francés, etc
- más plantillas
- alias de sección
- reordenamiento de sección
- validación de esquema
Para cualquier problema, puedes:
¡Manténganse atentos!
Written by
Xiao HanyuAt
Wed May 21 2025