mcpField
R
resumx

resumx

github.com/resumx文档处理29133 次安装33 周前更新
代码仓库

关于 resumx

resumx 是面向使用 Markdown 编写和定制简历者的渲染工具,可从单一源文件生成 PDF、HTML、PNG 或 DOCX,并提供页数适配、标签和视图功能。

主要功能

  1. 01将 Markdown 渲染为 PDF、HTML、PNG 或 DOCX
  2. 02适配指定页数
  3. 03通过标签和视图筛选内容
  4. 04验证简历结构与内容
  5. 05使用样式和 CSS 定制布局

适用场景

  1. 01从单个 Markdown 文件生成定制简历
  2. 02将简历导出为多种格式
  3. 03将简历适配到指定页数

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/resumx/skills --skill resumx

安装后在 Claude Code 中输入/resumx确认已加载。

附带文件resources/tagging-resume.mdresources/writing-resume.md

详细介绍

Resumx

Markdown → PDF/HTML/PNG/DOCX 简历渲染器。自动适配目标页数,并通过标签和视图从同一个源文件生成定制输出。

从其他渲染器或构建器迁移? 一步完成转换并快速上手:resumx.dev/#import。上传 PDF、DOCX、LaTeX、JSON Resume 或 RenderCV YAML,即可获取可编辑并使用 Resumx 渲染的 Markdown。

资源

资源适用场景
writing-resume.md以交互式分步方式创建简历
tagging-resume.md系统化添加标签,以生成定制输出;提供分层标签体系

Markdown 语法

标准 Markdown + 行内分栏、方括号跨度、围栏 div。

结构: # Name → email | github | linkedin(联系方式)→ ## Section → ### Title || Date → _Subtitle_ || Location → - Bullets → 用于技能的定义列表(Term + : values)。

行内分栏: || 将内容分为左右两列。### Google || Jan 2020 - Present、_Senior SWE_ || San Francisco, CA。3 列或更多列:A || B || C。转义:\||。

格式: **Bold**、_Italic_、H~2~O(下标)、E = mc^2^(上标)、--/---(短破折号/长破折号)。

表格: 标准 Markdown 表格。

类、ID 和围栏 div

方括号跨度: [text]{.class} → <span>。示例:### Google [2022 - Present]{.right}。

元素属性: 块末尾的 {...} 会应用于整个元素:- Built dashboards {.@frontend}。

围栏 div: ::: 包裹块内容。只有一个子元素时不添加包装 div;有多个子元素时自动添加 <div>。添加标签名称前缀:::: footer {.text-center}。

::: {.grid .grid-cols-3}

- JavaScript
- TypeScript
  :::

Frontmatter

YAML(---)或 TOML(+++)。CLI 标志始终具有更高优先级。

字段类型默认值说明
cssstring | string[]无CSS 路径或内联 CSS(后缀为 .css 时视为文件,否则视为内联内容)
outputstring输入文件名输出路径/模板({view}、{lang}、{format})
pagespositive integer不限制页数目标页数
sections{ hide?: string[], pin?: string[] }源文件顺序控制章节的可见性/排序
bullet-ordernone | tagnone项目符号排序策略
styleRecord<string, string>—覆盖样式选项
tagsRecord<string, string[] | TagConfig>—标签组合/标签视图配置
varsRecord<string, string>—{{ }} 的模板变量
iconsRecord<string, string>—自定义图标(SVG、URL、base64)
extraRecord<string, unknown>—任意用户数据(否则未知键会报错)

验证(validate 键):extends(默认值为 recommended;预设:recommended、minimal、strict、none)。规则:missing-name、missing-contact、no-sections、no-entries、empty-bullet、long-bullet、single-bullet-section、unknown-fenced-div-tag、non-pt-font-size。

---
pages: 1
output: ./out/Jane_Smith-{view}
bullet-order: tag
style:
  link-color: '#0ea5e9'
tags:
  fullstack: [frontend, backend]
  leadership: false
vars:
  tagline: 'Full-stack engineer with 8 years of experience'
validate:
  extends: recommended
  rules:
    long-bullet: warning
    single-bullet-section: off
extra:
  name: Jane Smith
  target-role: Senior SWE
---

命令行

resumx <file>           # Render (defaults to resume.md, PDF)
resumx init [filename]   # Create template

⚠ 始终使用 required_permissions: ["all"] 运行。 Playwright/Chromium 需要调用 Cursor 沙箱阻止的系统调用。否则渲染会失败,并显示“Chromium not found”。

