resume-tuning
New交互式简历生成器,面向**所有岗位**(技术、产品、设计、运营、市场、学生等)。用户给一份现成简历(含 PDF / 图片扫描件)、或只口述/粘贴一些零散经历,都能交付一份排版好的**单页 PDF 简历**。流程是交互式的:先问清个性化输入,再生成几种版式的初稿让用户挑,最后渲染定稿 PDF。当用户说「做/调整/优化简历」「把这段经历做成简历」「生成一份简历」「简历转成英文」「帮我排版简历」时使用。
Overview
交互式简历生成器(resume-tuning)
Overview
最终产物是一份排版好的单页 PDF 简历——纯文本/Markdown 只是中间过程,不是交付物。
面向所有岗位,不只技术人员。判断标准在 references/resume-standards.md。版式模板在 assets/templates/(classic / minimal / modern)。机械活(提取来源、识别扫描件、渲染并自动压到一页、核对链接)交给 scripts/resume_pdf.py,别手搓。
这是个交互式 skill:不要一把梭生成。 分步问清输入 → 给几种初稿选 → 定稿。
处理流程
Step 0 · 读标准
读 references/resume-standards.md。
Step 1 · 拿到并提取输入
- •用
python3 scripts/resume_pdf.py extract <简历.pdf>:它会输出文本 + 已嵌超链接,并判断类型。
- TEXT_BASED:直接用输出的文本,把已有超链接也记下来,定稿要带过去。 - IMAGE_BASED(扫描件 / 图片导出,文本层几乎为空):别用提取结果,改用你自己的视觉能力——直接 Read 这张 PDF/图片,把正文逐字转写出来。这是必须处理的 corner case,不能因为提不出文字就跳过。
- •用户只口述 / 粘贴零散内容:缺什么问什么。
Step 2 · 问清个性化项(交互,用 AskUserQuestion)
已知的跳过,别重复问:
- 目标岗位 / 行业——决定措辞和重点。
- 最想突出的优势——决定排序,放第一。
- 语言——中文 / 英文。
- 可选模块——开源 / 作品集 / 获奖 / 校园经历 / 证书。
- •职位措辞要确认,别擅自拔高:源简历写「实习生」就别默认改成「工程师」,问一句。
Step 3 · 结构化 + 按身份排序
拆模块:抬头/联系方式、自我评价、经历、技能/专长、教育,按岗位增删可选模块。
- •顺序按身份变:应届生 / 学生 → 教育和项目前置(教育是亮点);社招 / 有工作经历 → 工作经历前置,教育收尾。
- •自定义 section 随内容加:荣誉证书、校园经历、作品集、研究成果都可以单列,模板的
.sec+.skill通用。
Step 4 · 优化 + 校对
输出质量底线(硬性合约,不管原始简历多普通都必须达到):你不是誊抄机,是升级器。哪怕来源简历很平庸、只是功能罗列,产出也必须满足:
- 尽可能突出亮点:主动从平淡内容里挖出最有价值的点(最难的技术、最像主导的事、最有数字的结果、最稀缺的经历),放到最显眼的位置——自我评价第一条、经历第一段、要点首句。没人帮他提炼,你来。
- 保持良好结构:清晰分块、按身份/影响力排序、一行一句、最亮点前置。再乱的来源也要重组成扫读 10 秒能抓到重点的结构。
- 每条经历遵循 STAR:Situation 背景 / Task 你负责什么 / Action 你做了什么 / Result 量化结果。来源里只有"做了 X"的功能描述,要主动补出 Action→Result 的因果("做了 X" → "解决了 Y / 带来了 Z");结果数字缺失就标
[DATA NEEDED]追问,但 STAR 的骨架先搭好。
具体动作:量化、带论据、措辞精确、最亮点前置;非技术岗把「技能用项目证明」换成「用成果/作品/数据证明」。
- •缺量化要主动追问:扫一遍每段经历,没有硬指标(QPS / 延迟 / 数据量 / 金额 / 占比 / 人数)的,列出来用
[DATA NEEDED: …]标记并问用户补,绝不替他编。 - •技能墙要压缩:源简历常有一大段「了解…掌握…熟悉…」流水账,按后端/存储/前端工程等分组压成 3–5 行,别原样照搬。
- •校对:错别字、专有名词大小写(DevOps/Kubernetes)、反斜杠→斜杠、全角字符清理、数字格式统一、明显笔误(如「小说」实为「电影」这类上下文错字)。
Step 5 · 出多版式初稿,让用户选(交互核心)
- 把同一份内容填进 2–3 个版式(classic / minimal / modern),各渲染草稿 PDF。
- 一起给用户看,用 AskUserQuestion 让他选(classic=蓝栏稳重通用,minimal=衬线极简资深,modern=彩色页眉醒目)。
- 选定后在该版式上精修。
Step 6 · 渲染定稿 PDF
- •只改模板
<body>,CSS 不动。 - •超链接做成可点:邮箱(mailto:)、GitHub、个人站、作品集、开源、博客、社交账号都用
<a href>包起来。 - •渲染 + 自动压到一页 + 核对链接,一条命令:
``bash python3 scripts/resume_pdf.py render <填好的.html> <输出.pdf> `` 它会打印页数、嵌入的链接、施加了哪些压缩。若打印 WARNING 说仍超一页,说明内容太多,回去人工删经历/要点再渲染(别靠无限缩字号)。
- •核对打印出的链接列表,确认齐全、与源简历一致。
- •中文简历必做肉眼核验:
qlmanage -t -s 1200 -o <目录> out.pdf转成 PNG 再 Read 看一眼,确认中文字形真的渲染出来了(不是空白/乱码)。文字层正确 ≠ 字形正确,这一步不能省。
Step 7 · 交付
- •PDF 存到用户的简历目录(私密内容不要进 git)。
- •简短文本小结:选了哪个版式、改了什么、还有哪些
[DATA NEEDED]待补。 - •默认不发送 / 不发布;要发邮件/挂公开链接先确认。
必须处理的 corner case(这是工具,不是 demo)
- 图片 / 扫描型 PDF → 视觉 OCR 转写,不靠 pypdf(Step 1)。
- 超过一页 →
render自动压;压不动就人工删(Step 6)。 - 缺量化数字 → 标
[DATA NEEDED]追问,不编(Step 4)。 - 应届生 vs 社招 → 模块顺序不同(Step 3)。
- 技能流水账 → 分组压缩(Step 4)。
- 中文渲染(致命坑,必看) → 绝不能靠系统 PingFang(.ttc 字体集合):WeasyPrint 对 .ttc 子集化会大面积丢字形,文字层正确但 PDF 在预览里是空白/乱码(Read 看不出来,必须用
qlmanage -t转图核验)。正确做法:模板用@font-face内嵌assets/fonts/里的单文件开源 CJK 字体(如 Noto Sans SC / 思源黑体,见 assets/fonts/README.md),占位符__CJK_REGULAR__/__CJK_BOLD__由resume_pdf.py渲染时自动填真实路径。做完中文简历必须 qlmanage 转图肉眼确认字形真的在,别只信页数和文字层。 - 职位措辞 / 联系方式取舍 → 跟用户确认,公开分享场景默认去手机号(Step 2)。
- 隐私 → 真实简历是私密数据,输出和测试用例只放本地私密目录,绝不进任何仓库或对外。
渲染环境(缺依赖时)
brew install pango gdk-pixbuf libffi
python3 -m venv ~/.venv && ~/.venv/bin/pip install weasyprint pypdfscripts/resume_pdf.py 在 macOS 上会自动补 DYLD_FALLBACK_LIBRARY_PATH 并重 exec,无需手动设。
注意
- •终态必须是 PDF;交互式、多版式、面向所有岗位。
- •不编造数字;一页;中英文同模板。
- •归档到用户指定的目录,不覆盖其他简历除非用户明确要求。
Install & Usage
mkdir -p .claude/skillsmkdir -p .claude/skills && curl -o .claude/skills/resume-tuning.md https://raw.githubusercontent.com/anneheartrecord/resume-tuning/main/SKILL.md/resume-tuningFrequently Asked Questions
What is resume-tuning?
交互式简历生成器,面向**所有岗位**(技术、产品、设计、运营、市场、学生等)。用户给一份现成简历(含 PDF / 图片扫描件)、或只口述/粘贴一些零散经历,都能交付一份排版好的**单页 PDF 简历**。流程是交互式的:先问清个性化输入,再生成几种版式的初稿让用户挑,最后渲染定稿 PDF。当用户说「做/调整/优化简历」「把这段经历做成简历」「生成一份简历」「简历转成英文」「帮我排版简历」时使用。
How to install resume-tuning?
To install resume-tuning, create the .claude/skills directory in your project, then run the curl command to download the skill file. Once installed, invoke it in Claude Code with /resume-tuning.
What is resume-tuning best for?
resume-tuning is a community categorized under General. Created by anneheartrecord.