Install
openclaw skills install @tuobadaidai/resume-optimizer求职简历三阶段优化引擎+效果对比报告:先全局评估(含JD匹配度雷达图),再简历改写(工作经验STAR+项目经验软性叙述+数据补全追问),最后效果对比+Word/PDF导出。 Use when user asks to 优化简历、改简历、简历润色、STAR改写、JD定制、根据职位改简历、 简历关键词优化、ATS优化、AI筛选优化、简历诊断、简历评分、简历匹配、帮我看看简历、 简历改一下、简历提升、英文简历优化、中英双语简历、简历翻译、导出简历、简历导出、 简历转Word、简历转PDF、生成简历文件、项目经验改写、项目经历优化、简历评分对比. 不适用于从头凭空生成简历(用户未提供任何基础材料)、求职信/自荐信撰写、简历模板设计.
openclaw skills install @tuobadaidai/resume-optimizer三阶段简历优化引擎:先全局评估(含JD匹配度雷达图)→ 再针对性改写 → 最后效果对比+导出。每次优化基于用户提供的真实简历和可选JD,绝不编造数据。以中文求职市场为主要场景,兼容英文简历。优化完成后可一键导出 ATS 兼容的 .docx 和跨平台 .pdf 文档,并生成量化效果对比报告让用户直观看到优化价值。
[建议补充] 等占位符。详见"数据补全追问协议"收到用户请求后,按以下顺序判断:
用户是否提供了简历文件/文本?
├── 否 → 请用户提供简历(文件或粘贴文本均可)
└── 是 → 进行入参校验(≥200字且含工作/项目经历相关关键词)
├── 不通过 → 提示用户:内容过短或不像简历,请确认
└── 通过
├── 用户提供了JD?→ 是 → 自动进入三阶段完整流程
│ 阶段1:全局评估(绝对评估 + JD相对评估 + 雷达图)
│ 阶段2:简历改写(工作经验STAR + 项目经验软性叙述 + JD定向 + ATS)
│ 阶段3:成果交付(前后对比报告 + 文档导出)
└── 否 → 进入两阶段流程
阶段1:简历绝对评估
阶段2:简历改写(工作经验STAR + 项目经验软性叙述 + ATS)
阶段3:成果交付(前后对比报告 + 文档导出)
v1.5.0关键设计:用户提供了JD时,先执行阶段1的JD相对评估(含雷达图),让用户看到全局短板,再开始阶段2的针对性改写——这避免了"边改边补 JD关键词"的盲目性,让每次改写都精准锚定短板。
.docx / .pdf / .txt / .md 文件.txt / .md:直接读取全文.docx:优先用 python-docx 提取段落和表格文本;如不可用,用 unzip 解压后读 word/document.xml 并剥离标签.pdf:优先用 pdfplumber 或 pymupdf 提取文本;扫描版 PDF(无文本层)走 OCR 流程pytesseract(中文需 chi_sim 语言包)或调用平台多模态能力提取文字提取后展示给用户确认:"已从文件提取简历内容如下,确认无误后开始评估。"
场景:用户提供了简历 + 猎聘CHO岗位JD
[用户] 这是我的简历,目标岗位是猎聘上看到的CHO,JD也附上了。
[Agent 阶段1·全局评估]
1. 简历绝对评估(模块1A:量化密度0%/动词力度35/结构60分/ATS 72%)
2. JD相对评估(模块1B:解析JD → 10个核心关键词 → 关键词-证据映射表)
3. 生成JD匹配度雷达图(六个维度展示简历相对JD的覆盖度)
4. 评估报告:综合匹配度约68%,最大gap是缺"大制造100亿上市CHO"经验
→ 让用户看到全局短板
→ 询问用户是否基于评估结果开始改写
[用户] 继续
[Agent 阶段2·简历改写]
2a. 工作经验STAR改写(基于评估短板——动词力度弱、量化缺失)
→ 标记所有缺失的量化数据点
2b. 项目经验软性叙述改写(避免"五维追问+bullet结构"的工程化感)
→ 标记缺失的角色/成果信息
2c. 汇总全部缺失数据 → 一次性发起批量追问(数据补全追问协议)
[Agent 追问示例]
"我已完成初步改写。为让简历更有说服力,需要补充以下真实数据:
1. 电商业务-会员体系搭建:覆盖了多少付费用户?付费转化率从X提升到Y?
2. 推荐系统AB实验:你在实验中是产品/算法/工程哪个角色?样本量多大?核心指标提升多少?
3. 跨境出海项目:首月GMV/新用户增长数据?
能提供的提供,记不清的告诉我,我用定性表述处理。"
[用户] 1.覆盖30万付费会员,付费率从8%提到14% 2.产品负责人,样本量50万,CTR+12% 3.记不清了
[Agent]
2d. 用真实数据填充 → 记不清的改用定性表述
→ 针对阶段1雷达图短板做JD定向优化
→ 18项ATS检查清单核对
→ 输出无占位符的最终优化简历 → 询问用户是否满意
[用户] 满意
[Agent 阶段3·成果交付]
3a. 优化效果对比报告(六维评分前后对比表 + 综合分提升 + Top3提升点 + 雷达图)
3b. 文档导出(.docx + .pdf)→ 告知文件路径
| 参数 | 值 | 原因 |
|---|---|---|
| bullet ≤50中文字 | 50字 | 基于中文阅读眼动研究,50字内可一次注视完成理解;超过则需扫读两次,ATS解析时也容易截断 |
| 高杠杆区域只改5个 | 5个 | 15-20分钟即可完成的轻量优化量。全量重写耗时且容易过度修改失去真实感;JD定向的核心是"对齐"而非"重写" |
| 关键词脊柱8-12个 | 8-12 | 低于8个覆盖不足,高于12个则包含噪音关键词(JD中偶尔提及的非核心词),稀释真正重要的匹配信号 |
| 单条bullet ≤3个关键词 | 3个 | 超过3个关键词堆砌会触发ATS的"keyword stuffing"检测(部分平台会降权),且人类阅读体验断崖式下降 |
| 雷达图六维度 | 6维 | 平衡信息密度与可读性。少于5维过于简单;多于7维读者难以快速识别短板 |
简历在模块间传递时统一使用以下 Markdown 格式。中文简历用中文标准标题(与ATS检查项#7一致),英文简历用英文标题:
中文版:
# [姓名] - [目标岗位]
## 个人简介
[2-3句职业概述]
## 工作经验
### [公司名] | [职位] | [起止时间]
- [STAR优化后的bullet 1]
- [STAR优化后的bullet 2]
## 项目经验
### [项目名] | [角色] | [时间]
[2-4句软性叙述段落,保留STAR要素]
## 技能
[技能1, 技能2, 技能3](按类别分组:编程语言 / 框架工具 / 领域知识)
## 教育背景
[学校] | [学位] | [专业] | [时间]
英文版:使用 Summary / Experience / Projects / Skills / Education。
每条改写使用固定模板:
**原文**:[原始描述]
**优化后**:[改写结果]
**改动说明**:[一句话说明改了什么:补STAR要素 / 注入量化 / 动词升级 / 关键词对齐]
v1.5.0核心改进:把"评估"前移,作为整个优化流程的起点。用户先看到简历的绝对状态和相对于目标JD的匹配度雷达图,再决定改写方向。
对简历做四项评估,输出诊断报告。同时必须缓存原始数据(总bullet数、含数字bullet数、强动词数、缺失模块数、ATS风险数等)供阶段3对比报告使用。
| 维度 | 评估标准 | 输出 |
|---|---|---|
| 量化密度 | 含数字(%/$/倍/人/天)的bullet占比 | 百分比 + "偏低/正常/优秀" |
| 动词力度 | 是否以强动词开头(主导/设计/落地/重构/优化)vs 弱动词(参与/负责/协助) | 弱动词占比 + 具体问题行 |
| 结构完整性 | 是否缺失个人简介/工作经验/项目经验/技能/教育背景任一核心模块 | 缺失模块列表 |
| ATS风险 | 是否含表格/图片/特殊符号/非标准章节标题/多栏布局 | 风险点列表 |
缓存原始数据(供阶段3对比):
original_total_bullets、original_quantified_bullets、original_strong_verb_bullets、original_weak_verb_countoriginal_modules_count、original_ats_risks、original_jd_keywords_covered(提供JD时)v1.5.0新增:把原来"模块2的JD定向"中的解析部分前置,让用户先看到简历相对于JD的覆盖度雷达图。
从目标JD中提取关键词并分类,详见 references/jd-tailoring.md。
输出关键词脊柱(8-12个核心词)和关键词-证据映射表:
| 关键词 | 类型 | 简历中已有证据 | 需补充/调整 |
|--------|------|-------------|------------|
| 用户增长 | Functional | "粉丝增长至3.2万" | 补充增长策略细节 |
| SQL | Hard | 无 | 如在技能区有则抽取,否则标红 |
| 跨部门协作 | Functional | "协调市场、产品、运营" | 已有,可前置强调 |
关键产出:用雷达图直观展示简历相对JD的覆盖度。修改后用阶段2的优化行动填满短板区域。
六个评估维度(与阶段3的效果对比报告共用维度,但评估角度不同——这里评估"原始简历",阶段3评估"优化后简历"):
| 维度 | 含义 | 计算方式 |
|---|---|---|
| 关键词覆盖 | JD核心词在简历中的覆盖度 | 已覆盖数 ÷ 关键词脊柱总数 × 100 |
| 经验对齐 | 简历经验类型与JD要求的匹配度 | 直接匹配经历数 ÷ JD核心职责数 × 100 |
| 量化成果 | 简历中量化数据的密度 | 含数字bullet占比(与1A同口径) |
| 技能匹配 | JD要求的硬技能在简历技能区的覆盖 | 已具备技能 ÷ JD硬技能数 × 100 |
| 资历达标 | 工作年限/职级/行业经验与JD硬性要求的差距 | 满足的硬性要求数 ÷ 总硬性要求数 × 100 |
| 关键词位置 | 关键词在简历中的突出度(前置/显著位置加分) | 前置关键词数 ÷ 关键词脊柱总数 × 100 |
雷达图渲染规范:
示例输出:
## 简历相对JD的匹配度评估
### 关键词覆盖
- 关键词脊柱:10个核心词
- 已覆盖:6个(60%)
- 弱覆盖:3个
- 未覆盖:1个
### 经验对齐
- JD核心职责:5项
- 直接匹配:2项(用户增长、SQL分析)
- 可迁移:2项
- 需补充:1项
### 综合匹配度
约58%(基于六维加权平均)
最大短板:技能匹配(仅2/6硬技能满足)
雷达图的具体设计规范和可视化代码模板见
references/jd-tailoring.md的"雷达图渲染规范"章节
阶段1完成后,输出:
改写顺序:工作经验STAR改写 → 项目经验软性叙述 → 数据补全追问 → JD定向优化 → ATS检查。前两步初步改写 + 标记缺失数据 → 第三步批量追问 → 第四步用真实数据填充 + 针对性JD补强 → 第五步ATS合规。
逐条处理工作经验中的每条bullet(项目经验单独走模块2B软性叙述):
改写四步法:
中文强动词库(按场景):
| 场景 | 推荐动词 |
|---|---|
| 从0到1 | 创建、搭建、建立、启动、发起 |
| 优化改进 | 重构、优化、精简、缩短、降低 |
| 主导推进 | 主导、牵头、推动、协调、统筹 |
| 技术实现 | 设计、开发、实现、集成、部署 |
| 数据分析 | 分析、挖掘、建模、追踪、归因 |
| 增长结果 | 提升、增长、扩大、达成、突破 |
完整中英文动词库、弱动词替换对照和 Before/After 示例见
references/star-methodology.md
改写示例:
**原文**:负责公司公众号运营,发布文章并维护粉丝
**优化后**:主导公司公众号从0到1搭建,6个月内输出原创内容120+篇,粉丝增长至3.2万(月均净增5000+),平均阅读量提升至行业Top 20%
**改动说明**:补STAR全要素,动词从"负责"升级为"主导",注入量化结果,补充规模和排名
v1.5.0关键改进:从v1.4.1的"五维追问+bullet结构"改为"软性叙述段落"——保留STAR要素但用自然语言组织,避免"在填表"的工程化感。
为什么改:v1.4.1的"五维追问法+S/T/A/R四要素+五种项目bullet模板"虽然完整,但呈现给用户和HR时显得生硬——读者一眼能看出"在按模板套用",反而降低简历的可信度和可读性。
软性化原则:
每段项目用2-4句话展开,建议四句结构:
第一句:项目背景(什么项目、多大规模、为什么启动)
第二句:个人角色(你在这个项目中的位置、带多少人、决策权)
第三句:关键行动(用了什么方法、克服了什么难点)
第四句:项目成果(量化结果+对业务/团队的长期影响)
v1.4.1生硬版(用五维追问+bullet结构):
**原文**:E-HR系统导入项目(金蝶:项目经理)
**优化后(v1.4.1)**:
- 项目背景:500人公司人力数字化转型
- 角色:项目经理,统筹产研+业务+金蝶三方共15人
- 目标:6个月完成全量上线,线上化率达95%
- 行动:需求调研→定制开发→分模块上线→全员培训
- 成果:覆盖中东区5国1200+员工,线上化率从30%提升至95%
v1.5.0软性版(用叙述段落):
**原文**:E-HR系统导入项目(金蝶:项目经理)
**优化后(v1.5.0)**:
作为项目经理主导了金蝶E-HR系统在中东区的导入项目,跨国产研、业务方与金蝶实施顾问三方共计15人协同,6个月内完成从需求调研、定制开发到分模块上线的全流程,最终覆盖5国1200+员工,区域人力流程线上化率从30%提升至95%。
软性版的提升:
| 项目类型 | 软性叙述模板 | 适用场景 |
|---|---|---|
| 系统实施类 | 作为[角色]主导[系统名]在[范围]的导入,[协作方式]下[N人]协同[N月]完成[流程],覆盖[规模],[核心指标]从[X]提升至[Y] | E-HR/OA/ERP/CRM等系统实施 |
| 组织变革类 | 面对[业务痛点],作为[角色]引入[方法论]开展[诊断/重塑],[具体行动],最终[组织/效率变化] | 组织重建、流程再造、架构调整 |
| 体系搭建类 | 从0到1搭建[体系名称],作为[角色][设计/主导][核心要素],[落地方式]覆盖[范围],建立[长期机制] | 薪酬绩效/人才发展/任职资格体系 |
| 增长运营类 | 针对[业务目标],作为[角色][关键行动],[N月]内[核心指标]从[X]提升至[Y],形成[可复用方法论] | 用户增长/营收提升/产品迭代 |
| 资本运作类 | 配合[资本事件],作为[角色]主导[人力相关工作],[关键行动],[成果]对[业务/合规]的支撑 | 股权激励/并购整合/IPO人力准备 |
详细的项目类型模板、完整示例库、软性化改写技巧见
references/star-methodology.md的"项目经验软性叙述专章"
**原文**:负责公司公众号运营,发布文章并维护粉丝
**优化后**:主导公司公众号从0到1搭建,6个月内输出原创内容120+篇,粉丝增长至3.2万(月均净增5000+),平均阅读量提升至行业Top 20%
**改动说明**:补STAR全要素,动词从"负责"升级为"主导",注入量化结果,补充规模和排名
STAR改写和项目叙述过程中,缺失关键量化数据时必须启动追问对话,不留占位符直接输出。
改写任一bullet/段落时,以下数据缺失则触发追问:
错误做法:每改一条bullet就停下来问一次,打断用户节奏 正确做法:先完成所有工作经验和项目经验的初步改写 → 汇总所有缺失数据点 → 一次性向用户发起批量追问
我已完成简历的初步改写(工作经验STAR + 项目经验软性叙述)。为了让简历更有说服力,需要您补充以下真实数据(能提供的提供,记不清的标注"记不清",我会用定性表述替代):
【工作经验】
1. SaaS产品经理 - 增长模块:DAU/MAU从X增长到Y?付费转化率是多少?
2. 跨境电商 - 用户增长:拉新成本CAC多少?D7/D30留存率?
3. 内容平台 - 社区运营:UGC日均产出量?社区月活规模?
【项目经验】
4. AB实验框架搭建:累计跑了多少次实验?核心业务指标提升多少?
5. 会员体系重构项目:会员付费率从X提升到Y?ARPU变化幅度?
请逐条回复,或直接告诉我"都记不清了"我用定性表述处理。
| 用户回应 | 处理方式 | 示例 |
|---|---|---|
| 提供具体数据 | 直接填充 | "覆盖1500人" → "覆盖1500名员工" |
| 提供范围值 | 用范围填充 | "大概30-40人" → "统筹30-40人团队" |
| 说"记不清了" | 改用定性表述,不编造数字 | "记不清了" → "统筹产研+业务+供应商三方团队" |
| 明确拒绝提供 | 同上,改用定性表述 | 同上 |
| 提供"大概很多" | 转化为定性量级词 | "大概很多" → "覆盖全员" / "大规模" |
[建议补充]、[补充:XX]、[XX人] 等占位符项目经验软性叙述(模块2B)与数据补全追问(本协议)合并执行——在项目经验改写阶段同步收集缺失数据,不重复发起两轮追问。执行顺序:
v1.5.0位置调整:JD定向从原来的模块2(独立模块)调整为模块2D(阶段2的最后一个子模块),基于阶段1的雷达图短板做针对性优化。
只改5个区域(15-20分钟工作量),不是全量重写。每个区域的改写都锚定阶段1雷达图的对应短板:
改完后输出完整的JD对齐版简历 + 匹配度评估:
**整体匹配度**:约78%(估算,基于关键词覆盖率)
**硬性要求满足**:5/6(缺失:Spark)
**经验对齐度**:核心经验2/3项直接匹配,1项可迁移
**需注意**:JD要求"3年以上团队管理",你当前经历侧重个人贡献,建议补充管理相关描述
匹配度公式权重(L1×50% + L2×35% + L3×15%)基于行业经验设定,非实证数据,仅作参考。
阶段1输出的雷达图显示了"哪个维度最弱"(如关键词覆盖60%、经验对齐40%、技能匹配33%),模块2D的改写就针对这些短板做加强:
| # | 检查项 | 通过条件 |
|---|---|---|
| 1 | 字体 | 使用标准字体(中文:宋体/黑体/微软雅黑;英文:Arial/Calibri/Georgia) |
| 2 | 字号 | 正文10-12pt,标题14-16pt |
| 3 | 布局 | 单栏布局,无多栏混排 |
| 4 | 表格 | 无表格用于布局 |
| 5 | 图片 | 无照片/logo/图表/二维码 |
| 6 | 特殊符号 | 无★♦→●等装饰符号 |
| 7 | 章节标题 | 使用标准标题(工作经验、教育背景、项目经验、技能、个人信息) |
| 8 | 文件格式 | 优先.docx;若要求PDF则用PDF(检查确认) |
| 9 | 页眉页脚 | 无重要信息(联系方式等)放在页眉页脚 |
| 10 | 文本框 | 无文本框包裹内容 |
| 11 | 超链接 | 无超链接格式,URL使用纯文本 |
| 12 | 颜色 | 黑色文字,无彩色背景/底色 |
| 13 | 列对齐 | 日期右对齐可以用空格/tab,不用表格 |
| 14 | 联系方式 | 电话+邮箱在一行,不含在图片中 |
| 15 | 文件命名 | 格式:姓名_岗位_简历.pdf(非"简历.pdf") |
| 16 | 英文大小写 | 技能/工具名保持标准大小写(Python非PYTHON) |
| 17 | 空白字符 | 无隐藏的白色关键词(会被ATS检测并拉黑) |
| 18 | 底部信息 | 无页脚签名/页码等可能影响解析的内容 |
完整检查项和修复方案见
references/ats-optimization.md
对模块1B提取的关键词脊柱做逐一检查,输出三类标记:
v1.5.0增强:阶段3的对比报告与阶段1的JD雷达图共享同一组六维度(量化密度/动词力度/STAR完整度/结构完整性/ATS兼容性/JD匹配度),形成"前后对比"的完整闭环。
| 维度 | 权重 | 计算方式 | 数据来源 |
|---|---|---|---|
| 量化密度 | 20% | 含数字(%)的bullet数 ÷ 总bullet数 × 100 | 模块1A诊断 |
| 动词力度 | 15% | 强动词开头bullet数 ÷ 总bullet数 × 100 | 模块1A诊断 |
| STAR完整度 | 20% | 四要素(S/T/A/R)完整的bullet数 ÷ 总bullet数 × 100 | 模块2A/2B改写 |
| 结构完整性 | 15% | 5大核心模块齐全数 ÷ 5 × 100 | 模块1A诊断 |
| ATS兼容性 | 15% | 18项检查通过数 ÷ 18 × 100 | 模块2E检查 |
| JD匹配度 | 15% | 关键词脊柱已覆盖数 ÷ 关键词总数 × 100 | 模块1B+2D |
无JD场景:JD匹配度维度不计入,其15%权重均分到其余5个维度(各+3%)。 权重说明:基于行业经验设定,非实证数据。量化密度和STAR完整度权重最高(各20%),因为这两项是简历说服力的核心驱动因素。
综合分 = Σ(维度分 × 权重),满分为100。
修改前分数来自模块1A诊断阶段记录的原始简历指标;修改后分数来自优化完成后的终版简历重新评估。关键:模块1A诊断时必须记录原始数据(总bullet数、含数字bullet数、强动词bullet数等),供阶段3对比使用。
## 简历优化效果对比报告
### 综合评分
修改前:XX分 → 修改后:XX分(+XX分,提升XX%)
### 六维评分对比
| 维度 | 权重 | 修改前 | 修改后 | 提升 |
|------|------|--------|--------|------|
| 量化密度 | 20% | 0 | 85 | +85 |
| 动词力度 | 15% | 55 | 90 | +35 |
| STAR完整度 | 20% | 20 | 80 | +60 |
| 结构完整性 | 15% | 60 | 100 | +40 |
| ATS兼容性 | 15% | 65 | 100 | +35 |
| JD匹配度 | 15% | 50 | 80 | +30 |
| **综合分** | 100% | **42** | **88** | **+46** |
### 关键提升点(Top 3)
1. [维度名]从XX提升至XX——[一句话说明优化动作带来的变化]
2. ...
3. ...
### 仍可继续优化建议
1. [具体建议 + 预期提升方向]
2. ...
如执行环境支持可视化输出,建议生成雷达图直观展示六维前后对比——修改前用浅色填充,修改后用深色填充,叠加在同一张图上。雷达图比纯表格更能让用户一眼看到优化效果的全貌。
v1.5.0增强:阶段3的对比雷达图与阶段1的JD匹配度雷达图共享视觉语言(相同的维度标签、相似的配色方案),让用户感受到"从评估到对比"的完整闭环。
优化完成后,询问用户是否需要导出为 .docx 和/或 .pdf 文件。
resume_optimized.md)scripts/export_resume.py 生成 .docx 和 .pdf# 安装依赖(首次使用)
pip install python-docx reportlab
# 同时生成 .docx 和 .pdf(默认)
python scripts/export_resume.py resume_optimized.md -o <output_dir> -n <文件名>
# 仅生成 .docx
python scripts/export_resume.py resume_optimized.md -o <output_dir> -n <文件名> -f docx
# 仅生成 .pdf
python scripts/export_resume.py resume_optimized.md -o <output_dir> -n <文件名> -f pdf
脚本源码和详细说明见
scripts/export_resume.py
.docx 文件:
.pdf 文件(双路线保障):
| 路线 | 工具 | 字体处理 | 适用场景 |
|---|---|---|---|
| 主路线 | LibreOffice headless | 自动替换+嵌入(macOS: 宋体→STSong/Arial Unicode MS) | 系统已安装 LibreOffice |
| 备用路线 | reportlab | 注册系统 TTF 字体并嵌入(macOS: STSongti SC + STHeiti) | 无 LibreOffice 环境 |
两条路线均将字体子集嵌入 PDF(FontFile2 标记),确保:
生成文件后,向用户确认以下事项:
姓名_目标岗位_简历.docx(符合 ATS 检查项 #15)resume_optimized.md(当前工作目录或用户指定路径)scripts/export_resume.py 生成,输出到同一目录姓名_目标岗位_简历 格式,如用户指定其他名称则用用户指定的详细容错场景和边界处理(入参异常、JD解析异常、用户交互异常、结果异常、跨行业/特殊场景、多语言混合等 21 个场景)见
references/edge-cases.md
核心原则速查: