career-ops:用 Claude Code 全自動求職,作者靠它拿下自己的工作
33.8k stars、6.7k forks,career-ops 是 2026 年 GitHub 上增長最快的求職工具之一。但它的說服力不來自 star 數——而來自一個事實:作者 Santiago(Head of Applied AI)用這套系統找到了他現在的工作。
這不是「AI 幫你潤飾 cover letter」那種層次的工具。career-ops 是一個完整的求職自動化 pipeline:從職缺掃描、評分篩選、履歷生成,到 TUI 儀表板追蹤進度,全部用 code 串起來,Claude Code 負責核心的評估與生成邏輯。
系統架構:四層流水線
四個模組各司其職,但設計上是一條流水線:掃描進來的職缺進入評分引擎,通過門檻的才觸發履歷生成,所有狀態都呈現在 terminal 的 TUI dashboard。
評分引擎:10 個維度、A–F 分級
這是 career-ops 最核心的設計。Claude Code 不是「給你整理一下職缺描述」,而是對每個職缺跑一套 10 維度的結構化評估,每個維度都有權重,最終給出 A–F 的等級評分。
10 個評估維度包括:技術棧契合度、薪資範圍、公司階段、遠端政策、成長空間、職位層級匹配、產品方向、團隊規模、地理限制、ATS 關鍵字密度。
// 評分結構範例
const evaluation = {
overall: 'B+',
dimensions: {
techFit: { score: 'A', weight: 0.25 },
compensation: { score: 'B', weight: 0.20 },
remotePolicy: { score: 'A', weight: 0.15 },
growthPotential: { score: 'B+', weight: 0.15 },
companyStage: { score: 'C', weight: 0.10 },
// ... 5 more dimensions
},
recommendation: 'apply',
atsKeywords: ['applied AI', 'LLM infrastructure', 'agent systems']
}
這個設計的用意很明確:把「要不要投這份工作」這個決策,從主觀感受轉成可以追蹤、可以迭代的數據問題。
掃描覆蓋率
career-ops 掃描目標公司分佈(共 45 家以上)
Playwright browser automation 處理動態載入的職缺頁面、登入牆、反爬機制。JavaScript 佔整個 codebase 的 52%,大部分是這層的實作——每個目標公司都有對應的 scraper 配置,處理各自的 DOM 結構和分頁邏輯。
Go TUI Dashboard:Bubble Tea + Lipgloss
Go 佔 codebase 的 36%,全部用在這個 terminal dashboard 上。選 Go 的理由直接:效能、並發、可靠的 binary 打包。
// TUI 初始化
p := tea.NewProgram(
model.New(store),
tea.WithAltScreen(),
tea.WithMouseCellMotion(),
)
// Lipgloss 樣式定義
var scoreStyle = lipgloss.NewStyle().
Foreground(lipgloss.Color("#6366f1")).
Bold(true).
Width(4)
Dashboard 提供四個主要視圖:職缺列表(含評分)、維度詳情、申請追蹤、統計摘要。全鍵盤操作,不需要開瀏覽器。
ATS 最佳化履歷生成
投遞前這步最容易被忽略,但現實是大部分公司的第一關是 ATS(Applicant Tracking System)自動篩選,不是人看的。career-ops 的履歷生成器做了三件事:
- 關鍵字注入:從評分引擎提取的 ATS keywords 自動插入履歷適當位置
- 排版格式:輸出符合 ATS parser 規則的 PDF,避免表格、多欄、特殊字元
- 職缺客製化:根據每個職缺的具體要求調整技能列表的排序與強調重點
生成的 PDF 不是通用版本,是每個職缺一份針對性的文件。
技術選型的邏輯
| 層次 | 技術 | 理由 |
|---|---|---|
| 爬蟲 / 自動化 | Playwright (JS) | 處理動態頁面、登入狀態管理 |
| AI 評估 | Claude Code | 結構化輸出、多維度推理 |
| TUI | Bubble Tea + Lipgloss (Go) | 效能、terminal 原生體驗 |
| PDF 生成 | JS PDF library | 排版控制、ATS 相容格式 |
| 資料儲存 | Local JSON/SQLite | 離線可用、無需後端服務 |
整套系統設計為本地運行,不依賴任何雲端服務(除了 Claude API)。這意味著你的求職數據不會上傳到第三方平台。
快速啟動
# Clone 並安裝依賴
git clone https://github.com/santifer/career-ops.git
cd career-ops
npm install
# 設定 Claude API key
export ANTHROPIC_API_KEY=your_key_here
# 啟動掃描(預設掃描所有配置的公司)
npm run scan
# 開啟 TUI dashboard(需要 Go 環境)
go run ./dashboard/main.go
# 生成特定職缺的客製化履歷
npm run resume --job-id=<id>
Go 部分需要 1.21+,JavaScript 部分需要 Node.js 18+。首次執行建議先用 npm run scan -- --dry-run 確認 Playwright 能正確存取目標網站。
Santiago 的實際使用心得
這個工具不是 Santiago 發表後才測試的——他在找現在這份 Head of Applied AI 工作時就在用它。他公開提到幾個實際觀察:
第一,評分系統的價值不只是篩選,更是強迫你說清楚自己想要什麼。10 個維度的權重配置就是你的求職優先序,寫下來之後你才發現自己其實有很多模糊的假設。
第二,ATS 最佳化履歷生成在前幾輪面試的通過率上有明顯差異。不是因為內容不同,而是因為 ATS 能正確解析。
第三,TUI dashboard 讓求職進度可視化——什麼公司投了、什麼階段、評分多少——這本身就降低了求職的心理負擔。
使用限制
career-ops 不是零配置工具。幾個需要自行處理的部分:
- 反爬機制:部分公司(如 Workday、Greenhouse)有較強的 bot 偵測,需要調整 Playwright 配置或加入延遲
- 履歷內容:生成器依賴你提供的 base resume data,格式越結構化,客製化效果越好
- Claude API 成本:大量職缺評估會累積 API 費用,建議先設定每日上限
- 維護依賴:各公司職缺頁面結構會改變,scraper 配置需要定期更新
結語
career-ops 的本質是一個論點:求職是一個信息處理問題,而不是運氣問題。33.8k stars 說明這個論點打中了很多人。
Santiago 用它找到工作,這是比任何 benchmark 都有說服力的 proof of concept。MIT 授權,代碼全公開,如果你現在正在找工作,或者未來會找,值得直接 fork 下來改成自己的版本。