YAMLResume VS JSON Resume
JSON Resume es un pionero en la creación de un estándar abierto para un formato de datos estructurado para currículums. Su primera versión oficial fue el 31 de julio de 2014—hace más de 10 años.
De su sitio web oficial:
## Origins and Conceptualization
JSON Resume was conceived as a solution to the fragmented and inconsistent
landscape of resume formats. Traditional resumes, typically created in formats
like Microsoft Word or PDF, often suffer from compatibility issues when parsed
by different systems. Recognizing this problem, Thomas Davis and Roland Sharp
initiated JSON Resume as an open-source project to create a universal,
machine-readable format for resumes.
## Development Milestones
The project began gaining momentum in the early 2010s, with significant
milestones such as the creation of the JSON Resume schema, the development of
the first CLI tools, and the establishment of the JSON Resume registry. These
milestones were driven by community contributions and the growing recognition of
the need for a standardized resume format in the tech industry.JSON Resume hizo un excelente trabajo estableciendo un estándar abierto para datos estructurados de currículums. Sin embargo, es solo datos—especifica cómo estructurar tu currículum en JSON pero no proporciona una solución opinada para convertir esos datos en un documento hermoso y profesionalmente compuesto.
YAMLResume está profundamente inspirado en JSON Resume y adopta un enfoque más opinado, con baterías incluidas. Así es como se comparan:
Comparación de Características
| Característica | YAMLResume | JSON Resume |
|---|---|---|
| Formato de Datos | YAML | JSON |
| Internacionalización | 10 idiomas integrados | Ninguno |
| Soporte de Texto Enriquecido | Un conjunto seleccionado de sintaxis de texto enriquecido Markdown en campos summary | Ninguno |
| Validación de Esquema | Validación estricta de esquema con compilador + integración con IDE | Validación básica de JSON Schema |
| Personalización de Fuente | Familia de fuentes, tamaño de fuente, interlineado, etc. | Ninguno |
| Personalización del Diseño | Márgenes de página, números de página, tamaño de papel, etc. | Ninguno |
| Personalización de Secciones | Alias y reordenamiento | Ninguno |
| Motor de Composición Tipográfica | HTML, Markdown, LaTeX | HTML |
| Formatos de Salida | HTML, Markdown, LaTeX/PDF | HTML y PDF |
| Plantillas | múltiples plantillas oficiales de LaTeX y HTML | Decenas de temas HTML |
| Modo de Desarrollo | Modo de desarrollo con reconstrucción automática | Sí |
| Herramienta de Conversión | json2yamlresume ayuda a convertir JSON Resume a YAMLResume | N/A |
| Soporte de Docker | Imagen oficial de Docker con LaTeX y YAMLResume preinstalados | Ninguno |
| GitHub Action | GitHub Action oficial para CI/CD | Ninguno |
| Homebrew | Fórmula de Homebrew para instalación fácil en macOS y Linux | Ninguno |
| Zona de Pruebas Web | Zona de pruebas interactiva basada en web | Ninguno |
Diferencias Clave Explicadas
Si tuviéramos que elegir una palabra para resumir la diferencia entre YAMLResume y JSON Resume, sería opinado. JSON Resume es un estándar de datos que define cómo estructurar tu currículum en JSON, pero te deja casi todo lo demás en tus manos. YAMLResume adopta un enfoque más opinado, con baterías incluidas, que proporciona no solo el formato de datos sino también un conjunto rico de herramientas para validar, personalizar, renderizar y distribuir tu currículum en múltiples formatos e idiomas.
Contenido
YAMLResume y JSON Resume comparten estructuras de contenido similares, pero YAMLResume
extiende el modelo de datos con una validación de esquema más fuerte, campos más estandarizados,
soporte de texto enriquecido en campos summary y una estructura más plana:
Validación de esquema más fuerte
YAMLResume viene con un esquema Zod muy completo, con el cual puede validar tu currículum en tiempo de compilación y hacer cumplir la seguridad de tipos, la corrección de formato con mensajes de error al estilo de clang:
Por ejemplo, para el siguiente currículum que tiene un correo electrónico inválido, un nombre de ciudad demasiado corto y un tamaño de fuente fuera de rango:
# yaml-language-server: $schema=https://yamlresume.dev/schema.json
---
content:
basics:
name: Andy Dufresne
headline: Headed for the Pacific
phone: "(213) 555-9876"
email: hi@pp
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
location:
address: 123 Main Street
region: California
city: S
country: United States
postalCode: "95814"
education:
- institution: University of Southern California
url: https://www.cs.usc.edu/
degree: Bachelor
area: Computer Engineering and Computer Science
score: "3.8"
startDate: Sep 1, 2016
endDate:
courses:
- D
- Programming Language Concepts
summary: |
- Developed proficiency in programming languages such as Java, C++, and Python
- Gained hands-on experience in software development through various projects and assignments
- Strong communication and teamwork skills acquired through group projects and presentations
layouts:
- engine: latex
typography:
fontSize: 13ptyamlresume validate te mostrará una lista de errores potenciales, con información
posicional clara:
$ yamlresume validate my-resume.yml
my-resume.yml:9:12: warning: email is invalid.
email: hi@pp
^
my-resume.yml:38:10: error: city is too short.
city: S
^
my-resume.yml:41:14: error: font size must be between 10pt and 12pt.
fontSize: 13pt
^YAMLResume también incluye un JSON Schema oficial para autocompletado en IDE, documentación al pasar el cursor y validación en tiempo real en editores como VS Code.
Autocompletado en VS Code con el JSON Schema de YAMLResume:
Validación de Formato en VS Code:
Por otro lado, JSON Resume proporciona validación básica de JSON Schema que verifica la estructura pero ofrece una validación semántica limitada—sin informes de errores en tiempo de compilación con números de línea, sin integración con IDE y sin verificaciones de reglas de negocio como longitudes mínimas de cadenas o validación de valores enumerados.
Texto Enriquecido
YAMLResume admite un conjunto limitado de sintaxis Markdown
(negrita, cursiva, enlaces, listas y párrafos) en campos summary en todas
las secciones que tienen campos summary. Esto te permite enfatizar logros
clave o estructurar responsabilidades con listas anidadas sin depender de
reglas de renderizado específicas del tema.
Una de las razones principales para adoptar YAML sobre JSON es que la sintaxis de cadenas multilínea de YAML hace que sea mucho más fácil escribir y leer contenido de texto enriquecido directamente en el archivo fuente del currículum, sin necesidad de escapar saltos de línea o caracteres especiales como lo harías en JSON.
Por ejemplo, aquí hay un campo summary de una entrada work que combina varias
de las características de sintaxis admitidas:
---
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 experiencesAquí está el PDF generado con el motor LaTeX:

