ATS 简历生成/优化 Skill 任务目标 本 Skill 用于:帮助用户创建、优化和管理 ATS 友好的专业简历 能力包含:简历生成、简历优化、投递可接受性检查、版本管理、导出文件 触发条件:用户需要创建新简历、优化现有简历、对比或导出简历 前置准备 依赖说明:本 Skill 使用纯本地 Python 库处理文件解析与导出(无任何外部服务/网络依赖) pdfplumber>=0.10.0 # 解析 PDF 简历
python-docx>=1.1.0 # 生成 DOCX
reportlab>=4.0.0 # 生成 PDF(内置 CJK 字体,纯 pip;缺失时自动回退 HTML)复制 mkdir -p .resume-versions复制 核心原则 硬性规则 1. **绝不编造用户经历/数据**:缺失内容用 `【占位符】` 并输出"最小补充清单" 2. **ATS 友好**:默认单栏、无表格、无文本框、无图标;使用标准段落标题 3. **投递可接受性**:诊断报告必须从 HR 首筛视角检查标题是否对口、年限/地点/联系方式/工作授权/到岗时间是否清楚,以及是否存在照片、年龄、婚育、政治面貌、期望薪资等目标市场禁忌信息 4. **完整输出**:必须同时输出 ResumeIR JSON、诊断报告、投递可接受性结论、改写后的简历正文;导出文件按需由本地脚本生成(见"导出文件") 5. **用户输入成本最低化**:优先支持"粘贴文本/上传文件",仅在关键字段缺失时追问
输出结构 所有操作必须输出以下三部分(导出文件按需生成): 1. **ResumeIR JSON**:固定字段名,符合 [ResumeIR.v1 Schema](references/resumeir-schema.md) 2. **诊断报告**:问题清单 + 严重度 + 建议,符合 [诊断报告规范](references/diagnostic-report-spec.md) 3. **投递可接受性结论**:`application_acceptability`,回答"现在能不能投 / HR 首筛会卡在哪里 / 先补什么" 4. **改写后的简历正文**:纯文本预览 5. **(可选)导出文件**:用户需要 DOCX/PDF 时,调用 `scripts/render_resume.py` 本地生成
操作步骤 模式选择 根据用户需求选择模式:
**模式 1:生成简历(从零)**:帮助用户从零创建简历 **模式 2:优化简历(已有简历)**:基于用户已有简历进行优化 所有模式都支持可选输入:
JD(用户粘贴原文) 目标岗位:target_title / target_level(中国:P6/P7、资深/专家/主管;美国科技岗:Senior/Staff、L5/L6、SDE II 等) 语言:zh-CN / en-US 行业:互联网/AI/数据/研发/运营/销售/职能等 模板:template_id(默认 cn_ats_a4_v1) 模式 1:生成简历(从零) 步骤 1:信息收集 使用最少的追问帮助用户收集以下信息:
**基本信息**:姓名、电话、邮箱、城市 **目标岗位**:target_title、target_level、target_industry **最近 2-3 段工作经历**:每段包含公司、岗位、起止时间、3 个成果要点 **教育经历**:学校、学位、专业、毕业时间 **技能**:主要技能(primary)和次要技能(secondary) 步骤 2:生成 ResumeIR 将收集的信息转换为 ResumeIR 格式(完整字段见 [ResumeIR.v1 Schema](references/resumeir-schema.md)),缺失字段用 `【占位符】` 填充。最小骨架示例:
{
"meta": {"version": "1.0", "language": "zh-CN", "locale": "zh-CN"},
"basics": {"name": "张三", "phone": "【占位符】", "email": "【占位符】", "target_title": "产品经理"},
"summary": "",
"skills": {"primary": ["需求分析", "数据分析"], "secondary": []},
"work": [{"company": "某公司", "title": "产品经理", "start": "2021-06", "end": "present",
"bullets": ["主导……,使……提升 20%"]}],
"projects": [],
"education": [{"school": "【占位符】", "degree": "本科", "start": "", "end": ""}]
}复制 步骤 3:输出第一版简历 输出 ResumeIR JSON 输出纯文本预览(按标准顺序排版) 生成诊断报告(重点检查完整性) 生成投递可接受性结论:`ready / needs_fix / do_not_submit`,并列出 HR 首筛会卡住的 3 个以内问题 输出最小补充清单(最多 8 条问题) 步骤 4:保存版本 自动保存为第一个版本:`version_name = "{target_title}-{date}-{lang}"`
模式 2:优化简历(已有简历) 步骤 1:解析简历 如果用户上传文件(PDF/DOCX/TXT):调用 `scripts/parse_resume.py` 提取文本 如果用户粘贴文本:直接使用文本内容 步骤 2:回显确认 向用户回显以下关键字段,确认解析准确性:
步骤 3:收集 JD(可选) 询问用户是否有目标 JD,如有则粘贴
步骤 4:生成 ResumeIR 和诊断报告 从简历文本中提取信息,生成 ResumeIR(缺失用 `【占位符】`) 输出诊断报告(评分 0-100,问题列表 + 严重度 + 建议) 输出投递可接受性结论:标题匹配、首屏可读、联系方式、地点/到岗/工作授权、市场禁忌信息、岗位证据是否满足 HR 初筛 生成改写后的 ResumeIR 输出纯文本预览(用户需要文件时再调用 render_resume.py 导出) 步骤 5:保存版本 自动保存为第一个版本:`version_name = "{target_title}-{date}-{lang}"`
简历改写规范 工作经历 bullet 写法 每个 bullet 必须符合以下结构:
动作动词 + 任务 + 方法/工具 + 结果(指标)复制 示例:
❌ 错误:负责数据分析和报表生成 ✅ 正确:使用 Python 和 SQL 分析用户行为数据,通过 A/B 测试优化产品功能,使日活用户增长 20% 量化要求 尽可能使用具体数字、百分比、金额等量化指标 无法量化时使用 `【metric】` 占位符,并在补充清单中提示 JD 关键词覆盖(如果有 JD) 对 primary skills 做关键词覆盖(≤12 个) 在 bullets 中自然体现,避免生硬堆词 版本管理 保存版本 使用脚本保存当前 ResumeIR:
python3 scripts/version_manager.py save --version-name "产品经理-2024-01-15-zh-CN" --resume-ir "resume_ir.json"复制 命名版本 python3 scripts/version_manager.py rename --old-name "v1" --new-name "产品经理-2024-01-15-zh-CN"复制 对比版本 python3 scripts/version_manager.py compare --version1 "v1" --version2 "v2"复制 回滚版本 python3 scripts/version_manager.py rollback --version-name "v1"复制 导出文件 本地导出(纯 Python,无外部服务/网络) 当用户要求导出时,将当前 ResumeIR 存为 JSON 后调用脚本:
python3 scripts/render_resume.py --resume-ir "resume_ir.json" --output-formats "docx,pdf" --output-dir ./out复制 导出采用**降级阶梯**,任何环境都能产出可用文件:
**DOCX**:python-docx 生成,单栏、标准标题、无表格/文本框,ATS 友好(推荐投递格式) **PDF**:reportlab + 内置 CJK 字体直出(纯 pip,无需系统字体/系统库);若未安装 reportlab,则自动改出打印优化 HTML,并提示"用浏览器打开后 Ctrl+P 另存为 PDF" 脚本不依赖任何远程服务,clone 到本地即可运行 可用样式 `cn_ats_a4_v1`(中文,默认)/ `en_ats_a4_v1`(英文);实际中英文由 ResumeIR 的 `meta.language` 决定 查看:`python3 scripts/render_resume.py --list-templates` 生成**双语或英文简历**时,请参考 [references/en-resume-conventions.md](references/en-resume-conventions.md)(动作动词库、禁照片/年龄/婚姻、1 页优先、英文日期 MMM YYYY、量化优先) **面向美国科技岗(SWE/PM/DS)**:可直接参考 [assets/examples/](assets/examples/) 下的 `en-US-software-engineer.json`、`en-US-product-manager.json`、`en-US-data-scientist.json` 三份可渲染样例(含 LinkedIn/GitHub、美国职级、p99/QPS/SLA 等美国科技度量);`meta.language=en-US` 时渲染层自动套英文区块标题,并把 ISO 日期 `YYYY-MM` 自动转 `MMM YYYY` 资源索引 必要脚本 **[scripts/parse_resume.py](scripts/parse_resume.py)**:简历解析脚本,支持 PDF/DOCX/TXT/MD 参数:位置参数 `<文件路径>`(亦兼容 `--input-file <路径>`) 输出:JSON `{"text": "...", "format": "pdf|docx|txt", "pages": N, "success": true}`;失败返回 `{"error": "...", "exit_code": N}` **[scripts/version_manager.py](scripts/version_manager.py)**:版本管理脚本 参数:`save`/`rename`/`compare`/`rollback` + 对应参数 输出:版本操作结果 **[scripts/render_resume.py](scripts/render_resume.py)**:本地导出脚本(DOCX/PDF/HTML,无外部服务) 参数:`--resume-ir <JSON 文件>`、`--output-formats docx,pdf,html`、`--output-dir`、`--file-name` 输出:DOCX / PDF(或 HTML 兜底)文件 领域参考 **[references/resumeir-schema.md](references/resumeir-schema.md)**:ResumeIR.v1 Schema 定义(何时读取:生成或解析 ResumeIR 时) **[references/diagnostic-report-spec.md](references/diagnostic-report-spec.md)**:诊断报告输出规范(何时读取:生成诊断报告时) **[references/en-resume-conventions.md](references/en-resume-conventions.md)**:英文简历规范(何时读取:生成双语/英文简历时) 对话流程示例 场景 1:从零生成简历 用户:帮我生成一份简历
智能体:好的,让我帮你创建简历。请告诉我:
1. 你的目标岗位是什么?
2. 目前的工作情况(公司/岗位/工作年限)?
...
[收集信息]
智能体:已生成第一版简历,以下是我的分析:
[诊断报告]
最小补充清单(8 个问题):
1. 请补充你的具体联系方式(电话/邮箱)
2. 在第一段工作经历中,你提到的【metric】具体是多少?
...复制 场景 2:优化已有简历 用户:帮我优化这份简历 [上传文件]
智能体:[解析简历] 我从你的简历中提取到以下信息,请确认:
姓名:张三
最近公司:某科技公司
最近岗位:产品经理
工作年限:3-5 年
是否有目标 JD?如有请粘贴。
[如有 JD]
智能体:已完成优化,诊断报告如下:
总评分:72/100
问题列表:
[P0] 工作经历部分缺乏量化指标(严重)
建议:每个 bullet 应包含具体的数字或百分比
示例改写:"负责产品迭代" → "主导 5 个产品迭代,使用户留存率提升 15%"
...
缺口清单(JD 要求但简历缺失):
1. SQL 技能(JD 明确要求)
最小补充问题:你是否有使用 SQL 的经验?用于什么场景?
[输出改写后的简历]复制 场景 3:导出文件 用户:导出这份简历
智能体:正在生成 DOCX 和 PDF 文件... [调用 render_resume.py]
已生成文件:
- 张三-产品经理-2024-01-15.docx
- 张三-产品经理-2024-01-15.pdf复制 场景 4:版本对比 用户:对比 v1 和 v2
智能体:[调用 version_manager.py compare]
主要差异:
1. 工作经历 - 某科技公司(2019-2022)
v1: 负责产品设计和需求分析
v2: 主导 8 个产品迭代,通过数据驱动优化,使用户满意度提升 25%
2. 技能 - primary
v1: ["产品设计", "需求分析", "项目管理"]
v2: ["产品设计", "需求分析", "项目管理", "数据分析", "SQL", "A/B 测试"]
建议:v2 版本内容更完整,建议使用 v2 版本进行投递。复制 场景 5:回滚版本 用户:回滚到 v1
智能体:[调用 version_manager.py rollback]
已回滚到 v1 版本(产品经理-2024-01-10-zh-CN)复制 注意事项 失败兜底 **简历解析失败**:要求用户粘贴纯文本;或让用户用"教育/经历/项目"分段粘贴 **信息缺失**:用 `【占位符】` + 最小补充清单(≤8 问) **JD 太长**:只抽取岗位职责与任职要求两段,其余忽略 **生成内容过泛**:强制每条 bullet 含"结果/影响",否则标记为 P1 问题并给改写示例 ATS 友好性(约束对象为"生成/导出"的简历;解析用户上传文件时可正常读取其中的表格内容) 使用标准段落标题(工作经历、教育、技能等) 避免使用表格、文本框、图标、图片 默认单栏布局 使用标准字体(如 Arial、Calibri) 避免使用特殊字符和装饰性元素 质量保证 所有 bullet 必须以动作动词开头(如"主导"、"设计"、"实现"、"优化"等) 确保每个 bullet 都有明确的结果或影响 避免"负责"、"参与"等弱化词 优先使用主动语态,避免被动语态 使用示例 示例 1:从零生成简历(中英文) 功能说明:帮助用户从零创建中英文双语简历 执行方式:智能体对话 + 脚本保存版本 关键参数:language=zh-CN/en-US,target_title,target_level 步骤: 1. 收集基本信息和经历 2. 生成中文版 ResumeIR 3. 生成英文版 ResumeIR(自动翻译) 4. 保存为两个版本(中文版和英文版)
示例 2:基于 JD 优化简历 功能说明:针对特定 JD 优化简历内容 执行方式:智能体分析 + 脚本解析 关键参数:JD 文本,原简历文件 步骤: 1. 解析原简历 2. 分析 JD 要求 3. 对比找出缺口 4. 改写简历以覆盖 JD 关键词 5. 输出对比和优化建议
示例 3:多版本管理 功能说明:创建多个简历版本,对比并选择最佳版本 执行方式:脚本管理版本 关键参数:version_name,resume_ir 步骤: 1. 保存 v1 版本 2. 修改后保存 v2 版本 3. 对比 v1 和 v2 4. 回滚到最佳版本 5. 导出最终版本
还没有评论,先发起一个具体问题。