Community寫作與編輯github.com

ATS 履歷建置與優化工具

本地優先的 ATS 相容履歷建置與匯出工具,支援 ResumeIR JSON 格式。

ATS 履歷建置與優化工具 是什麼?

此 Skill 專為幫助使用者建立、優化及管理符合 ATS(求職者追蹤系統)標準的專業履歷而設計。它提供兩種主要操作模式:從零開始建立新履歷,或基於現有履歷進行優化。核心功能包括履歷解析(支援 PDF/DOCX/TXT)、診斷報告生成(評估完整性與ATS友好性)、投遞可接受性檢查(從HR篩選角度,檢查標題、年限、地點、禁忌資訊等)、以及版本管理。它完全基於本機運行,依賴 pdfplumber、python-docx 和 reportlab 等 Python 函式庫,無需任何外部服務或網路連線,確保資料安全與隱私。輸出結構固定,包含 ResumeIR JSON、診斷報告、投遞可接受性結論、改寫後履歷內文,並可按需透過本機腳本匯出 DOCX 或 PDF 檔案。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add lonelydoctor/ats-resume-builder

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

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
  2. 診斷報告:問題清單 + 嚴重度 + 建議,符合 診斷報告規範
  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),缺失欄位用 【佔位符】 填充。最小骨架範例:

{
  "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 兜底)檔案

領域參考

對話流程範例

場景 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. 匯出最終版本

相關技能