| name | resume-screening |
| description | 完整招聘解决方案 - 简历筛选→面试设计→评估→推荐。整合Topgrading+绩效预测+ATS优化+深度追问。当用户说"筛选简历"、"帮我筛简历"、"帮我招人"、"招聘"、"设计面试题"、"评估候选人"、"resume screening"、"hiring"、"candidate evaluation",或提到简历、JD、候选人、面试相关话题时触发。即使只提到部分流程(如只要筛选或只要面试题),也应触发此skill。 |
简历筛选助手Pro V4.0
完整招聘流程:筛选→面试设计→评估→推荐
自动化脚本 + 并行分析 + 结构化输出
整体流程
阶段0 需求确认 → 阶段1 简历筛选(批量) → 阶段2 面试设计 → 阶段3 面试评估 → 阶段4 最终推荐
用户可以只使用其中一个阶段,也可以走完整流程。先问清楚需求再执行。
阶段0:迭代式需求确认
不要一上来就给答案。先理解需求,再设计方案。
必问信息(通过 AskUserQuestion 一次性收集):
- 筛选范围 — 全部/部分文件夹/指定文件
- JD来源 — 有JD文件路径、稍后提供、还是按岗位名自行判断
- 筛选重点 — 用户最看重什么(学历/经验/综合素质/特定技能等)
- 输出格式 — Excel排名表 / 对话展示 / 两者都要
对话示例:
用户:帮我筛选简历
→ 先问岗位名称、JD、筛选重点、输出格式
→ 确认后:"明白了,你需要一个[岗位]的简历筛选,重点看[能力1]、[能力2],对吧?"
阶段一:简历筛选(批量自动化)
依赖安装
首次使用需安装:
pip install PyMuPDF openpyxl --break-system-packages
Step 1: 提取简历文本
使用 scripts/extract_resumes.py 批量提取PDF文本并去重:
python scripts/extract_resumes.py ./简历/0324简历筛选/ ./简历/324简历筛选2/ output.json
脚本功能:
- 递归扫描目录中所有PDF
- 提取全文文本(使用PyMuPDF)
- 按文件名中的姓名自动去重(保留文本更长的版本)
- 输出JSON数组(每条含 name, file, path, text)
Step 2: 并行分批分析
将提取结果分成每批15-16份,启动多个并行 Agent 同时分析。
分批脚本(内联执行):
import json
batch_size = 16
with open("resumes_extracted.json") as f:
resumes = json.load(f)
for i in range(0, len(resumes), batch_size):
batch = resumes[i:i+batch_size]
with open(f"resumes_batch_{i//batch_size}.json", 'w') as f:
json.dump(batch, f, ensure_ascii=False, indent=2)
并行 Agent 评分(每个 Agent 处理一个 batch):
评分维度和权重必须从JD和用户要求中动态生成,不要使用固定模板。步骤:
- 解析JD — 从JD的岗位职责和任职要求中提取关键考察维度(如"项目管理能力"、"沟通协调"、"XX软件技能"等)
- 结合用户筛选重点 — 将阶段0中用户明确看重的维度纳入评分体系
- 设计评分表 — 为每个维度定义清晰的评分标准(1-10分),合理分配权重,确保权重之和为100%
- 设定推荐阈值 — 根据评分体系设定推荐/谨慎推荐/不推荐的分数线
示例 prompt 结构(维度、权重、阈值仅为示范,实际必须替换):
你是简历筛选专家。读取 resumes_batch_N.json,对照以下JD和评分标准进行评分。
【岗位JD】
{粘贴完整JD}
【评分维度】(根据JD动态生成,以下仅为示例结构)
1. 维度A名称 — 评分标准说明 ... 权重 X%
2. 维度B名称 — 评分标准说明 ... 权重 Y%
3. ...
(权重之和 = 100%)
【推荐标准】
- 推荐:综合分 >= X
- 谨慎推荐:X > 综合分 >= Y
- 不推荐:综合分 < Y
输出JSON数组保存到 scores_batch_N.json,每条记录含:
name, file, {各维度_score}, overall_score,
education(学历信息), major(专业), experience_years(工作年限),
key_experience(50字), strengths(30字), risks(30字), recommendation
简历文本可能有OCR识别错误,尽量理解语义。
Agent 数量 = batch数量,使用 run_in_background: true 全部并行启动。
Step 3: 合并评分
import json, glob
all_scores = []
for f in sorted(glob.glob("scores_batch_*.json")):
with open(f) as fh:
all_scores.extend(json.load(fh))
all_scores.sort(key=lambda x: x.get("overall_score", 0), reverse=True)
with open("all_scores_merged.json", 'w') as f:
json.dump(all_scores, f, ensure_ascii=False, indent=2)
Step 4: 生成Excel
使用 scripts/generate_excel.py:
python scripts/generate_excel.py all_scores_merged.json 排名表.xlsx "科研助理"
Excel 包含两个 Sheet:
- 简历筛选排名表 — 全部候选人排名(颜色标注+筛选功能+冻结表头)
- 筛选统计 — 推荐分布 + 推荐候选人详情
输出汇总
完成后在对话中展示:
【简历筛选报告】
| 统计项 | 数据 |
| 投递总数 | X份(去重后Y位候选人)|
| 推荐 | X人(综合>=8.0)|
| 谨慎推荐 | X人(6.0-8.0)|
| 不推荐 | X人(<6.0)|
TOP 推荐候选人表格 + 文件路径
阶段二:面试题目设计
当用户说"设计面试题"或进入面试阶段时,读取 references/interview-methodology.md 获取完整方法论。
核心流程:
- Scorecard定义 — 先不看简历,根据JD定义A级人才标准(Mission/Outcomes/Competencies)
- 候选人画像 — 从简历提取关键成就、风险点、经验迁移点
- 深度追问设计 — 6层追问 + PEARL框架 + 失败问题 + 模拟协作
- 个性化问题 — 基于候选人简历中的关键声明定制追问链
评分输出格式见 references/interview-methodology.md
阶段三:面试评估
基于阶段二的面试问题对候选人面试表现进行评估。
评估维度(1-5分): 岗位理解 / 问题解决 / 经验迁移 / 团队管理 / 文化匹配
信号判断:
- 绿灯:能6层深回答、PEARL清晰、有失败反思
- 红灯:只说漂亮话、回避失败、表面深入
详细输出格式见 references/interview-methodology.md
阶段四:最终推荐
综合阶段一的简历分 + 阶段三的面试分,给出最终推荐。
| 简历筛选分 | 面试评估 | 最终结论 |
|---|
| 8.0+ | 4.5/5+ | 强烈推荐 |
| 7.0+ | 4.0/5+ | 推荐 |
| 6.0+ | 3.5/5+ | 谨慎推荐 |
| <6.0 | <3.5/5 | 不推荐 |
使用场景速查
| 用户需求 | 执行阶段 |
|---|
| "帮我筛选这批简历" | 阶段0 → 阶段一 |
| "设计这个岗位的面试题" | 阶段二(需先读方法论参考) |
| "评估这个候选人的面试表现" | 阶段三 |
| "综合推荐最终人选" | 阶段四 |
| "帮我做完整的招聘流程" | 全部阶段 |
文件结构
resume-screener-pro/
├── SKILL.md # 本文件(主入口)
├── scripts/
│ ├── extract_resumes.py # PDF文本提取+去重
│ └── generate_excel.py # 评分→Excel排名表
└── references/
└── interview-methodology.md # 面试方法论(阶段2-4详细内容)
配套Skills
xlsx — 生成Excel文件时使用
pdf — 单个PDF读取时使用(批量处理已内置PyMuPDF脚本)
tailored-resume-generator — ATS优化简历定制