Markdown to HTML/PDF resume generator written in Go.
Based on: mikepqr/resume-markdown - Python version by Mike Lee Williams
This Go port adds:
- Same goldmark parser that Hugo uses (better compatibility)
- Flexible output naming (
-oflag) - Shared CSS across multiple resume versions
- Improved Chrome process handling with timeout
- Converts Markdown to HTML using Goldmark (same parser as Hugo)
- Generates PDF via Chrome/Chromium headless
- CSS styling support
- Compatible with the Python version's output format
- YAML frontmatter stripping (Hugo/Jekyll compatible)
Check the example/ directory for:
resume.md- Example markdown resumeresume.css- Default stylingresume.html- Generated HTML outputresume.pdf- Generated PDF output
go mod download
go build -o resume-generator resume.goBasic usage:
./resume-generator resume.mdThis will generate:
resume.htmlresume.pdf
./resume-generator [options] [input.md]
Options:
-o, -output NAME Output filename (without extension)
-css PATH Path to CSS file (default: resume.css)
-no-html Do not write HTML output
-no-pdf Do not write PDF output
-chrome-path PATH Path to Chrome/Chromium executable
-q Quiet mode
-debug Debug modeGenerate with custom output name:
./resume-generator -o my-resume resume.md
# Creates: my-resume.html and my-resume.pdfGenerate multiple versions from one CSS:
./resume-generator -o resume-v1 version1.md
./resume-generator -o resume-v2 version2.md
# Both use the same resume.css by defaultUse custom CSS file:
./resume-generator -css custom-style.css -o output resume.mdGenerate only PDF:
./resume-generator -no-html resume.mdGenerate only HTML:
./resume-generator -no-pdf resume.mdUse custom Chrome path:
./resume-generator -chrome-path /path/to/chrome resume.md- Go 1.21 or later
- Chrome or Chromium (for PDF generation)
The tool will automatically detect Chrome/Chromium on:
- macOS:
/Applications/Google Chrome.app/... - Linux:
/usr/bin/google-chrome,/usr/bin/chromium, etc. - Windows:
C:\Program Files\Google\Chrome\...
resume.md- Your resume in Markdown formatresume.css- Styling for the resume (optional)- Output:
resume.htmlandresume.pdf
The tool expects:
- First
#heading becomes the HTML title - Standard Markdown syntax
- GitHub Flavored Markdown (GFM) support
- Typographic improvements (smart quotes, dashes, etc.)
- YAML frontmatter is automatically stripped (Hugo/Jekyll compatible)
See example/resume.md for an example format.
This tool works great with Hugo static sites! See example/Makefile.example for a complete Hugo integration setup.
-
Copy this tool to your Hugo project:
cd your-hugo-project git clone https://github.com/yourusername/resume-generator.git # or add as git submodule
-
Copy the example Makefile:
cp resume-generator/example/Makefile.example ./Makefile
-
Edit the Makefile and set your name:
CV_NAME = Your_Name_CV -
Create CV markdown files in
content/cv/:mkdir -p content/cv # Create your CV markdown files here -
Generate CVs:
make cv
Your PDFs will be generated in static/cv/<version>/Your_Name_CV.pdf
The generator automatically strips YAML frontmatter, so your markdown can have Hugo metadata:
---
title: "Resume - Full Version"
type: "cv"
pdf: "/cv/full/Your_Name_CV.pdf"
weight: 1
---
# Your Name
Your resume content here...Note: This is a personal tool that I maintain for my own use. Updates happen when I need new features or fixes. Feel free to fork and customize for your needs!
If you find bugs or have suggestions, open an issue. PRs are welcome, but response time may vary.
See LICENSE file for details.