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
核心原則
硬性規則
- 絕不編造使用者經歷/資料:缺失內容用
【佔位符】並輸出「最小補充清單」 - ATS 友善:預設單欄、無表格、無文字框、無圖示;使用標準段落標題
- 投遞可接受性:診斷報告必須從 HR 首篩視角檢查標題是否對口、年限/地點/聯絡方式/工作授權/到崗時間是否清楚,以及是否存在照片、年齡、婚育、政治面貌、期望薪資等目標市場禁忌資訊
- 完整輸出:必須同時輸出 ResumeIR JSON、診斷報告、投遞可接受性結論、改寫後的履歷內文;匯出檔案按需由本機腳本生成(見「匯出檔案」)
- 使用者輸入成本最低化:優先支援「貼上文字/上傳檔案」,僅在關鍵欄位缺失時追問
輸出結構
所有操作必須輸出以下三部分(匯出檔案按需生成):
- ResumeIR JSON:固定欄位名,符合 ResumeIR.v1 Schema
- 診斷報告:問題清單 + 嚴重度 + 建議,符合 診斷報告規範
- 投遞可接受性結論:
application_acceptability,回答「現在能不能投 / HR 首篩會卡在哪裡 / 先補什麼」 - 改寫後的履歷內文:純文字預覽
- (可選)匯出檔案:使用者需要 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),缺失欄位用 【佔位符】 填充。最小骨架範例:
{
"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(動作動詞庫、禁照片/年齡/婚姻、1 頁優先、英文日期 MMM YYYY、量化優先)
- 面向美國科技崗(SWE/PM/DS):可直接參考 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:履歷解析腳本,支援 PDF/DOCX/TXT/MD
- 參數:位置參數
<檔案路徑>(亦相容--input-file <路徑>) - 輸出:JSON
{"text": "...", "format": "pdf|docx|txt", "pages": N, "success": true};失敗回傳{"error": "...", "exit_code": N}
- 參數:位置參數
- scripts/version_manager.py:版本管理腳本
- 參數:
save/rename/compare/rollback+ 對應參數 - 輸出:版本操作結果
- 參數:
- 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:ResumeIR.v1 Schema 定義(何時讀取:生成或解析 ResumeIR 時)
- references/diagnostic-report-spec.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
- 步驟:
- 收集基本資訊和經歷
- 生成中文版 ResumeIR
- 生成英文版 ResumeIR(自動翻譯)
- 儲存為兩個版本(中文版和英文版)
範例 2:基於 JD 優化履歷
- 功能說明:針對特定 JD 優化履歷內容
- 執行方式:智能體分析 + 腳本解析
- 關鍵參數:JD 文字,原履歷檔案
- 步驟:
- 解析原履歷
- 分析 JD 要求
- 對比找出缺口
- 改寫履歷以覆蓋 JD 關鍵詞
- 輸出對比和優化建議
範例 3:多版本管理
- 功能說明:建立多個履歷版本,對比並選擇最佳版本
- 執行方式:腳本管理版本
- 關鍵參數:version_name,resume_ir
- 步驟:
- 儲存 v1 版本
- 修改後儲存 v2 版本
- 對比 v1 和 v2
- 回滾到最佳版本
- 匯出最終版本