Markdown技能树简历生成器:技术栈可视化与多格式输出
📅 2026/7/21 12:04:32
👁️ 阅读次数
📝 编程学习
1. 项目背景与核心思路
去年帮学弟改简历时发现个有趣现象:90%的应届生都在用Word折腾格式,花在调间距对齐的时间比写内容还多。正好看到GitHub上有人用Markdown写技能树(SKILL.md),突然想到——既然Markdown能清晰展示技术栈层级,何不用它来做份"会自我描述的简历"?
这个简历生成器的核心逻辑很简单:用结构化Markdown语法定义技能维度,通过模板引擎自动生成多格式输出。相比传统简历工具,它有三大优势:
- 版本可控:所有修改通过Git记录,再也不用担心"最终版_v3_改"这类文件
- 模块化组合:针对不同岗位快速切换技能展示重点
- 终端友好:程序员可以直接在CLI里查看/修改简历
2. 技术实现详解
2.1 SKILL.md 结构设计
技能树文件采用分级标签语法,这是我的核心模板:
## 技术栈 [@level=高级] - Python (Flask/Django) - JavaScript (Vue/React) - 数据库 [@tags=MySQL,Redis] ## 项目经历 ### 电商系统 [@time=2022.03-2023.06] - 采用微服务架构重构订单模块 - QPS从200提升至1500+关键点解析:
[@level]标注熟练度,渲染时会转换成进度条[@tags]实现技能聚类,比如数据库相关技能自动归组- 时间轴用
[@time]标注,自动计算工作时长
2.2 模板引擎选型
对比了三大方案后选择Handlebars.js:
// 示例模板 {{#each skills}} <div class="skill-card"> <h3>{{name}} <span class="level-{{level}}"></span></h3> {{#if tags}}<div class="tags">{{tags}}</div>{{/if}} </div> {{/each}}选型理由:
- 逻辑与视图彻底分离,改版式无需动原始数据
- 支持自定义helper,比如我的时间轴计算函数:
Handlebars.registerHelper('duration', function(start,end) { return moment(end).diff(moment(start), 'months') + '个月'; });2.3 多格式输出方案
通过不同CSS媒体查询实现"一次编写,多端适配":
/* 打印版 */ @media print { .skill-card { break-inside: avoid; } } /* PDF版 */ @page { size: A4; margin: 2cm; } /* 网页版 */ @media screen { .tags { display: inline-flex; } }配合Puppeteer实现一键导出:
npm run export -- --format=pdf --theme=dark3. 实战技巧与避坑指南
3.1 技能量化技巧
避免"熟悉/掌握"这类模糊表述,推荐用可验证的指标:
- Redis [@level=高级] - 实现分布式锁,P99延迟<5ms - 设计过10万QPS的缓存方案3.2 时间轴陷阱
项目经历常见错误是时间重叠,建议添加校验脚本:
projects.forEach(proj => { if (proj.end > new Date()) console.warn(`进行中项目需标注@status=ongoing`); });3.3 隐私保护方案
在Git仓库里建议这样管理敏感信息:
/resume ├── public.md # 公开版本 ├── private.md # 含联系方式 └── .gitignore # 忽略private.md4. 高级玩法拓展
4.1 动态简历
用GitHub Actions实现自动化更新:
name: Resume Update on: push: paths: ['skills.md'] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - run: npm run export -- --format=all - uses: peaceiris/actions-gh-pages@v3 with: publish_dir: ./output4.2 技能雷达图
通过mermaid插件可视化技能分布:
```mermaid radarChart title 技术能力雷达图 axis Python, 架构, 数据库, 前端 "我" --> [85, 70, 80, 60] "岗位要求" --> [60, 80, 70, 50]实测发现:用VSCode的Markdown Preview Enhanced插件可直接渲染
5. 常见问题解决方案
5.1 中文排版优化
在CSS中添加这些配置可提升阅读体验:
body { font-family: "LXGW WenKai", sans-serif; text-align: justify; text-justify: inter-ideograph; line-height: 1.8; }5.2 多语言支持
用i18n实现中英文切换:
// locales/en.json { "skills": "Technical Skills", "projects": "Project Experience" } // 模板调用 <h2>{{t 'skills'}}</h2>最后分享个冷技巧:用<!-- comment -->添加面试官可见的隐藏注释:
## 获奖情况 <!-- 面试时可提供证书原件 -->
编程学习
技术分享
实战经验