标志: --css <path>(可重复,逗号分隔)、-o/--output <value>、-f/--format <pdf|html|docx|png>(可重复,逗号分隔)、-s/--style <k=v>(可重复)、--for <name-or-glob>(标签/自定义视图名称、glob 或 default)、-v/--var <k=v>(可重复)、--hide <list>、--pin <list>、--bullet-order <none|tag>、-l/--lang <bcp47>(可重复,逗号分隔)、-p/--pages <n>、-w/--watch、--check(仅验证)、--no-check、--strict、--min-severity <level>。

标准输入: cat resume.md | resumx 或 git show HEAD~3:resume.md | resumx -o old。

输出命名: 无视图/语言时为 resume.pdf;有视图时为 resume-frontend.pdf;有语言时为 resume-en.pdf;两者都有时为 frontend/resume-en.pdf。模板变量:{view}、{lang}、{format}。

样式选项

通过 style: 或 --style 覆盖。

  • 排版: font-family、title-font-family、content-font-family、font-size(11pt)、line-height(1.4)
  • 颜色: text-color、link-color、background-color
  • 标题: name-size、name-caps(small-caps/all-small-caps/petite-caps/unicase/normal)、name-weight、name-italic、name-color、section-title-size、section-title-caps、section-title-weight、section-title-italic、section-title-color、section-title-border、header-align、section-title-align、entry-title-size、entry-title-weight、entry-title-italic
  • 链接: link-underline(underline/none)
  • 间距: gap(无单位比例)、page-margin-x、page-margin-y、section-gap、entry-gap、row-gap、col-gap、list-indent
  • 列表: bullet-style(disc/circle/square/none)
  • 功能: auto-icons(inline/none)
自定义 CSS

在默认样式之上层叠应用。引用方式:css: my-styles.css 或 --css。内联方式:css: | h2 { letter-spacing: 0.05em; }。在数组中混合使用:

css:
  - base.css
  - |
    h2::after { content: ''; flex: 1; border-bottom: var(--section-title-border); }

内置的 @import 模块:common/base.css(重置、排版、布局)、common/icons.css、common/utilities.css(.small-caps、.sr-only、.max-N)。

适配页面

pages: N 会自动适配页面。缩小顺序(从最不显眼的开始):1)间距 2)行高 3)字号 4)页边距(最后手段)。对于 pages: 1,间距也会扩展以填满页面。

最小值: font-size 9pt、line-height 1.15、section-gap 4px、entry-gap 1px、page-margin-y 0.3in、page-margin-x 0.35in。设置 pages: 时,style: 的值是可能会缩小的起始值。不设置 pages: 时,则按原样应用。

图标

:icon-name:(内置)、:set/name:(Iconify,20 万多个)、表情符号简码作为后备。解析顺序:Frontmatter > 内置 > Iconify > 表情符号。

链接上的自动图标适用于:mailto:、tel:、linkedin.com、github.com、gitlab.com、bitbucket.org、stackoverflow.com、x.com/twitter.com、youtube.com/youtu.be、dribbble.com、behance.net、medium.com、dev.to、codepen.io、marketplace.visualstudio.com。禁用方式:style: { auto-icons: none }。

自定义图标: icons: { mycompany: '<svg>...</svg>', partner: 'https://example.com/logo.svg' }。

Tailwind CSS

