一個專為台灣求職市場打造的 Claude Code Skill,讓 AI 像資深 HR 顧問一樣幫你精準評分、改寫、優化你的 104 履歷,並能自動搜尋 104 職缺、計算履歷與每個職缺的適配分數。
📖 介紹文:用 AI Agent 駭進 104 履歷系統
台灣求職市場有一個現實:104 上有超過 10 萬筆履歷,HR 平均只花 30 秒掃描一份。
多數求職者知道履歷很重要,卻不知道「哪裡不夠好」。市面上的履歷健檢服務要嘛太貴、要嘛太表面(「多用數字」這種建議根本無從下手)。
這個 Skill 的目標是:像一個懂 104 演算法、懂台灣 HR 心理的資深顧問,給出具體、可立即執行的建議 —— 不是「多加數字」,而是「你的第二段工作描述第一句改成這樣:透過 [Z 方法],達成 [X 成果],以 [Y 指標] 衡量」。
| 功能 | 說明 |
|---|---|
| 加權評分(0–103 分) | 12 個區塊依實際篩選影響力設定滿分,工作經歷(25分)比推薦人(1分)重要 |
| Missing Section Audit | 自動清點缺失、不足、無法評估的區塊,給出狀態圖示 |
| XYZ 成就改寫 | 把任務型描述(「負責社群媒體」)改寫成成果型(「3 個月自然觸及提升 40%」) |
| JD 關鍵字 Gap 分析 | 比對目標職缺 JD,找出履歷缺失的硬技能/職能/產業關鍵字 |
| 最佳排序建議 | 依應屆/資深/轉職/設計職等背景,推薦 104 區塊排列順序 |
| 快速掃描模式 | 只要 Top 3 最高槓桿建議,不需要完整報告(適合時間有限時) |
| 自傳生成助手 | 自傳缺失或偏弱時,主動協助草擬一篇可直接貼入 104 的自傳 |
| 面試問題預測 | 報告完成後,可選擇根據履歷弱點和 JD 預測最可能被問到的面試題 |
| 版本比較 | 貼上上次報告分數,即時對照改善幅度 |
| JD 職缺適配分析 | 自動從 104 搜尋職缺,以五維度公式計算每個職缺的適配分(需 Python 環境) |
| LinkedIn 雙平台模式 | 從 104 模式切換為 LinkedIn 個人品牌優化,或兩者同時進行 |
| 平台轉換模式 | 將 104 履歷內容轉換為 LinkedIn 格式,或反向轉換 |
| 11 種語氣模式 | 從損友、嚴父、嘮叨媽媽到資深HR,用你最接受的口吻收到回饋,全程貫徹不走音 |
| 步驟進度提示 | 每個 Step 開頭顯示 📍 Step X/5,隨時知道流程進度 |
此 Skill 支援三種安裝方式,依你使用的 Claude 版本選擇。
- 下載本 repo 的 ZIP 檔案
- 開啟 Claude 桌面版或 claude.ai
- 進入 Customize → Skills → + → Create skill → Upload a skill
- 上傳下載的 ZIP 檔即完成
注意: JD 職缺適配分析(適配模式)需要執行本機 Python 腳本,僅支援 Claude Code CLI 環境。
# Clone 此 repo
git clone https://github.com/MinecraftDawn/resume-optimizer.git resume-optimizer
cd resume-optimizer
# 安裝 Python 依賴(適配模式需要)
python3 -m venv .venv
source .venv/bin/activate
pip install -r scripts/requirements.txt
playwright install chromium
# 將 Skill 複製到 Claude Code plugin 目錄
mkdir -p ~/.claude/plugins/resume-optimizer/skills/resume-optimizer
cp SKILL.md ~/.claude/plugins/resume-optimizer/skills/resume-optimizer/
cp -r references/ ~/.claude/plugins/resume-optimizer/skills/resume-optimizer/若你已有自己的 Claude Code plugin,把 SKILL.md、references/、scripts/ 放入對應目錄即可。
your-project/
├── SKILL.md
├── scripts/
│ ├── fetch_jobs.py ← 104 職缺搜尋腳本
│ ├── score_fit.py ← 適配評分腳本
│ └── requirements.txt
└── references/
├── 104-format.md
├── scoring.md
├── suggestions.md
├── output-format.md
├── salary-benchmarks.md
├── industry-profiles.md
├── linkedin-mode.md
├── linkedin-format.md
├── linkedin-scoring.md
├── linkedin-suggestions.md
├── linkedin-output.md
├── platform-conversion.md
├── jd-crawl-guide.md
└── jd-fit-scoring.md
安裝後開啟新對話,輸入:
/resume-optimizer
或直接說「幫我看履歷」、上傳履歷 PDF,Skill 會自動啟動。
Step 1:觸發 Skill
直接在對話中說任何觸發詞:
幫我看履歷
分析我的 104 履歷
履歷打分
幫我改履歷
或是直接上傳 PDF / 貼上純文字,Skill 會自動啟動。
Step 2:提供履歷
推薦方式:從 104 會員頁面下載 PDF 上傳。
也接受:直接將文字複製貼上。
Step 3:回答初始問題
Skill 開始前會先問四件事(可一次回答):
-
你想做什麼?
(104)完整分析 104 履歷(LI)分析 LinkedIn 個人頁面(雙平台)104 + LinkedIn 都要分析(轉換)把 A 平台內容轉換為 B 平台格式(快速)只要 Top 3 最高槓桿建議(適配)分析履歷與多個 104 職缺的匹配度
-
這是第一次分析,還是有舊報告要對比?
-
求職目標類型(A 主動有JD / B 探索中 / C 被動觀望 / D 職涯轉換 / E 晉升加薪)
-
想用哪種語氣收到回饋?(見下方語氣模式說明)
Step 4:收到完整報告
報告包含:
- 各區塊評分表(得分/滿分/達成率/狀態)
- 軟實力綜合分析(量化密度、硬實力佔比)
- JD Gap 分析(若有提供 JD)
- 每個低分區塊的具體建議 + XYZ 改寫示範
- 建議區塊排序(附理由)
- 今日優先執行清單(3–4 項,附預估分數提升)
每次分析開始時,Skill 會讓你選擇 11 種語氣之一,整份報告的說話方式都會跟著改變(評分邏輯與分數不受影響):
| # | 語氣 | 特色 |
|---|---|---|
| 1 | 不套用語氣 | 維持原始分析風格(預設) |
| 2 | 嘴砲型損友 | 直白、損、但真心為你好 |
| 3 | 嘮叨的媽媽 | 反覆叮嚀、充滿擔憂與愛 |
| 4 | 家中的嚴父 | 高標準、少稱讚、要你成才 |
| 5 | 研究所教授 | 系統分析、邏輯導向、學術腔 |
| 6 | 十年資深HR | 篩選視角、市場現實、不廢話 |
| 7 | 行政老油條 | 職場眉角、潛規則、人生閱歷 |
| 8 | 勵志教練 | 每個弱點都是機會,正能量滿點 |
| 9 | 外商獵頭 | personal brand、impact、中英混搭 |
| 10 | 社畜老前輩 | 過來人、務實、帶點滄桑的溫暖 |
| 11 | 補習班名師 | 超有條理、愛拆步驟、你一定學得會 |
隨時在對話中說「換成嚴父語氣」或「換成 4」即可切換。
時間有限、只想知道「最值得先做哪三件事」?在 Step 0 第 1 題選 (快速):
Skill 會跳過完整的 Step 1–5 流程,直接輸出 Top 3 最高槓桿建議,格式精簡,每條都附上 XYZ 改寫示範與預估影響。最後還有跳出口:輸入「完整分析」即可繼續完整版流程。
📍 Quick Scan — 分析完成
**Top 1 — 工作經歷**
問題:所有描述都是任務型,沒有任何數字成果
怎麼改:把每段第一句換成 XYZ 格式
範例改寫:
原:負責後端 API 開發與維護
改:設計並交付 RESTful API,支撐日均 50 萬次請求,透過 Redis 快取將回應時間從 420ms 降至 95ms
預估影響:高 — 工作經歷佔總分 25%,改一條立竿見影
...
需要: Python 3.10+、
.venv虛擬環境、Playwright(見安裝步驟)
在 Step 0 第 1 題選 (適配),Skill 會進入 J1–J4 流程:
J1 — 收集履歷與求職條件
提供履歷後,Skill 收集:目標職稱、偏好地區、薪資期望,並從履歷中提取技能池與總年資。
J2 — 自動搜尋 104 職缺並評分
呼叫 scripts/fetch_jobs.py,使用 Playwright 無頭瀏覽器從 104 搜尋符合條件的職缺(每頁 10 筆),並對每筆自動執行 scripts/score_fit.py 計算五維度適配分。
- 若搜尋結果不足,自動追加同義關鍵字 fallback(最多 3 次)
- 支援分頁瀏覽,跨頁選擇職缺
- 可排除薪資完全面議的職缺
📍 職缺搜尋結果(第 1 頁)
| # | 職稱 | 公司 | 薪資 | 地點 | 適配分 | 主要技能缺口 |
|---|------|------|------|------|--------|------------|
| 1 | [前端工程師](URL) | OO科技 | 月薪60,000–90,000元 | 台北市 | 🟢 82/100 | TypeScript |
| 2 | [React工程師](URL) | XX新創 | 月薪50,000–70,000元 | 新北市 | 🟡 67/100 | Next.js, GraphQL |
...
J3 — 選定職缺詳細適配分析
選擇想深入分析的職缺編號後,展開五維度得分明細、已具備技能 vs 缺少技能清單,以及投遞建議。
J4 — 輸出適配報告
彙整所有分析職缺的比較表、職缺連結清單、前 3 名詳細分析,以及跨 JD 共同缺少的高頻技能補強清單。
在 Step 0 選 (LI) 或 (雙平台),Skill 載入 LinkedIn 專屬評分規則(references/linkedin-*.md),分析以下區塊:
- Headline / About / 工作經歷 / 技能清單 / 教育背景 / 專案 / 證照 / Featured
LinkedIn 模式注重個人品牌與故事性,而非 104 的關鍵字密度。雙平台模式會先完成 104 完整分析,再進行 LinkedIn 增量分析(共用工作經歷資料,不重複詢問)。
在 Step 0 選 (轉換),依照 C0–C4 流程執行:
- C0 確認轉換方向(104 → LinkedIn 或 LinkedIn → 104)
- C1 收集來源平台的完整內容
- C2 逐欄審計(直接搬移 / 需改寫 / 需新建 / 操作說明)
- C3 逐欄改寫輸出(每個欄位產出可直接貼入目標平台的文字)
- C4 完整轉換報告 + 轉換品質提醒
完成後可選擇繼續對目標平台進行評分。
若已有上一次的分析報告,可觸發比對模式:
我已經有上次的評分報告,想看這次改了多少
Skill 會請你貼上舊報告的總分與各區塊分數,最終產出對比表,標示每個區塊的進退幅度(▲/▼/─)。
| 區塊 | 滿分 | 重要性 |
|---|---|---|
| 工作經歷 | 25 | ★★★★★ |
| 專長 | 15 | ★★★★ |
| 基本資料 | 10 | ★★★★ |
| 學歷 | 10 | ★★★ |
| 求職條件 | 8 | ★★★ |
| 自傳 | 8 | ★★★ |
| 專案成就 | 8 | ★★★ |
| 軟實力綜合 | 6 | ★★★ |
| 證照 | 4 | ★★ |
| 語文能力 | 3 | ★★ |
| 附件 | 2 | ★★ |
| 推薦人 | 1 | ★ |
| 基礎總分 | 100 | |
| 自訂內容(加分) | +3 | ★★ |
| 含加分總分 | 103 |
| 維度 | 滿分 | 說明 |
|---|---|---|
| 職稱 / 職類匹配 | 25 | 職稱相符程度、職類是否一致 |
| 技能關鍵字重疊率 | 30 | 履歷技能 vs JD 必要/加分技能 |
| 年資符合度 | 20 | 履歷工作年資 vs JD 要求年資 |
| 薪資區間符合度 | 10 | 履歷期望薪資 vs JD 揭露薪資 |
| 產業 / 地區符合度 | 15 | 目標產業 + 工作地點 |
色階:80–100 🟢 強力推薦、60–79 🟡 值得嘗試、40–59 🟠 有挑戰、0–39 🔴 不建議
| 圖示 | 意義 | 達成率 |
|---|---|---|
| ✅ | 優秀,不需優先處理 | ≥75% |
| 尚可,建議改善 | 50–74% | |
| ❌ | 嚴重不足,優先處理 | <50% 或必要項缺失 |
| ⚪ | 缺失,但屬可選項 | 未填寫 |
| ❓ | 無法評估(資訊不足) | N/A |
這個 Skill 評品質,不評填寫格數:
- 專案成就有 2 筆深度描述 = 充足(不需要填滿 6 筆)
- 自傳 400 字聚焦有力 > 3000 字流水帳
- 工作描述有成果數字 > 工作內容長度
適配分析模式(J1–J4)需要在專案根目錄下執行兩個 Python 腳本。
使用 Playwright 無頭瀏覽器從 104 搜尋職缺,並透過 104 Detail API 抓取每個職缺的 JD 文字、技能標籤、年資要求與薪資資訊。
source .venv/bin/activate && python scripts/fetch_jobs.py \
--keyword "前端工程師" \
--area "6001001000" \ # 台北市;全台傳空字串 ""
--title-filter "前端,frontend" \
--limit 10 \
--page 1 \
[--salary-min 40000] \ # 月薪下限(元)
[--salary-max 80000] \ # 月薪上限(元)
[--exclude-negotiable] # 排除薪資面議職缺輸出 JSON 格式:
{
"status": "success",
"page": 1,
"jobs": [
{
"job_code": "abc123",
"title": "前端工程師",
"company": "OO科技",
"salary": "月薪60,000–90,000元",
"salary_monthly_min": 60000,
"salary_monthly_max": 90000,
"location": "台北市",
"url": "/job/abc123",
"jd_text": "...",
"skill_tags": ["React", "TypeScript"],
"exp_required": "2年以上"
}
]
}status 可為 success、need_fallback(無法存取 104,回傳搜尋 URL 讓用戶手動操作)、error。
以五維度公式計算履歷與單一 JD 的適配分,輸出 JSON。
source .venv/bin/activate && python scripts/score_fit.py \
--job-title "前端工程師" \
--jd-required '["React","TypeScript","Git"]' \
--jd-preferred '["Next.js","GraphQL"]' \
--jd-exp 2 \
--jd-salary-min 60000 \
--jd-salary-max 90000 \
--jd-location "台北市" \
--resume-title "前端工程師" \
--resume-skills '["React","JavaScript","CSS","Git"]' \
--resume-exp 3.5 \
--resume-salary 75000 \
--resume-location "台北市"輸出範例:
{
"status": "success",
"scores": {
"title": 25, "skill": 22, "exp": 20, "salary": 10,
"industry_location": 14, "total": 91
},
"skill_detail": {
"matched_required": ["git", "react"],
"missing_required": ["typescript"],
"matched_preferred": [],
"missing_preferred": ["graphql", "next.js"]
}
}所有薪資參數單位為元(月薪)。技能比對支援同義詞正規化(如 React.js = react)。
幫我分析這份履歷
(上傳 PDF)
目標職缺:後端工程師 (Python/Django)
背景:3 年工作經驗,目前在新創,想換到 SaaS 公司
## 104 履歷評分報告
### 各區塊評分
| 區塊 | 得分 | 滿分 | 達成率 | 狀態 |
|------|------|------|--------|------|
| 工作經歷 | 14 | 25 | 56% | ⚠️ |
| 專長 | 12 | 15 | 80% | ✅ |
| 基本資料 | 7 | 10 | 70% | ⚠️ |
| 學歷 | 8 | 10 | 80% | ✅ |
| 求職條件 | 5 | 8 | 63% | ⚠️ |
| 自傳 | 3 | 8 | 38% | ❌ |
| 專案成就 | 0 | 8 | 0% | ❌ |
| ... | ... | ... | ... | ... |
| **基礎總分** | **63** | **100** | **63%** | |
| 自訂內容 | 0 | +3 | | |
| **含加分總分** | **63** | **103** | **61%** | |
### JD 關鍵字 Gap 分析
目標職缺:後端工程師 (Python/Django)
| 類別 | JD 關鍵字 | 履歷狀態 | 建議行動 |
|------|----------|---------|---------|
| 硬技能 | Python | ✅ 完全匹配 | — |
| 硬技能 | Django | ⚠️ 弱匹配(提及但無具體使用情境) | 在工作經歷加入「使用 Django 建立...」 |
| 硬技能 | PostgreSQL | ❌ 缺失 | 若有使用,加入專長標籤 |
| 產業 | SaaS | ❌ 缺失 | 若有 SaaS 產品開發經驗,在工作內容補充 |
匹配率:6 / 12 個關鍵字完全匹配(50%)
### 工作經歷建議(XYZ 改寫示範)
**原句:** 「負責後端 API 開發與維護」
**改寫:**
「設計並交付 RESTful API 服務,支撐日均 50 萬次請求,
回應時間從 420ms 降至 95ms,透過 Redis 快取層與查詢優化實現」
(如果你目前沒有這個數字,可以告訴我大概的 traffic 規模,我幫你估算一個合理範圍)
### 下一步行動清單(今日優先執行)
1. **改寫工作經歷描述** → 預估 +5–7 分:把前 3 條任務型描述套用 XYZ 公式
2. **重寫自傳開場** → 預估 +3–4 分:刪除「我叫XXX,畢業於...」,改為直接切入最強成就
3. **新增專案成就區塊** → 預估 +4–6 分:至少加入 1 個有連結或數字的 side project
4. **補充 JD 關鍵字** → 提升關鍵字匹配率:PostgreSQL、SaaS 加入專長/工作描述若自傳完全缺失,或評分達成率 <50%,Skill 會在 Step 3 建議後主動詢問,收到回應後依三段結構生成 200–350 字草稿(定位 → 成就 → 動機),可直接貼入 104。
Step 5 完整報告輸出後,Skill 會詢問是否要預測面試問題。確認後輸出:
🎯 面試問題預測
高風險問題(對應你的履歷弱點)
1. 可以說說你在 XX 公司最有成就感的一個專案嗎?
為什麼會這樣問:工作經歷缺乏量化成果,面試官會追問實際貢獻
準備方向:先備好 2–3 個有數字的案例,用 STAR 結構回答
必問基本題
2. ...
JD 相關追問(若有提供 JD)
3. ...
共 5–8 題,高風險問題排在前面。
若你有以下任何一項,Skill 會主動詢問並協助你加入「自訂內容」區塊,最高獲得 +3 分加分:
- 學術發表(期刊、會議論文)
- 開源貢獻(GitHub stars 或 PR merged)
- 演講或 podcast 出場紀錄
- 重大競賽獎項
- 有可衡量成效的 side project
學歷評分考慮三個因子:
- 學位(博士/碩士/學士/...)
- 學校聲望(S/A/B/C 等級,台大清大 +1.5 分,QS 前 100 海外學校同等)
- 就學狀態(畢業 ×1.0 / 就學中 ×0.9 / 肄業 ×0.75)
除了各區塊分數外,Skill 還會從整份履歷跨區塊計算:
- 量化密度:工作描述中含數字的比例(共 X 條,X 條含量化指標)
- 硬實力佔比:所有技能標籤中,工具/技術 vs 個性描述的比例
- 軟實力佐證:軟實力聲明是否有具體行為佐證
這三項組成「軟實力綜合」6 分,讓你知道履歷的整體說服力。
Q:PDF 解析失敗怎麼辦?
直接把履歷文字複製貼上即可。Skill 接受純文字輸入,分析品質不會受影響。
Q:沒有目標 JD 也可以分析嗎?
可以,JD Gap 分析是選填功能。沒有 JD 時,工作經歷評分的 JD 關鍵字維度(10%)會以通用標準評估。
Q:適配模式的 fetch_jobs.py 跑失敗怎麼辦?
104 有反爬蟲機制,腳本會回傳 need_fallback 並提供搜尋 URL。你可以自行打開連結,把感興趣的職缺 URL 或 JD 文字貼回對話,Skill 會直接從文字進行適配分析(J3 流程),不需要腳本也能用。
Q:分數多少才算「可以投了」?
沒有絕對門檻,但一般建議:
- 含加分 75 分以上:投遞競爭較少的職缺有合理回應率
- 含加分 85 分以上:投遞一般競爭職缺
- 含加分 90+ 分:投遞熱門大公司或外商
Q:LinkedIn 模式和 104 模式有什麼不同?
104 注重關鍵字密度與結構清晰(HR 用搜尋引擎找人),LinkedIn 注重個人品牌與故事性(主管會 Google 你)。兩個平台的策略不同,直接複製貼上效果很差。
Q:可以只讓 Skill 幫我改某一個區塊嗎?
可以,直接說「只看我的工作經歷」或「幫我改自傳」即可。Skill 會針對該區塊給出評分與建議,不需要分析整份履歷。
評品質,不評格數: 很多履歷服務鼓勵「填滿所有欄位」,但 104 HR 真正在乎的是「這個人能不能解決問題,有沒有成果」。本 Skill 的充足標準基於有效內容,而非欄位塞滿程度。
影響力加權: 工作經歷(25 分)和專長(15 分)加起來佔總分 40%,因為這兩個區塊是 HR 初篩的核心。推薦人(1 分)雖然建議填寫,但不是優先改善項目。
具體可執行: 所有建議都有具體的改寫示範。「多加數字」是沒有用的建議,「你的第二段工作描述改成:透過 Redis 快取,API 回應時間從 420ms 降至 95ms」才是有用的建議。
- fetch_jobs.py 依賴 Playwright: 需要本機 Python 環境,桌面版/網頁版用戶無法使用適配模式的自動搜尋功能
- 104 反爬蟲機制: 腳本可能因 104 更新而失效,此時 fallback 為手動貼入 JD 文字
- 無法驗證數字真實性: XYZ 改寫中的數字由用戶提供,Skill 不做事實查核
- 學校聲望資料庫: 主要覆蓋台灣主要大學,偏冷門或地方性學校可能歸類為 B/C 等級
- PDF 解析品質: 部分掃描版 PDF 或特殊排版可能影響文字提取,建議改用純文字貼上
這個 Skill 的分數是一個結構化的主觀評估,協助你找出最值得改善的地方。高分履歷能提高通過初篩的機率,但最終錄取還是取決於面試表現、與職位的實際匹配度,以及許多履歷以外的因素。
如果你發現某個評分邏輯不合理、建議改寫品質可以提升,或想新增某類職缺的專屬優化建議,歡迎:
- 修改
references/底下對應的.md檔案 - 提交 PR 並描述你的改動理由
SKILL.md 是主邏輯,references/ 是評分與建議的資料庫,scripts/ 是 JD 搜尋與適配評分的 Python 工具,三者分離讓更新更容易。