跳到主要內容

career-ops:用 Claude Code 全自動求職,作者靠它拿下自己的工作

santifer/career-ops on GitHub

來源Santiago 在 LinkedIn 的原文說明

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 負責核心的評估與生成邏輯。


系統架構:四層流水線

Loading diagram...

四個模組各司其職,但設計上是一條流水線:掃描進來的職缺進入評分引擎,通過門檻的才觸發履歷生成,所有狀態都呈現在 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 的履歷生成器做了三件事:

  1. 關鍵字注入:從評分引擎提取的 ATS keywords 自動插入履歷適當位置
  2. 排版格式:輸出符合 ATS parser 規則的 PDF,避免表格、多欄、特殊字元
  3. 職缺客製化:根據每個職缺的具體要求調整技能列表的排序與強調重點

生成的 PDF 不是通用版本,是每個職缺一份針對性的文件。


技術選型的邏輯

層次技術理由
爬蟲 / 自動化Playwright (JS)處理動態頁面、登入狀態管理
AI 評估Claude Code結構化輸出、多維度推理
TUIBubble 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 下來改成自己的版本。