Tailwind v4 会即时编译。通过 {.class} 应用:[React]{.bg-blue-100 .text-blue-800 .px-2 .rounded}。适用于 span、元素属性和围栏 div。任意值:.text-[#ff6600]。内置类:.small-caps、.sr-only、.max-1–.max-16。

标签

{.@name} 用于筛选面向特定受众的内容。未标记的内容始终显示。已标记的内容仅在标签匹配时显示。多个标签:{.@backend .@frontend}。渲染:--for frontend。

**层级结构:**使用 / 表示嵌套({.@backend/node})。视图包含祖先、自身、后代和未标记内容;不包含同级项。--for backend/node → @backend + @backend/node + 未标记内容(不含 @backend/jvm)。--for backend → 所有后代 + 未标记内容。深度不限。

组合在 frontmatter 中定义:fullstack: [frontend, backend]。层级结构适用于组合项,每个组合项的谱系都会展开。递归展开(startup-cto 通过 fullstack 包含 frontend/backend)。拼写错误时会报错并提供建议。

tags:
  fullstack: [frontend, backend]
  node-fullstack: [frontend, backend/node]
  tech-lead: [backend, leadership]
  startup-cto: [fullstack, leadership, architecture]

视图

标签 = 要显示的内容。视图 = 显示内容的方式。每次渲染都会使用一个视图。

类型位置性质
默认Frontmatter 渲染字段基础配置
标签视图tags: 展开形式按标签覆盖,隐式生成
自定义.view.yaml 文件按应用配置
临时CLI 标志单次使用

**标签视图:**每个标签都会自动生成一个视图。展开形式可添加渲染覆盖项。简写 fullstack: [frontend, backend] = fullstack: { extends: [frontend, backend] }。

tags:
  frontend:
    sections: { hide: [publications], pin: [skills, projects] }
    pages: 1
  fullstack:
    extends: [frontend, backend]
    sections: { pin: [work, skills] }
    pages: 2

自定义视图:.view.yaml 文件,会递归自动发现。字段:selects(要包含的标签)、sections、pages、bullet-order、vars、style、css、format、output。不设置 selects = 所有内容;selects: [] = 仅未标记内容。渲染:--for stripe-swe。批量处理:--for '*'/--for 'stripe-*'。--for default = 默认视图(不筛选);可组合:--for default,frontend。不要将视图命名为 default。

# stripe.view.yaml
stripe-swe:
  selects: [backend, distributed-systems, leadership]
  sections: { hide: [publications], pin: [skills, work] }
  vars:
    tagline: 'Stream Processing, Event-Driven Architecture, Go, Kafka'

**临时视图:**通过 CLI 标志内联设置:resumx resume.md --for backend -v tagline="Stream Processing, Go" --pin skills,work -o stripe.pdf。

**级联:**内置默认值 → 默认视图 → 标签/自定义视图 → 临时视图(CLI)。

模板变量

{{ name }} 占位符。可在 vars:、自定义视图或 -v 中定义。未定义/为空 → 删除该行。值可以包含 Markdown。变量没有匹配的占位符 → 报错。

# Jane Doe

[email protected] | github.com/jane
{{ tagline }}

章节

sections: { hide: [publications, volunteer], pin: [skills, work] }。hide 会移除章节,pin 会按顺序将章节移到顶部,其余章节保持源文件顺序。取值:work、education、skills、projects、awards、certificates、publications、volunteer、languages、interests、references、basics。CLI:--hide publications --pin skills,work。

多语言

{lang=xx}(BCP 47)。未标记内容会在所有语言中显示。可与标签组合:{lang=en .@backend}。筛选:--lang en 或 --lang en,fr。维度相乘:2 种语言 × 2 个标签 = 4 个 PDF。

## [Experience]{lang=en} [Expérience]{lang=fr}

### Google

- [Reduced API latency by 60%]{lang=en}
  [Réduction de la latence API de 60%]{lang=fr}

语义选择器

自动生成的 HTML 属性:页眉:[data-field='name|email|phone|profiles|location|url']、[data-network='github']。章节:section[data-section='work|education|skills|projects|awards|certificates|publications|volunteer|languages|interests|references|basics'](模糊关键字匹配)。条目:.entries(容器)、.entry(<article>)。日期:<time datetime="ISO8601">、.date-range。

Git 集成

设置别名(仅需一次):

git config alias.resumx '!f() { spec="$1"; shift; case "$spec" in *:*) ;; *) spec="$spec:resume.md";; esac; tag="${spec%%:*}"; header=$(git tag -l --format="%(refname:short)" "$tag" 2>/dev/null); subject=$(git tag -l --format="%(contents:subject)" "$tag" 2>/dev/null); [ -n "$header" ] && printf "\033[2m%s\033[0m\n\033[1m%s\033[0m\n\n" "$header" "$subject"; git show "$spec" | resumx "$@"; }; f'

标记应用:git tag -a sent/stripe-2026-02 -m "Tailored for L5 infra, emphasized Kafka + distributed systems"。渲染前会打印附注标签的名称和备注。

git resumx sent/stripe-2026-02:resume.md              # from tag
git resumx HEAD~3:resume.md --css my-styles.css -o stripe  # past commit
git show :resume.md | resumx -o staged                # staged changes
简历模板
---
pages: 1
---

# Full Name

[email protected] | [linkedin.com/in/user](https://linkedin.com/in/user) | [github.com/user](https://github.com/user)

{{ tagline }}

## Education

### University Name || Sept 2019 - June 2024

_Degree Name_

- GPA: 3.85

## Work Experience

### Company Name || Start - End

_Job Title_

- Achievement with quantified impact using `Technology`

## Projects

### Project Name _(Individual/Group)_

- Description of what was built

## Technical Skills

Languages
: Java, Python, TypeScript

Frameworks
: React, Node.js, FastAPI

评论

支持 Markdown