Aquí está el mismo contenido con sintaxis de texto enriquecido expresado en JSON:
{
"content": {
"basics": {
"summary": "This is a sample YAML resume that support limited set of markdown rich text syntax (bold, italics, links, lists):\n\n- Computer Science major with **strong foundation** in data structures, *algorithms*, and software development\n 1. Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites\n 2. Experiened in databases (SQL, NoSQL), familiar with server-side technologies ([Node.js](https://nodejs.org/en), Express, etc.)\n- Team player, with detail-oriented mindset and a keen eye for design and user experiences\n"
}
}
}No hay duda de que la versión JSON es mucho más difícil de leer y editar, especialmente para resúmenes más largos con múltiples párrafos y listas anidadas.
JSON Resume no tiene opinión sobre el formato—sus campos summary son solo texto
plano. Cualquier estilo se deja enteramente a los temas individuales, lo que significa que los mismos
datos del currículum pueden renderizarse de manera diferente (o perder la estructura semántica por completo)
dependiendo del tema que elijas.
Campos Estandarizados
YAMLResume normaliza los valores de uso común en vocabularios fijos que se validan en tiempo de compilación y se traducen en todos los idiomas admitidos:
- Grados educativos (
Middle School,High School,Bachelor,Master,Doctor, etc.) - Niveles de habilidad (
Novice,Beginner,Intermediate,Advanced,Expert,Master) - Fluidez de idioma (
ElementaryaNative) - Países y regiones (traducidos a cada idioma admitido)
Dado que estos valores se extraen de un conjunto cerrado, YAMLResume puede validarlos,
traducirlos y renderizarlos de manera consistente—independientemente del formato de salida o
idioma. JSON Resume acepta cadenas de texto libre, por lo que un grado escrito como BS,
B.S., Bachelor of Science o Bachelor se pasará tal cual,
dejando la consistencia y la localización al usuario.
Estructura más plana
YAMLResume coloca las claves location y profiles sociales en el nivel superior,
separadas de basics, lo que simplifica el modelo de datos y lo hace más alineado
y consistente entre secciones. JSON Resume anida estos bajo basics, lo que
puede llevar a estructuras de datos más complejas.
Diseños
JSON Resume se detiene en la capa de datos. Te dice cómo estructurar tu currículum en JSON pero deja el renderizado completamente de lado. YAMLResume proporciona una canalización completa y opinada desde el código fuente YAML hasta la salida pulida:
- Motor HTML: Currículums responsivos y listos para web con metadatos SEO
- Motor Markdown: Texto limpio para LLMs, sistemas ATS y sitios estáticos
- Motor LaTeX: PDFs perfectos a nivel de píxel con tipografía profesional
Un solo comando yamlresume build puede generar los tres formatos desde el mismo
archivo fuente.
YAMLResume también proporciona un conjunto rico de opciones de personalización de diseño que van más allá de lo que ofrece JSON Resume.
Personalización de página
YAMLResume te da control total sobre el diseño físico de página, lo cual es crítico para la salida PDF del motor LaTeX, donde la precisión del formato es importante:
- Tamaño de papel: Elige entre A4 (predeterminado) y US Letter para coincidir con los estándares regionales
- Márgenes de página: Configura de manera independiente los márgenes superior, inferior, izquierdo y derecho en
centímetros (por ejemplo,
left: 1.5cm,top: 2.5cm) para controlar el espacio en blanco y la densidad del contenido - Números de página: Activa o desactiva los números de página, y controla su posición y estilo para currículums de varias páginas
Estas configuraciones son especialmente importantes para el motor LaTeX, donde incluso pequeños ajustes de márgenes pueden afectar significativamente cómo fluye el contenido entre páginas.
Personalización de tipografía
YAMLResume proporciona controles semánticos de tipografía que se asignan a implementaciones específicas del motor:
- Familia de fuentes: Especifica una lista prioritaria de nombres de fuentes (por ejemplo,
"Merriweather, serif") que funciona comofont-familyde CSS para HTML o selección de fuentes XeTeX para LaTeX - Tamaño de fuente: LaTeX admite 10pt, 11pt o 12pt; HTML admite 14px a 20px
- Interlineado: Elige entre cinco niveles semánticos—
tight,snug,normal,relaxedoloose—para controlar la densidad del contenido sin calcular manualmente valores de interlineado, compatible con los motores LaTeX y HTML
JSON Resume no tiene ningún sistema de tipografía. El formateo depende enteramente del tema, lo que significa que cambiar de tema puede alterar drásticamente la apariencia de tu currículum.
Personalización de secciones
YAMLResume te permite remodelar la estructura de tu currículum mediante alias de secciones y reordenamiento de secciones sin tocar los datos subyacentes:
- Alias de secciones: Sobrescribe los títulos de sección predeterminados para cualquiera de las 12 secciones con alias. Cambia el nombre de "Work" a "Professional Experience", "Education" a "Academic Background" o "Skills" a "Technical Proficiencies" para coincidir con tu industria o preferencia personal. Los alias admiten 2–128 caracteres y vuelven a los valores predeterminados específicos del idioma cuando no se proporcionan.
- Reordenamiento de secciones: Cambia el orden de presentación de las secciones con una
simple lista
order. Colocaskillsantes dework, destacapublicationsyawardspara roles académicos, o comienza conprojectspara currículums de estilo portafolio. Las secciones no listadas explícitamente se añaden en su orden predeterminado, y las secciones vacías se filtran automáticamente.
JSON Resume define la estructura de secciones en el esquema pero no ofrece ningún mecanismo para renombrar o reordenar secciones—la presentación está bloqueada a lo que el tema codifica de forma rígida.
Configuración Regional (i18n)
En el momento de escribir esto, YAMLResume admite 10 idiomas de fábrica (inglés, chino, español, francés, noruego, neerlandés, japonés, alemán, indonesio, etc.) con traducciones integradas de encabezados de sección, nombres de países y varios términos, formatos de dirección y fecha idiomáticos, configuración de LaTeX de mejores prácticas, etc.
Puedes usar yamlresume languages list para ver todos los idiomas admitidos:
$ yamlresume languages list
| locale.language | Language Name |
| --------------- | ------------------------------- |
| en | English |
| zh-hans | Simplified Chinese |
| zh-hant-hk | Traditional Chinese (Hong Kong) |
| zh-hant-tw | Traditional Chinese (Taiwan) |
| es | Spanish |
| fr | French |
| no | Norwegian |
| nl | Dutch |
| ja | Japanese |
| id | Indonesian |
| de | German |
| pt-br | Brazilian Portuguese |YAMLResume admite i18n de las siguientes maneras:
Traducciones de términos
YAMLResume también proporciona datos más estandarizados para varios campos:
- Grados: YAMLResume normaliza los grados educativos a un conjunto fijo
(
Bachelor,Master,Doctor, etc.) para un formateo consistente - Niveles de habilidad: YAMLResume proporciona niveles de habilidad predefinidos (
NoviceaMaster) para una presentación estandarizada - Fluidez de idioma: YAMLResume estandariza los niveles de fluidez (
ElementaryaNative) en todos los idiomas admitidos
Puntuaciones
YAMLResume usa automáticamente puntuación apropiada para cada idioma en los currículums generados. Los diferentes idiomas tienen reglas de puntuación distintas que van más allá de la simple traducción:
- Idiomas CJK (chino,
japonés): Usa marcas de puntuación de ancho completo
(
、para coma,:para dos puntos) para coincidir con el ancho de los caracteres - Francés: Añade espacios de no separación
antes de signos de puntuación alta (
:!?) y usa comillas angulares (« ») para citas - Alemán: Usa comillas bajas-altas
(
„“) o comillas angulares invertidas (»«) - Español: Admite signos de
puntuación invertidos (
¿¡)
Las plantillas de currículum seleccionan automáticamente el estilo de puntuación correcto basado en
la configuración locale.language, asegurando la consistencia tipográfica con las
convenciones locales.
Formato de fechas
YAMLResume formatea las fechas según convenciones específicas de cada idioma en lugar de usar un único formato global:
- Inglés: "Jun 2018 – Present" (meses abreviados, separador en-dash)
- Chino: "2018年6月至今" (año primero, caracteres de ancho completo, separador "至")
- Japonés: "2016年10月~2018年1月" (tilde de ancho completo como separador de rango)
- Alemán: Nombres de meses en mayúscula ("Januar", "Februar")
- Francés: Meses abreviados en minúscula con puntos ("janv.", "févr.")
- Español: Meses abreviados en minúscula ("ene", "feb")
Los nombres de los meses, el orden de las fechas y los separadores de rango se adaptan automáticamente al idioma seleccionado.
Formato de direcciones
YAMLResume adapta la presentación de direcciones para coincidir con las convenciones locales:
- Inglés: Dirección → Ciudad → Estado → País (de lo más específico a lo más general)
- Chino: País → Región → Ciudad → Dirección (de lo más general a lo más específico)
- Alemán: Calle + Número, luego Código Postal antes de Ciudad ("Musterstraße 123, 10115 Berlin")
- Japonés: País → Región (Prefectura) → Ciudad → Dirección → Código Postal
Los componentes de la dirección se reordenan automáticamente basados en la configuración regional para coincidir con las expectativas culturales de cada idioma.
Personalización de LaTeX babel
YAMLResume configura el paquete babel de LaTeX para cada idioma admitido para asegurar una composición tipográfica adecuada en la salida PDF:
- Reglas de separación silábica: Separación de palabras específica de cada idioma
- Formatos de fecha: Cadenas de fecha localizadas en documentos generados
- Tipografía: Reglas de espaciado y puntuación específicas de cada idioma
- Manejo de caracteres: Soporte adecuado para diacríticos, ligaduras y caracteres especiales (por ejemplo, ß en alemán, ç en francés, ñ en español)
Por ejemplo, la configuración de babel para francés permite el manejo adecuado del espacio de no separación delgado antes de los dos puntos, mientras que el babel alemán asegura patrones de separación silábica correctos para palabras compuestas. Este nivel de refinamiento tipográfico no está disponible en el ecosistema solo HTML de JSON Resume.
Experiencia del Desarrollador
YAMLResume proporciona características modernas de experiencia de desarrollador que JSON Resume no tiene:
yamlresume new: Crea un nuevo currículum desde una plantilla oficial en un solo comandoyamlresume build: Construye tu currículum en HTML, Markdown y PDF de un solo golpeyamlresume dev: Modo de observación que reconstruye tu currículum en cada guardadoyamlresume doctor: Diagnostica tu entorno LaTeX y configuración de fuentes, facilita la resolución de problemasyamlresume validate: Verifica tu currículum sin construirloyamlresume languages list: Lista todos los idiomas admitidos y sus códigos de configuración regionalyamlresume templates list: Lista todas las plantillas disponibles para cada motor
YAMLResume trata tu currículum como código. El compilador integrado analiza tu YAML, lo valida contra un esquema Zod completo, transforma los datos y genera la salida—detectando errores tempranamente con diagnósticos al estilo de clang como se mencionó anteriormente.
Ecosistema y Comunidad
json2yamlresume
Si tienes un JSON Resume existente, puedes convertirlo a YAMLResume usando la
herramienta CLI json2yamlresume:
$ npm install -g json2yamlresume
$ json2yamlresume resume.json resume.ymlEl convertidor maneja todas las secciones estándar de JSON Resume y transforma estructuras
anidadas (como basics.location y basics.profiles) al formato más plano de nivel superior de YAMLResume.
Docker
YAMLResume proporciona una imagen oficial de Docker con todas las dependencias preinstaladas, incluyendo Node.js, LaTeX y fuentes recomendadas. Esto hace que sea fácil comenzar sin instalación local:
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.ymlJSON Resume no tiene soporte oficial de Docker, dejando la configuración del entorno enteramente a los usuarios.
Homebrew
YAMLResume está disponible mediante Homebrew para usuarios de macOS y Linux:
brew install yamlresumeEsto instala la CLI y la hace disponible globalmente. JSON Resume no tiene fórmula de Homebrew y debe instalarse mediante npm.
GitHub Action
YAMLResume proporciona una GitHub Action oficial para pipelines de CI/CD. Puedes construir y confirmar automáticamente PDFs de currículum en cada push:
- uses: yamlresume/action@v0.2.3
with:
resumes: |
resume-en.yml
resume-zh.yml
resume-fr.ymlJSON Resume no tiene GitHub Action oficial, aunque existen soluciones de la comunidad.
Zona de Pruebas
YAMLResume proporciona una zona de pruebas interactiva basada en web donde
puedes editar tu currículum en tiempo real y ver vistas previas instantáneas en todos
los formatos de salida admitidos. La zona de pruebas está construida sobre el
componente React @yamlresume/playground
y cuenta con:
- Editor YAML en vivo: Editor basado en Monaco con resaltado de sintaxis YAML y validación de esquema
- Vista previa en tiempo real: Renderizado instantáneo para diseños de HTML, Markdown y LaTeX
- Opciones de exportación: Descarga, copia o imprime tu currículum directamente desde el navegador
- Diseño responsivo: Diseño de panel dividido en escritorio, interfaz con pestañas en móvil
La zona de pruebas es útil para prototipar diseños de currículum rápidamente, probar configuraciones de diseño o compartir borradores de currículum sin necesitar un entorno de desarrollo local. Dado que la zona de pruebas se ejecuta enteramente en el navegador, puedes usarla en cualquier dispositivo sin instalar Node.js, LaTeX ni ninguna otra dependencia.
JSON Resume no tiene una zona de pruebas interactiva equivalente—los usuarios deben instalar la CLI y configurar un entorno local para previsualizar temas.
Resumen
JSON Resume destaca como un formato de intercambio de datos—una forma estandarizada de estructurar datos de currículum. YAMLResume extiende esa idea hacia una solución completa de currículum, proporcionando no solo el formato de datos sino también un conjunto completo de herramientas para validar, renderizar, personalizar y distribuir tu currículum en múltiples formatos e idiomas.
Elige JSON Resume si necesitas un estándar de datos ligero y ampliamente adoptado y planeas construir tu propia canalización de renderizado.
Elige YAMLResume si quieres una solución opinada, con baterías incluidas, que maneje todo desde la validación de datos hasta la generación profesional de PDF, con herramientas modernas de desarrollador como modo de observación, soporte de Docker e integración de CI/CD.
Last updated on