# Resume Analyzer

> 简历分析与评估技能。从PDF简历中提取信息，按照多个维度对候选人进行打分评估，并生成Excel分析报告。当用户需要分析简历、筛选候选人、评估面试者与岗位匹配度时使用此技能。支持单个简历文件和批量简历文件夹的分析。

- Skill: `angus221/resume-analyzer` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add angus221/resume-analyzer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/angus221/resume-analyzer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: angus221 (https://skillmd.com/u/angus221)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/angus221/resume-analyzer

---


# 简历分析与评估

从PDF简历中提取信息，根据目标岗位要求从多个维度对候选人打分，生成结构化的Excel评估报告。

## 工作流程

简历分析包含以下步骤：

1. 确认输入信息（简历路径、目标岗位）
2. 加载岗位要求（读取 `resources/` 下对应岗位文档）
3. 读取简历（运行 `scripts/read_pdf.py`）
4. 逐份分析评分（AI 根据岗位要求对每份简历进行多维度评分）
5. 生成Excel报告（运行 `scripts/write_excel.py`）

## 第一步：确认输入信息

向用户确认以下信息：

- **简历路径**：单个PDF文件路径 或 包含多个PDF的文件夹路径（必需）
- **目标岗位**：用于评估的岗位名称（必需）
- **输出路径**：Excel报告保存位置（可选，默认在简历同目录下生成 `简历分析报告.xlsx`）

## 第二步：加载岗位要求

岗位要求文档存放在 `resources/` 目录下，以岗位名称命名（如 `产品经理.md`）。

**已有岗位**：产品经理、前端开发、Java工程师、测试工程师、项目经理

- 用户指定的岗位在 `resources/` 中存在 → 直接读取对应文件
- 用户指定的岗位不存在 → 告知用户没有该岗位的要求文档，询问是否需要：
  - (a) 从已有岗位中选择
  - (b) 由AI根据岗位名称生成通用要求后继续分析

读取岗位文档后，重点关注其中的**核心技能要求**和**评分标准**部分。

## 第三步：读取简历

使用 `scripts/read_pdf.py` 脚本提取简历文本：

```bash
# 单个简历
python scripts/read_pdf.py /路径/简历.pdf

# 批量简历
python scripts/read_pdf.py /路径/简历文件夹/
```

脚本输出JSON格式结果到stdout，包含每个文件的路径、文件名和提取的文本内容。

**依赖**：需要安装 `pdfplumber`（`pip install pdfplumber`）。运行前检查是否已安装，未安装则先安装。

## 第四步：逐份分析评分

对每份简历，根据岗位要求从以下六个维度进行评分：

| 维度 | 分值 | 评分要点 |
|------|------|---------|
| 学历背景 | 15分 | 学历层次（博士15/硕士12/本科9/专科5）、院校水平（985/211加分）、专业相关性 |
| 工作经验 | 20分 | 相关领域工作年限、岗位匹配度、职级成长轨迹 |
| 技能匹配 | 25分 | 简历中体现的技能与岗位核心技能要求的匹配程度 |
| 项目经验 | 20分 | 项目复杂度、承担角色、成果产出、与岗位的关联度 |
| 稳定性 | 10分 | 平均每家公司任职时长、跳槽频率（频繁跳槽扣分） |
| 发展潜力 | 10分 | 学习能力、成长速度、技术/管理视野、额外技能和认证 |

**总分** = 各维度得分之和（满分100分）

### 评分原则

- 简历中**明确提到**的内容才计分，不做过度推测
- 信息不足的维度给予中等偏下分数，而非零分
- 评分需结合岗位要求文档中的具体技能权重

### 推荐结论

根据总分给出推荐结论：

- **推荐**：总分 ≥ 75分
- **待定**：总分 60-74分
- **不推荐**：总分 < 60分

### 综合评价

为每位候选人撰写100-200字的综合评价，包含：
- 核心优势（1-2个亮点）
- 主要不足（1-2个短板）
- 整体评估结论

### 信息提取

从简历文本中尽量提取以下基本信息：

```
姓名、性别、年龄、学历、毕业院校、专业、工作年限、联系电话、邮箱
```

无法提取的字段填写"-"。

## 第五步：生成Excel报告

将所有分析结果组织成JSON格式，然后调用 `scripts/write_excel.py`：

```bash
echo '<JSON数据>' | python scripts/write_excel.py /输出路径/简历分析报告.xlsx
```

或先将JSON写入临时文件再调用：

```bash
python scripts/write_excel.py /输出路径/简历分析报告.xlsx --input /临时文件.json
```

**依赖**：需要安装 `openpyxl`（`pip install openpyxl`）。运行前检查是否已安装，未安装则先安装。

### JSON数据格式

```json
{
    "position": "岗位名称",
    "candidates": [
        {
            "name": "姓名",
            "file_name": "源文件名",
            "basic_info": {
                "gender": "性别",
                "age": "年龄",
                "education": "学历",
                "school": "毕业院校",
                "major": "专业",
                "work_years": "工作年限",
                "phone": "联系电话",
                "email": "邮箱"
            },
            "scores": {
                "education_score": 0,
                "experience_score": 0,
                "skill_match_score": 0,
                "project_score": 0,
                "stability_score": 0,
                "potential_score": 0,
                "total_score": 0
            },
            "evaluation": "综合评价",
            "recommendation": "推荐/待定/不推荐"
        }
    ]
}
```

## 完成

报告生成后，向用户展示分析摘要：

- 分析的简历总数
- 各推荐等级的人数分布
- 得分最高的前3位候选人及其得分和核心优势
- Excel报告保存位置

